<?php
/**
 * Query
 *
 * Free Query Builder / Database Abstraction Layer
 *
 * @package		Query
 * @author		Timothy J. Warren
 * @copyright	Copyright (c) 2012 - 2014
 * @link 		https://github.com/aviat4ion/Query
 * @license		http://philsturgeon.co.uk/code/dbad-license
 */

// --------------------------------------------------------------------------

/**
 * Autoloader for loading available database classes
 *
 * @package Query
 */

namespace Query;

/**
 * Reference to root path
 * @subpackage Core
 */
define('QBASE_PATH', dirname(__FILE__).'/');

/**
 * Path to driver classes
 * @subpackage Core
 */
define('QDRIVER_PATH', QBASE_PATH.'drivers/');

// Require some common functions
require(QBASE_PATH.'common.php');

// Load Query Classes
spl_autoload_register(function ($class)
{
	$class_segments = explode('\\', $class);
	$driver_class = strtolower(array_pop($class_segments));

	// Load DB Driver classes
	$driver_path = QDRIVER_PATH . "{$driver_class}";
	if ($class_segments == array('Query', 'Driver') && is_dir($driver_path))
	{

		// Firebird is a special case, since it's not a PDO driver
		// @codeCoverageIgnoreStart
		if (
			in_array($driver_class, \PDO::getAvailableDrivers())
			||  function_exists('\\fbird_connect') && $driver_class === 'firebird'
		)
		{
			array_map('\\do_include', glob("{$driver_path}/*.php"));
		}
		// @codeCoverageIgnoreEnd
	}
	
	// Load other classes
	$path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
	$file = QBASE_PATH . "{$path}.php";
	
	// @codeCoverageIgnoreStart
	if (file_exists($file))
	{
		require_once($file);
	}
	// @codeCoverageIgnoreEnd
});

// End of autoload.php