cleanup
This commit is contained in:
parent
44b7e5f024
commit
7d48c785f6
110 changed files with 529 additions and 6093 deletions
|
@ -168,6 +168,13 @@ class Doctrine_ClassMetadata implements Doctrine_Configurable, Serializable
|
|||
*/
|
||||
protected $_generatorType = self::GENERATOR_TYPE_NONE;
|
||||
|
||||
/**
|
||||
* The Id generator.
|
||||
*
|
||||
* @var Doctrine::ORM::Id::IdGenerator
|
||||
*/
|
||||
protected $_idGenerator;
|
||||
|
||||
/**
|
||||
* The field mappings of the class.
|
||||
* Keys are field names and values are mapping definitions.
|
||||
|
@ -601,6 +608,17 @@ class Doctrine_ClassMetadata implements Doctrine_Configurable, Serializable
|
|||
{
|
||||
return $this->_associationMappings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all association mappings of the class.
|
||||
* Alias for getAssociationMappings().
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAssociations()
|
||||
{
|
||||
return $this->_associationMappings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the field name for a column name.
|
||||
|
@ -688,19 +706,6 @@ class Doctrine_ClassMetadata implements Doctrine_Configurable, Serializable
|
|||
$this->_fieldMappings[$mapping['fieldName']] = $mapping;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides an existant field mapping.
|
||||
* Used i.e. by Entity classes deriving from another Entity class that acts
|
||||
* as a mapped superclass to refine the basic mapping.
|
||||
*
|
||||
* @param array $newMapping
|
||||
* @todo Implementation.
|
||||
*/
|
||||
public function overrideFieldMapping(array $newMapping)
|
||||
{
|
||||
//...
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates & completes the field mapping. Default values are applied here.
|
||||
*
|
||||
|
@ -757,6 +762,46 @@ class Doctrine_ClassMetadata implements Doctrine_Configurable, Serializable
|
|||
return $mapping;
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo Implementation of Optimistic Locking.
|
||||
*/
|
||||
public function mapVersionField(array $mapping)
|
||||
{
|
||||
//...
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides an existant field mapping.
|
||||
* Used i.e. by Entity classes deriving from another Entity class that acts
|
||||
* as a mapped superclass to refine the basic mapping.
|
||||
*
|
||||
* @param array $newMapping
|
||||
* @todo Implementation.
|
||||
*/
|
||||
public function overrideFieldMapping(array $newMapping)
|
||||
{
|
||||
//...
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to lazily create the id generator.
|
||||
*
|
||||
* @param string $generatorType
|
||||
* @return void
|
||||
*/
|
||||
protected function _createIdGenerator()
|
||||
{
|
||||
if ($this->_generatorType == self::GENERATOR_TYPE_IDENTITY) {
|
||||
$this->_idGenerator = new Doctrine_Id_IdentityGenerator($this->_em);
|
||||
} else if ($this->_generatorType == self::GENERATOR_TYPE_SEQUENCE) {
|
||||
$this->_idGenerator = new Doctrine_Id_SequenceGenerator($this->_em);
|
||||
} else if ($this->_generatorType == self::GENERATOR_TYPE_TABLE) {
|
||||
$this->_idGenerator = new Doctrine_Id_TableGenerator($this->_em);
|
||||
} else {
|
||||
$this->_idGenerator = new Doctrine_Id_Assigned($this->_em);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the default length for a column type.
|
||||
*
|
||||
|
@ -1620,6 +1665,19 @@ class Doctrine_ClassMetadata implements Doctrine_Configurable, Serializable
|
|||
{
|
||||
return $this->_customRepositoryClassName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the Id generator used by the class.
|
||||
*
|
||||
* @return Doctrine::ORM::Id::AbstractIdGenerator
|
||||
*/
|
||||
public function getIdGenerator()
|
||||
{
|
||||
if (is_null($this->_idGenerator)) {
|
||||
$this->_createIdGenerator();
|
||||
}
|
||||
return $this->_idGenerator;
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo Thoughts & Implementation.
|
||||
|
@ -1724,15 +1782,22 @@ class Doctrine_ClassMetadata implements Doctrine_Configurable, Serializable
|
|||
}
|
||||
|
||||
/**
|
||||
* Completes the identifier mapping of the class.
|
||||
* INTERNAL: Completes the identifier mapping of the class.
|
||||
* NOTE: Should only be called by the ClassMetadataFactory!
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function completeIdentifierMapping()
|
||||
{
|
||||
if ($this->getIdGeneratorType() == self::GENERATOR_TYPE_AUTO) {
|
||||
if ($this->_generatorType == self::GENERATOR_TYPE_AUTO) {
|
||||
$platform = $this->_em->getConnection()->getDatabasePlatform();
|
||||
if ($platform === null) {
|
||||
try {
|
||||
throw new Exception();
|
||||
} catch (Exception $e) {
|
||||
echo $e->getTraceAsString();
|
||||
}
|
||||
}
|
||||
if ($platform->prefersSequences()) {
|
||||
$this->_generatorType = self::GENERATOR_TYPE_SEQUENCE;
|
||||
} else if ($platform->prefersIdentityColumns()) {
|
||||
|
|
|
@ -130,7 +130,7 @@ class Doctrine_Collection implements Countable, IteratorAggregate, Serializable,
|
|||
public function __construct($entityBaseType, $keyField = null)
|
||||
{
|
||||
$this->_entityBaseType = $entityBaseType;
|
||||
$this->_em = Doctrine_EntityManagerFactory::getManager($entityBaseType);
|
||||
$this->_em = Doctrine_EntityManager::getActiveEntityManager();
|
||||
|
||||
if ($keyField !== null) {
|
||||
if ( ! $this->_em->getClassMetadata($entityBaseType)->hasField($keyField)) {
|
||||
|
@ -1018,7 +1018,7 @@ class Doctrine_Collection implements Countable, IteratorAggregate, Serializable,
|
|||
*/
|
||||
public function unserialize($serialized)
|
||||
{
|
||||
$manager = Doctrine_EntityManagerFactory::getManager();
|
||||
$manager = Doctrine_EntityManager::getActiveEntityManager();
|
||||
$connection = $manager->getConnection();
|
||||
|
||||
$array = unserialize($serialized);
|
||||
|
|
|
@ -160,13 +160,6 @@ abstract class Doctrine_Connection
|
|||
*/
|
||||
protected $_transaction;
|
||||
|
||||
/**
|
||||
* The sequence manager.
|
||||
*
|
||||
* @var Doctrine::DBAL::Sequencing::SequenceManager
|
||||
*/
|
||||
protected $_sequenceManager;
|
||||
|
||||
/**
|
||||
* The schema manager.
|
||||
*
|
||||
|
@ -946,9 +939,9 @@ abstract class Doctrine_Connection
|
|||
* @param string $table Name of the table into which a new row was inserted.
|
||||
* @param string $field Name of the field into which a new row was inserted.
|
||||
*/
|
||||
public function lastInsertId($table = null, $field = null)
|
||||
public function lastInsertId($seqName = null)
|
||||
{
|
||||
return $this->getSequenceManager()->lastInsertId($table, $field);
|
||||
return $this->_pdo->lastInsertId($seqName);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1177,21 +1170,6 @@ abstract class Doctrine_Connection
|
|||
return Doctrine_Lib::getConnectionAsString($this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the SequenceManager that can be used to retrieve sequence values
|
||||
* through this connection.
|
||||
*
|
||||
* @return Doctrine::DBAL::Sequencing::SequenceManager
|
||||
*/
|
||||
public function getSequenceManager()
|
||||
{
|
||||
if ( ! $this->_sequenceManager) {
|
||||
$class = "Doctrine_Sequence_" . $this->_driverName;
|
||||
$this->_sequenceManager = new $class;
|
||||
}
|
||||
return $this->_sequenceManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the SchemaManager that can be used to inspect or change the
|
||||
* database schema through the connection.
|
||||
|
|
|
@ -1,136 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Connection_Exception');
|
||||
/**
|
||||
* Doctrine_Connection_Firebird_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Connection
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lorenzo Alberton <l.alberton@quipo.it> (PEAR MDB2 Interbase driver)
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
*/
|
||||
class Doctrine_Connection_Firebird_Exception extends Doctrine_Connection_Exception
|
||||
{
|
||||
/**
|
||||
* @var array $errorCodeMap an array that is used for determining portable
|
||||
* error code from a native database error code
|
||||
*/
|
||||
protected static $errorCodeMap = array(
|
||||
-104 => Doctrine::ERR_SYNTAX,
|
||||
-150 => Doctrine::ERR_ACCESS_VIOLATION,
|
||||
-151 => Doctrine::ERR_ACCESS_VIOLATION,
|
||||
-155 => Doctrine::ERR_NOSUCHTABLE,
|
||||
-157 => Doctrine::ERR_NOSUCHFIELD,
|
||||
-158 => Doctrine::ERR_VALUE_COUNT_ON_ROW,
|
||||
-170 => Doctrine::ERR_MISMATCH,
|
||||
-171 => Doctrine::ERR_MISMATCH,
|
||||
-172 => Doctrine::ERR_INVALID,
|
||||
// -204 => // Covers too many errors, need to use regex on msg
|
||||
-205 => Doctrine::ERR_NOSUCHFIELD,
|
||||
-206 => Doctrine::ERR_NOSUCHFIELD,
|
||||
-208 => Doctrine::ERR_INVALID,
|
||||
-219 => Doctrine::ERR_NOSUCHTABLE,
|
||||
-297 => Doctrine::ERR_CONSTRAINT,
|
||||
-303 => Doctrine::ERR_INVALID,
|
||||
-413 => Doctrine::ERR_INVALID_NUMBER,
|
||||
-530 => Doctrine::ERR_CONSTRAINT,
|
||||
-551 => Doctrine::ERR_ACCESS_VIOLATION,
|
||||
-552 => Doctrine::ERR_ACCESS_VIOLATION,
|
||||
// -607 => // Covers too many errors, need to use regex on msg
|
||||
-625 => Doctrine::ERR_CONSTRAINT_NOT_NULL,
|
||||
-803 => Doctrine::ERR_CONSTRAINT,
|
||||
-804 => Doctrine::ERR_VALUE_COUNT_ON_ROW,
|
||||
-904 => Doctrine::ERR_CONNECT_FAILED,
|
||||
-922 => Doctrine::ERR_NOSUCHDB,
|
||||
-923 => Doctrine::ERR_CONNECT_FAILED,
|
||||
-924 => Doctrine::ERR_CONNECT_FAILED
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array $errorRegexps an array that is used for determining portable
|
||||
* error code from a native database error message
|
||||
*/
|
||||
protected static $errorRegexps = array(
|
||||
'/generator .* is not defined/'
|
||||
=> Doctrine::ERR_SYNTAX, // for compat. w ibase_errcode()
|
||||
'/table.*(not exist|not found|unknown)/i'
|
||||
=> Doctrine::ERR_NOSUCHTABLE,
|
||||
'/table .* already exists/i'
|
||||
=> Doctrine::ERR_ALREADY_EXISTS,
|
||||
'/unsuccessful metadata update .* failed attempt to store duplicate value/i'
|
||||
=> Doctrine::ERR_ALREADY_EXISTS,
|
||||
'/unsuccessful metadata update .* not found/i'
|
||||
=> Doctrine::ERR_NOT_FOUND,
|
||||
'/validation error for column .* value "\*\*\* null/i'
|
||||
=> Doctrine::ERR_CONSTRAINT_NOT_NULL,
|
||||
'/violation of [\w ]+ constraint/i'
|
||||
=> Doctrine::ERR_CONSTRAINT,
|
||||
'/conversion error from string/i'
|
||||
=> Doctrine::ERR_INVALID_NUMBER,
|
||||
'/no permission for/i'
|
||||
=> Doctrine::ERR_ACCESS_VIOLATION,
|
||||
'/arithmetic exception, numeric overflow, or string truncation/i'
|
||||
=> Doctrine::ERR_INVALID,
|
||||
'/table unknown/i'
|
||||
=> Doctrine::ERR_NOSUCHTABLE,
|
||||
);
|
||||
|
||||
/**
|
||||
* This method checks if native error code/message can be
|
||||
* converted into a portable code and then adds this
|
||||
* portable error code to errorInfo array and returns the modified array
|
||||
*
|
||||
* the portable error code is added at the end of array
|
||||
*
|
||||
* @param array $errorInfo error info array
|
||||
* @since 1.0
|
||||
* @return array
|
||||
*/
|
||||
public function processErrorInfo(array $errorInfo)
|
||||
{
|
||||
/**
|
||||
// todo: are the following lines needed?
|
||||
// memo for the interbase php module hackers: we need something similar
|
||||
// to mysql_errno() to retrieve error codes instead of this ugly hack
|
||||
if (preg_match('/^([^0-9\-]+)([0-9\-]+)\s+(.*)$/', $native_msg, $m)) {
|
||||
$native_code = (int)$m[2];
|
||||
} else {
|
||||
$native_code = null;
|
||||
}
|
||||
*/
|
||||
|
||||
foreach (self::$errorRegexps as $regexp => $code) {
|
||||
if (preg_match($regexp, $errorInfo[2])) {
|
||||
$errorInfo[3] = $code;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isset(self::$errorCodeMap[$errorInfo[1]])) {
|
||||
$errorInfo[3] = self::$errorCodeMap[$errorInfo[1]];
|
||||
}
|
||||
return $errorInfo;
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Connection_Exception');
|
||||
/**
|
||||
* Doctrine_Connection_Informix_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Connection
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
*/
|
||||
class Doctrine_Connection_Informix_Exception extends Doctrine_Connection_Exception
|
||||
{ }
|
|
@ -1,67 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
#namespace Doctrine::DBAL::Connections;
|
||||
|
||||
/**
|
||||
* Doctrine_Connection_Mysql
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Connection
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove.
|
||||
*/
|
||||
class Doctrine_Connection_Mock extends Doctrine_Connection_Common
|
||||
{
|
||||
/**
|
||||
* @var string $driverName the name of this connection driver
|
||||
*/
|
||||
protected $_driverName = 'Mysql';
|
||||
|
||||
/**
|
||||
* the constructor
|
||||
*
|
||||
* @param Doctrine_Manager $manager
|
||||
* @param PDO|Doctrine_Adapter $adapter database handler
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public function getDatabasePlatform()
|
||||
{
|
||||
return new Doctrine_DatabasePlatform_MySqlPlatform();
|
||||
}
|
||||
|
||||
public function quote($input, $type = null)
|
||||
{
|
||||
if ($type === 'string') {
|
||||
return "'" . $input . "'";
|
||||
}
|
||||
return $input;
|
||||
}
|
||||
}
|
|
@ -1,75 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Connection_Exception');
|
||||
/**
|
||||
* Doctrine_Connection_Mssql_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Connection
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
*/
|
||||
class Doctrine_Connection_Mssql_Exception extends Doctrine_Connection_Exception
|
||||
{
|
||||
/**
|
||||
* @var array $errorCodeMap an array that is used for determining portable
|
||||
* error code from a native database error code
|
||||
*/
|
||||
protected static $errorCodeMap = array(
|
||||
110 => Doctrine::ERR_VALUE_COUNT_ON_ROW,
|
||||
155 => Doctrine::ERR_NOSUCHFIELD,
|
||||
170 => Doctrine::ERR_SYNTAX,
|
||||
207 => Doctrine::ERR_NOSUCHFIELD,
|
||||
208 => Doctrine::ERR_NOSUCHTABLE,
|
||||
245 => Doctrine::ERR_INVALID_NUMBER,
|
||||
515 => Doctrine::ERR_CONSTRAINT_NOT_NULL,
|
||||
547 => Doctrine::ERR_CONSTRAINT,
|
||||
1913 => Doctrine::ERR_ALREADY_EXISTS,
|
||||
2627 => Doctrine::ERR_CONSTRAINT,
|
||||
2714 => Doctrine::ERR_ALREADY_EXISTS,
|
||||
3701 => Doctrine::ERR_NOSUCHTABLE,
|
||||
8134 => Doctrine::ERR_DIVZERO,
|
||||
);
|
||||
|
||||
/**
|
||||
* This method checks if native error code/message can be
|
||||
* converted into a portable code and then adds this
|
||||
* portable error code to $portableCode field
|
||||
*
|
||||
* @param array $errorInfo error info array
|
||||
* @since 1.0
|
||||
* @return boolean whether or not the error info processing was successfull
|
||||
* (the process is successfull if portable error code was found)
|
||||
*/
|
||||
public function processErrorInfo(array $errorInfo)
|
||||
{
|
||||
$code = $errorInfo[1];
|
||||
if (isset(self::$errorCodeMap[$code])) {
|
||||
$this->portableCode = self::$errorCodeMap[$code];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -1,85 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Connection_Exception');
|
||||
/**
|
||||
* Doctrine_Connection_Mysql_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Connection
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
*/
|
||||
class Doctrine_Connection_Mysql_Exception extends Doctrine_Connection_Exception
|
||||
{
|
||||
/**
|
||||
* @var array $errorCodeMap an array that is used for determining portable
|
||||
* error code from a native database error code
|
||||
*/
|
||||
protected static $errorCodeMap = array(
|
||||
1004 => Doctrine::ERR_CANNOT_CREATE,
|
||||
1005 => Doctrine::ERR_CANNOT_CREATE,
|
||||
1006 => Doctrine::ERR_CANNOT_CREATE,
|
||||
1007 => Doctrine::ERR_ALREADY_EXISTS,
|
||||
1008 => Doctrine::ERR_CANNOT_DROP,
|
||||
1022 => Doctrine::ERR_ALREADY_EXISTS,
|
||||
1044 => Doctrine::ERR_ACCESS_VIOLATION,
|
||||
1046 => Doctrine::ERR_NODBSELECTED,
|
||||
1048 => Doctrine::ERR_CONSTRAINT,
|
||||
1049 => Doctrine::ERR_NOSUCHDB,
|
||||
1050 => Doctrine::ERR_ALREADY_EXISTS,
|
||||
1051 => Doctrine::ERR_NOSUCHTABLE,
|
||||
1054 => Doctrine::ERR_NOSUCHFIELD,
|
||||
1061 => Doctrine::ERR_ALREADY_EXISTS,
|
||||
1062 => Doctrine::ERR_ALREADY_EXISTS,
|
||||
1064 => Doctrine::ERR_SYNTAX,
|
||||
1091 => Doctrine::ERR_NOT_FOUND,
|
||||
1100 => Doctrine::ERR_NOT_LOCKED,
|
||||
1136 => Doctrine::ERR_VALUE_COUNT_ON_ROW,
|
||||
1142 => Doctrine::ERR_ACCESS_VIOLATION,
|
||||
1146 => Doctrine::ERR_NOSUCHTABLE,
|
||||
1216 => Doctrine::ERR_CONSTRAINT,
|
||||
1217 => Doctrine::ERR_CONSTRAINT,
|
||||
);
|
||||
|
||||
/**
|
||||
* This method checks if native error code/message can be
|
||||
* converted into a portable code and then adds this
|
||||
* portable error code to $portableCode field
|
||||
*
|
||||
* @param array $errorInfo error info array
|
||||
* @since 1.0
|
||||
* @return boolean whether or not the error info processing was successfull
|
||||
* (the process is successfull if portable error code was found)
|
||||
*/
|
||||
public function processErrorInfo(array $errorInfo)
|
||||
{
|
||||
$code = $errorInfo[1];
|
||||
if (isset(self::$errorCodeMap[$code])) {
|
||||
$this->portableCode = self::$errorCodeMap[$code];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -1,80 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Connection_Exception');
|
||||
/**
|
||||
* Doctrine_Connection_Oracle_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Connection
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
*/
|
||||
class Doctrine_Connection_Oracle_Exception extends Doctrine_Connection_Exception
|
||||
{
|
||||
/**
|
||||
* @var array $errorCodeMap an array that is used for determining portable
|
||||
* error code from a native database error code
|
||||
*/
|
||||
protected static $errorCodeMap = array(
|
||||
1 => Doctrine::ERR_CONSTRAINT,
|
||||
900 => Doctrine::ERR_SYNTAX,
|
||||
904 => Doctrine::ERR_NOSUCHFIELD,
|
||||
913 => Doctrine::ERR_VALUE_COUNT_ON_ROW,
|
||||
921 => Doctrine::ERR_SYNTAX,
|
||||
923 => Doctrine::ERR_SYNTAX,
|
||||
942 => Doctrine::ERR_NOSUCHTABLE,
|
||||
955 => Doctrine::ERR_ALREADY_EXISTS,
|
||||
1400 => Doctrine::ERR_CONSTRAINT_NOT_NULL,
|
||||
1401 => Doctrine::ERR_INVALID,
|
||||
1407 => Doctrine::ERR_CONSTRAINT_NOT_NULL,
|
||||
1418 => Doctrine::ERR_NOT_FOUND,
|
||||
1476 => Doctrine::ERR_DIVZERO,
|
||||
1722 => Doctrine::ERR_INVALID_NUMBER,
|
||||
2289 => Doctrine::ERR_NOSUCHTABLE,
|
||||
2291 => Doctrine::ERR_CONSTRAINT,
|
||||
2292 => Doctrine::ERR_CONSTRAINT,
|
||||
2449 => Doctrine::ERR_CONSTRAINT,
|
||||
);
|
||||
|
||||
/**
|
||||
* This method checks if native error code/message can be
|
||||
* converted into a portable code and then adds this
|
||||
* portable error code to $portableCode field
|
||||
*
|
||||
* @param array $errorInfo error info array
|
||||
* @since 1.0
|
||||
* @return boolean whether or not the error info processing was successfull
|
||||
* (the process is successfull if portable error code was found)
|
||||
*/
|
||||
public function processErrorInfo(array $errorInfo)
|
||||
{
|
||||
$code = $errorInfo[1];
|
||||
if (isset(self::$errorCodeMap[$code])) {
|
||||
$this->portableCode = self::$errorCodeMap[$code];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -1,108 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Connection_Exception');
|
||||
/**
|
||||
* Doctrine_Connection_Pgsql_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Connection
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Paul Cooper <pgc@ucecom.com> (PEAR MDB2 Pgsql driver)
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
*/
|
||||
class Doctrine_Connection_Pgsql_Exception extends Doctrine_Connection_Exception
|
||||
{
|
||||
/**
|
||||
* @var array $errorRegexps an array that is used for determining portable
|
||||
* error code from a native database error message
|
||||
*/
|
||||
protected static $errorRegexps = array(
|
||||
'/parser: parse error at or near/i'
|
||||
=> Doctrine::ERR_SYNTAX,
|
||||
'/syntax error at/'
|
||||
=> Doctrine::ERR_SYNTAX,
|
||||
'/column reference .* is ambiguous/i'
|
||||
=> Doctrine::ERR_SYNTAX,
|
||||
'/column .* (of relation .*)?does not exist/i'
|
||||
=> Doctrine::ERR_NOSUCHFIELD,
|
||||
'/attribute .* not found|relation .* does not have attribute/i'
|
||||
=> Doctrine::ERR_NOSUCHFIELD,
|
||||
'/column .* specified in USING clause does not exist in (left|right) table/i'
|
||||
=> Doctrine::ERR_NOSUCHFIELD,
|
||||
'/(relation|sequence|table).*does not exist|class .* not found/i'
|
||||
=> Doctrine::ERR_NOSUCHTABLE,
|
||||
'/index .* does not exist/'
|
||||
=> Doctrine::ERR_NOT_FOUND,
|
||||
'/relation .* already exists/i'
|
||||
=> Doctrine::ERR_ALREADY_EXISTS,
|
||||
'/(divide|division) by zero$/i'
|
||||
=> Doctrine::ERR_DIVZERO,
|
||||
'/pg_atoi: error in .*: can\'t parse /i'
|
||||
=> Doctrine::ERR_INVALID_NUMBER,
|
||||
'/invalid input syntax for( type)? (integer|numeric)/i'
|
||||
=> Doctrine::ERR_INVALID_NUMBER,
|
||||
'/value .* is out of range for type \w*int/i'
|
||||
=> Doctrine::ERR_INVALID_NUMBER,
|
||||
'/integer out of range/i'
|
||||
=> Doctrine::ERR_INVALID_NUMBER,
|
||||
'/value too long for type character/i'
|
||||
=> Doctrine::ERR_INVALID,
|
||||
'/permission denied/'
|
||||
=> Doctrine::ERR_ACCESS_VIOLATION,
|
||||
'/violates [\w ]+ constraint/'
|
||||
=> Doctrine::ERR_CONSTRAINT,
|
||||
'/referential integrity violation/'
|
||||
=> Doctrine::ERR_CONSTRAINT,
|
||||
'/violates not-null constraint/'
|
||||
=> Doctrine::ERR_CONSTRAINT_NOT_NULL,
|
||||
'/more expressions than target columns/i'
|
||||
=> Doctrine::ERR_VALUE_COUNT_ON_ROW,
|
||||
);
|
||||
|
||||
/**
|
||||
* This method checks if native error code/message can be
|
||||
* converted into a portable code and then adds this
|
||||
* portable error code to $portableCode field
|
||||
*
|
||||
* the portable error code is added at the end of array
|
||||
*
|
||||
* @param array $errorInfo error info array
|
||||
* @since 1.0
|
||||
* @see Doctrine::ERR_* constants
|
||||
* @see Doctrine_Connection::$portableCode
|
||||
* @return boolean whether or not the error info processing was successfull
|
||||
* (the process is successfull if portable error code was found)
|
||||
*/
|
||||
public function processErrorInfo(array $errorInfo)
|
||||
{
|
||||
foreach (self::$errorRegexps as $regexp => $code) {
|
||||
if (preg_match($regexp, $errorInfo[2])) {
|
||||
$this->portableCode = $code;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -1,78 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Connection_Exception');
|
||||
/**
|
||||
* Doctrine_Connection_Sqlite_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Connection
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
*/
|
||||
class Doctrine_Connection_Sqlite_Exception extends Doctrine_Connection_Exception
|
||||
{
|
||||
/**
|
||||
* @var array $errorRegexps an array that is used for determining portable
|
||||
* error code from a native database error message
|
||||
*/
|
||||
protected static $errorRegexps = array(
|
||||
'/^no such table:/' => Doctrine::ERR_NOSUCHTABLE,
|
||||
'/^no such index:/' => Doctrine::ERR_NOT_FOUND,
|
||||
'/^(table|index) .* already exists$/' => Doctrine::ERR_ALREADY_EXISTS,
|
||||
'/PRIMARY KEY must be unique/i' => Doctrine::ERR_CONSTRAINT,
|
||||
'/is not unique/' => Doctrine::ERR_CONSTRAINT,
|
||||
'/columns .* are not unique/i' => Doctrine::ERR_CONSTRAINT,
|
||||
'/uniqueness constraint failed/' => Doctrine::ERR_CONSTRAINT,
|
||||
'/may not be NULL/' => Doctrine::ERR_CONSTRAINT_NOT_NULL,
|
||||
'/^no such column:/' => Doctrine::ERR_NOSUCHFIELD,
|
||||
'/column not present in both tables/i' => Doctrine::ERR_NOSUCHFIELD,
|
||||
'/^near ".*": syntax error$/' => Doctrine::ERR_SYNTAX,
|
||||
'/[0-9]+ values for [0-9]+ columns/i' => Doctrine::ERR_VALUE_COUNT_ON_ROW,
|
||||
);
|
||||
|
||||
/**
|
||||
* This method checks if native error code/message can be
|
||||
* converted into a portable code and then adds this
|
||||
* portable error code to $portableCode field
|
||||
*
|
||||
* @param array $errorInfo error info array
|
||||
* @since 1.0
|
||||
* @see Doctrine::ERR_* constants
|
||||
* @see Doctrine_Connection::$portableCode
|
||||
* @return boolean whether or not the error info processing was successfull
|
||||
* (the process is successfull if portable error code was found)
|
||||
*/
|
||||
public function processErrorInfo(array $errorInfo)
|
||||
{
|
||||
foreach (self::$errorRegexps as $regexp => $code) {
|
||||
if (preg_match($regexp, $errorInfo[2])) {
|
||||
|
||||
$this->portableCode = $code;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -182,6 +182,11 @@ class Doctrine_Connection_UnitOfWork
|
|||
$this->_deletedEntities = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes all entity insertions for entities of the specified type.
|
||||
*
|
||||
* @param Doctrine::ORM::Mapping::ClassMetadata $class
|
||||
*/
|
||||
private function _executeInserts($class)
|
||||
{
|
||||
//TODO: Maybe $persister->addInsert($entity) in the loop and
|
||||
|
@ -193,10 +198,18 @@ class Doctrine_Connection_UnitOfWork
|
|||
foreach ($this->_newEntities as $entity) {
|
||||
if ($entity->getClass()->getClassName() == $className) {
|
||||
$persister->insert($entity);
|
||||
if ($class->isIdGeneratorIdentity()) {
|
||||
$entity->_assignIdentifier($class->getIdGenerator()->getPostInsertId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes all entity updates for entities of the specified type.
|
||||
*
|
||||
* @param Doctrine::ORM::Mapping::ClassMetadata $class
|
||||
*/
|
||||
private function _executeUpdates($class)
|
||||
{
|
||||
$className = $class->getClassName();
|
||||
|
@ -208,6 +221,11 @@ class Doctrine_Connection_UnitOfWork
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes all entity deletions for entities of the specified type.
|
||||
*
|
||||
* @param Doctrine::ORM::Mapping::ClassMetadata $class
|
||||
*/
|
||||
private function _executeDeletions($class)
|
||||
{
|
||||
$className = $class->getClassName();
|
||||
|
@ -224,7 +242,7 @@ class Doctrine_Connection_UnitOfWork
|
|||
*
|
||||
* @return array
|
||||
*/
|
||||
private function _getCommitOrder()
|
||||
private function _getCommitOrder(array $entityChangeSet = null)
|
||||
{
|
||||
//TODO: Once these 3 arrays are indexed by classname we can do this:
|
||||
// Either way... do we need to care about duplicates?
|
||||
|
@ -233,8 +251,10 @@ class Doctrine_Connection_UnitOfWork
|
|||
array_keys($this->_dirtyEntities),
|
||||
array_keys($this->_deletedEntities)
|
||||
);*/
|
||||
|
||||
$entityChangeSet = array_merge($this->_newEntities, $this->_dirtyEntities, $this->_deletedEntities);
|
||||
|
||||
if (is_null($entityChangeSet)) {
|
||||
$entityChangeSet = array_merge($this->_newEntities, $this->_dirtyEntities, $this->_deletedEntities);
|
||||
}
|
||||
|
||||
/* if (count($entityChangeSet) == 1) {
|
||||
* return array($entityChangeSet[0]->getClass());
|
||||
|
@ -383,10 +403,10 @@ class Doctrine_Connection_UnitOfWork
|
|||
unset($this->_newEntities[$oid]);
|
||||
return; // entity has not been persisted yet, so nothing more to do.
|
||||
}
|
||||
/* Seems unnecessary since _dirtyEntities is filled & cleared on commit, not earlier
|
||||
if (isset($this->_dirtyEntities[$oid])) {
|
||||
unset($this->_dirtyEntities[$oid]);
|
||||
}*/
|
||||
|
||||
if (isset($this->_dirtyEntities[$oid])) {
|
||||
unset($this->_dirtyEntities[$oid]);
|
||||
}
|
||||
if ( ! isset($this->_deletedEntities[$oid])) {
|
||||
$this->_deletedEntities[$oid] = $entity;
|
||||
}
|
||||
|
@ -430,7 +450,7 @@ class Doctrine_Connection_UnitOfWork
|
|||
{
|
||||
$oid = $entity->getOid();
|
||||
return isset($this->_newEntities[$oid]) ||
|
||||
//isset($this->_dirtyEntities[$oid]) ||
|
||||
isset($this->_dirtyEntities[$oid]) ||
|
||||
isset($this->_deletedEntities[$oid]) ||
|
||||
$this->isInIdentityMap($entity);
|
||||
}
|
||||
|
@ -584,18 +604,14 @@ class Doctrine_Connection_UnitOfWork
|
|||
$visited = array();
|
||||
$this->_doSave($entity, $visited, $insertNow);
|
||||
if ( ! empty($insertNow)) {
|
||||
// We have no choice. This means that there are either new entities
|
||||
// with an IDENTITY key generation or with a natural identifier.
|
||||
// In both cases we must commit the inserts instantly.
|
||||
//TODO: Isnt it enough to only execute the inserts instead of full flush?
|
||||
$this->commit();
|
||||
/* The following may be better:
|
||||
// We have no choice. This means that there are new entities
|
||||
// with an IDENTITY column key generation.
|
||||
$commitOrder = $this->_getCommitOrder($insertNow);
|
||||
foreach ($commitOrder as $class) {
|
||||
$this->_executeInserts($class);
|
||||
}
|
||||
//... remove them from _newEntities, or dont store them there in the first place
|
||||
*/
|
||||
// remove them from _newEntities
|
||||
$this->_newEntities = array_diff_key($this->_newEntities, $insertNow);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -621,22 +637,13 @@ class Doctrine_Connection_UnitOfWork
|
|||
// nothing to do for $entity
|
||||
break;
|
||||
case Doctrine_Entity::STATE_NEW:
|
||||
if ($class->isIdGeneratorIdentity()) {
|
||||
$result = $class->getIdGenerator()->generate($entity);
|
||||
if ($result == Doctrine_Id_AbstractIdGenerator::POST_INSERT_INDICATOR) {
|
||||
$insertNow[$entity->getOid()] = $entity;
|
||||
$this->_newEntities[$entity->getOid()] = $entity;
|
||||
} else if ( ! $class->usesIdGenerator()) {
|
||||
$insertNow[$entity->getOid()] = $entity;
|
||||
$this->_newEntities[$entity->getOid()] = $entity;
|
||||
//...
|
||||
} else if ($class->isIdGeneratorSequence()) {
|
||||
// Get the next sequence number
|
||||
//TODO: sequence name?
|
||||
$id = $this->_em->getConnection()->getSequenceManager()->nextId("foo");
|
||||
$entity->set($class->getSingleIdentifierFieldName(), $id);
|
||||
$this->registerNew($entity);
|
||||
} else {
|
||||
throw new Doctrine_Exception("Unable to handle ID generation of new entity.");
|
||||
$entity->_assignIdentifier($result);
|
||||
}
|
||||
$this->registerNew($entity);
|
||||
break;
|
||||
case Doctrine_Entity::STATE_DETACHED:
|
||||
//exception?
|
||||
|
@ -670,6 +677,12 @@ class Doctrine_Connection_UnitOfWork
|
|||
$this->_doDelete($entity, array());
|
||||
}
|
||||
|
||||
/**
|
||||
* Enter description here...
|
||||
*
|
||||
* @param Doctrine_Entity $entity
|
||||
* @param array $visited
|
||||
*/
|
||||
private function _doDelete(Doctrine_Entity $entity, array &$visited)
|
||||
{
|
||||
if (isset($visited[$entity->getOid()])) {
|
||||
|
|
|
@ -45,61 +45,28 @@ class Doctrine_ConnectionFactory
|
|||
'dblib' => 'Doctrine_Connection_Mssql',
|
||||
'firebird' => 'Doctrine_Connection_Firebird',
|
||||
'informix' => 'Doctrine_Connection_Informix',
|
||||
'mock' => 'Doctrine_Connection_Mock');
|
||||
|
||||
/**
|
||||
* The EventManager that is injected into all created Connections.
|
||||
*
|
||||
* @var EventManager
|
||||
*/
|
||||
private $_eventManager;
|
||||
|
||||
/**
|
||||
* The Configuration that is injected into all created Connections.
|
||||
*
|
||||
* @var Configuration
|
||||
*/
|
||||
private $_config;
|
||||
);
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Configuration that is injected into all Connections.
|
||||
*
|
||||
* @param Doctrine_Configuration $config
|
||||
*/
|
||||
public function setConfiguration(Doctrine_Configuration $config)
|
||||
{
|
||||
$this->_config = $config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the EventManager that is injected into all Connections.
|
||||
*
|
||||
* @param Doctrine_EventManager $eventManager
|
||||
*/
|
||||
public function setEventManager(Doctrine_EventManager $eventManager)
|
||||
{
|
||||
$this->_eventManager = $eventManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a connection object with the specified parameters.
|
||||
*
|
||||
* @param array $params
|
||||
* @return Connection
|
||||
*/
|
||||
public function createConnection(array $params)
|
||||
public function createConnection(array $params, Doctrine_Configuration $config = null,
|
||||
Doctrine_EventManager $eventManager = null)
|
||||
{
|
||||
// create default config and event manager, if not set
|
||||
if ( ! $this->_config) {
|
||||
$this->_config = new Doctrine_Configuration();
|
||||
if ( ! $config) {
|
||||
$config = new Doctrine_Configuration();
|
||||
}
|
||||
if ( ! $this->_eventManager) {
|
||||
$this->_eventManager = new Doctrine_EventManager();
|
||||
if ( ! $eventManager) {
|
||||
$eventManager = new Doctrine_EventManager();
|
||||
}
|
||||
|
||||
// check for existing pdo object
|
||||
|
@ -110,9 +77,13 @@ class Doctrine_ConnectionFactory
|
|||
} else {
|
||||
$this->_checkParams($params);
|
||||
}
|
||||
$className = $this->_drivers[$params['driver']];
|
||||
if (isset($params['driverClass'])) {
|
||||
$className = $params['driverClass'];
|
||||
} else {
|
||||
$className = $this->_drivers[$params['driver']];
|
||||
}
|
||||
|
||||
return new $className($params, $this->_config, $this->_eventManager);
|
||||
return new $className($params, $config, $eventManager);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -125,14 +96,14 @@ class Doctrine_ConnectionFactory
|
|||
// check existance of mandatory parameters
|
||||
|
||||
// driver
|
||||
if ( ! isset($params['driver'])) {
|
||||
if ( ! isset($params['driver']) && ! isset($params['driverClass'])) {
|
||||
throw Doctrine_ConnectionFactory_Exception::driverRequired();
|
||||
}
|
||||
|
||||
// check validity of parameters
|
||||
|
||||
// driver
|
||||
if ( ! isset($this->_drivers[$params['driver']])) {
|
||||
if ( isset($params['driver']) && ! isset($this->_drivers[$params['driver']])) {
|
||||
throw Doctrine_ConnectionFactory_Exception::unknownDriver($driverName);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_ConnectionFactory_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Compiler
|
||||
* @author Roman Borschel <roman@code-factory.org>
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 2.0
|
||||
* @version $Revision$
|
||||
*/
|
||||
class Doctrine_ConnectionFactory_Exception extends Doctrine_Exception
|
||||
{
|
||||
public static function userRequired()
|
||||
{
|
||||
return new self("The 'user' option is mandatory.");
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Exception');
|
||||
/**
|
||||
* Doctrine_DataDict_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage DataDict
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
*/
|
||||
class Doctrine_DataDict_Exception extends Doctrine_Exception
|
||||
{ }
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage DataDict
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lorenzo Alberton <l.alberton@quipo.it> (PEAR MDB2 Interbase driver)
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_DataDict_Firebird extends Doctrine_DataDict
|
||||
{
|
||||
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage DataDict
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove.
|
||||
*/
|
||||
class Doctrine_DataDict_Informix extends Doctrine_DataDict
|
||||
{
|
||||
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage DataDict
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @author Frank M. Kromann <frank@kromann.info> (PEAR MDB2 Mssql driver)
|
||||
* @author David Coallier <davidc@php.net> (PEAR MDB2 Mssql driver)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_DataDict_Mssql extends Doctrine_DataDict
|
||||
{
|
||||
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage DataDict
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_DataDict_Mysql extends Doctrine_DataDict
|
||||
{
|
||||
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage DataDict
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_DataDict_Oracle extends Doctrine_DataDict
|
||||
{
|
||||
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage DataDict
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Paul Cooper <pgc@ucecom.com>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_DataDict_Pgsql extends Doctrine_DataDict
|
||||
{
|
||||
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage DataDict
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_DataDict_Sqlite extends Doctrine_DataDict
|
||||
{
|
||||
|
||||
}
|
|
@ -246,6 +246,17 @@ class Doctrine_DatabasePlatform_FirebirdPlatform extends Doctrine_DatabasePlatfo
|
|||
return 'COLLATE ' . $collation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enter description here...
|
||||
*
|
||||
* @param unknown_type $sequenceName
|
||||
* @override
|
||||
*/
|
||||
public function getSequenceNextValSql($sequenceName)
|
||||
{
|
||||
return 'SELECT GEN_ID(' . $this->quoteIdentifier($sequenceName) . ', 1) FROM RDB$DATABASE';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -331,6 +331,17 @@ class Doctrine_DatabasePlatform_OraclePlatform extends Doctrine_DatabasePlatform
|
|||
'unsigned' => $unsigned,
|
||||
'fixed' => $fixed);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enter description here...
|
||||
*
|
||||
* @param unknown_type $sequenceName
|
||||
* @override
|
||||
*/
|
||||
public function getSequenceNextValSql($sequenceName)
|
||||
{
|
||||
return 'SELECT ' . $this->quoteIdentifier($sequenceName) . '.nextval FROM DUAL';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -204,7 +204,7 @@ abstract class Doctrine_Entity implements ArrayAccess, Serializable
|
|||
public function __construct()
|
||||
{
|
||||
$this->_entityName = get_class($this);
|
||||
$this->_em = Doctrine_EntityManagerFactory::getManager($this->_entityName);
|
||||
$this->_em = Doctrine_EntityManager::getActiveEntityManager();
|
||||
$this->_class = $this->_em->getClassMetadata($this->_entityName);
|
||||
$this->_oid = self::$_index++;
|
||||
$this->_data = $this->_em->_getTmpEntityData();
|
||||
|
|
|
@ -61,6 +61,14 @@ class Doctrine_EntityManager
|
|||
*/
|
||||
const FLUSHMODE_MANUAL = 'manual';
|
||||
|
||||
/**
|
||||
* The currently active EntityManager. Only one EntityManager can be active
|
||||
* at any time.
|
||||
*
|
||||
* @var Doctrine::ORM::EntityManager
|
||||
*/
|
||||
private static $_activeEm;
|
||||
|
||||
/**
|
||||
* The unique name of the EntityManager. The name is used to bind entity classes
|
||||
* to certain EntityManagers.
|
||||
|
@ -132,16 +140,21 @@ class Doctrine_EntityManager
|
|||
*/
|
||||
private $_tmpEntityData = array();
|
||||
|
||||
private $_closed = false;
|
||||
|
||||
/**
|
||||
* Creates a new EntityManager that operates on the given database connection.
|
||||
*
|
||||
* @param Doctrine_Connection $conn
|
||||
* @param string $name
|
||||
*/
|
||||
public function __construct(Doctrine_Connection $conn, $name = null)
|
||||
protected function __construct(Doctrine_Connection $conn, $name, Doctrine_Configuration $config,
|
||||
Doctrine_EventManager $eventManager)
|
||||
{
|
||||
$this->_conn = $conn;
|
||||
$this->_name = $name;
|
||||
$this->_config = $config;
|
||||
$this->_eventManager = $eventManager;
|
||||
$this->_metadataFactory = new Doctrine_ClassMetadata_Factory(
|
||||
$this, new Doctrine_ClassMetadata_CodeDriver());
|
||||
$this->_unitOfWork = new Doctrine_Connection_UnitOfWork($this);
|
||||
|
@ -158,6 +171,16 @@ class Doctrine_EntityManager
|
|||
return $this->_conn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name of the EntityManager.
|
||||
*
|
||||
* @return string The name of the EntityManager.
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return $this->_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the metadata for a class. Alias for getClassMetadata().
|
||||
*
|
||||
|
@ -302,6 +325,7 @@ class Doctrine_EntityManager
|
|||
*/
|
||||
public function flush()
|
||||
{
|
||||
$this->_errorIfNotActiveOrClosed();
|
||||
$this->_unitOfWork->commit();
|
||||
}
|
||||
|
||||
|
@ -365,12 +389,12 @@ class Doctrine_EntityManager
|
|||
}
|
||||
|
||||
/**
|
||||
* Releases the EntityManager.
|
||||
* Closes the EntityManager.
|
||||
*
|
||||
*/
|
||||
public function close()
|
||||
{
|
||||
//Doctrine_EntityManagerFactory::releaseManager($this);
|
||||
$this->_closed = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -409,6 +433,7 @@ class Doctrine_EntityManager
|
|||
*/
|
||||
public function save(Doctrine_Entity $entity)
|
||||
{
|
||||
$this->_errorIfNotActiveOrClosed();
|
||||
$this->_unitOfWork->save($entity);
|
||||
if ($this->_flushMode == self::FLUSHMODE_IMMEDIATE) {
|
||||
$this->flush();
|
||||
|
@ -423,6 +448,7 @@ class Doctrine_EntityManager
|
|||
*/
|
||||
public function delete(Doctrine_Entity $entity)
|
||||
{
|
||||
$this->_errorIfNotActiveOrClosed();
|
||||
$this->_unitOfWork->delete($entity);
|
||||
if ($this->_flushMode == self::FLUSHMODE_IMMEDIATE) {
|
||||
$this->flush();
|
||||
|
@ -488,6 +514,8 @@ class Doctrine_EntityManager
|
|||
*/
|
||||
public function createEntity($className, array $data)
|
||||
{
|
||||
$this->_errorIfNotActiveOrClosed();
|
||||
|
||||
$this->_tmpEntityData = $data;
|
||||
$className = $this->_inferCorrectClassName($data, $className);
|
||||
$classMetadata = $this->getClassMetadata($className);
|
||||
|
@ -611,28 +639,6 @@ class Doctrine_EntityManager
|
|||
return $this->_eventManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the EventManager used by the EntityManager.
|
||||
*
|
||||
* @param Doctrine::Common::EventManager $eventManager
|
||||
* @return void
|
||||
*/
|
||||
public function setEventManager(Doctrine_EventManager $eventManager)
|
||||
{
|
||||
$this->_eventManager = $eventManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Configuration used by the EntityManager.
|
||||
*
|
||||
* @param Doctrine::Common::Configuration $config
|
||||
* @return void
|
||||
*/
|
||||
public function setConfiguration(Doctrine_Configuration $config)
|
||||
{
|
||||
$this->_config = $config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the Configuration used by the EntityManager.
|
||||
*
|
||||
|
@ -643,6 +649,13 @@ class Doctrine_EntityManager
|
|||
return $this->_config;
|
||||
}
|
||||
|
||||
private function _errorIfNotActiveOrClosed()
|
||||
{
|
||||
if ( ! $this->isActive() || $this->_closed) {
|
||||
throw Doctrine_EntityManagerException::notActiveOrClosed($this->_name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the UnitOfWork used by the EntityManager to coordinate operations.
|
||||
*
|
||||
|
@ -654,34 +667,69 @@ class Doctrine_EntityManager
|
|||
}
|
||||
|
||||
/**
|
||||
* Enter description here...
|
||||
* Checks whether this EntityManager is the currently active one.
|
||||
*
|
||||
* @param unknown_type $type
|
||||
* @param unknown_type $class
|
||||
* @return boolean
|
||||
*/
|
||||
/*public function getIdGenerator($class)
|
||||
public function isActive()
|
||||
{
|
||||
$type = $class->getIdGeneratorType();
|
||||
if ($type == Doctrine_ClassMetadata::GENERATOR_TYPE_IDENTITY) {
|
||||
if ( ! isset($this->_idGenerators[$type])) {
|
||||
$this->_idGenerators[$type] = new Doctrine_Id_IdentityGenerator($this);
|
||||
}
|
||||
} else if ($type == Doctrine_ClassMetadata::GENERATOR_TYPE_SEQUENCE) {
|
||||
if ( ! isset($this->_idGenerators[$type])) {
|
||||
$this->_idGenerators[$type] = new Doctrine_Id_SequenceGenerator($this);
|
||||
}
|
||||
} else if ($type == Doctrine_ClassMetadata::GENERATOR_TYPE_TABLE) {
|
||||
if ( ! isset($this->_idGenerators[$type])) {
|
||||
$this->_idGenerators[$type] = new Doctrine_Id_TableGenerator($this);
|
||||
}
|
||||
return self::$_activeEm === $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes this EntityManager the currently active one.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function activate()
|
||||
{
|
||||
self::$_activeEm = $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory method to create EntityManager instances.
|
||||
* A newly created EntityManager is immediately activated, making it the
|
||||
* currently active EntityManager.
|
||||
*
|
||||
* @param mixed $conn An array with the connection parameters or an existing
|
||||
* Doctrine::DBAL::Connection instance.
|
||||
* @param string $name
|
||||
* @param Doctrine::Common::Configuration $config The Configuration instance to use.
|
||||
* @param Doctrine::Common::EventManager $eventManager The EventManager instance to use.
|
||||
* @return Doctrine::ORM::EntityManager The created EntityManager.
|
||||
*/
|
||||
public static function create($conn, $name, Doctrine_Configuration $config = null,
|
||||
Doctrine_EventManager $eventManager = null)
|
||||
{
|
||||
if (is_array($conn)) {
|
||||
$connFactory = new Doctrine_ConnectionFactory();
|
||||
$conn = $connFactory->createConnection($conn, $config, $eventManager);
|
||||
} else if ( ! $conn instanceof Doctrine_Connection) {
|
||||
throw new Doctrine_Exception("Invalid parameter '$conn'.");
|
||||
}
|
||||
|
||||
$generator = $this->_idGenerators[$type];
|
||||
$generator->configureForClass($class);
|
||||
if (is_null($config)) {
|
||||
$config = new Doctrine_Configuration();
|
||||
}
|
||||
if (is_null($eventManager)) {
|
||||
$eventManager = new Doctrine_EventManager();
|
||||
}
|
||||
|
||||
return $generator;
|
||||
}*/
|
||||
$em = new Doctrine_EntityManager($conn, $name, $config, $eventManager);
|
||||
$em->activate();
|
||||
|
||||
return $em;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the currently active EntityManager.
|
||||
*
|
||||
* @return Doctrine::ORM::EntityManager
|
||||
*/
|
||||
public static function getActiveEntityManager()
|
||||
{
|
||||
return self::$_activeEm;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -1,208 +0,0 @@
|
|||
<?php
|
||||
|
||||
#namespace Doctrine::ORM;
|
||||
|
||||
#use Doctrine::DBAL::ConnectionFactory;
|
||||
#use Doctrine::Common::Configuration;
|
||||
#use Doctrine::Common::EventManager;
|
||||
|
||||
/**
|
||||
* The EntityManagerFactory is responsible for bootstrapping EntityManager
|
||||
* instances as well as keeping track of all created EntityManagers and
|
||||
* hard bindings to Entities.
|
||||
*
|
||||
* @author Roman Borschel <roman@code-factory.org>
|
||||
* @since 2.0
|
||||
*/
|
||||
class Doctrine_EntityManagerFactory
|
||||
{
|
||||
/**
|
||||
* Map of all created EntityManagers, keys are the names.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private static $_ems = array();
|
||||
|
||||
/**
|
||||
* EntityManager to Entity bindings.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private static $_emBindings = array();
|
||||
|
||||
/**
|
||||
* The ConnectionFactory used to create DBAL connections.
|
||||
*
|
||||
* @var unknown_type
|
||||
*/
|
||||
private $_connFactory;
|
||||
|
||||
/**
|
||||
* The EventManager that is injected into all created Connections
|
||||
* and EntityManagers.
|
||||
*
|
||||
* @var EventManager
|
||||
*/
|
||||
private $_eventManager;
|
||||
|
||||
/**
|
||||
* The Configuration that is injected into all creatd Connections
|
||||
* and EntityManagers.
|
||||
*
|
||||
* @var Configuration
|
||||
*/
|
||||
private $_config;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
* Creates a new EntityManagerFactory.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Configuration that is injected into all EntityManagers
|
||||
* (and their Connections) that are created by this factory.
|
||||
*
|
||||
* @param Doctrine_Configuration $eventManager
|
||||
*/
|
||||
public function setConfiguration(Doctrine_Configuration $config)
|
||||
{
|
||||
$this->_config = $config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the EventManager that is injected into all EntityManagers
|
||||
* (and their Connections) that are created by this factory.
|
||||
*
|
||||
* @param Doctrine_EventManager $eventManager
|
||||
*/
|
||||
public function setEventManager(Doctrine_EventManager $eventManager)
|
||||
{
|
||||
$this->_eventManager = $eventManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an EntityManager.
|
||||
*
|
||||
* @param unknown_type $connParams
|
||||
* @param unknown_type $name
|
||||
* @return unknown
|
||||
*/
|
||||
public function createEntityManager($connParams, $name = null)
|
||||
{
|
||||
if ( ! $this->_connFactory) {
|
||||
// Initialize connection factory
|
||||
$this->_connFactory = new Doctrine_ConnectionFactory();
|
||||
if ( ! $this->_config) {
|
||||
$this->_config = new Doctrine_Configuration();
|
||||
}
|
||||
if ( ! $this->_eventManager) {
|
||||
$this->_eventManager = new Doctrine_EventManager();
|
||||
}
|
||||
$this->_connFactory->setConfiguration($this->_config);
|
||||
$this->_connFactory->setEventManager($this->_eventManager);
|
||||
}
|
||||
|
||||
$conn = $this->_connFactory->createConnection($connParams);
|
||||
|
||||
$em = new Doctrine_EntityManager($conn);
|
||||
$em->setEventManager($this->_eventManager);
|
||||
$em->setConfiguration($this->_config);
|
||||
|
||||
if ($name !== null) {
|
||||
self::$_ems[$name] = $em;
|
||||
} else {
|
||||
self::$_ems[] = $em;
|
||||
}
|
||||
|
||||
return $em;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the EntityManager that is responsible for the Entity.
|
||||
* Static method, so that ActiveEntities can look up the right EntityManager
|
||||
* without having a reference to the factory at hand.
|
||||
*
|
||||
* @param string $entityName
|
||||
* @return EntityManager
|
||||
* @throws Doctrine_EntityManager_Exception If a suitable manager can not be found.
|
||||
*/
|
||||
public static function getManager($entityName = null)
|
||||
{
|
||||
if ( ! is_null($entityName) && isset(self::$_emBindings[$entityName])) {
|
||||
$emName = self::$_emBindings[$entityName];
|
||||
if (isset(self::$_ems[$emName])) {
|
||||
return self::$_ems[$emName];
|
||||
} else {
|
||||
throw Doctrine_EntityManagerFactory_Exception::noManagerWithName($emName);
|
||||
}
|
||||
} else if (self::$_ems) {
|
||||
return current(self::$_ems);
|
||||
} else {
|
||||
throw Doctrine_EntityManagerFactory_Exception::noEntityManagerAvailable();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the EntityManager that is responsible for the Entity.
|
||||
*
|
||||
* @param unknown_type $entityName
|
||||
* @return unknown
|
||||
*/
|
||||
public function getEntityManager($entityName = null)
|
||||
{
|
||||
return self::getManager($entityName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Binds an Entity to a specific EntityManager.
|
||||
*
|
||||
* @param string $entityName
|
||||
* @param string $emName
|
||||
*/
|
||||
public function bindEntityToManager($entityName, $emName)
|
||||
{
|
||||
if (isset(self::$_emBindings[$entityName])) {
|
||||
throw Doctrine_EntityManagerFactory_Exception::entityAlreadyBound($entityName);
|
||||
}
|
||||
self::$_emBindings[$entityName] = $emName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all bindings between Entities and EntityManagers.
|
||||
*/
|
||||
public function unbindAllManagers()
|
||||
{
|
||||
self::$_emBindings = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Releases all EntityManagers.
|
||||
*
|
||||
*/
|
||||
public function releaseAllManagers()
|
||||
{
|
||||
self::unbindAllManagers();
|
||||
self::$_ems = array();
|
||||
}
|
||||
|
||||
public function releaseAllBindings()
|
||||
{
|
||||
self::$_emBindings = array();
|
||||
}
|
||||
|
||||
public function releaseEntityManager($name)
|
||||
{
|
||||
if (isset(self::$_ems[$name])) {
|
||||
unset(self::$_ems[$name]);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -107,6 +107,7 @@ abstract class Doctrine_EntityPersister_Abstract
|
|||
//TODO: What if both join columns (local/foreign) are just db-only
|
||||
// columns (no fields in models) ? Currently we assume the foreign column
|
||||
// is mapped to a field in the foreign entity.
|
||||
//TODO: throw exc if field not set
|
||||
$insertData[$sourceColumn] = $new->_internalGetField(
|
||||
$new->getClass()->getFieldName($targetColumn)
|
||||
);
|
||||
|
@ -118,14 +119,6 @@ abstract class Doctrine_EntityPersister_Abstract
|
|||
|
||||
//TODO: perform insert
|
||||
$this->_conn->insert($class->getTableName(), $insertData);
|
||||
|
||||
//TODO: if IDENTITY pk, assign it
|
||||
if ($class->isIdGeneratorIdentity()) {
|
||||
//TODO: Postgres IDENTITY columns (SERIAL) use a sequence, so we need to pass the
|
||||
// sequence name to lastInsertId().
|
||||
//TODO: $this->_em->getIdGenerator($class)->generate();
|
||||
$entity->_assignIdentifier($this->_conn->lastInsertId());
|
||||
}
|
||||
}
|
||||
|
||||
/*protected function _fillJoinColumns($entity, array &$data)
|
||||
|
|
|
@ -1,411 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Access');
|
||||
|
||||
/**
|
||||
* Doctrine_EventListener_Chain
|
||||
* this class represents a chain of different listeners,
|
||||
* useful for having multiple listeners listening the events at the same time
|
||||
*
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @package Doctrine
|
||||
* @subpackage EventListener
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
*/
|
||||
class Doctrine_EventListener_Chain extends Doctrine_Access implements Doctrine_EventListener_Interface
|
||||
{
|
||||
/**
|
||||
* @var array $listeners an array containing all listeners
|
||||
*/
|
||||
protected $_listeners = array();
|
||||
|
||||
/**
|
||||
* add
|
||||
* adds a listener to the chain of listeners
|
||||
*
|
||||
* @param object $listener
|
||||
* @param string $name
|
||||
* @return void
|
||||
*/
|
||||
public function add($listener, $name = null)
|
||||
{
|
||||
if ( ! ($listener instanceof Doctrine_EventListener_Interface) &&
|
||||
! ($listener instanceof Doctrine_Overloadable)) {
|
||||
|
||||
throw new Doctrine_EventListener_Exception("Couldn't add eventlistener. EventListeners should implement either Doctrine_EventListener_Interface or Doctrine_Overloadable");
|
||||
}
|
||||
if ($name === null) {
|
||||
$this->_listeners[] = $listener;
|
||||
} else {
|
||||
$this->_listeners[$name] = $listener;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* returns a Doctrine_EventListener on success
|
||||
* and null on failure
|
||||
*
|
||||
* @param mixed $key
|
||||
* @return mixed
|
||||
*/
|
||||
public function get($key)
|
||||
{
|
||||
if ( ! isset($this->_listeners[$key])) {
|
||||
return null;
|
||||
}
|
||||
return $this->_listeners[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* set
|
||||
*
|
||||
* @param mixed $key
|
||||
* @param Doctrine_EventListener $listener
|
||||
* @return void
|
||||
*/
|
||||
public function set($key, $listener)
|
||||
{
|
||||
if( ! $listener instanceOf Doctrine_EventListener) {
|
||||
throw new Doctrine_Exception('Value variable in set is not an instance of Doctrine_EventListener');
|
||||
}
|
||||
|
||||
|
||||
$this->_listeners[$key] = $listener;
|
||||
}
|
||||
|
||||
/**
|
||||
* onLoad
|
||||
* an event invoked when Doctrine_Entity is being loaded from database
|
||||
*
|
||||
* @param Doctrine_Entity $record
|
||||
* @return void
|
||||
*/
|
||||
public function onLoad(Doctrine_Entity $record)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->onLoad($record);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onPreLoad
|
||||
* an event invoked when Doctrine_Entity is being loaded
|
||||
* from database but not yet initialized
|
||||
*
|
||||
* @param Doctrine_Entity $record
|
||||
* @return void
|
||||
*/
|
||||
public function onPreLoad(Doctrine_Entity $record)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->onPreLoad($record);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onSleep
|
||||
* an event invoked when Doctrine_Entity is serialized
|
||||
*
|
||||
* @param Doctrine_Entity $record
|
||||
* @return void
|
||||
*/
|
||||
public function onSleep(Doctrine_Entity $record)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->onSleep($record);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onWakeUp
|
||||
* an event invoked when Doctrine_Entity is unserialized
|
||||
*
|
||||
* @param Doctrine_Entity $record
|
||||
* @return void
|
||||
*/
|
||||
public function onWakeUp(Doctrine_Entity $record)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->onWakeUp($record);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* postClose
|
||||
* an event invoked after Doctrine_Connection is closed
|
||||
*
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function postClose(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postClose($event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* preClose
|
||||
* an event invoked before Doctrine_Connection is closed
|
||||
*
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function preClose(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preClose($event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onOpen
|
||||
* an event invoked after Doctrine_Connection is opened
|
||||
*
|
||||
* @param Doctrine_Connection $connection
|
||||
* @return void
|
||||
*/
|
||||
public function onOpen(Doctrine_Connection $connection)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->onOpen($connection);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onTransactionCommit
|
||||
* an event invoked after a Doctrine_Connection transaction is committed
|
||||
*
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function postTransactionCommit(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postTransactionCommit($event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onPreTransactionCommit
|
||||
* an event invoked before a Doctrine_Connection transaction is committed
|
||||
*
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function preTransactionCommit(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preTransactionCommit($event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onTransactionRollback
|
||||
* an event invoked after a Doctrine_Connection transaction is being rolled back
|
||||
*
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function postTransactionRollback(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postTransactionRollback($event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onPreTransactionRollback
|
||||
* an event invoked before a Doctrine_Connection transaction is being rolled back
|
||||
*
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function preTransactionRollback(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preTransactionRollback($event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onTransactionBegin
|
||||
* an event invoked after a Doctrine_Connection transaction has been started
|
||||
*
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function postTransactionBegin(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postTransactionBegin($event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onTransactionBegin
|
||||
* an event invoked before a Doctrine_Connection transaction is being started
|
||||
*
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function preTransactionBegin(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preTransactionBegin($event);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onCollectionDelete
|
||||
* an event invoked after a Doctrine_Collection is being deleted
|
||||
*
|
||||
* @param Doctrine_Collection $collection
|
||||
* @return void
|
||||
*/
|
||||
public function onCollectionDelete(Doctrine_Collection $collection)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->onCollectionDelete($collection);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onCollectionDelete
|
||||
* an event invoked after a Doctrine_Collection is being deleted
|
||||
*
|
||||
* @param Doctrine_Collection $collection
|
||||
* @return void
|
||||
*/
|
||||
public function onPreCollectionDelete(Doctrine_Collection $collection)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->onPreCollectionDelete($collection);
|
||||
}
|
||||
}
|
||||
public function postConnect(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postConnect($event);
|
||||
}
|
||||
}
|
||||
public function preConnect(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preConnect($event);
|
||||
}
|
||||
}
|
||||
public function preQuery(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preQuery($event);
|
||||
}
|
||||
}
|
||||
public function postQuery(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postQuery($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function prePrepare(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->prePrepare($event);
|
||||
}
|
||||
}
|
||||
public function postPrepare(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postPrepare($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function preExec(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preExec($event);
|
||||
}
|
||||
}
|
||||
public function postExec(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postExec($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function preError(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preError($event);
|
||||
}
|
||||
}
|
||||
public function postError(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postError($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function preFetch(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preFetch($event);
|
||||
}
|
||||
}
|
||||
public function postFetch(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postFetch($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function preFetchAll(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preFetchAll($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function postFetchAll(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postFetchAll($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function preStmtExecute(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preStmtExecute($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function postStmtExecute(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postStmtExecute($event);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id: Exception.php 1344 2007-05-12 23:27:16Z zYne $
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_EventListener_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage EventListener
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision: 1344 $
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
*/
|
||||
class Doctrine_EventListener_Exception extends Doctrine_Exception
|
||||
{ }
|
|
@ -1,69 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_EventListener_Interface');
|
||||
/**
|
||||
* Doctrine_EventListener all event listeners extend this base class
|
||||
* the empty methods allow child classes to only implement the methods they need to implement
|
||||
*
|
||||
*
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @package Doctrine
|
||||
* @subpackage EventListener
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
*/
|
||||
interface Doctrine_EventListener_Interface
|
||||
{
|
||||
public function preTransactionCommit(Doctrine_Event $event);
|
||||
public function postTransactionCommit(Doctrine_Event $event);
|
||||
|
||||
public function preTransactionRollback(Doctrine_Event $event);
|
||||
public function postTransactionRollback(Doctrine_Event $event);
|
||||
|
||||
public function preTransactionBegin(Doctrine_Event $event);
|
||||
public function postTransactionBegin(Doctrine_Event $event);
|
||||
|
||||
public function postConnect(Doctrine_Event $event);
|
||||
public function preConnect(Doctrine_Event $event);
|
||||
|
||||
public function preQuery(Doctrine_Event $event);
|
||||
public function postQuery(Doctrine_Event $event);
|
||||
|
||||
public function prePrepare(Doctrine_Event $event);
|
||||
public function postPrepare(Doctrine_Event $event);
|
||||
|
||||
public function preExec(Doctrine_Event $event);
|
||||
public function postExec(Doctrine_Event $event);
|
||||
|
||||
public function preError(Doctrine_Event $event);
|
||||
public function postError(Doctrine_Event $event);
|
||||
|
||||
public function preFetch(Doctrine_Event $event);
|
||||
public function postFetch(Doctrine_Event $event);
|
||||
|
||||
public function preFetchAll(Doctrine_Event $event);
|
||||
public function postFetchAll(Doctrine_Event $event);
|
||||
|
||||
public function preStmtExecute(Doctrine_Event $event);
|
||||
public function postStmtExecute(Doctrine_Event $event);
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Exception');
|
||||
/**
|
||||
* Doctrine_Export_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Export
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
*/
|
||||
class Doctrine_Export_Exception extends Doctrine_Exception
|
||||
{ }
|
|
@ -1,39 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Export_Sqlite
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Export
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @author Lorenzo Alberton <l.alberton@quipo.it> (PEAR MDB2 Interbase driver)
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Export_Firebird extends Doctrine_Export
|
||||
{
|
||||
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Export_Mssql
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Export
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @author Frank M. Kromann <frank@kromann.info> (PEAR MDB2 Mssql driver)
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Export_Mssql extends Doctrine_Export
|
||||
{
|
||||
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Export_Mysql
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Export
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Export_Mysql extends Doctrine_Export
|
||||
{
|
||||
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Export_Oracle
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Export
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @todo Remove.
|
||||
*/
|
||||
class Doctrine_Export_Oracle extends Doctrine_Export
|
||||
{
|
||||
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Export_Pgsql
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Export
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Export_Pgsql extends Doctrine_Export
|
||||
{
|
||||
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Export_Sqlite
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Export
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Export_Sqlite extends Doctrine_Export
|
||||
{
|
||||
|
||||
}
|
|
@ -1,763 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Expression_Driver
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Expression
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
*/
|
||||
class Doctrine_Expression_Driver extends Doctrine_Connection_Module
|
||||
{
|
||||
public function getIdentifier($column)
|
||||
{
|
||||
return $column;
|
||||
}
|
||||
public function getIdentifiers($columns)
|
||||
{
|
||||
return $columns;
|
||||
}
|
||||
|
||||
/**
|
||||
* regexp
|
||||
* returns the regular expression operator
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function regexp()
|
||||
{
|
||||
throw new Doctrine_Expression_Exception('Regular expression operator is not supported by this database driver.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the average value of a column
|
||||
*
|
||||
* @param string $column the column to use
|
||||
* @return string generated sql including an AVG aggregate function
|
||||
*/
|
||||
public function avg($column)
|
||||
{
|
||||
$column = $this->getIdentifier($column);
|
||||
return 'AVG(' . $column . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of rows (without a NULL value) of a column
|
||||
*
|
||||
* If a '*' is used instead of a column the number of selected rows
|
||||
* is returned.
|
||||
*
|
||||
* @param string|integer $column the column to use
|
||||
* @return string generated sql including a COUNT aggregate function
|
||||
*/
|
||||
public function count($column)
|
||||
{
|
||||
$column = $this->getIdentifier($column);
|
||||
return 'COUNT(' . $column . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the highest value of a column
|
||||
*
|
||||
* @param string $column the column to use
|
||||
* @return string generated sql including a MAX aggregate function
|
||||
*/
|
||||
public function max($column)
|
||||
{
|
||||
$column = $this->getIdentifier($column);
|
||||
return 'MAX(' . $column . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the lowest value of a column
|
||||
*
|
||||
* @param string $column the column to use
|
||||
* @return string
|
||||
*/
|
||||
public function min($column)
|
||||
{
|
||||
$column = $this->getIdentifier($column);
|
||||
return 'MIN(' . $column . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the total sum of a column
|
||||
*
|
||||
* @param string $column the column to use
|
||||
* @return string
|
||||
*/
|
||||
public function sum($column)
|
||||
{
|
||||
$column = $this->getIdentifier($column);
|
||||
return 'SUM(' . $column . ')';
|
||||
}
|
||||
|
||||
// scalar functions
|
||||
|
||||
/**
|
||||
* Returns the md5 sum of a field.
|
||||
*
|
||||
* Note: Not SQL92, but common functionality
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function md5($column)
|
||||
{
|
||||
$column = $this->getIdentifier($column);
|
||||
return 'MD5(' . $column . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the length of a text field.
|
||||
*
|
||||
* @param string $expression1
|
||||
* @param string $expression2
|
||||
* @return string
|
||||
*/
|
||||
public function length($column)
|
||||
{
|
||||
$column = $this->getIdentifier($column);
|
||||
return 'LENGTH(' . $column . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* Rounds a numeric field to the number of decimals specified.
|
||||
*
|
||||
* @param string $expression1
|
||||
* @param string $expression2
|
||||
* @return string
|
||||
*/
|
||||
public function round($column, $decimals = 0)
|
||||
{
|
||||
$column = $this->getIdentifier($column);
|
||||
|
||||
return 'ROUND(' . $column . ', ' . $decimals . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the remainder of the division operation
|
||||
* $expression1 / $expression2.
|
||||
*
|
||||
* @param string $expression1
|
||||
* @param string $expression2
|
||||
* @return string
|
||||
*/
|
||||
public function mod($expression1, $expression2)
|
||||
{
|
||||
$expression1 = $this->getIdentifier($expression1);
|
||||
$expression2 = $this->getIdentifier($expression2);
|
||||
return 'MOD(' . $expression1 . ', ' . $expression2 . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* trim
|
||||
* returns the string $str with leading and proceeding space characters removed
|
||||
*
|
||||
* @param string $str literal string or column name
|
||||
* @return string
|
||||
*/
|
||||
public function trim($str)
|
||||
{
|
||||
return 'TRIM(' . $str . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* rtrim
|
||||
* returns the string $str with proceeding space characters removed
|
||||
*
|
||||
* @param string $str literal string or column name
|
||||
* @return string
|
||||
*/
|
||||
public function rtrim($str)
|
||||
{
|
||||
return 'RTRIM(' . $str . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* ltrim
|
||||
* returns the string $str with leading space characters removed
|
||||
*
|
||||
* @param string $str literal string or column name
|
||||
* @return string
|
||||
*/
|
||||
public function ltrim($str)
|
||||
{
|
||||
return 'LTRIM(' . $str . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* upper
|
||||
* Returns the string $str with all characters changed to
|
||||
* uppercase according to the current character set mapping.
|
||||
*
|
||||
* @param string $str literal string or column name
|
||||
* @return string
|
||||
*/
|
||||
public function upper($str)
|
||||
{
|
||||
return 'UPPER(' . $str . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* lower
|
||||
* Returns the string $str with all characters changed to
|
||||
* lowercase according to the current character set mapping.
|
||||
*
|
||||
* @param string $str literal string or column name
|
||||
* @return string
|
||||
*/
|
||||
public function lower($str)
|
||||
{
|
||||
return 'LOWER(' . $str . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* locate
|
||||
* returns the position of the first occurrence of substring $substr in string $str
|
||||
*
|
||||
* @param string $substr literal string to find
|
||||
* @param string $str literal string
|
||||
* @return integer
|
||||
*/
|
||||
public function locate($str, $substr)
|
||||
{
|
||||
return 'LOCATE(' . $str . ', ' . $substr . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current system date.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function now()
|
||||
{
|
||||
return 'NOW()';
|
||||
}
|
||||
|
||||
/**
|
||||
* soundex
|
||||
* Returns a string to call a function to compute the
|
||||
* soundex encoding of a string
|
||||
*
|
||||
* The string "?000" is returned if the argument is NULL.
|
||||
*
|
||||
* @param string $value
|
||||
* @return string SQL soundex function with given parameter
|
||||
*/
|
||||
public function soundex($value)
|
||||
{
|
||||
throw new Doctrine_Expression_Exception('SQL soundex function not supported by this driver.');
|
||||
}
|
||||
|
||||
/**
|
||||
* return string to call a function to get a substring inside an SQL statement
|
||||
*
|
||||
* Note: Not SQL92, but common functionality.
|
||||
*
|
||||
* SQLite only supports the 2 parameter variant of this function
|
||||
*
|
||||
* @param string $value an sql string literal or column name/alias
|
||||
* @param integer $position where to start the substring portion
|
||||
* @param integer $length the substring portion length
|
||||
* @return string SQL substring function with given parameters
|
||||
*/
|
||||
public function substring($value, $from, $len = null)
|
||||
{
|
||||
$value = $this->getIdentifier($value);
|
||||
if ($len === null)
|
||||
return 'SUBSTRING(' . $value . ' FROM ' . $from . ')';
|
||||
else {
|
||||
$len = $this->getIdentifier($len);
|
||||
return 'SUBSTRING(' . $value . ' FROM ' . $from . ' FOR ' . $len . ')';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a series of strings concatinated
|
||||
*
|
||||
* concat() accepts an arbitrary number of parameters. Each parameter
|
||||
* must contain an expression
|
||||
*
|
||||
* @param string $arg1, $arg2 ... $argN strings that will be concatinated.
|
||||
* @return string
|
||||
*/
|
||||
public function concat()
|
||||
{
|
||||
$args = func_get_args();
|
||||
|
||||
return join(' || ' , $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL for a logical not.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $e = $q->expr;
|
||||
* $q->select('*')->from('table')
|
||||
* ->where($e->eq('id', $e->not('null'));
|
||||
* </code>
|
||||
*
|
||||
* @return string a logical expression
|
||||
*/
|
||||
public function not($expression)
|
||||
{
|
||||
$expression = $this->getIdentifier($expression);
|
||||
return 'NOT(' . $expression . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL to perform the same mathematical operation over an array
|
||||
* of values or expressions.
|
||||
*
|
||||
* basicMath() accepts an arbitrary number of parameters. Each parameter
|
||||
* must contain a value or an expression or an array with values or
|
||||
* expressions.
|
||||
*
|
||||
* @param string $type the type of operation, can be '+', '-', '*' or '/'.
|
||||
* @param string|array(string)
|
||||
* @return string an expression
|
||||
*/
|
||||
private function basicMath($type, array $args)
|
||||
{
|
||||
$elements = $this->getIdentifiers($args);
|
||||
if (count($elements) < 1) {
|
||||
return '';
|
||||
}
|
||||
if (count($elements) == 1) {
|
||||
return $elements[0];
|
||||
} else {
|
||||
return '(' . implode(' ' . $type . ' ', $elements) . ')';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL to add values or expressions together.
|
||||
*
|
||||
* add() accepts an arbitrary number of parameters. Each parameter
|
||||
* must contain a value or an expression or an array with values or
|
||||
* expressions.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $e = $q->expr;
|
||||
*
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($e->eq($e->add('id', 2), 12));
|
||||
* </code>
|
||||
*
|
||||
* @param string|array(string)
|
||||
* @return string an expression
|
||||
*/
|
||||
public function add(array $args)
|
||||
{
|
||||
return $this->basicMath('+', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL to subtract values or expressions from eachother.
|
||||
*
|
||||
* subtract() accepts an arbitrary number of parameters. Each parameter
|
||||
* must contain a value or an expression or an array with values or
|
||||
* expressions.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $e = $q->expr;
|
||||
*
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($e->eq($e->sub('id', 2), 12));
|
||||
* </code>
|
||||
*
|
||||
* @param string|array(string)
|
||||
* @return string an expression
|
||||
*/
|
||||
public function sub(array $args)
|
||||
{
|
||||
return $this->basicMath('-', $args );
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL to multiply values or expressions by eachother.
|
||||
*
|
||||
* multiply() accepts an arbitrary number of parameters. Each parameter
|
||||
* must contain a value or an expression or an array with values or
|
||||
* expressions.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $e = $q->expr;
|
||||
*
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($e->eq($e->mul('id', 2), 12));
|
||||
* </code>
|
||||
*
|
||||
* @param string|array(string)
|
||||
* @return string an expression
|
||||
*/
|
||||
public function mul(array $args)
|
||||
{
|
||||
return $this->basicMath('*', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL to divide values or expressions by eachother.
|
||||
*
|
||||
* divide() accepts an arbitrary number of parameters. Each parameter
|
||||
* must contain a value or an expression or an array with values or
|
||||
* expressions.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $e = $q->expr;
|
||||
*
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($e->eq($e->div('id', 2), 12));
|
||||
* </code>
|
||||
*
|
||||
* @param string|array(string)
|
||||
* @return string an expression
|
||||
*/
|
||||
public function div(array $args)
|
||||
{
|
||||
return $this->basicMath('/', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL to check if two values are equal.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($q->expr->eq('id', 1));
|
||||
* </code>
|
||||
*
|
||||
* @param string $value1 logical expression to compare
|
||||
* @param string $value2 logical expression to compare with
|
||||
* @return string logical expression
|
||||
*/
|
||||
public function eq($value1, $value2)
|
||||
{
|
||||
$value1 = $this->getIdentifier($value1);
|
||||
$value2 = $this->getIdentifier($value2);
|
||||
return $value1 . ' = ' . $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL to check if two values are unequal.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($q->expr->neq('id', 1));
|
||||
* </code>
|
||||
*
|
||||
* @param string $value1 logical expression to compare
|
||||
* @param string $value2 logical expression to compare with
|
||||
* @return string logical expression
|
||||
*/
|
||||
public function neq($value1, $value2)
|
||||
{
|
||||
$value1 = $this->getIdentifier($value1);
|
||||
$value2 = $this->getIdentifier($value2);
|
||||
return $value1 . ' <> ' . $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL to check if one value is greater than another value.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($q->expr->gt('id', 1));
|
||||
* </code>
|
||||
*
|
||||
* @param string $value1 logical expression to compare
|
||||
* @param string $value2 logical expression to compare with
|
||||
* @return string logical expression
|
||||
*/
|
||||
public function gt($value1, $value2)
|
||||
{
|
||||
$value1 = $this->getIdentifier($value1);
|
||||
$value2 = $this->getIdentifier($value2);
|
||||
return $value1 . ' > ' . $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL to check if one value is greater than or equal to
|
||||
* another value.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($q->expr->gte('id', 1));
|
||||
* </code>
|
||||
*
|
||||
* @param string $value1 logical expression to compare
|
||||
* @param string $value2 logical expression to compare with
|
||||
* @return string logical expression
|
||||
*/
|
||||
public function gte($value1, $value2)
|
||||
{
|
||||
$value1 = $this->getIdentifier($value1);
|
||||
$value2 = $this->getIdentifier($value2);
|
||||
return $value1 . ' >= ' . $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL to check if one value is less than another value.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($q->expr->lt('id', 1));
|
||||
* </code>
|
||||
*
|
||||
* @param string $value1 logical expression to compare
|
||||
* @param string $value2 logical expression to compare with
|
||||
* @return string logical expression
|
||||
*/
|
||||
public function lt($value1, $value2)
|
||||
{
|
||||
$value1 = $this->getIdentifier($value1);
|
||||
$value2 = $this->getIdentifier($value2);
|
||||
return $value1 . ' < ' . $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL to check if one value is less than or equal to
|
||||
* another value.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($q->expr->lte('id', 1));
|
||||
* </code>
|
||||
*
|
||||
* @param string $value1 logical expression to compare
|
||||
* @param string $value2 logical expression to compare with
|
||||
* @return string logical expression
|
||||
*/
|
||||
public function lte($value1, $value2)
|
||||
{
|
||||
$value1 = $this->getIdentifier($value1);
|
||||
$value2 = $this->getIdentifier($value2);
|
||||
return $value1 . ' <= ' . $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the SQL to check if a value is one in a set of
|
||||
* given values..
|
||||
*
|
||||
* in() accepts an arbitrary number of parameters. The first parameter
|
||||
* must always specify the value that should be matched against. Successive
|
||||
* must contain a logical expression or an array with logical expressions.
|
||||
* These expressions will be matched against the first parameter.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($q->expr->in( 'id', array(1,2,3)));
|
||||
* </code>
|
||||
*
|
||||
* @param string $column the value that should be matched against
|
||||
* @param string|array(string) values that will be matched against $column
|
||||
* @return string logical expression
|
||||
*/
|
||||
public function in($column, $values)
|
||||
{
|
||||
if ( ! is_array($values)) {
|
||||
$values = array($values);
|
||||
}
|
||||
$values = $this->getIdentifiers($values);
|
||||
$column = $this->getIdentifier($column);
|
||||
|
||||
if (count($values) == 0) {
|
||||
throw new Doctrine_Expression_Exception('Values array for IN operator should not be empty.');
|
||||
}
|
||||
return $column . ' IN (' . implode(', ', $values) . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns SQL that checks if a expression is null.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($q->expr->isNull('id'));
|
||||
* </code>
|
||||
*
|
||||
* @param string $expression the expression that should be compared to null
|
||||
* @return string logical expression
|
||||
*/
|
||||
public function isNull($expression)
|
||||
{
|
||||
$expression = $this->getIdentifier($expression);
|
||||
return $expression . ' IS NULL';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns SQL that checks if a expression is not null.
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($q->expr->isNotNull('id'));
|
||||
* </code>
|
||||
*
|
||||
* @param string $expression the expression that should be compared to null
|
||||
* @return string logical expression
|
||||
*/
|
||||
public function isNotNull($expression)
|
||||
{
|
||||
$expression = $this->getIdentifier($expression);
|
||||
return $expression . ' IS NOT NULL';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns SQL that checks if an expression evaluates to a value between
|
||||
* two values.
|
||||
*
|
||||
* The parameter $expression is checked if it is between $value1 and $value2.
|
||||
*
|
||||
* Note: There is a slight difference in the way BETWEEN works on some databases.
|
||||
* http://www.w3schools.com/sql/sql_between.asp. If you want complete database
|
||||
* independence you should avoid using between().
|
||||
*
|
||||
* Example:
|
||||
* <code>
|
||||
* $q = new Doctrine_Query();
|
||||
* $q->select('u.*')
|
||||
* ->from('User u')
|
||||
* ->where($q->expr->between('id', 1, 5));
|
||||
* </code>
|
||||
*
|
||||
* @param string $expression the value to compare to
|
||||
* @param string $value1 the lower value to compare with
|
||||
* @param string $value2 the higher value to compare with
|
||||
* @return string logical expression
|
||||
*/
|
||||
public function between($expression, $value1, $value2)
|
||||
{
|
||||
$expression = $this->getIdentifier($expression);
|
||||
$value1 = $this->getIdentifier($value1);
|
||||
$value2 = $this->getIdentifier($value2);
|
||||
return $expression . ' BETWEEN ' .$value1 . ' AND ' . $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns global unique identifier
|
||||
*
|
||||
* @return string to get global unique identifier
|
||||
*/
|
||||
public function guid()
|
||||
{
|
||||
throw new Doctrine_Expression_Exception('method not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* returns arcus cosine SQL string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function acos($value)
|
||||
{
|
||||
return 'ACOS(' . $value . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* sin
|
||||
*
|
||||
* @param string $value
|
||||
* @return void
|
||||
*/
|
||||
public function sin($value)
|
||||
{
|
||||
return 'SIN(' . $value . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* pi
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function pi()
|
||||
{
|
||||
return 'PI()';
|
||||
}
|
||||
|
||||
/**
|
||||
* cos
|
||||
*
|
||||
* @param string $value
|
||||
* @return void
|
||||
* @author Jonathan H. Wage
|
||||
*/
|
||||
public function cos($value)
|
||||
{
|
||||
return 'COS(' . $value . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* __call
|
||||
*
|
||||
* for all native RDBMS functions the function name itself is returned
|
||||
*/
|
||||
public function __call($m, $a)
|
||||
{
|
||||
if ($this->conn->getAttribute(Doctrine::ATTR_PORTABILITY) & Doctrine::PORTABILITY_EXPR) {
|
||||
throw new Doctrine_Expression_Exception('Unknown expression ' . $m);
|
||||
}
|
||||
return $m . '(' . implode(', ', $a) . ')';
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Exception');
|
||||
/**
|
||||
* Doctrine_Expression_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Expression
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
*/
|
||||
class Doctrine_Expression_Exception extends Doctrine_Exception
|
||||
{ }
|
|
@ -1,39 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Expression_Firebird
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Expression
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lorenzo Alberton <l.alberton@quipo.it> (PEAR MDB2 Interbase driver)
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Expression_Firebird extends Doctrine_Expression_Driver
|
||||
{
|
||||
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Expression_Informix
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Expression
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Expression_Informix extends Doctrine_Expression
|
||||
{ }
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Connection_Module');
|
||||
/**
|
||||
* Doctrine_Expression_Mock
|
||||
* Mock driver that is used for testing purposes
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Expression
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
*/
|
||||
class Doctrine_Expression_Mock extends Doctrine_Expression_Driver
|
||||
{ }
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Expression_Mssql
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Expression
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Expression_Mssql extends Doctrine_Expression_Driver
|
||||
{
|
||||
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Expression_Mysql
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Expression
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Expression_Mysql extends Doctrine_Expression_Driver
|
||||
{
|
||||
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Expression_Sqlite
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Expression
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Expression_Oracle extends Doctrine_Expression_Driver
|
||||
{
|
||||
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Expression_Pgsql
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Expression
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Expression_Pgsql extends Doctrine_Expression_Driver
|
||||
{
|
||||
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Expression_Sqlite
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Expression
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Expression_Sqlite extends Doctrine_Expression_Driver
|
||||
{
|
||||
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Hook_Equal
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Hook
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Can be removed?
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Hook_Equal extends Doctrine_Hook_Parser
|
||||
{
|
||||
/**
|
||||
* parse
|
||||
* Parses given field and field value to DQL condition
|
||||
* and parameters. This method should always return
|
||||
* prepared statement conditions (conditions that use
|
||||
* placeholders instead of literal values).
|
||||
*
|
||||
* @param string $alias component alias
|
||||
* @param string $field the field name
|
||||
* @param mixed $value the value of the field
|
||||
* @return void
|
||||
*/
|
||||
public function parse($alias, $field, $value)
|
||||
{
|
||||
$this->params = (array) $value;
|
||||
$this->condition = $alias . '.' . $field . ' = ?';
|
||||
}
|
||||
}
|
|
@ -1,77 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Hook_Integer
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Hook
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Can be removed?
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Hook_Integer extends Doctrine_Hook_Parser_Complex
|
||||
{
|
||||
/**
|
||||
* parse
|
||||
* Parses given field and field value to DQL condition
|
||||
* and parameters. This method should always return
|
||||
* prepared statement conditions (conditions that use
|
||||
* placeholders instead of literal values).
|
||||
*
|
||||
* @param string $alias component alias
|
||||
* @param string $field the field name
|
||||
* @param mixed $value the value of the field
|
||||
* @return void
|
||||
*/
|
||||
public function parseSingle($alias, $field, $value)
|
||||
{
|
||||
$e = explode(' ', $value);
|
||||
|
||||
foreach ($e as $v) {
|
||||
$v = trim($v);
|
||||
|
||||
$e2 = explode('-', $v);
|
||||
|
||||
$name = $alias. '.' . $field;
|
||||
|
||||
if (count($e2) == 1) {
|
||||
// one '-' found
|
||||
|
||||
$a[] = $name . ' = ?';
|
||||
|
||||
$this->params[] = $v;
|
||||
} else {
|
||||
// more than one '-' found
|
||||
|
||||
$a[] = '(' . $name . ' > ? AND ' . $name . ' < ?)';
|
||||
|
||||
$this->params += array($e2[0], $e2[1]);
|
||||
}
|
||||
|
||||
}
|
||||
return implode(' OR ', $a);
|
||||
}
|
||||
}
|
|
@ -1,69 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Hook_Parser
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Hook
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Can be removed?
|
||||
* @deprecated
|
||||
*/
|
||||
abstract class Doctrine_Hook_Parser
|
||||
{
|
||||
protected $condition;
|
||||
protected $params = array();
|
||||
|
||||
public function getCondition()
|
||||
{
|
||||
return $this->condition;
|
||||
}
|
||||
|
||||
/**
|
||||
* getParams
|
||||
* returns the parameters associated with this parser
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getParams()
|
||||
{
|
||||
return $this->params;
|
||||
}
|
||||
|
||||
/**
|
||||
* parse
|
||||
* Parses given field and field value to DQL condition
|
||||
* and parameters. This method should always return
|
||||
* prepared statement conditions (conditions that use
|
||||
* placeholders instead of literal values).
|
||||
*
|
||||
* @param string $alias component alias
|
||||
* @param string $field the field name
|
||||
* @param mixed $value the value of the field
|
||||
* @return void
|
||||
*/
|
||||
abstract public function parse($alias, $field, $value);
|
||||
}
|
|
@ -1,109 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Hook_Parser_Complex
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Hook
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Can be removed?
|
||||
* @deprecated
|
||||
*/
|
||||
abstract class Doctrine_Hook_Parser_Complex extends Doctrine_Hook_Parser
|
||||
{
|
||||
protected $_tokenizer;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->_tokenizer = new Doctrine_Query_Tokenizer();
|
||||
}
|
||||
|
||||
/**
|
||||
* parse
|
||||
* Parses given field and field value to DQL condition
|
||||
* and parameters. This method should always return
|
||||
* prepared statement conditions (conditions that use
|
||||
* placeholders instead of literal values).
|
||||
*
|
||||
* @param string $alias component alias
|
||||
* @param string $field the field name
|
||||
* @param mixed $value the value of the field
|
||||
* @return void
|
||||
*/
|
||||
public function parse($alias, $field, $value)
|
||||
{
|
||||
$this->condition = $this->parseClause($alias, $field, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* parseClause
|
||||
*
|
||||
* @param string $alias component alias
|
||||
* @param string $field the field name
|
||||
* @param mixed $value the value of the field
|
||||
* @return void
|
||||
*/
|
||||
public function parseClause($alias, $field, $value)
|
||||
{
|
||||
$parts = $this->_tokenizer->quoteExplode($value, ' AND ');
|
||||
|
||||
if (count($parts) > 1) {
|
||||
$ret = array();
|
||||
foreach ($parts as $part) {
|
||||
$ret[] = $this->parseSingle($alias, $field, $part);
|
||||
}
|
||||
|
||||
$r = implode(' AND ', $ret);
|
||||
} else {
|
||||
$parts = $this->_tokenizer->quoteExplode($value, ' OR ');
|
||||
if (count($parts) > 1) {
|
||||
$ret = array();
|
||||
foreach ($parts as $part) {
|
||||
$ret[] = $this->parseClause($alias, $field, $part);
|
||||
}
|
||||
|
||||
$r = implode(' OR ', $ret);
|
||||
} else {
|
||||
$ret = $this->parseSingle($alias, $field, $parts[0]);
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
return '(' . $r . ')';
|
||||
}
|
||||
|
||||
/**
|
||||
* parseSingle
|
||||
*
|
||||
* @param string $alias component alias
|
||||
* @param string $field the field name
|
||||
* @param mixed $value the value of the field
|
||||
* @return void
|
||||
*/
|
||||
abstract public function parseSingle($alias, $field, $value);
|
||||
}
|
|
@ -1,68 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Hook_WordLike
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Hook
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @deprecated
|
||||
* @todo Can be removed?
|
||||
*/
|
||||
class Doctrine_Hook_WordLike extends Doctrine_Hook_Parser_Complex
|
||||
{
|
||||
/**
|
||||
* parse
|
||||
* Parses given field and field value to DQL condition
|
||||
* and parameters. This method should always return
|
||||
* prepared statement conditions (conditions that use
|
||||
* placeholders instead of literal values).
|
||||
*
|
||||
* @param string $alias component alias
|
||||
* @param string $field the field name
|
||||
* @param mixed $value the value of the field
|
||||
* @return void
|
||||
*/
|
||||
public function parseSingle($alias, $field, $value)
|
||||
{
|
||||
if (strpos($value, "'") !== false) {
|
||||
$value = $this->_tokenizer->bracketTrim($value, "'", "'");
|
||||
|
||||
$a[] = $alias . '.' . $field . ' LIKE ?';
|
||||
$this->params[] = '%' . $value . '%';
|
||||
|
||||
} else {
|
||||
$e2 = explode(' ',$value);
|
||||
|
||||
foreach ($e2 as $v) {
|
||||
$v = trim($v);
|
||||
$a[] = $alias . '.' . $field . ' LIKE ?';
|
||||
$this->params[] = '%' . $v . '%';
|
||||
}
|
||||
}
|
||||
return implode(' OR ', $a);
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
#namespace Doctrine::DBAL::Id;
|
||||
#namespace Doctrine::ORM::Id;
|
||||
|
||||
/**
|
||||
* Enter description here...
|
||||
|
@ -9,6 +9,8 @@
|
|||
*/
|
||||
abstract class Doctrine_Id_AbstractIdGenerator
|
||||
{
|
||||
const POST_INSERT_INDICATOR = 'POST_INSERT_INDICATOR';
|
||||
|
||||
protected $_em;
|
||||
|
||||
public function __construct(Doctrine_EntityManager $em)
|
||||
|
@ -16,9 +18,7 @@ abstract class Doctrine_Id_AbstractIdGenerator
|
|||
$this->_em = $em;
|
||||
}
|
||||
|
||||
abstract public function configureForClass(Doctrine_ClassMetadata $class);
|
||||
|
||||
abstract public function generate();
|
||||
abstract public function generate(Doctrine_Entity $entity);
|
||||
}
|
||||
|
||||
?>
|
25
lib/Doctrine/Id/Assigned.php
Normal file
25
lib/Doctrine/Id/Assigned.php
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Special generator for application-assigned identifiers (doesnt really generate anything).
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
class Doctrine_Id_Assigned extends Doctrine_Id_AbstractIdGenerator
|
||||
{
|
||||
/**
|
||||
* Enter description here...
|
||||
*
|
||||
* @param Doctrine_Entity $entity
|
||||
* @return unknown
|
||||
* @override
|
||||
*/
|
||||
public function generate(Doctrine_Entity $entity)
|
||||
{
|
||||
if ( ! $entity->_identifier()) {
|
||||
throw Doctrine_IdException::missingAssignedId($entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -2,9 +2,21 @@
|
|||
|
||||
class Doctrine_Id_IdentityGenerator extends Doctrine_Id_AbstractIdGenerator
|
||||
{
|
||||
public function generate(Doctrine_EntityManager $em)
|
||||
/**
|
||||
* Enter description here...
|
||||
*
|
||||
* @param Doctrine_Entity $entity
|
||||
* @return unknown
|
||||
* @override
|
||||
*/
|
||||
public function generate(Doctrine_Entity $entity)
|
||||
{
|
||||
|
||||
return self::POST_INSERT_INDICATOR;
|
||||
}
|
||||
|
||||
public function getPostInsertId()
|
||||
{
|
||||
return $this->_em->getConnection()->lastInsertId();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,26 @@
|
|||
<?php
|
||||
|
||||
class Doctrine_Id_SequenceGenerator extends Doctrine_Id_AbstractIdGenerator
|
||||
{
|
||||
private $_sequenceName;
|
||||
|
||||
public function __construct($sequenceName)
|
||||
{
|
||||
$this->_sequenceName = $sequenceName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enter description here...
|
||||
*
|
||||
* @param Doctrine_Entity $entity
|
||||
* @override
|
||||
*/
|
||||
public function generate(Doctrine_Entity $entity)
|
||||
{
|
||||
$conn = $this->_em->getConnection();
|
||||
$sql = $conn->getDatabasePlatform()->getSequenceNextValSql($this->_sequenceName);
|
||||
return $conn->fetchOne($sql);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
25
lib/Doctrine/Id/SequenceIdentityGenerator.php
Normal file
25
lib/Doctrine/Id/SequenceIdentityGenerator.php
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
class Doctrine_Id_SequenceIdentityGenerator extends Doctrine_Id_IdentityGenerator
|
||||
{
|
||||
private $_sequenceName;
|
||||
|
||||
public function __construct($sequenceName)
|
||||
{
|
||||
$this->_sequenceName = $sequenceName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enter description here...
|
||||
*
|
||||
* @param Doctrine_Connection $conn
|
||||
* @override
|
||||
*/
|
||||
public function getPostInsertId()
|
||||
{
|
||||
return $this->_em->getConnection()->lastInsertId($this->_sequenceName);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -1,3 +1,18 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Id generator that uses a single-row database table and a hi/lo algorithm.
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
class Doctrine_Id_TableGenerator extends Doctrine_Id_AbstractIdGenerator
|
||||
{
|
||||
|
||||
public function generate(Doctrine_Entity $entity)
|
||||
{
|
||||
throw new Exception("Not implemented");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage Import
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lorenzo Alberton <l.alberton@quipo.it> (PEAR MDB2 Interbase driver)
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Import_Firebird extends Doctrine_Import
|
||||
{
|
||||
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage Import
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Import_Informix extends Doctrine_Import
|
||||
{
|
||||
|
||||
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage Import
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @author Frank M. Kromann <frank@kromann.info> (PEAR MDB2 Mssql driver)
|
||||
* @author David Coallier <davidc@php.net> (PEAR MDB2 Mssql driver)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Import_Mssql extends Doctrine_Import
|
||||
{
|
||||
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage Import
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Import_Mysql extends Doctrine_Import
|
||||
{
|
||||
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage Import
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Import_Oracle extends Doctrine_Import
|
||||
{
|
||||
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage Import
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Paul Cooper <pgc@ucecom.com>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Import_Pgsql extends Doctrine_Import
|
||||
{
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package Doctrine
|
||||
* @subpackage Import
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
|
||||
* @version $Revision$
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Import_Sqlite extends Doctrine_Import
|
||||
{
|
||||
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Manager_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Manager
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
*/
|
||||
class Doctrine_Manager_Exception extends Doctrine_Exception
|
||||
{ }
|
|
@ -1,109 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Query_Filter_Chain
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Query
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
*/
|
||||
class Doctrine_Query_Filter_Chain
|
||||
{
|
||||
/**
|
||||
* @var array $_filters an array of Doctrine_Query_Filter objects
|
||||
*/
|
||||
protected $_filters = array();
|
||||
|
||||
/**
|
||||
* add
|
||||
*
|
||||
* @param Doctrine_Query_Filter $filter
|
||||
* @return void
|
||||
*/
|
||||
public function add(Doctrine_Query_Filter $filter)
|
||||
{
|
||||
$this->_filters[] = $filter;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns a Doctrine_Query_Filter on success
|
||||
* and null on failure
|
||||
*
|
||||
* @param mixed $key
|
||||
* @return mixed
|
||||
*/
|
||||
public function get($key)
|
||||
{
|
||||
if ( ! isset($this->_filters[$key])) {
|
||||
throw new Doctrine_Query_Exception('Unknown filter ' . $key);
|
||||
}
|
||||
return $this->_filters[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* set
|
||||
*
|
||||
* @param mixed $key
|
||||
* @param Doctrine_Query_Filter $listener
|
||||
* @return void
|
||||
*/
|
||||
public function set($key, Doctrine_Query_Filter $listener)
|
||||
{
|
||||
$this->_filters[$key] = $listener;
|
||||
}
|
||||
|
||||
/**
|
||||
* preQuery
|
||||
*
|
||||
* Method for listening the preQuery method of Doctrine_Query and
|
||||
* hooking into the query building procedure, doing any custom / specialized
|
||||
* query building procedures that are neccessary.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function preQuery(Doctrine_Query $query)
|
||||
{
|
||||
foreach ($this->_filters as $filter) {
|
||||
$filter->preQuery($query);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* postQuery
|
||||
*
|
||||
* Method for listening the postQuery method of Doctrine_Query and
|
||||
* to hook into the query building procedure, doing any custom / specialized
|
||||
* post query procedures (for example logging) that are neccessary.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function postQuery(Doctrine_Query $query)
|
||||
{
|
||||
foreach ($this->_filters as $filter) {
|
||||
$filter->postQuery($query);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Query_Filter_Interface
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Query
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
*/
|
||||
interface Doctrine_Query_Filter_Interface
|
||||
{
|
||||
|
||||
/**
|
||||
* preQuery
|
||||
*
|
||||
* Method for listening the preQuery method of Doctrine_Query and
|
||||
* hooking into the query building procedure, doing any custom / specialized
|
||||
* query building procedures that are neccessary.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function preQuery(Doctrine_Query $query);
|
||||
|
||||
/**
|
||||
* postQuery
|
||||
*
|
||||
* Method for listening the postQuery method of Doctrine_Query and
|
||||
* to hook into the query building procedure, doing any custom / specialized
|
||||
* post query procedures (for example logging) that are neccessary.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function postQuery(Doctrine_Query $query);
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id: Exception.php 2702 2007-10-03 21:43:22Z Jonathan.Wage $
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Query_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Query
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision: 2702 $
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Query_Tokenizer_Exception extends Doctrine_Exception
|
||||
{ }
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
#namespace Doctrine::ORM::Exceptions;
|
||||
|
||||
/**
|
||||
* Doctrine_RawSql_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage RawSql
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Rename to NativeSqlException or maybe remove.
|
||||
*/
|
||||
class Doctrine_RawSql_Exception extends Doctrine_Exception
|
||||
{ }
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Record
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @deprecated Remove.
|
||||
*/
|
||||
class Doctrine_Record_Exception extends Doctrine_Exception
|
||||
{ }
|
|
@ -1,63 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id: Record.php 1298 2007-05-01 19:26:03Z zYne $
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Entity_Filter
|
||||
* Filters the record getters and setters
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Record
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision: 1298 $
|
||||
* @deprecated Remove.
|
||||
*/
|
||||
abstract class Doctrine_Record_Filter
|
||||
{
|
||||
protected $_table;
|
||||
|
||||
public function setTable(Doctrine_ClassMetadata $table)
|
||||
{
|
||||
$this->_table = $table;
|
||||
}
|
||||
public function getTable()
|
||||
{
|
||||
return $this->_table;
|
||||
}
|
||||
|
||||
/**
|
||||
* filterSet
|
||||
* defines an implementation for filtering the set() method of Doctrine_Entity
|
||||
*
|
||||
* @param mixed $name name of the property or related component
|
||||
*/
|
||||
abstract public function filterSet(Doctrine_Entity $record, $name, $value);
|
||||
|
||||
/**
|
||||
* filterGet
|
||||
* defines an implementation for filtering the get() method of Doctrine_Entity
|
||||
*
|
||||
* @param mixed $name name of the property or related component
|
||||
*/
|
||||
abstract public function filterGet(Doctrine_Entity $record, $name);
|
||||
}
|
|
@ -1,102 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id: Record.php 1298 2007-05-01 19:26:03Z zYne $
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Record_Filter_Compound
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Record
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision: 1298 $
|
||||
* @todo Remove.
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Record_Filter_Compound extends Doctrine_Record_Filter
|
||||
{
|
||||
protected $_aliases = array();
|
||||
|
||||
public function __construct(array $aliases)
|
||||
{
|
||||
$this->_aliases = $aliases;
|
||||
}
|
||||
public function init()
|
||||
{
|
||||
// check that all aliases exist
|
||||
foreach ($this->_aliases as $alias) {
|
||||
$this->_table->getRelation($alias);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* filterSet
|
||||
* defines an implementation for filtering the set() method of Doctrine_Entity
|
||||
*
|
||||
* @param mixed $name name of the property or related component
|
||||
*/
|
||||
public function filterSet(Doctrine_Entity $record, $name, $value)
|
||||
{
|
||||
foreach ($this->_aliases as $alias) {
|
||||
if ( ! $record->exists()) {
|
||||
if (isset($record[$alias][$name])) {
|
||||
$record[$alias][$name] = $value;
|
||||
|
||||
return $record;
|
||||
}
|
||||
} else {
|
||||
// we do not want to execute N + 1 queries here, hence we cannot use get()
|
||||
if (($ref = $record->reference($alias)) !== null) {
|
||||
if (isset($ref[$name])) {
|
||||
$ref[$name] = $value;
|
||||
}
|
||||
|
||||
return $record;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* filterGet
|
||||
* defines an implementation for filtering the get() method of Doctrine_Entity
|
||||
*
|
||||
* @param mixed $name name of the property or related component
|
||||
*/
|
||||
public function filterGet(Doctrine_Entity $record, $name)
|
||||
{
|
||||
foreach ($this->_aliases as $alias) {
|
||||
if ( ! $record->exists()) {
|
||||
if (isset($record[$alias][$name])) {
|
||||
return $record[$alias][$name];
|
||||
}
|
||||
} else {
|
||||
// we do not want to execute N + 1 queries here, hence we cannot use get()
|
||||
if (($ref = $record->reference($alias)) !== null) {
|
||||
if (isset($ref[$name])) {
|
||||
return $ref[$name];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,58 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id: Record.php 1298 2007-05-01 19:26:03Z zYne $
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Record_Filter_Standard
|
||||
* Filters the record getters and setters
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Record
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision: 1298 $
|
||||
* @deprecated Remove.
|
||||
*/
|
||||
class Doctrine_Record_Filter_Standard extends Doctrine_Record_Filter
|
||||
{
|
||||
/**
|
||||
* filterSet
|
||||
* defines an implementation for filtering the set() method of Doctrine_Entity
|
||||
*
|
||||
* @param mixed $name name of the property or related component
|
||||
*/
|
||||
public function filterSet(Doctrine_Entity $record, $name, $value)
|
||||
{
|
||||
throw new Doctrine_Record_Exception(sprintf('Unknown record property / related component "%s" on "%s"', $name, get_class($record)));
|
||||
}
|
||||
|
||||
/**
|
||||
* filterGet
|
||||
* defines an implementation for filtering the get() method of Doctrine_Entity
|
||||
*
|
||||
* @param mixed $name name of the property or related component
|
||||
*/
|
||||
public function filterGet(Doctrine_Entity $record, $name)
|
||||
{
|
||||
throw new Doctrine_Record_Exception(sprintf('Unknown record property / related component "%s" on "%s"', $name, get_class($record)));
|
||||
}
|
||||
}
|
|
@ -1,82 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Record_Iterator
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Record
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @deprecated Remove.
|
||||
*/
|
||||
class Doctrine_Record_Iterator extends ArrayIterator
|
||||
{
|
||||
/**
|
||||
* @var Doctrine_Entity $record
|
||||
*/
|
||||
private $record;
|
||||
|
||||
/**
|
||||
* @var Doctrine_Null $null
|
||||
*/
|
||||
private static $null;
|
||||
|
||||
/**
|
||||
* constructor
|
||||
*
|
||||
* @param Doctrine_Entity $record
|
||||
*/
|
||||
public function __construct(Doctrine_Entity $record)
|
||||
{
|
||||
$this->record = $record;
|
||||
parent::__construct($record->getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* initNullObject
|
||||
*
|
||||
* @param Doctrine_Null $null
|
||||
*/
|
||||
public static function initNullObject(Doctrine_Null $null)
|
||||
{
|
||||
self::$null = $null;
|
||||
}
|
||||
|
||||
/**
|
||||
* current
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function current()
|
||||
{
|
||||
$value = parent::current();
|
||||
|
||||
if ($value === self::$null) {
|
||||
return null;
|
||||
} else {
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,77 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Record_Listener
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Record
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @deprecated Remove.
|
||||
*/
|
||||
class Doctrine_Record_Listener implements Doctrine_Record_Listener_Interface
|
||||
{
|
||||
public function preSerialize(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function postSerialize(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function preUnserialize(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function postUnserialize(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function preSave(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function postSave(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function preDelete(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function postDelete(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function preUpdate(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function postUpdate(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function preInsert(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function postInsert(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function preHydrate(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function postHydrate(Doctrine_Event $event)
|
||||
{ }
|
||||
}
|
|
@ -1,196 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Record_Listener_Chain
|
||||
* this class represents a chain of different listeners,
|
||||
* useful for having multiple listeners listening the events at the same time
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Record
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @deprecated
|
||||
* @todo Remove
|
||||
*/
|
||||
class Doctrine_Record_Listener_Chain extends Doctrine_Access implements Doctrine_Record_Listener_Interface
|
||||
{
|
||||
/**
|
||||
* @var array $listeners an array containing all listeners
|
||||
*/
|
||||
protected $_listeners = array();
|
||||
|
||||
/**
|
||||
* add
|
||||
* adds a listener to the chain of listeners
|
||||
*
|
||||
* @param object $listener
|
||||
* @param string $name
|
||||
* @return void
|
||||
*/
|
||||
public function add($listener, $name = null)
|
||||
{
|
||||
if ( ! ($listener instanceof Doctrine_Record_Listener_Interface) &&
|
||||
! ($listener instanceof Doctrine_Overloadable)) {
|
||||
|
||||
throw new Doctrine_EventListener_Exception("Couldn't add eventlistener. Record listeners should implement either Doctrine_EventListener_Interface or Doctrine_Overloadable");
|
||||
}
|
||||
if ($name === null) {
|
||||
$this->_listeners[] = $listener;
|
||||
} else {
|
||||
$this->_listeners[$name] = $listener;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* returns a Doctrine_Record_Listener on success
|
||||
* and null on failure
|
||||
*
|
||||
* @param mixed $key
|
||||
* @return mixed
|
||||
*/
|
||||
public function get($key)
|
||||
{
|
||||
if ( ! isset($this->_listeners[$key])) {
|
||||
return null;
|
||||
}
|
||||
return $this->_listeners[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* set
|
||||
*
|
||||
* @param mixed $key
|
||||
* @param Doctrine_Record_Listener $listener listener to be added
|
||||
* @return Doctrine_Record_Listener_Chain this object
|
||||
*/
|
||||
public function set($key, $listener)
|
||||
{
|
||||
if ( ! ($listener instanceof Doctrine_Record_Listener_Interface) &&
|
||||
! ($listener instanceof Doctrine_Overloadable)) {
|
||||
|
||||
throw new Doctrine_EventListener_Exception("Couldn't add eventlistener. Record listeners should implement either Doctrine_EventListener_Interface or Doctrine_Overloadable");
|
||||
}
|
||||
|
||||
$this->_listeners[$key] = $listener;
|
||||
}
|
||||
|
||||
public function preSerialize(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preSerialize($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function postSerialize(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preSerialize($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function preUnserialize(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preUnserialize($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function postUnserialize(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postUnserialize($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function preSave(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preSave($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function postSave(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postSave($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function preDelete(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preDelete($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function postDelete(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postDelete($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function preUpdate(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preUpdate($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function postUpdate(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postUpdate($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function preInsert(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preInsert($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function postInsert(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postInsert($event);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function preHydrate(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->preHydrate($event);
|
||||
}
|
||||
}
|
||||
public function postHydrate(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->_listeners as $listener) {
|
||||
$listener->postHydrate($event);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,63 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Record_Listener
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Record
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @deprecated Remove.
|
||||
*/
|
||||
interface Doctrine_Record_Listener_Interface
|
||||
{
|
||||
public function preSerialize(Doctrine_Event $event);
|
||||
|
||||
public function postSerialize(Doctrine_Event $event);
|
||||
|
||||
public function preUnserialize(Doctrine_Event $event);
|
||||
|
||||
public function postUnserialize(Doctrine_Event $event);
|
||||
|
||||
public function preSave(Doctrine_Event $event);
|
||||
|
||||
public function postSave(Doctrine_Event $event);
|
||||
|
||||
public function preDelete(Doctrine_Event $event);
|
||||
|
||||
public function postDelete(Doctrine_Event $event);
|
||||
|
||||
public function preUpdate(Doctrine_Event $event);
|
||||
|
||||
public function postUpdate(Doctrine_Event $event);
|
||||
|
||||
public function preInsert(Doctrine_Event $event);
|
||||
|
||||
public function postInsert(Doctrine_Event $event);
|
||||
|
||||
public function preHydrate(Doctrine_Event $event);
|
||||
|
||||
public function postHydrate(Doctrine_Event $event);
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Record
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @todo Deprecated. Remove
|
||||
*/
|
||||
class Doctrine_Record_State_Exception extends Doctrine_Record_Exception
|
||||
{ }
|
|
@ -1,111 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Relation_Association
|
||||
*
|
||||
* This class is reponsible for lazy-loading the related objects in a many-to-many relation.
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Relation
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Relation_Association extends Doctrine_Relation
|
||||
{
|
||||
/**
|
||||
* @return Doctrine_Table
|
||||
*/
|
||||
public function getAssociationFactory()
|
||||
{
|
||||
return $this->definition['refTable'];
|
||||
}
|
||||
public function getAssociationTable()
|
||||
{
|
||||
return $this->definition['refTable'];
|
||||
}
|
||||
|
||||
public function getAssociationClassName()
|
||||
{
|
||||
return $this->definition['refClass'];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* getRelationDql
|
||||
*
|
||||
* @param integer $count
|
||||
* @return string
|
||||
*/
|
||||
public function getRelationDql($count, $context = 'record')
|
||||
{
|
||||
//$table = $this->definition['refTable'];
|
||||
$assocRelationName = $this->definition['refClass'];
|
||||
|
||||
$relatedClassName = $this->_foreignMapper->getComponentName();
|
||||
|
||||
switch ($context) {
|
||||
case "record":
|
||||
$sub = substr(str_repeat("?, ", $count),0,-2);
|
||||
$dql = "FROM $relatedClassName";
|
||||
$dql .= " INNER JOIN $relatedClassName.$assocRelationName";
|
||||
//$dql .= " ON $relatedClassName.$assocRelationName.$inverseJoinColumn = $relatedClassName.$relatedClassIdentifier";
|
||||
$dql .= " WHERE $relatedClassName.$assocRelationName.{$this->definition['local']} IN ($sub)";
|
||||
break;
|
||||
case "collection":
|
||||
$sub = substr(str_repeat("?, ", $count),0,-2);
|
||||
$dql = "FROM $assocRelationName INNER JOIN $assocRelationName.$relatedClassName";
|
||||
//$dql .= " ON $relatedClassName.$assocRelationName.$inverseJoinColumn = $relatedClassName.$relatedClassIdentifier";
|
||||
$dql .= " WHERE $assocRelationName.{$this->definition['local']} IN ($sub)";
|
||||
break;
|
||||
}
|
||||
|
||||
return $dql;
|
||||
}
|
||||
|
||||
/**
|
||||
* fetchRelatedFor
|
||||
*
|
||||
* fetches a component related to given record
|
||||
*
|
||||
* @param Doctrine_Entity $record
|
||||
* @return Doctrine_Entity|Doctrine_Collection
|
||||
*/
|
||||
public function fetchRelatedFor(Doctrine_Entity $record)
|
||||
{
|
||||
// FIXME: composite key support
|
||||
$ids = $record->identifier();
|
||||
$id = count($ids) > 0 ? array_pop($ids) : null;
|
||||
|
||||
if (empty($id) || ! $this->_foreignMapper->getClassMetadata()->getAttribute(Doctrine::ATTR_LOAD_REFERENCES)) {
|
||||
$coll = new Doctrine_Collection($this->getForeignComponentName());
|
||||
} else {
|
||||
$query = Doctrine_Query::create()->parseQuery($this->getRelationDql(1));
|
||||
$coll = Doctrine_Query::create()->query($this->getRelationDql(1), array($id));
|
||||
}
|
||||
$coll->setReference($record, $this);
|
||||
return $coll;
|
||||
}
|
||||
}
|
|
@ -1,114 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Relation_Association_Self
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Relation
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Relation_Association_Self extends Doctrine_Relation_Association
|
||||
{
|
||||
/**
|
||||
* getRelationDql
|
||||
*
|
||||
* @param integer $count
|
||||
* @return string
|
||||
*/
|
||||
public function getRelationDql($count, $context = 'record')
|
||||
{
|
||||
switch ($context) {
|
||||
case 'record':
|
||||
$identifierColumnNames = $this->definition['table']->getIdentifierColumnNames();
|
||||
$identifier = array_pop($identifierColumnNames);
|
||||
$sub = 'SELECT '.$this->definition['foreign']
|
||||
. ' FROM '.$this->definition['refTable']->getTableName()
|
||||
. ' WHERE '.$this->definition['local']
|
||||
. ' = ?';
|
||||
|
||||
$sub2 = 'SELECT '.$this->definition['local']
|
||||
. ' FROM '.$this->definition['refTable']->getTableName()
|
||||
. ' WHERE '.$this->definition['foreign']
|
||||
. ' = ?';
|
||||
|
||||
$dql = 'FROM ' . $this->_foreignMapper->getComponentName()
|
||||
. '.' . $this->definition['refTable']->getComponentName()
|
||||
. ' WHERE ' . $this->_foreignMapper->getComponentName()
|
||||
. '.' . $identifier
|
||||
. ' IN (' . $sub . ')'
|
||||
. ' || ' . $this->_foreignMapper->getComponentName()
|
||||
. '.' . $identifier
|
||||
. ' IN (' . $sub2 . ')';
|
||||
break;
|
||||
case 'collection':
|
||||
$sub = substr(str_repeat('?, ', $count),0,-2);
|
||||
$dql = 'FROM '.$this->definition['refTable']->getComponentName()
|
||||
. '.' . $this->_foreignMapper->getComponentName()
|
||||
. ' WHERE '.$this->definition['refTable']->getComponentName()
|
||||
. '.' . $this->definition['local'] . ' IN (' . $sub . ')';
|
||||
};
|
||||
|
||||
return $dql;
|
||||
}
|
||||
|
||||
public function fetchRelatedFor(Doctrine_Entity $record)
|
||||
{
|
||||
// FIXME: composite key support
|
||||
$ids = $record->identifier();
|
||||
$id = count($ids) > 0 ? array_pop($ids) : null;
|
||||
|
||||
$q = new Doctrine_RawSql();
|
||||
|
||||
$assocTable = $this->getAssociationFactory()->getTableName();
|
||||
$tableName = $record->getTable()->getTableName();
|
||||
$identifierColumnNames = $record->getTable()->getIdentifierColumnNames();
|
||||
$identifier = array_pop($identifierColumnNames);
|
||||
|
||||
$sub = 'SELECT '.$this->getForeign().
|
||||
' FROM '.$assocTable.
|
||||
' WHERE '.$this->getLocal().
|
||||
' = ?';
|
||||
|
||||
$sub2 = 'SELECT '.$this->getLocal().
|
||||
' FROM '.$assocTable.
|
||||
' WHERE '.$this->getForeign().
|
||||
' = ?';
|
||||
|
||||
$q->select('{'.$tableName.'.*}, {'.$assocTable.'.*}')
|
||||
->from($tableName . ' INNER JOIN '.$assocTable.' ON '.
|
||||
$tableName . '.' . $identifier . ' = ' . $assocTable . '.' . $this->getLocal() . ' OR ' .
|
||||
$tableName . '.' . $identifier . ' = ' . $assocTable . '.' . $this->getForeign()
|
||||
)
|
||||
->where($tableName.'.'.$identifier.' IN ('.$sub.') OR '.
|
||||
$tableName.'.'.$identifier.' IN ('.$sub2.')'
|
||||
);
|
||||
$q->addComponent($tableName, $record->getTable()->getComponentName());
|
||||
$q->addComponent($assocTable, $record->getTable()->getComponentName(). '.' . $this->getAssociationFactory()->getComponentName());
|
||||
|
||||
return $q->execute(array($id, $id));
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id: Exception.php 1344 2007-05-12 23:27:16Z zYne $
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_Exception');
|
||||
/**
|
||||
* Doctrine_Relation_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Relation
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision: 1344 $
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
*/
|
||||
class Doctrine_Relation_Exception extends Doctrine_Exception
|
||||
{ }
|
|
@ -1,101 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Relation_ForeignKey
|
||||
* This class represents a foreign key relation
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Relation
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Relation_ForeignKey extends Doctrine_Relation
|
||||
{
|
||||
/**
|
||||
* fetchRelatedFor
|
||||
*
|
||||
* fetches a component related to given record
|
||||
*
|
||||
* @param Doctrine_Entity $record
|
||||
* @return Doctrine_Entity|Doctrine_Collection
|
||||
*/
|
||||
public function fetchRelatedFor(Doctrine_Entity $record)
|
||||
{
|
||||
$id = array();
|
||||
$localTable = $record->getTable();
|
||||
|
||||
foreach ((array) $this->definition['local'] as $local) {
|
||||
$value = $record->get($localTable->getFieldName($local));
|
||||
if (isset($value)) {
|
||||
$id[] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->isOneToOne()) {
|
||||
if ( ! $record->exists() || empty($id) ||
|
||||
! $this->_foreignMapper->getClassMetadata()->getAttribute(Doctrine::ATTR_LOAD_REFERENCES)) {
|
||||
$related = $this->_foreignMapper->create();
|
||||
} else {
|
||||
$dql = 'FROM ' . $this->_foreignMapper->getComponentName()
|
||||
. ' WHERE ' . $this->getCondition();
|
||||
$coll = $this->getTable()->getConnection()->query($dql, $id);
|
||||
$related = $coll[0];
|
||||
}
|
||||
|
||||
// set the foreign key field on the related record
|
||||
$related->set($related->getTable()->getFieldName($this->definition['foreign']),
|
||||
$record, false);
|
||||
} else {
|
||||
if ( ! $record->exists() || empty($id) ||
|
||||
! $this->_foreignMapper->getClassMetadata()->getAttribute(Doctrine::ATTR_LOAD_REFERENCES)) {
|
||||
$related = new Doctrine_Collection($this->_foreignMapper->getComponentName());
|
||||
} else {
|
||||
$query = $this->getRelationDql(1);
|
||||
$related = $this->getTable()->getConnection()->query($query, $id);
|
||||
}
|
||||
$related->setReference($record, $this);
|
||||
}
|
||||
|
||||
return $related;
|
||||
}
|
||||
|
||||
/**
|
||||
* getCondition
|
||||
*
|
||||
* @param string $alias
|
||||
*/
|
||||
public function getCondition($alias = null)
|
||||
{
|
||||
if ( ! $alias) {
|
||||
$alias = $this->getTable()->getComponentName();
|
||||
}
|
||||
$conditions = array();
|
||||
foreach ((array) $this->definition['foreign'] as $foreign) {
|
||||
$conditions[] = $alias . '.' . $foreign . ' = ?';
|
||||
}
|
||||
return implode(' AND ', $conditions);
|
||||
}
|
||||
}
|
|
@ -1,83 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Relation_LocalKey
|
||||
* This class represents a local key relation
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Relation
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Relation_LocalKey extends Doctrine_Relation
|
||||
{
|
||||
/**
|
||||
* fetchRelatedFor
|
||||
*
|
||||
* fetches a component related to given record
|
||||
*
|
||||
* @param Doctrine_Entity $record
|
||||
* @return Doctrine_Entity|Doctrine_Collection
|
||||
*/
|
||||
public function fetchRelatedFor(Doctrine_Entity $record)
|
||||
{
|
||||
$localFieldName = $record->getTable()->getFieldName($this->definition['local']);
|
||||
$id = $record->get($localFieldName);
|
||||
|
||||
if (empty($id) || ! $this->_foreignMapper->getClassMetadata()->getAttribute(Doctrine::ATTR_LOAD_REFERENCES)) {
|
||||
$related = $this->_foreignMapper->create();
|
||||
} else {
|
||||
$dql = 'FROM ' . $this->getTable()->getComponentName()
|
||||
. ' WHERE ' . $this->getCondition();
|
||||
|
||||
$related = $this->getTable()
|
||||
->getConnection()
|
||||
->query($dql, array($id))
|
||||
->getFirst();
|
||||
|
||||
if ( ! $related || empty($related)) {
|
||||
$related = $this->getTable()->create();
|
||||
}
|
||||
}
|
||||
|
||||
$record->set($localFieldName, $related, false);
|
||||
|
||||
return $related;
|
||||
}
|
||||
|
||||
/**
|
||||
* getCondition
|
||||
*
|
||||
* @param string $alias
|
||||
*/
|
||||
public function getCondition($alias = null)
|
||||
{
|
||||
if ( ! $alias) {
|
||||
$alias = $this->getTable()->getComponentName();
|
||||
}
|
||||
return $alias . '.' . $this->definition['foreign'] . ' = ?';
|
||||
}
|
||||
}
|
|
@ -1,124 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id: Self.php 1434 2007-05-22 15:57:17Z zYne $
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Relation_Association_Self
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Relation
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision: 1434 $
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Relation_Nest extends Doctrine_Relation_Association
|
||||
{
|
||||
/**
|
||||
* getRelationDql
|
||||
*
|
||||
* @param integer $count
|
||||
* @return string
|
||||
*/
|
||||
public function getRelationDql($count, $context = 'record')
|
||||
{
|
||||
switch ($context) {
|
||||
case 'record':
|
||||
$identifierColumnNames = $this->definition['table']->getIdentifierColumnNames();
|
||||
$identifier = array_pop($identifierColumnNames);
|
||||
$sub = 'SELECT '.$this->definition['foreign']
|
||||
. ' FROM '.$this->definition['refTable']->getTableName()
|
||||
. ' WHERE '.$this->definition['local']
|
||||
. ' = ?';
|
||||
|
||||
$sub2 = 'SELECT '.$this->definition['local']
|
||||
. ' FROM '.$this->definition['refTable']->getTableName()
|
||||
. ' WHERE '.$this->definition['foreign']
|
||||
. ' = ?';
|
||||
|
||||
$dql = 'FROM ' . $this->definition['table']->getComponentName()
|
||||
. '.' . $this->definition['refTable']->getComponentName()
|
||||
. ' WHERE ' . $this->definition['table']->getComponentName()
|
||||
. '.' . $identifier
|
||||
. ' IN (' . $sub . ')'
|
||||
. ' || ' . $this->definition['table']->getComponentName()
|
||||
. '.' . $identifier
|
||||
. ' IN (' . $sub2 . ')';
|
||||
break;
|
||||
case 'collection':
|
||||
$sub = substr(str_repeat('?, ', $count),0,-2);
|
||||
$dql = 'FROM '.$this->definition['refTable']->getComponentName()
|
||||
. '.' . $this->definition['table']->getComponentName()
|
||||
. ' WHERE '.$this->definition['refTable']->getComponentName()
|
||||
. '.' . $this->definition['local'] . ' IN (' . $sub . ')';
|
||||
};
|
||||
|
||||
return $dql;
|
||||
}
|
||||
|
||||
public function fetchRelatedFor(Doctrine_Entity $record)
|
||||
{
|
||||
// FIXME: composite key support
|
||||
$ids = $record->identifier();
|
||||
$id = count($ids) > 0 ? array_pop($ids) : null;
|
||||
|
||||
|
||||
if (empty($id) || ! $this->_foreignMapper->getClassMetadata()->getAttribute(Doctrine::ATTR_LOAD_REFERENCES)) {
|
||||
return new Doctrine_Collection($this->getForeignComponentName());
|
||||
} else {
|
||||
|
||||
$q = new Doctrine_RawSql();
|
||||
|
||||
$assocTable = $this->getAssociationFactory()->getTableName();
|
||||
$tableName = $record->getTable()->getTableName();
|
||||
$identifierColumnNames = $record->getTable()->getIdentifierColumnNames();
|
||||
$identifier = array_pop($identifierColumnNames);
|
||||
|
||||
$sub = 'SELECT ' . $this->getForeign()
|
||||
. ' FROM ' . $assocTable
|
||||
. ' WHERE ' . $this->getLocal()
|
||||
. ' = ?';
|
||||
|
||||
$condition[] = $tableName . '.' . $identifier . ' IN (' . $sub . ')';
|
||||
$joinCondition[] = $tableName . '.' . $identifier . ' = ' . $assocTable . '.' . $this->getForeign();
|
||||
|
||||
if ($this->definition['equal']) {
|
||||
$sub2 = 'SELECT ' . $this->getLocal()
|
||||
. ' FROM ' . $assocTable
|
||||
. ' WHERE ' . $this->getForeign()
|
||||
. ' = ?';
|
||||
|
||||
$condition[] = $tableName . '.' . $identifier . ' IN (' . $sub2 . ')';
|
||||
$joinCondition[] = $tableName . '.' . $identifier . ' = ' . $assocTable . '.' . $this->getLocal();
|
||||
}
|
||||
$q->select('{'.$tableName.'.*}, {'.$assocTable.'.*}')
|
||||
->from($tableName . ' INNER JOIN ' . $assocTable . ' ON ' . implode(' OR ', $joinCondition))
|
||||
->where(implode(' OR ', $condition));
|
||||
$q->addComponent($tableName, $record->getTable()->getComponentName());
|
||||
$q->addComponent($assocTable, $record->getTable()->getComponentName(). '.' . $this->getAssociationFactory()->getComponentName());
|
||||
|
||||
$params = ($this->definition['equal']) ? array($id, $id) : array($id);
|
||||
|
||||
return $q->execute($params);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,531 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id: Table.php 1397 2007-05-19 19:54:15Z zYne $
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Relation_Parser
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Relation
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @version $Revision: 1397 $
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @todo Composite key support?
|
||||
* @todo Remove. Association mapping is being reimplemented.
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Relation_Parser
|
||||
{
|
||||
/**
|
||||
* @var Doctrine_Table $_table the table object this parser belongs to
|
||||
*/
|
||||
protected $_table;
|
||||
|
||||
/**
|
||||
* @var array $_relations an array containing all the Doctrine_Relation objects for this table
|
||||
*/
|
||||
protected $_relations = array();
|
||||
|
||||
/**
|
||||
* @var array $_pending relations waiting for parsing
|
||||
*/
|
||||
protected $_relationDefinitions = array();
|
||||
|
||||
/**
|
||||
* constructor
|
||||
*
|
||||
* @param Doctrine_Table $table the table object this parser belongs to
|
||||
*/
|
||||
public function __construct(Doctrine_ClassMetadata $table)
|
||||
{
|
||||
$this->_table = $table;
|
||||
}
|
||||
|
||||
/**
|
||||
* getTable
|
||||
*
|
||||
* @return Doctrine_Table the table object this parser belongs to
|
||||
*/
|
||||
public function getTable()
|
||||
{
|
||||
return $this->_table;
|
||||
}
|
||||
|
||||
/**
|
||||
* getPendingRelation
|
||||
*
|
||||
* @return array an array defining a pending relation
|
||||
* @deprecated
|
||||
*/
|
||||
public function getPendingRelation($name)
|
||||
{
|
||||
return $this->getRelationDefinition($name);
|
||||
}
|
||||
|
||||
public function getRelationDefinition($name)
|
||||
{
|
||||
if ( ! isset($this->_relationDefinitions[$name])) {
|
||||
throw new Doctrine_Relation_Exception("Unknown relation '$name'.");
|
||||
}
|
||||
|
||||
return $this->_relationDefinitions[$name];
|
||||
}
|
||||
|
||||
public function getRelationDefinitions()
|
||||
{
|
||||
return $this->_relationDefinitions;
|
||||
}
|
||||
|
||||
public function hasRelation($name)
|
||||
{
|
||||
if ( ! isset($this->_relationDefinitions[$name]) && ! isset($this->_relations[$name])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* binds a relation
|
||||
*
|
||||
* @param string $name
|
||||
* @param string $field
|
||||
* @return void
|
||||
*/
|
||||
public function bind($name, $options = array())
|
||||
{
|
||||
if (isset($this->_relations[$name])) {
|
||||
unset($this->_relations[$name]);
|
||||
}
|
||||
|
||||
$e = explode(' as ', $name);
|
||||
$name = $e[0];
|
||||
$alias = isset($e[1]) ? $e[1] : $name;
|
||||
|
||||
if ( ! isset($options['type'])) {
|
||||
throw new Doctrine_Relation_Exception('Relation type not set.');
|
||||
}
|
||||
|
||||
$this->_relationDefinitions[$alias] = array_merge($options, array('class' => $name, 'alias' => $alias));
|
||||
|
||||
return $this->_relationDefinitions[$alias];
|
||||
}
|
||||
|
||||
/**
|
||||
* getRelation
|
||||
*
|
||||
* @param string $alias relation alias
|
||||
*/
|
||||
public function getRelation($alias, $recursive = true)
|
||||
{
|
||||
if (isset($this->_relations[$alias])) {
|
||||
return $this->_relations[$alias];
|
||||
}
|
||||
|
||||
if (isset($this->_relationDefinitions[$alias])) {
|
||||
$this->_loadRelation($alias);
|
||||
}
|
||||
|
||||
if ($recursive) {
|
||||
$this->getRelations();
|
||||
return $this->getRelation($alias, false);
|
||||
} else {
|
||||
throw new Doctrine_Relation_Exception("Unknown relation '$alias'.");
|
||||
}
|
||||
}
|
||||
|
||||
public function addRelation($name, Doctrine_Relation $relation)
|
||||
{
|
||||
if (isset($this->_relations[$name])) {
|
||||
throw new Doctrine_Relation_Exception("Relation '$name' does already exist.");
|
||||
}
|
||||
$this->_relations[$name] = $relation;
|
||||
}
|
||||
|
||||
public function addRelationDefinition($name, array $definition)
|
||||
{
|
||||
if (isset($this->_relationDefinitions[$name])) {
|
||||
throw new Doctrine_Relation_Exception("Relation definition for '$name' does already exist.");
|
||||
}
|
||||
$this->_relationDefinitions[$name] = $definition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads a relation and puts it into the collection of loaded relations.
|
||||
* In the process of initializing a relation it is common that multiple other, closely related
|
||||
* relations are initialized, too.
|
||||
*
|
||||
* @param string $alias The name of the relation.
|
||||
*/
|
||||
protected function _loadRelation($alias)
|
||||
{
|
||||
$def = $this->_relationDefinitions[$alias];
|
||||
|
||||
// check if reference class name exists
|
||||
// if it does we are dealing with an association relation (many-many)
|
||||
if (isset($def['refClass'])) {
|
||||
$def = $this->completeAssocDefinition($def);
|
||||
$localClasses = array_merge($this->_table->getParentClasses(), array($this->_table->getClassName()));
|
||||
|
||||
$relationName = $def['refClass'];
|
||||
|
||||
if ( ! isset($this->_relationDefinitions[$relationName]) && ! isset($this->_relations[$relationName])) {
|
||||
$this->_completeManyToManyRelation($def);
|
||||
}
|
||||
|
||||
if (in_array($def['class'], $localClasses)) {
|
||||
$rel = new Doctrine_Relation_Nest($def);
|
||||
} else {
|
||||
$rel = new Doctrine_Relation_Association($def);
|
||||
}
|
||||
} else {
|
||||
// simple foreign key relation
|
||||
$def = $this->completeDefinition($def);
|
||||
|
||||
if (isset($def['localKey'])) {
|
||||
$rel = new Doctrine_Relation_LocalKey($def);
|
||||
} else {
|
||||
$rel = new Doctrine_Relation_ForeignKey($def);
|
||||
}
|
||||
}
|
||||
if (isset($rel)) {
|
||||
$this->_relations[$alias] = $rel;
|
||||
return $rel;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Completes the initialization of a many-to-many relation by adding
|
||||
* two uni-directional relations between this parser's table and the intermediary table.
|
||||
*
|
||||
* @param array The relation definition.
|
||||
*/
|
||||
protected function _completeManyToManyRelation(array $def)
|
||||
{
|
||||
$identifierColumnNames = $this->_table->getIdentifierColumnNames();
|
||||
$idColumnName = array_pop($identifierColumnNames);
|
||||
|
||||
$relationName = $def['refClass'];
|
||||
|
||||
// add a relation pointing from the intermediary table to the table of this parser
|
||||
$parser = $def['refTable']->getRelationParser();
|
||||
if ( ! $parser->hasRelation($this->_table->getClassName())) {
|
||||
$parser->bind($this->_table->getClassName(),
|
||||
array('type' => Doctrine_Relation::ONE,
|
||||
'local' => $def['local'],
|
||||
'foreign' => $idColumnName,
|
||||
'localKey' => true
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// add a relation pointing from this parser's table to the xref table
|
||||
if ( ! $this->hasRelation($relationName/*$def['refClass']*/)) {
|
||||
$this->bind($relationName, array(
|
||||
'type' => Doctrine_Relation::MANY,
|
||||
'foreign' => $def['local'],
|
||||
'local' => $idColumnName)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* getRelations
|
||||
* returns an array containing all relation objects
|
||||
*
|
||||
* @return array an array of Doctrine_Relation objects
|
||||
*/
|
||||
public function getRelations()
|
||||
{
|
||||
foreach ($this->_relationDefinitions as $k => $v) {
|
||||
$this->getRelation($k);
|
||||
}
|
||||
|
||||
return $this->_relations;
|
||||
}
|
||||
|
||||
/**
|
||||
* getImpl
|
||||
* returns the table class of the concrete implementation for given template
|
||||
* if the given template is not a template then this method just returns the
|
||||
* table class for the given record
|
||||
*
|
||||
* @param string $template
|
||||
*/
|
||||
public function getImpl(array &$def, $key)
|
||||
{
|
||||
$em = $this->_table->getEntityManager();
|
||||
if (in_array('Doctrine_Template', class_parents($def[$key]))) {
|
||||
$impl = $this->_table->getImpl($def[$key]);
|
||||
if ($impl === null) {
|
||||
throw new Doctrine_Relation_Parser_Exception("Couldn't find concrete implementation for template " . $def[$key]);
|
||||
}
|
||||
$def[$key] = $impl;
|
||||
}
|
||||
|
||||
return $em->getClassMetadata($def[$key]);
|
||||
}
|
||||
|
||||
protected function _isTemplate($className)
|
||||
{
|
||||
return in_array('Doctrine_Template', class_parents($className));
|
||||
}
|
||||
|
||||
/**
|
||||
* Completes the given association definition
|
||||
*
|
||||
* @param array $def definition array to be completed
|
||||
* @return array completed definition array
|
||||
*/
|
||||
public function completeAssocDefinition($def)
|
||||
{
|
||||
$conn = $this->_table->getConnection();
|
||||
$def['table'] = $this->getImpl($def, 'class');
|
||||
$def['localTable'] = $this->_table;
|
||||
$def['refTable'] = $this->getImpl($def, 'refClass');
|
||||
|
||||
$id = $def['refTable']->getIdentifierColumnNames();
|
||||
|
||||
if (count($id) > 1) {
|
||||
if ( ! isset($def['foreign'])) {
|
||||
// foreign key not set
|
||||
// try to guess the foreign key
|
||||
$def['foreign'] = ($def['local'] === $id[0]) ? $id[1] : $id[0];
|
||||
}
|
||||
if ( ! isset($def['local'])) {
|
||||
// foreign key not set
|
||||
// try to guess the foreign key
|
||||
|
||||
$def['local'] = ($def['foreign'] === $id[0]) ? $id[1] : $id[0];
|
||||
}
|
||||
} else {
|
||||
|
||||
if ( ! isset($def['foreign'])) {
|
||||
// foreign key not set
|
||||
// try to guess the foreign key
|
||||
|
||||
$columns = $this->getIdentifiers($def['table']);
|
||||
|
||||
$def['foreign'] = $columns;
|
||||
}
|
||||
if ( ! isset($def['local'])) {
|
||||
// local key not set
|
||||
// try to guess the local key
|
||||
$columns = $this->getIdentifiers($this->_table);
|
||||
|
||||
$def['local'] = $columns;
|
||||
}
|
||||
}
|
||||
return $def;
|
||||
}
|
||||
|
||||
/**
|
||||
* getIdentifiers
|
||||
* gives a list of identifiers from given table
|
||||
*
|
||||
* the identifiers are in format:
|
||||
* [componentName].[identifier]
|
||||
*
|
||||
* @param Doctrine_Table $table table object to retrieve identifiers from
|
||||
*/
|
||||
public function getIdentifiers($table)
|
||||
{
|
||||
$componentNameToLower = strtolower($table->getComponentName());
|
||||
$idFieldNames = (array)$table->getIdentifier();
|
||||
if (count($idFieldNames) > 1) {
|
||||
$columns = array();
|
||||
foreach ((array) $table->getIdentifierColumnNames() as $identColName) {
|
||||
$columns[] = $componentNameToLower . '_' . $identColName;
|
||||
}
|
||||
} else {
|
||||
$columns = $componentNameToLower . '_' . $table->getColumnName($idFieldNames[0]);
|
||||
}
|
||||
|
||||
return $columns;
|
||||
}
|
||||
|
||||
/**
|
||||
* guessColumns
|
||||
*
|
||||
* @param array $classes an array of class names
|
||||
* @param Doctrine_Table $foreignTable foreign table object
|
||||
* @return array an array of column names
|
||||
*/
|
||||
public function guessColumns(array $classes, $foreignTable)
|
||||
{
|
||||
$conn = $this->_table->getConnection();
|
||||
|
||||
foreach ($classes as $class) {
|
||||
try {
|
||||
$table = $conn->getClassMetadata($class);
|
||||
} catch (Doctrine_Table_Exception $e) {
|
||||
continue;
|
||||
}
|
||||
$columns = $this->getIdentifiers($table);
|
||||
$found = true;
|
||||
|
||||
foreach ((array) $columns as $column) {
|
||||
if ( ! $foreignTable->hasColumn($column)) {
|
||||
$found = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($found) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! $found) {
|
||||
throw new Doctrine_Relation_Exception("Couldn't find columns.");
|
||||
}
|
||||
|
||||
return $columns;
|
||||
}
|
||||
|
||||
/**
|
||||
* Completes the given definition
|
||||
*
|
||||
* @param array $def definition array to be completed
|
||||
* @return array completed definition array
|
||||
* @todo Description: What does it mean to complete a definition? What is done (not how)?
|
||||
* Refactor (too long & nesting level)
|
||||
*/
|
||||
public function completeDefinition($def)
|
||||
{
|
||||
$conn = $this->_table->getEntityManager();
|
||||
$def['table'] = $this->getImpl($def, 'class');
|
||||
$def['localTable'] = $this->_table;
|
||||
|
||||
$foreignClasses = array_merge($def['table']->getParentClasses(), array($def['class']));
|
||||
$localClasses = array_merge($this->_table->getParentClasses(), array($this->_table->getClassName()));
|
||||
|
||||
$localIdentifierColumnNames = $this->_table->getIdentifierColumnNames();
|
||||
$localIdColumnName = $localIdentifierColumnNames[count($localIdentifierColumnNames) - 1];
|
||||
$foreignIdentifierColumnNames = $def['table']->getIdentifierColumnNames();
|
||||
$foreignIdColumnName = $foreignIdentifierColumnNames[count($foreignIdentifierColumnNames) - 1];
|
||||
|
||||
if (isset($def['local'])) {
|
||||
if ( ! isset($def['foreign'])) {
|
||||
// local key is set, but foreign key is not
|
||||
// try to guess the foreign key
|
||||
if ($def['local'] == $localIdColumnName) {
|
||||
$def['foreign'] = $this->guessColumns($localClasses, $def['table']);
|
||||
} else {
|
||||
// the foreign field is likely to be the
|
||||
// identifier of the foreign class
|
||||
$def['foreign'] = $foreignIdColumnName;
|
||||
$def['localKey'] = true;
|
||||
}
|
||||
} else {
|
||||
if ((array)$def['local'] != $localIdentifierColumnNames &&
|
||||
$def['type'] == Doctrine_Relation::ONE) {
|
||||
$def['localKey'] = true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isset($def['foreign'])) {
|
||||
// local key not set, but foreign key is set
|
||||
// try to guess the local key
|
||||
if ($def['foreign'] === $foreignIdColumnName) {
|
||||
$def['localKey'] = true;
|
||||
try {
|
||||
$def['local'] = $this->guessColumns($foreignClasses, $this->_table);
|
||||
} catch (Doctrine_Relation_Exception $e) {
|
||||
$def['local'] = $localIdColumnName;
|
||||
}
|
||||
} else {
|
||||
$def['local'] = $localIdColumnName;
|
||||
}
|
||||
} else {
|
||||
// neither local or foreign key is being set
|
||||
// try to guess both keys
|
||||
|
||||
$conn = $this->_table->getConnection();
|
||||
|
||||
// the following loops are needed for covering inheritance
|
||||
foreach ($localClasses as $class) {
|
||||
$table = $conn->getClassMetadata($class);
|
||||
$identifierColumnNames = $table->getIdentifierColumnNames();
|
||||
$idColumnName = array_pop($identifierColumnNames);
|
||||
$column = strtolower($table->getComponentName())
|
||||
. '_' . $idColumnName;
|
||||
|
||||
foreach ($foreignClasses as $class2) {
|
||||
$table2 = $conn->getClassMetadata($class2);
|
||||
if ($table2->hasColumn($column)) {
|
||||
$def['foreign'] = $column;
|
||||
$def['local'] = $idColumnName;
|
||||
return $def;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($foreignClasses as $class) {
|
||||
$table = $conn->getClassMetadata($class);
|
||||
$identifierColumnNames = $table->getIdentifierColumnNames();
|
||||
$idColumnName = array_pop($identifierColumnNames);
|
||||
$column = strtolower($table->getComponentName())
|
||||
. '_' . $idColumnName;
|
||||
|
||||
foreach ($localClasses as $class2) {
|
||||
$table2 = $conn->getClassMetadata($class2);
|
||||
if ($table2->hasColumn($column)) {
|
||||
$def['foreign'] = $idColumnName;
|
||||
$def['local'] = $column;
|
||||
$def['localKey'] = true;
|
||||
return $def;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// auto-add columns and auto-build relation
|
||||
$columns = array();
|
||||
foreach ((array) $this->_table->getIdentifierColumnNames() as $id) {
|
||||
// ?? should this not be $this->_table->getComponentName() ??
|
||||
$column = strtolower($table->getComponentName())
|
||||
. '_' . $id;
|
||||
|
||||
$col = $this->_table->getColumnDefinition($id);
|
||||
$type = $col['type'];
|
||||
$length = $col['length'];
|
||||
|
||||
unset($col['type']);
|
||||
unset($col['length']);
|
||||
unset($col['autoincrement']);
|
||||
unset($col['sequence']);
|
||||
unset($col['primary']);
|
||||
|
||||
$def['table']->setColumn($column, $type, $length, $col);
|
||||
|
||||
$columns[] = $column;
|
||||
}
|
||||
if (count($columns) > 1) {
|
||||
$def['foreign'] = $columns;
|
||||
} else {
|
||||
$def['foreign'] = $columns[0];
|
||||
}
|
||||
$def['local'] = $localIdColumnName;
|
||||
}
|
||||
}
|
||||
return $def;
|
||||
}
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Doctrine_Relation_Parser_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage Relation
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @deprecated Remove.
|
||||
*/
|
||||
class Doctrine_Relation_Parser_Exception extends Doctrine_Relation_Exception
|
||||
{ }
|
|
@ -28,7 +28,8 @@
|
|||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @version $Revision$
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Sequence_Db2 extends Doctrine_Sequence
|
||||
{
|
||||
|
|
|
@ -28,7 +28,8 @@
|
|||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @version $Revision$
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Sequence_Informix extends Doctrine_Sequence
|
||||
{ }
|
|
@ -28,7 +28,8 @@
|
|||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @version $Revision$
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Sequence_Mssql extends Doctrine_Sequence
|
||||
{
|
||||
|
|
|
@ -28,7 +28,8 @@
|
|||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @version $Revision$
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Sequence_Mysql extends Doctrine_Sequence
|
||||
{
|
||||
|
|
|
@ -28,7 +28,8 @@
|
|||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @version $Revision$
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Sequence_Oracle extends Doctrine_Sequence
|
||||
{
|
||||
|
|
|
@ -28,7 +28,8 @@
|
|||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @version $Revision$
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Sequence_Pgsql extends Doctrine_Sequence
|
||||
{
|
||||
|
|
|
@ -28,7 +28,8 @@
|
|||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
* @version $Revision$
|
||||
* @deprecated
|
||||
*/
|
||||
class Doctrine_Sequence_Sqlite extends Doctrine_Sequence
|
||||
{
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.org>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_View_Exception');
|
||||
/**
|
||||
* Doctrine_Validator_Exception
|
||||
*
|
||||
* @package Doctrine
|
||||
* @subpackage View
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @link www.phpdoctrine.org
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
*/
|
||||
class Doctrine_View_Exception extends Doctrine_Exception
|
||||
{ }
|
|
@ -15,7 +15,6 @@ require_once 'Orm/Associations/AllTests.php';
|
|||
|
||||
// Tests
|
||||
require_once 'Orm/UnitOfWorkTest.php';
|
||||
require_once 'Orm/EntityManagerFactoryTest.php';
|
||||
require_once 'Orm/EntityManagerTest.php';
|
||||
require_once 'Orm/EntityPersisterTest.php';
|
||||
|
||||
|
@ -31,7 +30,6 @@ class Orm_AllTests
|
|||
$suite = new Doctrine_OrmTestSuite('Doctrine Orm');
|
||||
|
||||
$suite->addTestSuite('Orm_UnitOfWorkTest');
|
||||
$suite->addTestSuite('Orm_EntityManagerFactoryTest');
|
||||
$suite->addTestSuite('Orm_EntityManagerTest');
|
||||
$suite->addTestSuite('Orm_EntityPersisterTest');
|
||||
|
||||
|
|
|
@ -41,7 +41,6 @@ class Orm_Component_AccessTest extends Doctrine_OrmTestCase
|
|||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
$em = new Doctrine_EntityManager(new Doctrine_Connection_Mock());
|
||||
$this->user = new ForumUser();
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,6 @@ class Orm_Component_CollectionTest extends Doctrine_OrmTestCase
|
|||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
$em = new Doctrine_EntityManager(new Doctrine_Connection_Mock());
|
||||
|
||||
$this->coll = new Doctrine_Collection('ForumUser');
|
||||
|
||||
|
|
|
@ -19,17 +19,17 @@ class Orm_EntityManagerFactoryTest extends Doctrine_OrmTestCase
|
|||
return $this->_emf->createEntityManager($this->_mockOptions, $name);
|
||||
}
|
||||
|
||||
public function testBindingEntityToNamedManager()
|
||||
/*public function testBindingEntityToNamedManager()
|
||||
{
|
||||
$myEM = $this->_createNamedManager('myEM');
|
||||
$this->_emf->bindEntityToManager('SomeEntity', 'myEM');
|
||||
$this->assertSame($myEM, $this->_emf->getEntityManager('SomeEntity'));
|
||||
$this->_emf->releaseEntityManager('myEM');
|
||||
$this->_emf->releaseEntityManager($myEM);
|
||||
}
|
||||
|
||||
public function testStaticLookup()
|
||||
{
|
||||
$this->assertTrue(Doctrine_EntityManagerFactory::getManager() instanceof Doctrine_EntityManager);
|
||||
}
|
||||
}*/
|
||||
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue