Commit 1a21a43e authored by lsmith's avatar lsmith

- s/\$db/\$this->conn

- turned raiseError() calls into throw Exception
parent 260558e0
<?php <?php
/* /*
* $Id$ * $Id$
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *
* This software consists of voluntary contributions made by many individuals * This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see * and is licensed under the LGPL. For more information, see
* <http://www.phpdoctrine.com>. * <http://www.phpdoctrine.com>.
*/ */
/** /**
* Doctrine_DataDict * Doctrine_DataDict
* *
* @package Doctrine * @package Doctrine
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @category Object Relational Mapping * @category Object Relational Mapping
* @link www.phpdoctrine.com * @link www.phpdoctrine.com
* @since 1.0 * @since 1.0
* @version $Revision$ * @version $Revision$
* @author Konsta Vesterinen <kvesteri@cc.hut.fi> * @author Konsta Vesterinen <kvesteri@cc.hut.fi>
* @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library) * @author Lukas Smith <smith@pooteeweet.org> (PEAR MDB2 library)
*/ */
class Doctrine_DataDict extends Doctrine_Connection_Module class Doctrine_DataDict extends Doctrine_Connection_Module
{ {
/** /**
* Obtain an array of changes that may need to applied * Obtain an array of changes that may need to applied
* *
* @param array $current new definition * @param array $current new definition
* @param array $previous old definition * @param array $previous old definition
* @return array containing all changes that will need to be applied * @return array containing all changes that will need to be applied
*/ */
public function compareDefinition($current, $previous) public function compareDefinition($current, $previous)
{ {
$type = !empty($current['type']) ? $current['type'] : null; $type = !empty($current['type']) ? $current['type'] : null;
if (!method_exists($this, "_compare{$type}Definition")) { if (!method_exists($this, "_compare{$type}Definition")) {
return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, throw new Doctrine_DataDict_Exception('type "'.$current['type'].'" is not yet supported');
'type "'.$current['type'].'" is not yet supported', __FUNCTION__); }
}
if (empty($previous['type']) || $previous['type'] != $type) {
if (empty($previous['type']) || $previous['type'] != $type) { return $current;
return $current; }
}
$change = $this->{"_compare{$type}Definition"}($current, $previous);
$change = $this->{"_compare{$type}Definition"}($current, $previous);
if ($previous['type'] != $type) {
if ($previous['type'] != $type) { $change['type'] = true;
$change['type'] = true; }
}
$previous_notnull = !empty($previous['notnull']) ? $previous['notnull'] : false;
$previous_notnull = !empty($previous['notnull']) ? $previous['notnull'] : false; $notnull = !empty($current['notnull']) ? $current['notnull'] : false;
$notnull = !empty($current['notnull']) ? $current['notnull'] : false; if ($previous_notnull != $notnull) {
if ($previous_notnull != $notnull) { $change['notnull'] = true;
$change['notnull'] = true; }
}
$previous_default = array_key_exists('default', $previous) ? $previous['default'] :
$previous_default = array_key_exists('default', $previous) ? $previous['default'] : ($previous_notnull ? '' : null);
($previous_notnull ? '' : null); $default = array_key_exists('default', $current) ? $current['default'] :
$default = array_key_exists('default', $current) ? $current['default'] : ($notnull ? '' : null);
($notnull ? '' : null); if ($previous_default !== $default) {
if ($previous_default !== $default) { $change['default'] = true;
$change['default'] = true; }
}
return $change;
return $change; }
} }
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment