core/xpdo/om/xpdodriver.class.php
<?php
/*
* Copyright 2010-2015 by MODX, LLC.
*
* This file is part of xPDO.
*
* xPDO is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* xPDO is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* xPDO; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
* Suite 330, Boston, MA 02111-1307 USA
*/
/**
* The xPDODriver class provides the baseline driver specific abstraction.
*
* @package xpdo
* @subpackage om
*/
/**
* Provides driver specific members and methods for an xPDO instance.
*
* These are baseline members and methods that need to be loaded every
* time an xPDO instance makes a connection. xPDODriver class implementations
* are specific to a database driver and should include this base class in order
* to extend it.
*
* @abstract
* @package xpdo
* @subpackage om
*/
abstract class xPDODriver {
/**
* @var xPDO A reference to the XPDO instance using this manager.
* @access public
*/
public $xpdo= null;
/**
* @var array Describes the physical database types.
*/
public $dbtypes= array ();
/**
* An array of DB constants/functions that represent timestamp values.
* @var array
*/
public $_currentTimestamps= array();
/**
* An array of DB constants/functions that represent date values.
* @var array
*/
public $_currentDates= array();
/**
* An array of DB constants/functions that represent time values.
* @var array
*/
public $_currentTimes= array();
public $quoteChar = '';
public $escapeOpenChar = '';
public $escapeCloseChar = '';
/**
* Get an xPDODriver instance.
*
* @param xPDO $xpdo A reference to a specific xPDO instance.
*/
public function __construct(xPDO &$xpdo) {
if ($xpdo !== null && $xpdo instanceof xPDO) {
$this->xpdo= & $xpdo;
$this->xpdo->_quoteChar= $this->quoteChar;
$this->xpdo->_escapeCharOpen= $this->escapeOpenChar;
$this->xpdo->_escapeCharClose= $this->escapeCloseChar;
}
}
/**
* Gets the PHP field type based upon the specified database type.
*
* @access public
* @param string $dbtype The database field type to convert.
* @return string The associated PHP type
*/
public function getPhpType($dbtype) {
$phptype = 'string';
if ($dbtype !== null) {
foreach ($this->dbtypes as $type => $patterns) {
foreach ($patterns as $pattern) {
if (preg_match($pattern, $dbtype)) {
$phptype = $type;
break 2;
}
}
}
}
return $phptype;
}
}