1
0
mirror of synced 2025-03-05 04:13:20 +03:00

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

- turned raiseError() calls into throw Exception
This commit is contained in:
lsmith 2007-01-05 22:07:24 +00:00
parent 67514f4c6a
commit cf4c715cd2
2 changed files with 94 additions and 95 deletions

View File

@ -1,92 +1,92 @@
<?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::autoload('Doctrine_Expression'); Doctrine::autoload('Doctrine_Expression');
/** /**
* Doctrine_Expression_Mysql * Doctrine_Expression_Mysql
* *
* @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>
*/ */
class Doctrine_Expression_Mysql extends Doctrine_Expression class Doctrine_Expression_Mysql extends Doctrine_Expression
{ {
/** /**
* returns the regular expression operator * returns the regular expression operator
* *
* @return string * @return string
*/ */
public function regexp() public function regexp()
{ {
return 'RLIKE'; return 'RLIKE';
} }
/** /**
* build a pattern matching string * build a pattern matching string
* *
* EXPERIMENTAL * EXPERIMENTAL
* *
* WARNING: this function is experimental and may change signature at * WARNING: this function is experimental and may change signature at
* any time until labelled as non-experimental * any time until labelled as non-experimental
* *
* @access public * @access public
* *
* @param array $pattern even keys are strings, odd are patterns (% and _) * @param array $pattern even keys are strings, odd are patterns (% and _)
* @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future) * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future)
* @param string $field optional field name that is being matched against * @param string $field optional field name that is being matched against
* (might be required when emulating ILIKE) * (might be required when emulating ILIKE)
* *
* @return string SQL pattern * @return string SQL pattern
*/ */
public function matchPattern($pattern, $operator = null, $field = null) public function matchPattern($pattern, $operator = null, $field = null)
{ {
$match = ''; $match = '';
if (!is_null($operator)) { if (!is_null($operator)) {
$field = is_null($field) ? '' : $field.' '; $field = is_null($field) ? '' : $field.' ';
$operator = strtoupper($operator); $operator = strtoupper($operator);
switch ($operator) { switch ($operator) {
// case insensitive // case insensitive
case 'ILIKE': case 'ILIKE':
$match = $field.'LIKE '; $match = $field.'LIKE ';
break; break;
// case sensitive // case sensitive
case 'LIKE': case 'LIKE':
$match = $field.'LIKE BINARY '; $match = $field.'LIKE BINARY ';
break; break;
default: default:
throw new Doctrine_Expression_Mysql_Exception('not a supported operator type:'. $operator); throw new Doctrine_Expression_Mysql_Exception('not a supported operator type:'. $operator);
} }
} }
$match.= "'"; $match.= "'";
foreach ($pattern as $key => $value) { foreach ($pattern as $key => $value) {
if ($key % 2) { if ($key % 2) {
$match .= $value; $match .= $value;
} else { } else {
$match .= $db->escapePattern($db->escape($value)); $match .= $this->conn->escapePattern($this->conn->escape($value));
} }
} }
$match.= "'"; $match.= "'";
$match.= $this->patternEscapeString(); $match.= $this->patternEscapeString();
return $match; return $match;
} }
} }

View File

@ -151,8 +151,7 @@ class Doctrine_Expression_Pgsql extends Doctrine_Expression
$match = $field.'LIKE '; $match = $field.'LIKE ';
break; break;
default: default:
return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, throw new Doctrine_Expression_Pgsql_Exception('not a supported operator type:'. $operator);
'not a supported operator type:'. $operator, __FUNCTION__);
} }
} }
$match.= "'"; $match.= "'";
@ -160,7 +159,7 @@ class Doctrine_Expression_Pgsql extends Doctrine_Expression
if ($key % 2) { if ($key % 2) {
$match.= $value; $match.= $value;
} else { } else {
$match.= $db->escapePattern($db->escape($value)); $match.= $this->conn->escapePattern($this->conn->escape($value));
} }
} }
$match.= "'"; $match.= "'";