X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=extlib%2FDB%2Fcommon.php;h=7252ce27864bb7b448f16ef8b9d634c295cc47e2;hb=515682c0cd3b7000fb02c7b79d759c347f57da09;hp=73e3eb69f7e0116cebb1a03c49583d5e5d8ac46f;hpb=924bcd93e5692288f976dd49f15ea3e15c080acc;p=quix0rs-gnu-social.git diff --git a/extlib/DB/common.php b/extlib/DB/common.php index 73e3eb69f7..7252ce2786 100644 --- a/extlib/DB/common.php +++ b/extlib/DB/common.php @@ -53,7 +53,7 @@ class DB_common extends PEAR * The current default fetch mode * @var integer */ - var $fetchmode = DB_FETCHMODE_ORDERED; + public $fetchmode = DB_FETCHMODE_ORDERED; /** * The name of the class into which results should be fetched when @@ -61,20 +61,20 @@ class DB_common extends PEAR * * @var string */ - var $fetchmode_object_class = 'stdClass'; + public $fetchmode_object_class = 'stdClass'; /** * Was a connection present when the object was serialized()? * @var bool * @see DB_common::__sleep(), DB_common::__wake() */ - var $was_connected = null; + public $was_connected = null; /** * The most recently executed query * @var string */ - var $last_query = ''; + public $last_query = ''; /** * Run-time configuration options @@ -85,7 +85,7 @@ class DB_common extends PEAR * @var array * @see DB_common::setOption() */ - var $options = array( + public $options = array( 'result_buffering' => 500, 'persistent' => false, 'ssl' => false, @@ -101,32 +101,32 @@ class DB_common extends PEAR * @var array * @since Property available since Release 1.7.0 */ - var $last_parameters = array(); + public $last_parameters = array(); /** * The elements from each prepared statement * @var array */ - var $prepare_tokens = array(); + public $prepare_tokens = array(); /** * The data types of the various elements in each prepared statement * @var array */ - var $prepare_types = array(); + public $prepare_types = array(); /** * The prepared queries * @var array */ - var $prepared_queries = array(); + public $prepared_queries = array(); /** * Flag indicating that the last query was a manipulation query. * @access protected * @var boolean */ - var $_last_query_manip = false; + public $_last_query_manip = false; /** * Flag indicating that the next query must be a manipulation @@ -134,7 +134,7 @@ class DB_common extends PEAR * @access protected * @var boolean */ - var $_next_query_manip = false; + public $_next_query_manip = false; // }}} @@ -145,7 +145,7 @@ class DB_common extends PEAR * * @return void */ - function __construct() + public function __construct() { $this->PEAR('DB_Error'); } @@ -159,7 +159,7 @@ class DB_common extends PEAR * * @return array the array of properties names that should be saved */ - function __sleep() + public function __sleep() { if ($this->connection) { // Don't disconnect(), people use serialize() for many reasons @@ -169,23 +169,23 @@ class DB_common extends PEAR } if (isset($this->autocommit)) { return array('autocommit', - 'dbsyntax', - 'dsn', - 'features', - 'fetchmode', - 'fetchmode_object_class', - 'options', - 'was_connected', - ); + 'dbsyntax', + 'dsn', + 'features', + 'fetchmode', + 'fetchmode_object_class', + 'options', + 'was_connected', + ); } else { return array('dbsyntax', - 'dsn', - 'features', - 'fetchmode', - 'fetchmode_object_class', - 'options', - 'was_connected', - ); + 'dsn', + 'features', + 'fetchmode', + 'fetchmode_object_class', + 'options', + 'was_connected', + ); } } @@ -201,7 +201,7 @@ class DB_common extends PEAR * * @return void */ - function __wakeup() + public function __wakeup() { if ($this->was_connected) { $this->connect($this->dsn, $this->options['persistent']); @@ -212,37 +212,37 @@ class DB_common extends PEAR // {{{ __toString() /** - * Automatic string conversion for PHP 5 + * DEPRECATED: String conversion method * * @return string a string describing the current PEAR DB object * - * @since Method available since Release 1.7.0 + * @deprecated Method deprecated in Release 1.7.0 */ - function __toString() + public function toString() { - $info = strtolower(get_class($this)); - $info .= ': (phptype=' . $this->phptype . - ', dbsyntax=' . $this->dbsyntax . - ')'; - if ($this->connection) { - $info .= ' [connected]'; - } - return $info; + return $this->__toString(); } // }}} // {{{ toString() /** - * DEPRECATED: String conversion method + * Automatic string conversion for PHP 5 * * @return string a string describing the current PEAR DB object * - * @deprecated Method deprecated in Release 1.7.0 + * @since Method available since Release 1.7.0 */ - function toString() + public function __toString() { - return $this->__toString(); + $info = strtolower(get_class($this)); + $info .= ': (phptype=' . $this->phptype . + ', dbsyntax=' . $this->dbsyntax . + ')'; + if ($this->connection) { + $info .= ' [connected]'; + } + return $info; } // }}} @@ -252,14 +252,14 @@ class DB_common extends PEAR * DEPRECATED: Quotes a string so it can be safely used within string * delimiters in a query * - * @param string $string the string to be quoted + * @param string $string the string to be quoted * * @return string the quoted string * * @see DB_common::quoteSmart(), DB_common::escapeSimple() * @deprecated Method deprecated some time before Release 1.2 */ - function quoteString($string) + public function quoteString($string) { $string = $this->quoteSmart($string); if ($string{0} == "'") { @@ -271,77 +271,13 @@ class DB_common extends PEAR // }}} // {{{ quote() - /** - * DEPRECATED: Quotes a string so it can be safely used in a query - * - * @param string $string the string to quote - * - * @return string the quoted string or the string NULL - * if the value submitted is null. - * - * @see DB_common::quoteSmart(), DB_common::escapeSimple() - * @deprecated Deprecated in release 1.6.0 - */ - function quote($string = null) - { - return $this->quoteSmart($string); - } - - // }}} - // {{{ quoteIdentifier() - - /** - * Quotes a string so it can be safely used as a table or column name - * - * Delimiting style depends on which database driver is being used. - * - * NOTE: just because you CAN use delimited identifiers doesn't mean - * you SHOULD use them. In general, they end up causing way more - * problems than they solve. - * - * Portability is broken by using the following characters inside - * delimited identifiers: - * + backtick (`) -- due to MySQL - * + double quote (") -- due to Oracle - * + brackets ([ or ]) -- due to Access - * - * Delimited identifiers are known to generally work correctly under - * the following drivers: - * + mssql - * + mysql - * + mysqli - * + oci8 - * + odbc(access) - * + odbc(db2) - * + pgsql - * + sqlite - * + sybase (must execute set quoted_identifier on sometime - * prior to use) - * - * InterBase doesn't seem to be able to use delimited identifiers - * via PHP 4. They work fine under PHP 5. - * - * @param string $str the identifier name to be quoted - * - * @return string the quoted identifier - * - * @since Method available since Release 1.6.0 - */ - function quoteIdentifier($str) - { - return '"' . str_replace('"', '""', $str) . '"'; - } - - // }}} - // {{{ quoteSmart() - /** * Formats input so it can be safely used in a query * * The output depends on the PHP data type of input and the database * type being used. * - * @param mixed $in the data to be formatted + * @param mixed $in the data to be formatted * * @return mixed the formatted data. The format depends on the input's * PHP type: @@ -436,7 +372,7 @@ class DB_common extends PEAR * @see DB_common::escapeSimple() * @since Method available since Release 1.6.0 */ - function quoteSmart($in) + public function quoteSmart($in) { if (is_int($in)) { return $in; @@ -448,14 +384,53 @@ class DB_common extends PEAR return 'NULL'; } else { if ($this->dbsyntax == 'access' - && preg_match('/^#.+#$/', $in)) - { + && preg_match('/^#.+#$/', $in)) { return $this->escapeSimple($in); } return "'" . $this->escapeSimple($in) . "'"; } } + // }}} + // {{{ quoteIdentifier() + + /** + * Formats a float value for use within a query in a locale-independent + * manner. + * + * @param float the float value to be quoted. + * @return string the quoted string. + * @see DB_common::quoteSmart() + * @since Method available since release 1.7.8. + */ + public function quoteFloat($float) + { + return "'" . $this->escapeSimple(str_replace(',', '.', strval(floatval($float)))) . "'"; + } + + // }}} + // {{{ quoteSmart() + + /** + * Escapes a string according to the current DBMS's standards + * + * In SQLite, this makes things safe for inserts/updates, but may + * cause problems when performing text comparisons against columns + * containing binary data. See the + * {@link http://php.net/sqlite_escape_string PHP manual} for more info. + * + * @param string $str the string to be escaped + * + * @return string the escaped string + * + * @see DB_common::quoteSmart() + * @since Method available since Release 1.6.0 + */ + public function escapeSimple($str) + { + return str_replace("'", "''", $str); + } + // }}} // {{{ quoteBoolean() @@ -468,47 +443,73 @@ class DB_common extends PEAR * @see DB_common::quoteSmart() * @since Method available since release 1.7.8. */ - function quoteBoolean($boolean) { + public function quoteBoolean($boolean) + { return $boolean ? '1' : '0'; } - + // }}} // {{{ quoteFloat() /** - * Formats a float value for use within a query in a locale-independent - * manner. + * DEPRECATED: Quotes a string so it can be safely used in a query * - * @param float the float value to be quoted. - * @return string the quoted string. - * @see DB_common::quoteSmart() - * @since Method available since release 1.7.8. + * @param string $string the string to quote + * + * @return string the quoted string or the string NULL + * if the value submitted is null. + * + * @see DB_common::quoteSmart(), DB_common::escapeSimple() + * @deprecated Deprecated in release 1.6.0 */ - function quoteFloat($float) { - return "'".$this->escapeSimple(str_replace(',', '.', strval(floatval($float))))."'"; + public function quote($string = null) + { + return $this->quoteSmart($string); } - + // }}} // {{{ escapeSimple() /** - * Escapes a string according to the current DBMS's standards + * Quotes a string so it can be safely used as a table or column name * - * In SQLite, this makes things safe for inserts/updates, but may - * cause problems when performing text comparisons against columns - * containing binary data. See the - * {@link http://php.net/sqlite_escape_string PHP manual} for more info. + * Delimiting style depends on which database driver is being used. * - * @param string $str the string to be escaped + * NOTE: just because you CAN use delimited identifiers doesn't mean + * you SHOULD use them. In general, they end up causing way more + * problems than they solve. * - * @return string the escaped string + * Portability is broken by using the following characters inside + * delimited identifiers: + * + backtick (`) -- due to MySQL + * + double quote (") -- due to Oracle + * + brackets ([ or ]) -- due to Access + * + * Delimited identifiers are known to generally work correctly under + * the following drivers: + * + mssql + * + mysql + * + mysqli + * + oci8 + * + odbc(access) + * + odbc(db2) + * + pgsql + * + sqlite + * + sybase (must execute set quoted_identifier on sometime + * prior to use) + * + * InterBase doesn't seem to be able to use delimited identifiers + * via PHP 4. They work fine under PHP 5. + * + * @param string $str the identifier name to be quoted + * + * @return string the quoted identifier * - * @see DB_common::quoteSmart() * @since Method available since Release 1.6.0 */ - function escapeSimple($str) + public function quoteIdentifier($str) { - return str_replace("'", "''", $str); + return '"' . str_replace('"', '""', $str) . '"'; } // }}} @@ -517,11 +518,11 @@ class DB_common extends PEAR /** * Tells whether the present driver supports a given feature * - * @param string $feature the feature you're curious about + * @param string $feature the feature you're curious about * * @return bool whether this driver supports $feature */ - function provides($feature) + public function provides($feature) { return $this->features[$feature]; } @@ -532,9 +533,9 @@ class DB_common extends PEAR /** * Sets the fetch mode that should be used by default for query results * - * @param integer $fetchmode DB_FETCHMODE_ORDERED, DB_FETCHMODE_ASSOC + * @param integer $fetchmode DB_FETCHMODE_ORDERED, DB_FETCHMODE_ASSOC * or DB_FETCHMODE_OBJECT - * @param string $object_class the class name of the object to be returned + * @param string $object_class the class name of the object to be returned * by the fetch methods when the * DB_FETCHMODE_OBJECT mode is selected. * If no class is specified by default a cast @@ -542,13 +543,15 @@ class DB_common extends PEAR * done. There is also the posibility to use * and extend the 'DB_row' class. * + * @return object * @see DB_FETCHMODE_ORDERED, DB_FETCHMODE_ASSOC, DB_FETCHMODE_OBJECT */ - function setFetchMode($fetchmode, $object_class = 'stdClass') + public function setFetchMode($fetchmode, $object_class = 'stdClass') { switch ($fetchmode) { case DB_FETCHMODE_OBJECT: $this->fetchmode_object_class = $object_class; + // no break case DB_FETCHMODE_ORDERED: case DB_FETCHMODE_ASSOC: $this->fetchmode = $fetchmode; @@ -556,11 +559,95 @@ class DB_common extends PEAR default: return $this->raiseError('invalid fetchmode mode'); } + return null; } // }}} // {{{ setOption() + /** + * Communicates an error and invoke error callbacks, etc + * + * Basically a wrapper for PEAR::raiseError without the message string. + * + * @param mixed integer error code, or a PEAR error object (all + * other parameters are ignored if this parameter is + * an object + * @param int error mode, see PEAR_Error docs + * @param mixed if error mode is PEAR_ERROR_TRIGGER, this is the + * error level (E_USER_NOTICE etc). If error mode is + * PEAR_ERROR_CALLBACK, this is the callback function, + * either as a function name, or as an array of an + * object and method name. For other error modes this + * parameter is ignored. + * @param string extra debug information. Defaults to the last + * query and native error code. + * @param mixed native error code, integer or string depending the + * backend + * @param mixed dummy parameter for E_STRICT compatibility with + * PEAR::raiseError + * @param mixed dummy parameter for E_STRICT compatibility with + * PEAR::raiseError + * + * @return object the PEAR_Error object + * + * @see PEAR_Error + */ + public function &raiseError( + $code = DB_ERROR, + $mode = null, + $options = null, + $userinfo = null, + $nativecode = null, + $dummy1 = null, + $dummy2 = null + ) + { + // The error is yet a DB error object + if (is_object($code)) { + // because we the static PEAR::raiseError, our global + // handler should be used if it is set + if ($mode === null && !empty($this->_default_error_mode)) { + $mode = $this->_default_error_mode; + $options = $this->_default_error_options; + } + $tmp = PEAR::raiseError( + $code, + null, + $mode, + $options, + null, + null, + true + ); + return $tmp; + } + + if ($userinfo === null) { + $userinfo = $this->last_query; + } + + if ($nativecode) { + $userinfo .= ' [nativecode=' . trim($nativecode) . ']'; + } else { + $userinfo .= ' [DB Error: ' . DB::errorMessage($code) . ']'; + } + + $tmp = PEAR::raiseError( + null, + $code, + $mode, + $options, + $userinfo, + 'DB_Error', + true + ); + return $tmp; + } + + // }}} + // {{{ getOption() + /** * Sets run-time configuration options for PEAR DB * @@ -693,13 +780,13 @@ class DB_common extends PEAR * * * @param string $option option name - * @param mixed $value value for the option + * @param mixed $value value for the option * - * @return int DB_OK on success. A DB_Error object on failure. + * @return int|object * * @see DB_common::$options */ - function setOption($option, $value) + public function setOption($option, $value) { if (isset($this->options[$option])) { $this->options[$option] = $value; @@ -713,15 +800,15 @@ class DB_common extends PEAR switch ($this->phptype) { case 'oci8': $this->options['portability'] = - DB_PORTABILITY_LOWERCASE | - DB_PORTABILITY_NUMROWS; + DB_PORTABILITY_LOWERCASE | + DB_PORTABILITY_NUMROWS; break; case 'fbsql': case 'mysql': case 'mysqli': case 'sqlite': $this->options['portability'] = - DB_PORTABILITY_DELETE_COUNT; + DB_PORTABILITY_DELETE_COUNT; break; } } else { @@ -734,102 +821,47 @@ class DB_common extends PEAR return $this->raiseError("unknown option $option"); } - // }}} - // {{{ getOption() - - /** - * Returns the value of an option - * - * @param string $option the option name you're curious about - * - * @return mixed the option's value - */ - function getOption($option) - { - if (isset($this->options[$option])) { - return $this->options[$option]; - } - return $this->raiseError("unknown option $option"); - } - // }}} // {{{ prepare() /** - * Prepares a query for multiple execution with execute() - * - * Creates a query that can be run multiple times. Each time it is run, - * the placeholders, if any, will be replaced by the contents of - * execute()'s $data argument. - * - * Three types of placeholders can be used: - * + ? scalar value (i.e. strings, integers). The system - * will automatically quote and escape the data. - * + ! value is inserted 'as is' - * + & requires a file name. The file's contents get - * inserted into the query (i.e. saving binary - * data in a db) - * - * Example 1. - * - * $sth = $db->prepare('INSERT INTO tbl (a, b, c) VALUES (?, !, &)'); - * $data = array( - * "John's text", - * "'it''s good'", - * 'filename.txt' - * ); - * $res = $db->execute($sth, $data); - * - * - * Use backslashes to escape placeholder characters if you don't want - * them to be interpreted as placeholders: - *
-     *    "UPDATE foo SET col=? WHERE col='over \& under'"
-     * 
- * - * With some database backends, this is emulated. - * - * {@internal ibase and oci8 have their own prepare() methods.}} + * Automaticaly generates an insert or update query and call prepare() + * and execute() with it * - * @param string $query the query to be prepared + * @param string $table the table name + * @param array $fields_values the associative array where $key is a + * field name and $value its value + * @param int $mode a type of query to make: + * DB_AUTOQUERY_INSERT or DB_AUTOQUERY_UPDATE + * @param bool $where for update queries: the WHERE clause to + * append to the SQL statement. Don't + * include the "WHERE" keyword. * - * @return mixed DB statement resource on success. A DB_Error object - * on failure. + * @return mixed a new DB_result object for successful SELECT queries + * or DB_OK for successul data manipulation queries. + * A DB_Error object on failure. * - * @see DB_common::execute() + * @uses DB_common::autoPrepare(), DB_common::execute() */ - function prepare($query) + public function autoExecute( + $table, + $fields_values, + $mode = DB_AUTOQUERY_INSERT, + $where = false + ) { - $tokens = preg_split('/((?autoPrepare( + $table, + array_keys($fields_values), + $mode, + $where + ); + if (DB::isError($sth)) { + return $sth; } - - $this->prepare_tokens[] = &$newtokens; - end($this->prepare_tokens); - - $k = key($this->prepare_tokens); - $this->prepare_types[$k] = $types; - $this->prepared_queries[$k] = implode(' ', $newtokens); - - return $k; + $ret = $this->execute($sth, array_values($fields_values)); + $this->freePrepared($sth); + return $ret; } // }}} @@ -838,20 +870,24 @@ class DB_common extends PEAR /** * Automaticaly generates an insert or update query and pass it to prepare() * - * @param string $table the table name - * @param array $table_fields the array of field names - * @param int $mode a type of query to make: + * @param string $table the table name + * @param array $table_fields the array of field names + * @param int $mode a type of query to make: * DB_AUTOQUERY_INSERT or DB_AUTOQUERY_UPDATE - * @param string $where for update queries: the WHERE clause to + * @param bool $where for update queries: the WHERE clause to * append to the SQL statement. Don't * include the "WHERE" keyword. * - * @return resource the query handle + * @return resource|string * * @uses DB_common::prepare(), DB_common::buildManipSQL() */ - function autoPrepare($table, $table_fields, $mode = DB_AUTOQUERY_INSERT, - $where = false) + public function autoPrepare( + $table, + $table_fields, + $mode = DB_AUTOQUERY_INSERT, + $where = false + ) { $query = $this->buildManipSQL($table, $table_fields, $mode, $where); if (DB::isError($query)) { @@ -863,42 +899,6 @@ class DB_common extends PEAR // }}} // {{{ autoExecute() - /** - * Automaticaly generates an insert or update query and call prepare() - * and execute() with it - * - * @param string $table the table name - * @param array $fields_values the associative array where $key is a - * field name and $value its value - * @param int $mode a type of query to make: - * DB_AUTOQUERY_INSERT or DB_AUTOQUERY_UPDATE - * @param string $where for update queries: the WHERE clause to - * append to the SQL statement. Don't - * include the "WHERE" keyword. - * - * @return mixed a new DB_result object for successful SELECT queries - * or DB_OK for successul data manipulation queries. - * A DB_Error object on failure. - * - * @uses DB_common::autoPrepare(), DB_common::execute() - */ - function autoExecute($table, $fields_values, $mode = DB_AUTOQUERY_INSERT, - $where = false) - { - $sth = $this->autoPrepare($table, array_keys($fields_values), $mode, - $where); - if (DB::isError($sth)) { - return $sth; - } - $ret = $this->execute($sth, array_values($fields_values)); - $this->freePrepared($sth); - return $ret; - - } - - // }}} - // {{{ buildManipSQL() - /** * Produces an SQL query string for autoPrepare() * @@ -919,17 +919,17 @@ class DB_common extends PEAR * - Be carefull! If you don't give a $where param with an UPDATE * query, all the records of the table will be updated! * - * @param string $table the table name - * @param array $table_fields the array of field names - * @param int $mode a type of query to make: + * @param string $table the table name + * @param array $table_fields the array of field names + * @param int $mode a type of query to make: * DB_AUTOQUERY_INSERT or DB_AUTOQUERY_UPDATE - * @param string $where for update queries: the WHERE clause to + * @param bool $where for update queries: the WHERE clause to * append to the SQL statement. Don't * include the "WHERE" keyword. * * @return string the sql query for autoPrepare() */ - function buildManipSQL($table, $table_fields, $mode, $where = false) + public function buildManipSQL($table, $table_fields, $mode, $where = false) { if (count($table_fields) == 0) { return $this->raiseError(DB_ERROR_NEED_MORE_DATA); @@ -970,6 +970,90 @@ class DB_common extends PEAR } } + // }}} + // {{{ buildManipSQL() + + /** + * Prepares a query for multiple execution with execute() + * + * Creates a query that can be run multiple times. Each time it is run, + * the placeholders, if any, will be replaced by the contents of + * execute()'s $data argument. + * + * Three types of placeholders can be used: + * + ? scalar value (i.e. strings, integers). The system + * will automatically quote and escape the data. + * + ! value is inserted 'as is' + * + & requires a file name. The file's contents get + * inserted into the query (i.e. saving binary + * data in a db) + * + * Example 1. + * + * $sth = $db->prepare('INSERT INTO tbl (a, b, c) VALUES (?, !, &)'); + * $data = array( + * "John's text", + * "'it''s good'", + * 'filename.txt' + * ); + * $res = $db->execute($sth, $data); + * + * + * Use backslashes to escape placeholder characters if you don't want + * them to be interpreted as placeholders: + *
+     *    "UPDATE foo SET col=? WHERE col='over \& under'"
+     * 
+ * + * With some database backends, this is emulated. + * + * {@internal ibase and oci8 have their own prepare() methods.}} + * + * @param string $query the query to be prepared + * + * @return mixed DB statement resource on success. A DB_Error object + * on failure. + * + * @see DB_common::execute() + */ + public function prepare($query) + { + $tokens = preg_split( + '/((?prepare_tokens[] = &$newtokens; + end($this->prepare_tokens); + + $k = key($this->prepare_tokens); + $this->prepare_types[$k] = $types; + $this->prepared_queries[$k] = implode(' ', $newtokens); + + return $k; + } + // }}} // {{{ execute() @@ -987,8 +1071,8 @@ class DB_common extends PEAR * $res = $db->execute($sth, $data); * * - * @param resource $stmt a DB statement resource returned from prepare() - * @param mixed $data array, string or numeric data to be used in + * @param resource $stmt a DB statement resource returned from prepare() + * @param mixed $data array, string or numeric data to be used in * execution of the statement. Quantity of items * passed must match quantity of placeholders in * query: meaning 1 placeholder for non-array @@ -1002,7 +1086,7 @@ class DB_common extends PEAR * * @see DB_common::prepare() */ - function &execute($stmt, $data = array()) + public function &execute($stmt, $data = array()) { $realquery = $this->executeEmulateQuery($stmt, $data); if (DB::isError($realquery)) { @@ -1024,8 +1108,8 @@ class DB_common extends PEAR /** * Emulates executing prepared statements if the DBMS not support them * - * @param resource $stmt a DB statement resource returned from execute() - * @param mixed $data array, string or numeric data to be used in + * @param resource $stmt a DB statement resource returned from execute() + * @param mixed $data array, string or numeric data to be used in * execution of the statement. Quantity of items * passed must match quantity of placeholders in * query: meaning 1 placeholder for non-array @@ -1037,7 +1121,7 @@ class DB_common extends PEAR * @access protected * @see DB_common::execute() */ - function executeEmulateQuery($stmt, $data = array()) + public function executeEmulateQuery($stmt, $data = array()) { $stmt = (int)$stmt; $data = (array)$data; @@ -1074,6 +1158,33 @@ class DB_common extends PEAR // }}} // {{{ executeMultiple() + /** + * Frees the internal resources associated with a prepared query + * + * @param resource $stmt the prepared statement's PHP resource + * @param bool $free_resource should the PHP resource be freed too? + * Use false if you need to get data + * from the result set later. + * + * @return bool TRUE on success, FALSE if $result is invalid + * + * @see DB_common::prepare() + */ + public function freePrepared($stmt, $free_resource = true) + { + $stmt = (int)$stmt; + if (isset($this->prepare_tokens[$stmt])) { + unset($this->prepare_tokens[$stmt]); + unset($this->prepare_types[$stmt]); + unset($this->prepared_queries[$stmt]); + return true; + } + return false; + } + + // }}} + // {{{ freePrepared() + /** * Performs several execute() calls on the same statement handle * @@ -1083,15 +1194,15 @@ class DB_common extends PEAR * If an error occurs during execute(), executeMultiple() does not * execute the unfinished rows, but rather returns that error. * - * @param resource $stmt query handle from prepare() - * @param array $data numeric array containing the + * @param resource $stmt query handle from prepare() + * @param array $data numeric array containing the * data to insert into the query * * @return int DB_OK on success. A DB_Error object on failure. * * @see DB_common::prepare(), DB_common::execute() */ - function executeMultiple($stmt, $data) + public function executeMultiple($stmt, $data) { foreach ($data as $value) { $res = $this->execute($stmt, $value); @@ -1102,33 +1213,6 @@ class DB_common extends PEAR return DB_OK; } - // }}} - // {{{ freePrepared() - - /** - * Frees the internal resources associated with a prepared query - * - * @param resource $stmt the prepared statement's PHP resource - * @param bool $free_resource should the PHP resource be freed too? - * Use false if you need to get data - * from the result set later. - * - * @return bool TRUE on success, FALSE if $result is invalid - * - * @see DB_common::prepare() - */ - function freePrepared($stmt, $free_resource = true) - { - $stmt = (int)$stmt; - if (isset($this->prepare_tokens[$stmt])) { - unset($this->prepare_tokens[$stmt]); - unset($this->prepare_types[$stmt]); - unset($this->prepared_queries[$stmt]); - return true; - } - return false; - } - // }}} // {{{ modifyQuery() @@ -1137,7 +1221,7 @@ class DB_common extends PEAR * * It is defined here to ensure all drivers have this method available. * - * @param string $query the query string to modify + * @param string $query the query string to modify * * @return string the modified query string * @@ -1145,13 +1229,46 @@ class DB_common extends PEAR * @see DB_mysql::modifyQuery(), DB_oci8::modifyQuery(), * DB_sqlite::modifyQuery() */ - function modifyQuery($query) + public function modifyQuery($query) { return $query; } // }}} - // {{{ modifyLimitQuery() + // {{{ modifyLimitQuery() + + /** + * Generates and executes a LIMIT query + * + * @param string $query the query + * @param intr $from the row to start to fetching (0 = the first row) + * @param int $count the numbers of rows to fetch + * @param mixed $params array, string or numeric data to be used in + * execution of the statement. Quantity of items + * passed must match quantity of placeholders in + * query: meaning 1 placeholder for non-array + * parameters or 1 placeholder per array element. + * + * @return mixed a new DB_result object for successful SELECT queries + * or DB_OK for successul data manipulation queries. + * A DB_Error object on failure. + */ + public function &limitQuery($query, $from, $count, $params = array()) + { + $query = $this->modifyLimitQuery($query, $from, $count, $params); + if (DB::isError($query)) { + return $query; + } + $result = $this->query($query, $params); + if (is_object($result) && is_a($result, 'DB_result')) { + $result->setOption('limit_from', $from); + $result->setOption('limit_count', $count); + } + return $result; + } + + // }}} + // {{{ query() /** * Adds LIMIT clauses to a query string according to current DBMS standards @@ -1159,10 +1276,10 @@ class DB_common extends PEAR * It is defined here to assure that all implementations * have this method defined. * - * @param string $query the query to modify - * @param int $from the row to start to fetching (0 = the first row) - * @param int $count the numbers of rows to fetch - * @param mixed $params array, string or numeric data to be used in + * @param string $query the query to modify + * @param int $from the row to start to fetching (0 = the first row) + * @param int $count the numbers of rows to fetch + * @param mixed $params array, string or numeric data to be used in * execution of the statement. Quantity of items * passed must match quantity of placeholders in * query: meaning 1 placeholder for non-array @@ -1172,13 +1289,13 @@ class DB_common extends PEAR * * @access protected */ - function modifyLimitQuery($query, $from, $count, $params = array()) + public function modifyLimitQuery($query, $from, $count, $params = array()) { return $query; } // }}} - // {{{ query() + // {{{ limitQuery() /** * Sends a query to the database server @@ -1187,8 +1304,8 @@ class DB_common extends PEAR * to the server OR if $params are passed the query can have * placeholders and it will be passed through prepare() and execute(). * - * @param string $query the SQL query or the statement to prepare - * @param mixed $params array, string or numeric data to be used in + * @param string $query the SQL query or the statement to prepare + * @param mixed $params array, string or numeric data to be used in * execution of the statement. Quantity of items * passed must match quantity of placeholders in * query: meaning 1 placeholder for non-array @@ -1200,7 +1317,7 @@ class DB_common extends PEAR * * @see DB_result, DB_common::prepare(), DB_common::execute() */ - function &query($query, $params = array()) + public function &query($query, $params = array()) { if (sizeof($params) > 0) { $sth = $this->prepare($query); @@ -1222,39 +1339,6 @@ class DB_common extends PEAR } } - // }}} - // {{{ limitQuery() - - /** - * Generates and executes a LIMIT query - * - * @param string $query the query - * @param intr $from the row to start to fetching (0 = the first row) - * @param int $count the numbers of rows to fetch - * @param mixed $params array, string or numeric data to be used in - * execution of the statement. Quantity of items - * passed must match quantity of placeholders in - * query: meaning 1 placeholder for non-array - * parameters or 1 placeholder per array element. - * - * @return mixed a new DB_result object for successful SELECT queries - * or DB_OK for successul data manipulation queries. - * A DB_Error object on failure. - */ - function &limitQuery($query, $from, $count, $params = array()) - { - $query = $this->modifyLimitQuery($query, $from, $count, $params); - if (DB::isError($query)){ - return $query; - } - $result = $this->query($query, $params); - if (is_object($result) && is_a($result, 'DB_result')) { - $result->setOption('limit_from', $from); - $result->setOption('limit_count', $count); - } - return $result; - } - // }}} // {{{ getOne() @@ -1263,8 +1347,8 @@ class DB_common extends PEAR * * Takes care of doing the query and freeing the results when finished. * - * @param string $query the SQL query - * @param mixed $params array, string or numeric data to be used in + * @param string $query the SQL query + * @param mixed $params array, string or numeric data to be used in * execution of the statement. Quantity of items * passed must match quantity of placeholders in * query: meaning 1 placeholder for non-array @@ -1273,7 +1357,7 @@ class DB_common extends PEAR * @return mixed the returned value of the query. * A DB_Error object on failure. */ - function &getOne($query, $params = array()) + public function &getOne($query, $params = array()) { $params = (array)$params; // modifyLimitQuery() would be nice here, but it causes BC issues @@ -1310,19 +1394,22 @@ class DB_common extends PEAR * * Takes care of doing the query and freeing the results when finished. * - * @param string $query the SQL query - * @param mixed $params array, string or numeric data to be used in + * @param string $query the SQL query + * @param mixed $params array, string or numeric data to be used in * execution of the statement. Quantity of items * passed must match quantity of placeholders in * query: meaning 1 placeholder for non-array * parameters or 1 placeholder per array element. - * @param int $fetchmode the fetch mode to use + * @param int $fetchmode the fetch mode to use * * @return array the first row of results as an array. * A DB_Error object on failure. */ - function &getRow($query, $params = array(), - $fetchmode = DB_FETCHMODE_DEFAULT) + public function &getRow( + $query, + $params = array(), + $fetchmode = DB_FETCHMODE_DEFAULT + ) { // compat check, the params and fetchmode parameters used to // have the opposite order @@ -1370,70 +1457,6 @@ class DB_common extends PEAR // }}} // {{{ getCol() - /** - * Fetches a single column from a query result and returns it as an - * indexed array - * - * @param string $query the SQL query - * @param mixed $col which column to return (integer [column number, - * starting at 0] or string [column name]) - * @param mixed $params array, string or numeric data to be used in - * execution of the statement. Quantity of items - * passed must match quantity of placeholders in - * query: meaning 1 placeholder for non-array - * parameters or 1 placeholder per array element. - * - * @return array the results as an array. A DB_Error object on failure. - * - * @see DB_common::query() - */ - function &getCol($query, $col = 0, $params = array()) - { - $params = (array)$params; - if (sizeof($params) > 0) { - $sth = $this->prepare($query); - - if (DB::isError($sth)) { - return $sth; - } - - $res = $this->execute($sth, $params); - $this->freePrepared($sth); - } else { - $res = $this->query($query); - } - - if (DB::isError($res)) { - return $res; - } - - $fetchmode = is_int($col) ? DB_FETCHMODE_ORDERED : DB_FETCHMODE_ASSOC; - - if (!is_array($row = $res->fetchRow($fetchmode))) { - $ret = array(); - } else { - if (!array_key_exists($col, $row)) { - $ret = $this->raiseError(DB_ERROR_NOSUCHFIELD); - } else { - $ret = array($row[$col]); - while (is_array($row = $res->fetchRow($fetchmode))) { - $ret[] = $row[$col]; - } - } - } - - $res->free(); - - if (DB::isError($row)) { - $ret = $row; - } - - return $ret; - } - - // }}} - // {{{ getAssoc() - /** * Fetches an entire query result and returns it as an * associative array using the first column as the key @@ -1496,30 +1519,35 @@ class DB_common extends PEAR * Keep in mind that database functions in PHP usually return string * values for results regardless of the database's internal type. * - * @param string $query the SQL query - * @param bool $force_array used only when the query returns + * @param string $query the SQL query + * @param bool $force_array used only when the query returns * exactly two columns. If true, the values * of the returned array will be one-element * arrays instead of scalars. - * @param mixed $params array, string or numeric data to be used in + * @param mixed $params array, string or numeric data to be used in * execution of the statement. Quantity of * items passed must match quantity of * placeholders in query: meaning 1 * placeholder for non-array parameters or * 1 placeholder per array element. - * @param int $fetchmode the fetch mode to use - * @param bool $group if true, the values of the returned array + * @param int $fetchmode the fetch mode to use + * @param bool $group if true, the values of the returned array * is wrapped in another array. If the same * key value (in the first column) repeats * itself, the values will be appended to * this array instead of overwriting the * existing values. * - * @return array the associative array containing the query results. + * @return array|object * A DB_Error object on failure. */ - function &getAssoc($query, $force_array = false, $params = array(), - $fetchmode = DB_FETCHMODE_DEFAULT, $group = false) + public function &getAssoc( + $query, + $force_array = false, + $params = array(), + $fetchmode = DB_FETCHMODE_DEFAULT, + $group = false + ) { $params = (array)$params; if (sizeof($params) > 0) { @@ -1609,28 +1637,31 @@ class DB_common extends PEAR } // }}} - // {{{ getAll() + // {{{ getAssoc() /** * Fetches all of the rows from a query result * - * @param string $query the SQL query - * @param mixed $params array, string or numeric data to be used in + * @param string $query the SQL query + * @param mixed $params array, string or numeric data to be used in * execution of the statement. Quantity of * items passed must match quantity of * placeholders in query: meaning 1 * placeholder for non-array parameters or * 1 placeholder per array element. - * @param int $fetchmode the fetch mode to use: + * @param int $fetchmode the fetch mode to use: * + DB_FETCHMODE_ORDERED * + DB_FETCHMODE_ASSOC * + DB_FETCHMODE_ORDERED | DB_FETCHMODE_FLIPPED * + DB_FETCHMODE_ASSOC | DB_FETCHMODE_FLIPPED * - * @return array the nested array. A DB_Error object on failure. + * @return array|object */ - function &getAll($query, $params = array(), - $fetchmode = DB_FETCHMODE_DEFAULT) + public function &getAll( + $query, + $params = array(), + $fetchmode = DB_FETCHMODE_DEFAULT + ) { // compat check, the params and fetchmode parameters used to // have the opposite order @@ -1687,79 +1718,79 @@ class DB_common extends PEAR } // }}} - // {{{ autoCommit() + // {{{ getAll() /** * Enables or disables automatic commits * - * @param bool $onoff true turns it on, false turns it off + * @param bool $onoff true turns it on, false turns it off * - * @return int DB_OK on success. A DB_Error object if the driver + * @return int|object * doesn't support auto-committing transactions. */ - function autoCommit($onoff = false) + public function autoCommit($onoff = false) { return $this->raiseError(DB_ERROR_NOT_CAPABLE); } // }}} - // {{{ commit() + // {{{ autoCommit() /** * Commits the current transaction * - * @return int DB_OK on success. A DB_Error object on failure. + * @return int|object */ - function commit() + public function commit() { return $this->raiseError(DB_ERROR_NOT_CAPABLE); } // }}} - // {{{ rollback() + // {{{ commit() /** * Reverts the current transaction * - * @return int DB_OK on success. A DB_Error object on failure. + * @return int|object */ - function rollback() + public function rollback() { return $this->raiseError(DB_ERROR_NOT_CAPABLE); } // }}} - // {{{ numRows() + // {{{ rollback() /** * Determines the number of rows in a query result * - * @param resource $result the query result idenifier produced by PHP + * @param resource $result the query result idenifier produced by PHP * - * @return int the number of rows. A DB_Error object on failure. + * @return int|object */ - function numRows($result) + public function numRows($result) { return $this->raiseError(DB_ERROR_NOT_CAPABLE); } // }}} - // {{{ affectedRows() + // {{{ numRows() /** * Determines the number of rows affected by a data maniuplation query * * 0 is returned for queries that don't manipulate data. * - * @return int the number of rows. A DB_Error object on failure. + * @return int|object */ - function affectedRows() + public function affectedRows() { return $this->raiseError(DB_ERROR_NOT_CAPABLE); } // }}} - // {{{ getSequenceName() + // {{{ affectedRows() /** * Generates the name used inside the database for a sequence @@ -1767,7 +1798,7 @@ class DB_common extends PEAR * The createSequence() docblock contains notes about storing sequence * names. * - * @param string $sqn the sequence's public name + * @param string $sqn the sequence's public name * * @return string the sequence's name in the backend * @@ -1775,10 +1806,30 @@ class DB_common extends PEAR * @see DB_common::createSequence(), DB_common::dropSequence(), * DB_common::nextID(), DB_common::setOption() */ - function getSequenceName($sqn) + public function getSequenceName($sqn) + { + return sprintf( + $this->getOption('seqname_format'), + preg_replace('/[^a-z0-9_.]/i', '_', $sqn) + ); + } + + // }}} + // {{{ getSequenceName() + + /** + * Returns the value of an option + * + * @param string $option the option name you're curious about + * + * @return mixed the option's value + */ + public function getOption($option) { - return sprintf($this->getOption('seqname_format'), - preg_replace('/[^a-z0-9_.]/i', '_', $sqn)); + if (isset($this->options[$option])) { + return $this->options[$option]; + } + return $this->raiseError("unknown option $option"); } // }}} @@ -1787,17 +1838,17 @@ class DB_common extends PEAR /** * Returns the next free id in a sequence * - * @param string $seq_name name of the sequence - * @param boolean $ondemand when true, the seqence is automatically + * @param string $seq_name name of the sequence + * @param boolean $ondemand when true, the seqence is automatically * created if it does not exist * - * @return int the next id number in the sequence. + * @return int|object * A DB_Error object on failure. * * @see DB_common::createSequence(), DB_common::dropSequence(), * DB_common::getSequenceName() */ - function nextId($seq_name, $ondemand = true) + public function nextId($seq_name, $ondemand = true) { return $this->raiseError(DB_ERROR_NOT_CAPABLE); } @@ -1815,14 +1866,14 @@ class DB_common extends PEAR * * seqname_format is set via setOption(). * - * @param string $seq_name name of the new sequence + * @param string $seq_name name of the new sequence * - * @return int DB_OK on success. A DB_Error object on failure. + * @return int|object * * @see DB_common::dropSequence(), DB_common::getSequenceName(), * DB_common::nextID() */ - function createSequence($seq_name) + public function createSequence($seq_name) { return $this->raiseError(DB_ERROR_NOT_CAPABLE); } @@ -1833,14 +1884,14 @@ class DB_common extends PEAR /** * Deletes a sequence * - * @param string $seq_name name of the sequence to be deleted + * @param string $seq_name name of the sequence to be deleted * - * @return int DB_OK on success. A DB_Error object on failure. + * @return int|object * * @see DB_common::createSequence(), DB_common::getSequenceName(), * DB_common::nextID() */ - function dropSequence($seq_name) + public function dropSequence($seq_name) { return $this->raiseError(DB_ERROR_NOT_CAPABLE); } @@ -1848,94 +1899,31 @@ class DB_common extends PEAR // }}} // {{{ raiseError() - /** - * Communicates an error and invoke error callbacks, etc - * - * Basically a wrapper for PEAR::raiseError without the message string. - * - * @param mixed integer error code, or a PEAR error object (all - * other parameters are ignored if this parameter is - * an object - * @param int error mode, see PEAR_Error docs - * @param mixed if error mode is PEAR_ERROR_TRIGGER, this is the - * error level (E_USER_NOTICE etc). If error mode is - * PEAR_ERROR_CALLBACK, this is the callback function, - * either as a function name, or as an array of an - * object and method name. For other error modes this - * parameter is ignored. - * @param string extra debug information. Defaults to the last - * query and native error code. - * @param mixed native error code, integer or string depending the - * backend - * @param mixed dummy parameter for E_STRICT compatibility with - * PEAR::raiseError - * @param mixed dummy parameter for E_STRICT compatibility with - * PEAR::raiseError - * - * @return object the PEAR_Error object - * - * @see PEAR_Error - */ - function &raiseError($code = DB_ERROR, $mode = null, $options = null, - $userinfo = null, $nativecode = null, $dummy1 = null, - $dummy2 = null) - { - // The error is yet a DB error object - if (is_object($code)) { - // because we the static PEAR::raiseError, our global - // handler should be used if it is set - if ($mode === null && !empty($this->_default_error_mode)) { - $mode = $this->_default_error_mode; - $options = $this->_default_error_options; - } - $tmp = PEAR::raiseError($code, null, $mode, $options, - null, null, true); - return $tmp; - } - - if ($userinfo === null) { - $userinfo = $this->last_query; - } - - if ($nativecode) { - $userinfo .= ' [nativecode=' . trim($nativecode) . ']'; - } else { - $userinfo .= ' [DB Error: ' . DB::errorMessage($code) . ']'; - } - - $tmp = PEAR::raiseError(null, $code, $mode, $options, $userinfo, - 'DB_Error', true); - return $tmp; - } - - // }}} - // {{{ errorNative() - /** * Gets the DBMS' native error code produced by the last query * * @return mixed the DBMS' error code. A DB_Error object on failure. */ - function errorNative() + public function errorNative() { return $this->raiseError(DB_ERROR_NOT_CAPABLE); } // }}} - // {{{ errorCode() + // {{{ errorNative() /** * Maps native error codes to DB's portable ones * * Uses the $errorcode_map property defined in each driver. * - * @param string|int $nativecode the error code returned by the DBMS + * @param string|int $nativecode the error code returned by the DBMS * * @return int the portable DB error code. Return DB_ERROR if the * current driver doesn't have a mapping for the * $nativecode submitted. */ - function errorCode($nativecode) + public function errorCode($nativecode) { if (isset($this->errorcode_map[$nativecode])) { return $this->errorcode_map[$nativecode]; @@ -1945,25 +1933,25 @@ class DB_common extends PEAR } // }}} - // {{{ errorMessage() + // {{{ errorCode() /** * Maps a DB error code to a textual message * - * @param integer $dbcode the DB error code + * @param integer $dbcode the DB error code * * @return string the error message corresponding to the error code * submitted. FALSE if the error code is unknown. * * @see DB::errorMessage() */ - function errorMessage($dbcode) + public function errorMessage($dbcode) { return DB::errorMessage($this->errorcode_map[$dbcode]); } // }}} - // {{{ tableInfo() + // {{{ errorMessage() /** * Returns information about a table or a result set @@ -2068,24 +2056,24 @@ class DB_common extends PEAR * If the 'portability' option has DB_PORTABILITY_LOWERCASE * turned on, the names of tables and fields will be lowercased. * - * @param object|string $result DB_result object from a query or a + * @param object|string $result DB_result object from a query or a * string containing the name of a table. * While this also accepts a query result * resource identifier, this behavior is * deprecated. - * @param int $mode either unused or one of the tableInfo modes: + * @param int $mode either unused or one of the tableInfo modes: * DB_TABLEINFO_ORDERTABLE, * DB_TABLEINFO_ORDER or * DB_TABLEINFO_FULL (which does both). * These are bitwise, so the first two can be * combined using |. * - * @return array an associative array with the information requested. + * @return array|object * A DB_Error object on failure. * * @see DB_common::setOption() */ - function tableInfo($result, $mode = null) + public function tableInfo($result, $mode = null) { /* * If the DB_ class has a tableInfo() method, that one @@ -2096,7 +2084,7 @@ class DB_common extends PEAR } // }}} - // {{{ getTables() + // {{{ tableInfo() /** * Lists the tables in the current database @@ -2105,26 +2093,26 @@ class DB_common extends PEAR * * @deprecated Method deprecated some time before Release 1.2 */ - function getTables() + public function getTables() { return $this->getListOf('tables'); } // }}} - // {{{ getListOf() + // {{{ getTables() /** * Lists internal database information * - * @param string $type type of information being sought. + * @param string $type type of information being sought. * Common items being sought are: * tables, databases, users, views, functions * Each DBMS's has its own capabilities. * - * @return array an array listing the items sought. + * @return array|object * A DB DB_Error object on failure. */ - function getListOf($type) + public function getListOf($type) { $sql = $this->getSpecialQuery($type); if ($sql === null) { @@ -2142,12 +2130,12 @@ class DB_common extends PEAR } // }}} - // {{{ getSpecialQuery() + // {{{ getListOf() /** * Obtains the query string needed for listing a given type of objects * - * @param string $type the kind of objects you want to retrieve + * @param string $type the kind of objects you want to retrieve * * @return string the SQL query string or null if the driver doesn't * support the object type requested @@ -2155,11 +2143,75 @@ class DB_common extends PEAR * @access protected * @see DB_common::getListOf() */ - function getSpecialQuery($type) + public function getSpecialQuery($type) { return $this->raiseError(DB_ERROR_UNSUPPORTED); } + // }}} + // {{{ getSpecialQuery() + + /** + * Fetches a single column from a query result and returns it as an + * indexed array + * + * @param string $query the SQL query + * @param mixed $col which column to return (integer [column number, + * starting at 0] or string [column name]) + * @param mixed $params array, string or numeric data to be used in + * execution of the statement. Quantity of items + * passed must match quantity of placeholders in + * query: meaning 1 placeholder for non-array + * parameters or 1 placeholder per array element. + * + * @return array the results as an array. A DB_Error object on failure. + * + * @see DB_common::query() + */ + public function &getCol($query, $col = 0, $params = array()) + { + $params = (array)$params; + if (sizeof($params) > 0) { + $sth = $this->prepare($query); + + if (DB::isError($sth)) { + return $sth; + } + + $res = $this->execute($sth, $params); + $this->freePrepared($sth); + } else { + $res = $this->query($query); + } + + if (DB::isError($res)) { + return $res; + } + + $fetchmode = is_int($col) ? DB_FETCHMODE_ORDERED : DB_FETCHMODE_ASSOC; + + if (!is_array($row = $res->fetchRow($fetchmode))) { + $ret = array(); + } else { + if (!array_key_exists($col, $row)) { + $ret = $this->raiseError(DB_ERROR_NOSUCHFIELD); + } else { + $ret = array($row[$col]); + while (is_array($row = $res->fetchRow($fetchmode))) { + $ret[] = $row[$col]; + } + } + } + + $res->free(); + + if (DB::isError($row)) { + $ret = $row; + } + + return $ret; + } + // }}} // {{{ nextQueryIsManip() @@ -2174,7 +2226,7 @@ class DB_common extends PEAR * * @access public */ - function nextQueryIsManip($manip) + public function nextQueryIsManip($manip) { $this->_next_query_manip = $manip; } @@ -2194,7 +2246,7 @@ class DB_common extends PEAR * * @access protected */ - function _checkManip($query) + public function _checkManip($query) { if ($this->_next_query_manip || DB::isManip($query)) { $this->_last_query_manip = true; @@ -2203,7 +2255,6 @@ class DB_common extends PEAR } $this->_next_query_manip = false; return $this->_last_query_manip; - $manip = $this->_next_query_manip; } // }}} @@ -2212,13 +2263,13 @@ class DB_common extends PEAR /** * Right-trims all strings in an array * - * @param array $array the array to be trimmed (passed by reference) + * @param array $array the array to be trimmed (passed by reference) * * @return void * * @access protected */ - function _rtrimArrayValues(&$array) + public function _rtrimArrayValues(&$array) { foreach ($array as $key => $value) { if (is_string($value)) { @@ -2233,13 +2284,13 @@ class DB_common extends PEAR /** * Converts all null values in an array to empty strings * - * @param array $array the array to be de-nullified (passed by reference) + * @param array $array the array to be de-nullified (passed by reference) * * @return void * * @access protected */ - function _convertNullArrayValuesToEmpty(&$array) + public function _convertNullArrayValuesToEmpty(&$array) { foreach ($array as $key => $value) { if (is_null($value)) { @@ -2257,5 +2308,3 @@ class DB_common extends PEAR * c-basic-offset: 4 * End: */ - -?>