extlib/DB/DataObject - Fix PHP 7.3 Warning switch continue -> break

Also reformatted under PSR norms
This commit is contained in:
Diogo Cordeiro 2019-04-16 00:20:20 +01:00
parent 8305641b20
commit 38f2ecefac
21 changed files with 2313 additions and 2170 deletions

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,7 @@
*/ */
/** /**
* *
* Common usages: * Common usages:
* // blobs * // blobs
* $data = DB_DataObject_Cast::blob($somefile); * $data = DB_DataObject_Cast::blob($somefile);
@ -33,7 +33,7 @@
* $d1 = new DB_DataObject_Cast::date('12/12/2000'); * $d1 = new DB_DataObject_Cast::date('12/12/2000');
* $d2 = new DB_DataObject_Cast::date(2000,12,30); * $d2 = new DB_DataObject_Cast::date(2000,12,30);
* $d3 = new DB_DataObject_Cast::date($d1->year, $d1->month+30, $d1->day+30); * $d3 = new DB_DataObject_Cast::date($d1->year, $d1->month+30, $d1->day+30);
* *
* // time, datetime.. ????????? * // time, datetime.. ?????????
* *
* // raw sql???? * // raw sql????
@ -42,8 +42,8 @@
* *
* // int's/string etc. are proably pretty pointless..!!!! * // int's/string etc. are proably pretty pointless..!!!!
* *
* *
* inside DB_DataObject, * inside DB_DataObject,
* if (is_a($v,'db_dataobject_class')) { * if (is_a($v,'db_dataobject_class')) {
* $value .= $v->toString(DB_DATAOBJECT_INT,'mysql'); * $value .= $v->toString(DB_DATAOBJECT_INT,'mysql');
* } * }
@ -52,16 +52,17 @@
* *
* *
*/ */
class DB_DataObject_Cast { class DB_DataObject_Cast
{
/** /**
* Type of data Stored in the object.. * Type of data Stored in the object..
* *
* @var string (date|blob|.....?) * @var string (date|blob|.....?)
* @access public * @access public
*/ */
var $type; public $type;
/** /**
* Data For date representation * Data For date representation
@ -69,9 +70,9 @@ class DB_DataObject_Cast {
* @var int day/month/year * @var int day/month/year
* @access public * @access public
*/ */
var $day; public $day;
var $month; public $month;
var $year; public $year;
/** /**
@ -81,7 +82,7 @@ class DB_DataObject_Cast {
* @access public * @access public
*/ */
var $value; public $value;
@ -89,15 +90,16 @@ class DB_DataObject_Cast {
* Blob consructor * Blob consructor
* *
* create a Cast object from some raw data.. (binary) * create a Cast object from some raw data.. (binary)
* *
* *
* @param string (with binary data!) * @param string (with binary data!)
* *
* @return object DB_DataObject_Cast * @return object DB_DataObject_Cast
* @access public * @access public
*/ */
function blob($value) { public function blob($value)
{
$r = new DB_DataObject_Cast; $r = new DB_DataObject_Cast;
$r->type = 'blob'; $r->type = 'blob';
$r->value = $value; $r->value = $value;
@ -109,15 +111,16 @@ class DB_DataObject_Cast {
* String consructor (actually use if for ints and everything else!!! * String consructor (actually use if for ints and everything else!!!
* *
* create a Cast object from some string (not binary) * create a Cast object from some string (not binary)
* *
* *
* @param string (with binary data!) * @param string (with binary data!)
* *
* @return object DB_DataObject_Cast * @return object DB_DataObject_Cast
* @access public * @access public
*/ */
function string($value) { public function string($value)
{
$r = new DB_DataObject_Cast; $r = new DB_DataObject_Cast;
$r->type = 'string'; $r->type = 'string';
$r->value = $value; $r->value = $value;
@ -128,14 +131,14 @@ class DB_DataObject_Cast {
* SQL constructor (for raw SQL insert) * SQL constructor (for raw SQL insert)
* *
* create a Cast object from some sql * create a Cast object from some sql
* *
* @param string (with binary data!) * @param string (with binary data!)
* *
* @return object DB_DataObject_Cast * @return object DB_DataObject_Cast
* @access public * @access public
*/ */
function sql($value) public function sql($value)
{ {
$r = new DB_DataObject_Cast; $r = new DB_DataObject_Cast;
$r->type = 'sql'; $r->type = 'sql';
@ -149,7 +152,7 @@ class DB_DataObject_Cast {
* *
* create a Cast object from some string (not binary) * create a Cast object from some string (not binary)
* NO VALIDATION DONE, although some crappy re-calcing done! * NO VALIDATION DONE, although some crappy re-calcing done!
* *
* @param vargs... accepts * @param vargs... accepts
* dd/mm * dd/mm
* dd/mm/yyyy * dd/mm/yyyy
@ -161,22 +164,22 @@ class DB_DataObject_Cast {
* *
* *
* @return object DB_DataObject_Cast * @return object DB_DataObject_Cast
* @access public * @access public
*/ */
function date() public function date()
{ {
$args = func_get_args(); $args = func_get_args();
switch(count($args)) { switch (count($args)) {
case 0: // no args = today! case 0: // no args = today!
$bits = explode('-',date('Y-m-d')); $bits = explode('-', date('Y-m-d'));
break; break;
case 1: // one arg = a string case 1: // one arg = a string
if (strpos($args[0],'/') !== false) { if (strpos($args[0], '/') !== false) {
$bits = array_reverse(explode('/',$args[0])); $bits = array_reverse(explode('/', $args[0]));
} else { } else {
$bits = explode('-',$args[0]); $bits = explode('-', $args[0]);
} }
break; break;
default: // 2 or more.. default: // 2 or more..
@ -196,15 +199,15 @@ class DB_DataObject_Cast {
// fix me if anyone has more time... // fix me if anyone has more time...
if (($bits[0] < 1975) || ($bits[0] > 2030)) { if (($bits[0] < 1975) || ($bits[0] > 2030)) {
$oldyear = $bits[0]; $oldyear = $bits[0];
$bits = explode('-',date('Y-m-d',mktime(1,1,1,$bits[1],$bits[2],2000))); $bits = explode('-', date('Y-m-d', mktime(1, 1, 1, $bits[1], $bits[2], 2000)));
$bits[0] = ($bits[0] - 2000) + $oldyear; $bits[0] = ($bits[0] - 2000) + $oldyear;
} else { } else {
// now mktime // now mktime
$bits = explode('-',date('Y-m-d',mktime(1,1,1,$bits[1],$bits[2],$bits[0]))); $bits = explode('-', date('Y-m-d', mktime(1, 1, 1, $bits[1], $bits[2], $bits[0])));
} }
$r = new DB_DataObject_Cast; $r = new DB_DataObject_Cast;
$r->type = 'date'; $r->type = 'date';
list($r->year,$r->month,$r->day) = $bits; list($r->year, $r->month, $r->day) = $bits;
return $r; return $r;
} }
@ -216,9 +219,9 @@ class DB_DataObject_Cast {
* @var int hour/minute/second * @var int hour/minute/second
* @access public * @access public
*/ */
var $hour; public $hour;
var $minute; public $minute;
var $second; public $second;
/** /**
@ -227,25 +230,26 @@ class DB_DataObject_Cast {
* create a Cast object from a Date/Time * create a Cast object from a Date/Time
* Maybe should accept a Date object.! * Maybe should accept a Date object.!
* NO VALIDATION DONE, although some crappy re-calcing done! * NO VALIDATION DONE, although some crappy re-calcing done!
* *
* @param vargs... accepts * @param vargs... accepts
* noargs (now) * noargs (now)
* yyyy-mm-dd HH:MM:SS (Iso) * yyyy-mm-dd HH:MM:SS (Iso)
* array(yyyy,mm,dd,HH,MM,SS) * array(yyyy,mm,dd,HH,MM,SS)
* *
* *
* @return object DB_DataObject_Cast * @return object DB_DataObject_Cast
* @access public * @access public
* @author therion 5 at hotmail * @author therion 5 at hotmail
*/ */
function dateTime() public function dateTime()
{ {
$args = func_get_args(); $args = func_get_args();
switch(count($args)) { switch (count($args)) {
case 0: // no args = now! case 0: // no args = now!
$datetime = date('Y-m-d G:i:s', mktime()); $datetime = date('Y-m-d G:i:s', mktime());
// no break
case 1: case 1:
// continue on from 0 args. // continue on from 0 args.
if (!isset($datetime)) { if (!isset($datetime)) {
@ -274,13 +278,12 @@ class DB_DataObject_Cast {
// change the type! // change the type!
$r->type = 'datetime'; $r->type = 'datetime';
// should we mathematically sort this out.. // should we mathematically sort this out..
// (or just assume that no-one's dumb enough to enter 26:90:90 as a time! // (or just assume that no-one's dumb enough to enter 26:90:90 as a time!
$r->hour = $bits[3]; $r->hour = $bits[3];
$r->minute = $bits[4]; $r->minute = $bits[4];
$r->second = $bits[5]; $r->second = $bits[5];
return $r; return $r;
} }
@ -295,20 +298,21 @@ class DB_DataObject_Cast {
* @param vargs... accepts * @param vargs... accepts
* noargs (now) * noargs (now)
* HH:MM:SS (Iso) * HH:MM:SS (Iso)
* array(HH,MM,SS) * array(HH,MM,SS)
* *
* *
* @return object DB_DataObject_Cast * @return object DB_DataObject_Cast
* @access public * @access public
* @author therion 5 at hotmail * @author therion 5 at hotmail
*/ */
function time() public function time()
{ {
$args = func_get_args(); $args = func_get_args();
switch (count($args)) { switch (count($args)) {
case 0: // no args = now! case 0: // no args = now!
$time = date('G:i:s', mktime()); $time = date('G:i:s', mktime());
// no break
case 1: case 1:
// continue on from 0 args. // continue on from 0 args.
if (!isset($time)) { if (!isset($time)) {
@ -333,7 +337,6 @@ class DB_DataObject_Cast {
$r->minute = $bits[1]; $r->minute = $bits[1];
$r->second = $bits[2]; $r->second = $bits[2];
return $r; return $r;
} }
@ -341,35 +344,35 @@ class DB_DataObject_Cast {
/** /**
* get the string to use in the SQL statement for this... * get the string to use in the SQL statement for this...
* *
* *
* @param int $to Type (DB_DATAOBJECT_* * @param int $to Type (DB_DATAOBJECT_*
* @param object $db DB Connection Object * @param object $db DB Connection Object
*
* *
* @return string *
* @return string
* @access public * @access public
*/ */
function toString($to=false,$db) public function toString($to=false, $db)
{ {
// if $this->type is not set, we are in serious trouble!!!! // if $this->type is not set, we are in serious trouble!!!!
// values for to: // values for to:
$method = 'toStringFrom'.$this->type; $method = 'toStringFrom'.$this->type;
return $this->$method($to,$db); return $this->$method($to, $db);
} }
/** /**
* get the string to use in the SQL statement from a blob of binary data * get the string to use in the SQL statement from a blob of binary data
* ** Suppots only blob->postgres::bytea * ** Suppots only blob->postgres::bytea
* *
* @param int $to Type (DB_DATAOBJECT_* * @param int $to Type (DB_DATAOBJECT_*
* @param object $db DB Connection Object * @param object $db DB Connection Object
*
* *
* @return string *
* @return string
* @access public * @access public
*/ */
function toStringFromBlob($to,$db) public function toStringFromBlob($to, $db)
{ {
// first weed out invalid casts.. // first weed out invalid casts..
// in blobs can only be cast to blobs.! // in blobs can only be cast to blobs.!
@ -385,7 +388,7 @@ class DB_DataObject_Cast {
return "'".pg_escape_bytea($this->value)."'::bytea"; return "'".pg_escape_bytea($this->value)."'::bytea";
case 'mysql': case 'mysql':
return "'".mysql_real_escape_string($this->value,$db->connection)."'"; return "'".mysql_real_escape_string($this->value, $db->connection)."'";
case 'mysqli': case 'mysqli':
// this is funny - the parameter order is reversed ;) // this is funny - the parameter order is reversed ;)
@ -397,7 +400,7 @@ class DB_DataObject_Cast {
case 'mssql': case 'mssql':
if(is_numeric($this->value)) { if (is_numeric($this->value)) {
return $this->value; return $this->value;
} }
$unpacked = unpack('H*hex', $this->value); $unpacked = unpack('H*hex', $this->value);
@ -408,40 +411,39 @@ class DB_DataObject_Cast {
default: default:
return PEAR::raiseError("DB_DataObject_Cast cant handle blobs for Database:{$db->dsn['phptype']} Yet"); return PEAR::raiseError("DB_DataObject_Cast cant handle blobs for Database:{$db->dsn['phptype']} Yet");
} }
} }
/** /**
* get the string to use in the SQL statement for a blob from a string! * get the string to use in the SQL statement for a blob from a string!
* ** Suppots only string->postgres::bytea * ** Suppots only string->postgres::bytea
* *
* *
* @param int $to Type (DB_DATAOBJECT_* * @param int $to Type (DB_DATAOBJECT_*
* @param object $db DB Connection Object * @param object $db DB Connection Object
*
* *
* @return string *
* @return string
* @access public * @access public
*/ */
function toStringFromString($to,$db) public function toStringFromString($to, $db)
{ {
// first weed out invalid casts.. // first weed out invalid casts..
// in blobs can only be cast to blobs.! // in blobs can only be cast to blobs.!
// perhaps we should support TEXT fields??? // perhaps we should support TEXT fields???
// //
// $to == a string field which is the default type (0) // $to == a string field which is the default type (0)
// so we do not test it here. - we assume that number fields // so we do not test it here. - we assume that number fields
// will accept a string?? - which is stretching it a bit ... // will accept a string?? - which is stretching it a bit ...
// should probaly add that test as some point. // should probaly add that test as some point.
switch ($db->dsn['phptype']) { switch ($db->dsn['phptype']) {
case 'pgsql': case 'pgsql':
return "'".pg_escape_string($this->value)."'::bytea"; return "'".pg_escape_string($this->value)."'::bytea";
case 'mysql': case 'mysql':
return "'".mysql_real_escape_string($this->value,$db->connection)."'"; return "'".mysql_real_escape_string($this->value, $db->connection)."'";
case 'mysqli': case 'mysqli':
@ -450,37 +452,36 @@ class DB_DataObject_Cast {
case 'mssql': case 'mssql':
// copied from the old DB mssql code...?? not sure how safe this is. // copied from the old DB mssql code...?? not sure how safe this is.
return "'" . str_replace( return "'" . str_replace(
array("'", "\\\r\n", "\\\n"), array("'", "\\\r\n", "\\\n"),
array("''", "\\\\\r\n\r\n", "\\\\\n\n"), array("''", "\\\\\r\n\r\n", "\\\\\n\n"),
$this->value $this->value
) . "'"; ) . "'";
default: default:
return PEAR::raiseError("DB_DataObject_Cast cant handle blobs for Database:{$db->dsn['phptype']} Yet"); return PEAR::raiseError("DB_DataObject_Cast cant handle blobs for Database:{$db->dsn['phptype']} Yet");
} }
} }
/** /**
* get the string to use in the SQL statement for a date * get the string to use in the SQL statement for a date
* *
* *
* *
* @param int $to Type (DB_DATAOBJECT_* * @param int $to Type (DB_DATAOBJECT_*
* @param object $db DB Connection Object * @param object $db DB Connection Object
*
* *
* @return string *
* @return string
* @access public * @access public
*/ */
function toStringFromDate($to,$db) public function toStringFromDate($to, $db)
{ {
// first weed out invalid casts.. // first weed out invalid casts..
// in blobs can only be cast to blobs.! // in blobs can only be cast to blobs.!
// perhaps we should support TEXT fields??? // perhaps we should support TEXT fields???
// //
if (($to !== false) && !($to & DB_DATAOBJECT_DATE)) { if (($to !== false) && !($to & DB_DATAOBJECT_DATE)) {
return PEAR::raiseError('Invalid Cast from a DB_DataObject_Cast::string to something other than a date!'. return PEAR::raiseError('Invalid Cast from a DB_DataObject_Cast::string to something other than a date!'.
@ -491,24 +492,24 @@ class DB_DataObject_Cast {
/** /**
* get the string to use in the SQL statement for a datetime * get the string to use in the SQL statement for a datetime
* *
* *
* *
* @param int $to Type (DB_DATAOBJECT_* * @param int $to Type (DB_DATAOBJECT_*
* @param object $db DB Connection Object * @param object $db DB Connection Object
*
* *
* @return string *
* @return string
* @access public * @access public
* @author therion 5 at hotmail * @author therion 5 at hotmail
*/ */
function toStringFromDateTime($to,$db) public function toStringFromDateTime($to, $db)
{ {
// first weed out invalid casts.. // first weed out invalid casts..
// in blobs can only be cast to blobs.! // in blobs can only be cast to blobs.!
// perhaps we should support TEXT fields??? // perhaps we should support TEXT fields???
if (($to !== false) && if (($to !== false) &&
!($to & (DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME))) { !($to & (DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME))) {
return PEAR::raiseError('Invalid Cast from a ' . return PEAR::raiseError('Invalid Cast from a ' .
' DB_DataObject_Cast::dateTime to something other than a datetime!' . ' DB_DataObject_Cast::dateTime to something other than a datetime!' .
@ -519,25 +520,25 @@ class DB_DataObject_Cast {
/** /**
* get the string to use in the SQL statement for a time * get the string to use in the SQL statement for a time
* *
* *
* *
* @param int $to Type (DB_DATAOBJECT_* * @param int $to Type (DB_DATAOBJECT_*
* @param object $db DB Connection Object * @param object $db DB Connection Object
*
* *
* @return string *
* @return string
* @access public * @access public
* @author therion 5 at hotmail * @author therion 5 at hotmail
*/ */
function toStringFromTime($to,$db) public function toStringFromTime($to, $db)
{ {
// first weed out invalid casts.. // first weed out invalid casts..
// in blobs can only be cast to blobs.! // in blobs can only be cast to blobs.!
// perhaps we should support TEXT fields??? // perhaps we should support TEXT fields???
if (($to !== false) && !($to & DB_DATAOBJECT_TIME)) { if (($to !== false) && !($to & DB_DATAOBJECT_TIME)) {
return PEAR::raiseError('Invalid Cast from a' . return PEAR::raiseError('Invalid Cast from a' .
' DB_DataObject_Cast::time to something other than a time!'. ' DB_DataObject_Cast::time to something other than a time!'.
' (try using native features)'); ' (try using native features)');
} }
@ -549,17 +550,13 @@ class DB_DataObject_Cast {
* *
* @param int $to Type (DB_DATAOBJECT_* * @param int $to Type (DB_DATAOBJECT_*
* @param object $db DB Connection Object * @param object $db DB Connection Object
*
* *
* @return string *
* @return string
* @access public * @access public
*/ */
function toStringFromSql($to,$db) public function toStringFromSql($to, $db)
{ {
return $this->value; return $this->value;
} }
} }

View File

@ -38,16 +38,15 @@ class DB_DataObject_Error extends PEAR_Error
* *
* @see PEAR_Error * @see PEAR_Error
*/ */
function DB_DataObject_Error($message = '', $code = DB_ERROR, $mode = PEAR_ERROR_RETURN, public function DB_DataObject_Error(
$level = E_USER_NOTICE) $message = '',
{ $code = DB_ERROR,
$mode = PEAR_ERROR_RETURN,
$level = E_USER_NOTICE
) {
$this->PEAR_Error('DB_DataObject Error: ' . $message, $code, $mode, $level); $this->PEAR_Error('DB_DataObject Error: ' . $message, $code, $mode, $level);
} }
// todo : - support code -> message handling, and translated error messages... // todo : - support code -> message handling, and translated error messages...
} }

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,7 @@
/** /**
* *
* Example of how this could be used.. * Example of how this could be used..
* *
* The lind method are now in here. * The lind method are now in here.
* *
* Currenly only supports existing methods, and new 'link()' method * Currenly only supports existing methods, and new 'link()' method
@ -36,44 +36,44 @@
* *
* @package DB_DataObject * @package DB_DataObject
*/ */
class DB_DataObject_Links class DB_DataObject_Links
{ {
/** /**
* @property {DB_DataObject} do DataObject to apply this to. * @property {DB_DataObject} do DataObject to apply this to.
*/ */
var $do = false; public $do = false;
/** /**
* @property {Array|String} load What to load, 'all' or an array of properties. (default all) * @property {Array|String} load What to load, 'all' or an array of properties. (default all)
*/ */
var $load = 'all'; public $load = 'all';
/** /**
* @property {String|Boolean} scanf use part of column name as resulting * @property {String|Boolean} scanf use part of column name as resulting
* property name. (default false) * property name. (default false)
*/ */
var $scanf = false; public $scanf = false;
/** /**
* @property {String|Boolean} printf use column name as sprintf for resulting property name.. * @property {String|Boolean} printf use column name as sprintf for resulting property name..
* (default %s_link if apply is true, otherwise it is %s) * (default %s_link if apply is true, otherwise it is %s)
*/ */
var $printf = false; public $printf = false;
/** /**
* @property {Boolean} cached cache the result, so future queries will use cache rather * @property {Boolean} cached cache the result, so future queries will use cache rather
* than running the expensive sql query. * than running the expensive sql query.
*/ */
var $cached = false; public $cached = false;
/** /**
* @property {Boolean} apply apply the result to this object, (default true) * @property {Boolean} apply apply the result to this object, (default true)
*/ */
var $apply = true; public $apply = true;
//------------------------- RETURN ------------------------------------ //------------------------- RETURN ------------------------------------
/** /**
* @property {Array} links key value associative array of links. * @property {Array} links key value associative array of links.
*/ */
var $links; public $links;
/** /**
@ -83,23 +83,21 @@ class DB_DataObject_Links
* @param {Array} cfg Configuration (basically properties of this object) * @param {Array} cfg Configuration (basically properties of this object)
*/ */
function DB_DataObject_Links($do,$cfg= array()) public function DB_DataObject_Links($do, $cfg= array())
{ {
// check if do is set!!!? // check if do is set!!!?
$this->do = $do; $this->do = $do;
foreach($cfg as $k=>$v) { foreach ($cfg as $k=>$v) {
$this->$k = $v; $this->$k = $v;
} }
} }
/** /**
* return name from related object * return name from related object
* *
* The relies on a <dbname>.links.ini file, unless you specify the arguments. * The relies on a <dbname>.links.ini file, unless you specify the arguments.
* *
* you can also use $this->getLink('thisColumnName','otherTable','otherTableColumnName') * you can also use $this->getLink('thisColumnName','otherTable','otherTableColumnName')
* *
* *
@ -110,32 +108,26 @@ class DB_DataObject_Links
* @access public * @access public
* @return mixed object on success false on failure or '0' when not linked * @return mixed object on success false on failure or '0' when not linked
*/ */
function getLink($field, $table= false, $link='') public function getLink($field, $table= false, $link='')
{ {
static $cache = array(); static $cache = array();
// GUESS THE LINKED TABLE.. (if found - recursevly call self) // GUESS THE LINKED TABLE.. (if found - recursevly call self)
if ($table == false) { if ($table == false) {
$info = $this->linkInfo($field); $info = $this->linkInfo($field);
if ($info) { if ($info) {
return $this->getLink($field, $info[0], $link === false ? $info[1] : $link ); return $this->getLink($field, $info[0], $link === false ? $info[1] : $link);
} }
// no links defined.. - use borked BC method... // no links defined.. - use borked BC method...
// use the old _ method - this shouldnt happen if called via getLinks() // use the old _ method - this shouldnt happen if called via getLinks()
if (!($p = strpos($field, '_'))) { if (!($p = strpos($field, '_'))) {
return false; return false;
} }
$table = substr($field, 0, $p); $table = substr($field, 0, $p);
return $this->getLink($field, $table); return $this->getLink($field, $table);
} }
$tn = is_string($table) ? $table : $table->tableName(); $tn = is_string($table) ? $table : $table->tableName();
@ -151,41 +143,40 @@ class DB_DataObject_Links
if (empty($this->do->$field) || $this->do->$field < 0) { if (empty($this->do->$field) || $this->do->$field < 0) {
return 0; // no record. return 0; // no record.
} }
if ($this->cached && isset($cache[$tn.':'. $link .':'. $this->do->$field])) { if ($this->cached && isset($cache[$tn.':'. $link .':'. $this->do->$field])) {
return $cache[$tn.':'. $link .':'. $this->do->$field]; return $cache[$tn.':'. $link .':'. $this->do->$field];
} }
$obj = is_string($table) ? $this->do->factory($tn) : $table;; $obj = is_string($table) ? $this->do->factory($tn) : $table;
;
if (!is_a($obj,'DB_DataObject')) { if (!is_a($obj, 'DB_DataObject')) {
$this->do->raiseError( $this->do->raiseError(
"getLink:Could not find class for row $field, table $tn", "getLink:Could not find class for row $field, table $tn",
DB_DATAOBJECT_ERROR_INVALIDCONFIG); DB_DATAOBJECT_ERROR_INVALIDCONFIG
);
return false; return false;
} }
// -1 or 0 -- no referenced record.. // -1 or 0 -- no referenced record..
$ret = false; $ret = false;
if ($link) { if ($link) {
if ($obj->get($link, $this->do->$field)) { if ($obj->get($link, $this->do->$field)) {
$ret = $obj; $ret = $obj;
} }
// this really only happens when no link config is set (old BC stuff) // this really only happens when no link config is set (old BC stuff)
} else if ($obj->get($this->do->$field)) { } elseif ($obj->get($this->do->$field)) {
$ret= $obj; $ret= $obj;
} }
if ($this->cached) { if ($this->cached) {
$cache[$tn.':'. $link .':'. $this->do->$field] = $ret; $cache[$tn.':'. $link .':'. $this->do->$field] = $ret;
} }
return $ret; return $ret;
} }
/** /**
* get link information for a field or field specification * get link information for a field or field specification
@ -195,15 +186,14 @@ class DB_DataObject_Links
* array(2) : 'field', 'table:remote_col' << just like the links.ini def. * array(2) : 'field', 'table:remote_col' << just like the links.ini def.
* array(3) : 'field', $dataobject, 'remote_col' (handy for joinAdd to do nested joins.) * array(3) : 'field', $dataobject, 'remote_col' (handy for joinAdd to do nested joins.)
* *
* @param string|array $field or link spec to use. * @param string|array $field or link spec to use.
* @return (false|array) array of dataobject and linked field or false. * @return (false|array) array of dataobject and linked field or false.
* *
* *
*/ */
function linkInfo($field) public function linkInfo($field)
{ {
if (is_array($field)) { if (is_array($field)) {
if (count($field) == 3) { if (count($field) == 3) {
// array with 3 args: // array with 3 args:
@ -213,37 +203,33 @@ class DB_DataObject_Links
$field[2], $field[2],
$field[0] $field[0]
); );
}
} list($table, $link) = explode(':', $field[1]);
list($table,$link) = explode(':', $field[1]);
return array( return array(
$this->do->factory($table), $this->do->factory($table),
$link, $link,
$field[0] $field[0]
); );
} }
// work out the link.. (classic way) // work out the link.. (classic way)
$links = $this->do->links(); $links = $this->do->links();
if (empty($links) || !is_array($links)) { if (empty($links) || !is_array($links)) {
return false; return false;
} }
if (!isset($links[$field])) { if (!isset($links[$field])) {
return false; return false;
} }
list($table,$link) = explode(':', $links[$field]); list($table, $link) = explode(':', $links[$field]);
//??? needed??? //??? needed???
if ($p = strpos($field,".")) { if ($p = strpos($field, ".")) {
$field = substr($field,0,$p); $field = substr($field, 0, $p);
} }
return array( return array(
@ -251,10 +237,6 @@ class DB_DataObject_Links
$link, $link,
$field $field
); );
} }
@ -266,25 +248,26 @@ class DB_DataObject_Links
* eg. * eg.
* $link->link('company_id') returns getLink for the object * $link->link('company_id') returns getLink for the object
* if nothing is linked (it will return an empty dataObject) * if nothing is linked (it will return an empty dataObject)
* $link->link('company_id', array(1)) - just sets the * $link->link('company_id', array(1)) - just sets the
* *
* also array as the field speck supports * also array as the field speck supports
* $link->link(array('company_id', 'company:id')) * $link->link(array('company_id', 'company:id'))
* *
* *
* @param string|array $field the field to fetch or link spec. * @param string|array $field the field to fetch or link spec.
* @params array $args the arguments sent to the getter setter * @params array $args the arguments sent to the getter setter
* @return mixed true of false on set, the object on getter. * @return mixed true of false on set, the object on getter.
* *
*/ */
function link($field, $args = array()) public function link($field, $args = array())
{ {
$info = $this->linkInfo($field); $info = $this->linkInfo($field);
if (!$info) { if (!$info) {
$this->do->raiseError( $this->do->raiseError(
"getLink:Could not find link for row $field", "getLink:Could not find link for row $field",
DB_DATAOBJECT_ERROR_INVALIDCONFIG); DB_DATAOBJECT_ERROR_INVALIDCONFIG
);
return false; return false;
} }
$field = $info[2]; $field = $info[2];
@ -299,24 +282,20 @@ class DB_DataObject_Links
$ret = $this->getLink($field); $ret = $this->getLink($field);
// nothing linked -- return new object.. // nothing linked -- return new object..
return ($ret === 0) ? $info[0] : $ret; return ($ret === 0) ? $info[0] : $ret;
} }
$assign = is_array($args) ? $args[0] : $args; $assign = is_array($args) ? $args[0] : $args;
// otherwise it's a set call.. // otherwise it's a set call..
if (!is_a($assign , 'DB_DataObject')) { if (!is_a($assign, 'DB_DataObject')) {
if (is_numeric($assign) && is_integer($assign * 1)) { if (is_numeric($assign) && is_integer($assign * 1)) {
if ($assign > 0) { if ($assign > 0) {
if (!$info) { if (!$info) {
return false; return false;
} }
// check that record exists.. // check that record exists..
if (!$info[0]->get($info[1], $assign )) { if (!$info[0]->get($info[1], $assign)) {
return false; return false;
} }
} }
$this->do->$field = $assign ; $this->do->$field = $assign ;
@ -330,8 +309,6 @@ class DB_DataObject_Links
$this->do->$field = $assign->{$info[1]}; $this->do->$field = $assign->{$info[1]};
return true; return true;
} }
/** /**
* load related objects * load related objects
@ -351,7 +328,7 @@ class DB_DataObject_Links
* @return boolean , true on success * @return boolean , true on success
*/ */
function applyLinks($format = '_%s') public function applyLinks($format = '_%s')
{ {
// get table will load the options. // get table will load the options.
@ -365,19 +342,19 @@ class DB_DataObject_Links
$loaded = array(); $loaded = array();
if ($links) { if ($links) {
foreach($links as $key => $match) { foreach ($links as $key => $match) {
list($table,$link) = explode(':', $match); list($table, $link) = explode(':', $match);
$k = sprintf($format, str_replace('.', '_', $key)); $k = sprintf($format, str_replace('.', '_', $key));
// makes sure that '.' is the end of the key; // makes sure that '.' is the end of the key;
if ($p = strpos($key,'.')) { if ($p = strpos($key, '.')) {
$key = substr($key, 0, $p); $key = substr($key, 0, $p);
} }
$this->do->$k = $this->getLink($key, $table, $link); $this->do->$k = $this->getLink($key, $table, $link);
if (is_object($this->do->$k)) { if (is_object($this->do->$k)) {
$loaded[] = $k; $loaded[] = $k;
} }
} }
$this->do->_link_loaded = $loaded; $this->do->_link_loaded = $loaded;
@ -386,8 +363,8 @@ class DB_DataObject_Links
// this is the autonaming stuff.. // this is the autonaming stuff..
// it sends the column name down to getLink and lets that sort it out.. // it sends the column name down to getLink and lets that sort it out..
// if there is a links file then it is not used! // if there is a links file then it is not used!
// IT IS DEPRECATED!!!! - DO NOT USE // IT IS DEPRECATED!!!! - DO NOT USE
if (!is_null($links)) { if (!is_null($links)) {
return false; return false;
} }
@ -400,7 +377,7 @@ class DB_DataObject_Links
$k =sprintf($format, $key); $k =sprintf($format, $key);
$this->do->$k = $this->getLink($key); $this->do->$k = $this->getLink($key);
if (is_object($this->do->$k)) { if (is_object($this->do->$k)) {
$loaded[] = $k; $loaded[] = $k;
} }
} }
$this->do->_link_loaded = $loaded; $this->do->_link_loaded = $loaded;
@ -413,7 +390,7 @@ class DB_DataObject_Links
* <dbname>.links.ini file configuration (see the introduction on linking for details on this). * <dbname>.links.ini file configuration (see the introduction on linking for details on this).
* *
* You may also use this with all parameters to specify, the column and related table. * You may also use this with all parameters to specify, the column and related table.
* *
* @access public * @access public
* @param string $field- either column or column.xxxxx * @param string $field- either column or column.xxxxx
* @param string $table (optional) name of table to look up value in * @param string $table (optional) name of table to look up value in
@ -421,26 +398,23 @@ class DB_DataObject_Links
* @param string $fval (optional)fetchall val DB_DataObject::fetchAll() * @param string $fval (optional)fetchall val DB_DataObject::fetchAll()
* @param string $fval (optional) fetchall method DB_DataObject::fetchAll() * @param string $fval (optional) fetchall method DB_DataObject::fetchAll()
* @return array - array of results (empty array on failure) * @return array - array of results (empty array on failure)
* *
* Example - Getting the related objects * Example - Getting the related objects
* *
* $person = new DataObjects_Person; * $person = new DataObjects_Person;
* $person->get(12); * $person->get(12);
* $children = $person->getLinkArray('children'); * $children = $person->getLinkArray('children');
* *
* echo 'There are ', count($children), ' descendant(s):<br />'; * echo 'There are ', count($children), ' descendant(s):<br />';
* foreach ($children as $child) { * foreach ($children as $child) {
* echo $child->name, '<br />'; * echo $child->name, '<br />';
* } * }
* *
*/ */
function getLinkArray($field, $table = null, $fkey = false, $fval = false, $fmethod = false) public function getLinkArray($field, $table = null, $fkey = false, $fval = false, $fmethod = false)
{ {
$ret = array(); $ret = array();
if (!$table) { if (!$table) {
$links = $this->do->links(); $links = $this->do->links();
if (is_array($links)) { if (is_array($links)) {
@ -448,22 +422,20 @@ class DB_DataObject_Links
// failed.. // failed..
return $ret; return $ret;
} }
list($table,$link) = explode(':',$links[$field]); list($table, $link) = explode(':', $links[$field]);
return $this->getLinkArray($field,$table); return $this->getLinkArray($field, $table);
} }
if (!($p = strpos($field,'_'))) { if (!($p = strpos($field, '_'))) {
return $ret; return $ret;
} }
return $this->getLinkArray($field,substr($field,0,$p)); return $this->getLinkArray($field, substr($field, 0, $p));
} }
$c = $this->do->factory($table); $c = $this->do->factory($table);
if (!is_object($c) || !is_a($c,'DB_DataObject')) { if (!is_object($c) || !is_a($c, 'DB_DataObject')) {
$this->do->raiseError( $this->do->raiseError(
"getLinkArray:Could not find class for row $field, table $table", "getLinkArray:Could not find class for row $field, table $table",
DB_DATAOBJECT_ERROR_INVALIDCONFIG DB_DATAOBJECT_ERROR_INVALIDCONFIG
); );
return $ret; return $ret;
@ -476,10 +448,7 @@ class DB_DataObject_Links
$ret[] = clone($c); $ret[] = clone($c);
} }
return $ret; return $ret;
} }
return $c->fetchAll($fkey, $fval, $fmethod); return $c->fetchAll($fkey, $fval, $fmethod);
} }
}
}

View File

@ -19,10 +19,10 @@
// $Id: createTables.php 277015 2009-03-12 05:51:03Z alan_k $ // $Id: createTables.php 277015 2009-03-12 05:51:03Z alan_k $
// //
// since this version doesnt use overload, // since this version doesnt use overload,
// and I assume anyone using custom generators should add this.. // and I assume anyone using custom generators should add this..
define('DB_DATAOBJECT_NO_OVERLOAD',1); define('DB_DATAOBJECT_NO_OVERLOAD', 1);
//require_once 'DB/DataObject/Generator.php'; //require_once 'DB/DataObject/Generator.php';
require_once 'DB/DataObject/Generator.php'; require_once 'DB/DataObject/Generator.php';
@ -42,13 +42,13 @@ if (!@$_SERVER['argv'][1]) {
} }
$config = parse_ini_file($_SERVER['argv'][1], true); $config = parse_ini_file($_SERVER['argv'][1], true);
foreach($config as $class=>$values) { foreach ($config as $class=>$values) {
$options = &PEAR::getStaticProperty($class,'options'); $options = &PEAR::getStaticProperty($class, 'options');
$options = $values; $options = $values;
} }
$options = &PEAR::getStaticProperty('DB_DataObject','options'); $options = &PEAR::getStaticProperty('DB_DataObject', 'options');
if (empty($options)) { if (empty($options)) {
PEAR::raiseError("\nERROR: could not read ini file\n\n", null, PEAR_ERROR_DIE); PEAR::raiseError("\nERROR: could not read ini file\n\n", null, PEAR_ERROR_DIE);
exit; exit;
@ -60,4 +60,3 @@ DB_DataObject::debugLevel(isset($options['debug']) ? $options['debug'] : 1);
$generator = new DB_DataObject_Generator; $generator = new DB_DataObject_Generator;
$generator->start(); $generator->start();

View File

@ -53,7 +53,7 @@ class DB_common extends PEAR
* The current default fetch mode * The current default fetch mode
* @var integer * @var integer
*/ */
var $fetchmode = DB_FETCHMODE_ORDERED; public $fetchmode = DB_FETCHMODE_ORDERED;
/** /**
* The name of the class into which results should be fetched when * The name of the class into which results should be fetched when
@ -61,20 +61,20 @@ class DB_common extends PEAR
* *
* @var string * @var string
*/ */
var $fetchmode_object_class = 'stdClass'; public $fetchmode_object_class = 'stdClass';
/** /**
* Was a connection present when the object was serialized()? * Was a connection present when the object was serialized()?
* @var bool * @var bool
* @see DB_common::__sleep(), DB_common::__wake() * @see DB_common::__sleep(), DB_common::__wake()
*/ */
var $was_connected = null; public $was_connected = null;
/** /**
* The most recently executed query * The most recently executed query
* @var string * @var string
*/ */
var $last_query = ''; public $last_query = '';
/** /**
* Run-time configuration options * Run-time configuration options
@ -85,7 +85,7 @@ class DB_common extends PEAR
* @var array * @var array
* @see DB_common::setOption() * @see DB_common::setOption()
*/ */
var $options = array( public $options = array(
'result_buffering' => 500, 'result_buffering' => 500,
'persistent' => false, 'persistent' => false,
'ssl' => false, 'ssl' => false,
@ -101,32 +101,32 @@ class DB_common extends PEAR
* @var array * @var array
* @since Property available since Release 1.7.0 * @since Property available since Release 1.7.0
*/ */
var $last_parameters = array(); public $last_parameters = array();
/** /**
* The elements from each prepared statement * The elements from each prepared statement
* @var array * @var array
*/ */
var $prepare_tokens = array(); public $prepare_tokens = array();
/** /**
* The data types of the various elements in each prepared statement * The data types of the various elements in each prepared statement
* @var array * @var array
*/ */
var $prepare_types = array(); public $prepare_types = array();
/** /**
* The prepared queries * The prepared queries
* @var array * @var array
*/ */
var $prepared_queries = array(); public $prepared_queries = array();
/** /**
* Flag indicating that the last query was a manipulation query. * Flag indicating that the last query was a manipulation query.
* @access protected * @access protected
* @var boolean * @var boolean
*/ */
var $_last_query_manip = false; public $_last_query_manip = false;
/** /**
* Flag indicating that the next query <em>must</em> be a manipulation * Flag indicating that the next query <em>must</em> be a manipulation
@ -134,7 +134,7 @@ class DB_common extends PEAR
* @access protected * @access protected
* @var boolean * @var boolean
*/ */
var $_next_query_manip = false; public $_next_query_manip = false;
// }}} // }}}
@ -145,7 +145,7 @@ class DB_common extends PEAR
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
$this->PEAR('DB_Error'); $this->PEAR('DB_Error');
} }
@ -159,7 +159,7 @@ class DB_common extends PEAR
* *
* @return array the array of properties names that should be saved * @return array the array of properties names that should be saved
*/ */
function __sleep() public function __sleep()
{ {
if ($this->connection) { if ($this->connection) {
// Don't disconnect(), people use serialize() for many reasons // Don't disconnect(), people use serialize() for many reasons
@ -201,7 +201,7 @@ class DB_common extends PEAR
* *
* @return void * @return void
*/ */
function __wakeup() public function __wakeup()
{ {
if ($this->was_connected) { if ($this->was_connected) {
$this->connect($this->dsn, $this->options['persistent']); $this->connect($this->dsn, $this->options['persistent']);
@ -218,7 +218,7 @@ class DB_common extends PEAR
* *
* @since Method available since Release 1.7.0 * @since Method available since Release 1.7.0
*/ */
function __toString() public function __toString()
{ {
$info = strtolower(get_class($this)); $info = strtolower(get_class($this));
$info .= ': (phptype=' . $this->phptype . $info .= ': (phptype=' . $this->phptype .
@ -240,7 +240,7 @@ class DB_common extends PEAR
* *
* @deprecated Method deprecated in Release 1.7.0 * @deprecated Method deprecated in Release 1.7.0
*/ */
function toString() public function toString()
{ {
return $this->__toString(); return $this->__toString();
} }
@ -259,7 +259,7 @@ class DB_common extends PEAR
* @see DB_common::quoteSmart(), DB_common::escapeSimple() * @see DB_common::quoteSmart(), DB_common::escapeSimple()
* @deprecated Method deprecated some time before Release 1.2 * @deprecated Method deprecated some time before Release 1.2
*/ */
function quoteString($string) public function quoteString($string)
{ {
$string = $this->quoteSmart($string); $string = $this->quoteSmart($string);
if ($string{0} == "'") { if ($string{0} == "'") {
@ -282,7 +282,7 @@ class DB_common extends PEAR
* @see DB_common::quoteSmart(), DB_common::escapeSimple() * @see DB_common::quoteSmart(), DB_common::escapeSimple()
* @deprecated Deprecated in release 1.6.0 * @deprecated Deprecated in release 1.6.0
*/ */
function quote($string = null) public function quote($string = null)
{ {
return $this->quoteSmart($string); return $this->quoteSmart($string);
} }
@ -327,7 +327,7 @@ class DB_common extends PEAR
* *
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function quoteIdentifier($str) public function quoteIdentifier($str)
{ {
return '"' . str_replace('"', '""', $str) . '"'; return '"' . str_replace('"', '""', $str) . '"';
} }
@ -436,7 +436,7 @@ class DB_common extends PEAR
* @see DB_common::escapeSimple() * @see DB_common::escapeSimple()
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function quoteSmart($in) public function quoteSmart($in)
{ {
if (is_int($in)) { if (is_int($in)) {
return $in; return $in;
@ -448,8 +448,7 @@ class DB_common extends PEAR
return 'NULL'; return 'NULL';
} else { } else {
if ($this->dbsyntax == 'access' if ($this->dbsyntax == 'access'
&& preg_match('/^#.+#$/', $in)) && preg_match('/^#.+#$/', $in)) {
{
return $this->escapeSimple($in); return $this->escapeSimple($in);
} }
return "'" . $this->escapeSimple($in) . "'"; return "'" . $this->escapeSimple($in) . "'";
@ -468,7 +467,8 @@ class DB_common extends PEAR
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since release 1.7.8. * @since Method available since release 1.7.8.
*/ */
function quoteBoolean($boolean) { public function quoteBoolean($boolean)
{
return $boolean ? '1' : '0'; return $boolean ? '1' : '0';
} }
@ -484,7 +484,8 @@ class DB_common extends PEAR
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since release 1.7.8. * @since Method available since release 1.7.8.
*/ */
function quoteFloat($float) { public function quoteFloat($float)
{
return "'".$this->escapeSimple(str_replace(',', '.', strval(floatval($float))))."'"; return "'".$this->escapeSimple(str_replace(',', '.', strval(floatval($float))))."'";
} }
@ -506,7 +507,7 @@ class DB_common extends PEAR
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function escapeSimple($str) public function escapeSimple($str)
{ {
return str_replace("'", "''", $str); return str_replace("'", "''", $str);
} }
@ -521,7 +522,7 @@ class DB_common extends PEAR
* *
* @return bool whether this driver supports $feature * @return bool whether this driver supports $feature
*/ */
function provides($feature) public function provides($feature)
{ {
return $this->features[$feature]; return $this->features[$feature];
} }
@ -544,11 +545,12 @@ class DB_common extends PEAR
* *
* @see DB_FETCHMODE_ORDERED, DB_FETCHMODE_ASSOC, DB_FETCHMODE_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) { switch ($fetchmode) {
case DB_FETCHMODE_OBJECT: case DB_FETCHMODE_OBJECT:
$this->fetchmode_object_class = $object_class; $this->fetchmode_object_class = $object_class;
// no break
case DB_FETCHMODE_ORDERED: case DB_FETCHMODE_ORDERED:
case DB_FETCHMODE_ASSOC: case DB_FETCHMODE_ASSOC:
$this->fetchmode = $fetchmode; $this->fetchmode = $fetchmode;
@ -699,7 +701,7 @@ class DB_common extends PEAR
* *
* @see DB_common::$options * @see DB_common::$options
*/ */
function setOption($option, $value) public function setOption($option, $value)
{ {
if (isset($this->options[$option])) { if (isset($this->options[$option])) {
$this->options[$option] = $value; $this->options[$option] = $value;
@ -744,7 +746,7 @@ class DB_common extends PEAR
* *
* @return mixed the option's value * @return mixed the option's value
*/ */
function getOption($option) public function getOption($option)
{ {
if (isset($this->options[$option])) { if (isset($this->options[$option])) {
return $this->options[$option]; return $this->options[$option];
@ -798,10 +800,14 @@ class DB_common extends PEAR
* *
* @see DB_common::execute() * @see DB_common::execute()
*/ */
function prepare($query) public function prepare($query)
{ {
$tokens = preg_split('/((?<!\\\)[&?!])/', $query, -1, $tokens = preg_split(
PREG_SPLIT_DELIM_CAPTURE); '/((?<!\\\)[&?!])/',
$query,
-1,
PREG_SPLIT_DELIM_CAPTURE
);
$token = 0; $token = 0;
$types = array(); $types = array();
$newtokens = array(); $newtokens = array();
@ -850,9 +856,12 @@ class DB_common extends PEAR
* *
* @uses DB_common::prepare(), DB_common::buildManipSQL() * @uses DB_common::prepare(), DB_common::buildManipSQL()
*/ */
function autoPrepare($table, $table_fields, $mode = DB_AUTOQUERY_INSERT, public function autoPrepare(
$where = false) $table,
{ $table_fields,
$mode = DB_AUTOQUERY_INSERT,
$where = false
) {
$query = $this->buildManipSQL($table, $table_fields, $mode, $where); $query = $this->buildManipSQL($table, $table_fields, $mode, $where);
if (DB::isError($query)) { if (DB::isError($query)) {
return $query; return $query;
@ -882,18 +891,24 @@ class DB_common extends PEAR
* *
* @uses DB_common::autoPrepare(), DB_common::execute() * @uses DB_common::autoPrepare(), DB_common::execute()
*/ */
function autoExecute($table, $fields_values, $mode = DB_AUTOQUERY_INSERT, public function autoExecute(
$where = false) $table,
{ $fields_values,
$sth = $this->autoPrepare($table, array_keys($fields_values), $mode, $mode = DB_AUTOQUERY_INSERT,
$where); $where = false
) {
$sth = $this->autoPrepare(
$table,
array_keys($fields_values),
$mode,
$where
);
if (DB::isError($sth)) { if (DB::isError($sth)) {
return $sth; return $sth;
} }
$ret = $this->execute($sth, array_values($fields_values)); $ret = $this->execute($sth, array_values($fields_values));
$this->freePrepared($sth); $this->freePrepared($sth);
return $ret; return $ret;
} }
// }}} // }}}
@ -929,7 +944,7 @@ class DB_common extends PEAR
* *
* @return string the sql query for autoPrepare() * @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) { if (count($table_fields) == 0) {
return $this->raiseError(DB_ERROR_NEED_MORE_DATA); return $this->raiseError(DB_ERROR_NEED_MORE_DATA);
@ -1002,7 +1017,7 @@ class DB_common extends PEAR
* *
* @see DB_common::prepare() * @see DB_common::prepare()
*/ */
function &execute($stmt, $data = array()) public function &execute($stmt, $data = array())
{ {
$realquery = $this->executeEmulateQuery($stmt, $data); $realquery = $this->executeEmulateQuery($stmt, $data);
if (DB::isError($realquery)) { if (DB::isError($realquery)) {
@ -1037,7 +1052,7 @@ class DB_common extends PEAR
* @access protected * @access protected
* @see DB_common::execute() * @see DB_common::execute()
*/ */
function executeEmulateQuery($stmt, $data = array()) public function executeEmulateQuery($stmt, $data = array())
{ {
$stmt = (int)$stmt; $stmt = (int)$stmt;
$data = (array)$data; $data = (array)$data;
@ -1091,7 +1106,7 @@ class DB_common extends PEAR
* *
* @see DB_common::prepare(), DB_common::execute() * @see DB_common::prepare(), DB_common::execute()
*/ */
function executeMultiple($stmt, $data) public function executeMultiple($stmt, $data)
{ {
foreach ($data as $value) { foreach ($data as $value) {
$res = $this->execute($stmt, $value); $res = $this->execute($stmt, $value);
@ -1117,7 +1132,7 @@ class DB_common extends PEAR
* *
* @see DB_common::prepare() * @see DB_common::prepare()
*/ */
function freePrepared($stmt, $free_resource = true) public function freePrepared($stmt, $free_resource = true)
{ {
$stmt = (int)$stmt; $stmt = (int)$stmt;
if (isset($this->prepare_tokens[$stmt])) { if (isset($this->prepare_tokens[$stmt])) {
@ -1145,7 +1160,7 @@ class DB_common extends PEAR
* @see DB_mysql::modifyQuery(), DB_oci8::modifyQuery(), * @see DB_mysql::modifyQuery(), DB_oci8::modifyQuery(),
* DB_sqlite::modifyQuery() * DB_sqlite::modifyQuery()
*/ */
function modifyQuery($query) public function modifyQuery($query)
{ {
return $query; return $query;
} }
@ -1172,7 +1187,7 @@ class DB_common extends PEAR
* *
* @access protected * @access protected
*/ */
function modifyLimitQuery($query, $from, $count, $params = array()) public function modifyLimitQuery($query, $from, $count, $params = array())
{ {
return $query; return $query;
} }
@ -1200,7 +1215,7 @@ class DB_common extends PEAR
* *
* @see DB_result, DB_common::prepare(), DB_common::execute() * @see DB_result, DB_common::prepare(), DB_common::execute()
*/ */
function &query($query, $params = array()) public function &query($query, $params = array())
{ {
if (sizeof($params) > 0) { if (sizeof($params) > 0) {
$sth = $this->prepare($query); $sth = $this->prepare($query);
@ -1241,10 +1256,10 @@ class DB_common extends PEAR
* or DB_OK for successul data manipulation queries. * or DB_OK for successul data manipulation queries.
* A DB_Error object on failure. * A DB_Error object on failure.
*/ */
function &limitQuery($query, $from, $count, $params = array()) public function &limitQuery($query, $from, $count, $params = array())
{ {
$query = $this->modifyLimitQuery($query, $from, $count, $params); $query = $this->modifyLimitQuery($query, $from, $count, $params);
if (DB::isError($query)){ if (DB::isError($query)) {
return $query; return $query;
} }
$result = $this->query($query, $params); $result = $this->query($query, $params);
@ -1273,7 +1288,7 @@ class DB_common extends PEAR
* @return mixed the returned value of the query. * @return mixed the returned value of the query.
* A DB_Error object on failure. * A DB_Error object on failure.
*/ */
function &getOne($query, $params = array()) public function &getOne($query, $params = array())
{ {
$params = (array)$params; $params = (array)$params;
// modifyLimitQuery() would be nice here, but it causes BC issues // modifyLimitQuery() would be nice here, but it causes BC issues
@ -1321,9 +1336,11 @@ class DB_common extends PEAR
* @return array the first row of results as an array. * @return array the first row of results as an array.
* A DB_Error object on failure. * A DB_Error object on failure.
*/ */
function &getRow($query, $params = array(), public function &getRow(
$fetchmode = DB_FETCHMODE_DEFAULT) $query,
{ $params = array(),
$fetchmode = DB_FETCHMODE_DEFAULT
) {
// compat check, the params and fetchmode parameters used to // compat check, the params and fetchmode parameters used to
// have the opposite order // have the opposite order
if (!is_array($params)) { if (!is_array($params)) {
@ -1387,7 +1404,7 @@ class DB_common extends PEAR
* *
* @see DB_common::query() * @see DB_common::query()
*/ */
function &getCol($query, $col = 0, $params = array()) public function &getCol($query, $col = 0, $params = array())
{ {
$params = (array)$params; $params = (array)$params;
if (sizeof($params) > 0) { if (sizeof($params) > 0) {
@ -1518,9 +1535,13 @@ class DB_common extends PEAR
* @return array the associative array containing the query results. * @return array the associative array containing the query results.
* A DB_Error object on failure. * A DB_Error object on failure.
*/ */
function &getAssoc($query, $force_array = false, $params = array(), public function &getAssoc(
$fetchmode = DB_FETCHMODE_DEFAULT, $group = false) $query,
{ $force_array = false,
$params = array(),
$fetchmode = DB_FETCHMODE_DEFAULT,
$group = false
) {
$params = (array)$params; $params = (array)$params;
if (sizeof($params) > 0) { if (sizeof($params) > 0) {
$sth = $this->prepare($query); $sth = $this->prepare($query);
@ -1629,9 +1650,11 @@ class DB_common extends PEAR
* *
* @return array the nested array. A DB_Error object on failure. * @return array the nested array. A DB_Error object on failure.
*/ */
function &getAll($query, $params = array(), public function &getAll(
$fetchmode = DB_FETCHMODE_DEFAULT) $query,
{ $params = array(),
$fetchmode = DB_FETCHMODE_DEFAULT
) {
// compat check, the params and fetchmode parameters used to // compat check, the params and fetchmode parameters used to
// have the opposite order // have the opposite order
if (!is_array($params)) { if (!is_array($params)) {
@ -1697,7 +1720,7 @@ class DB_common extends PEAR
* @return int DB_OK on success. A DB_Error object if the driver * @return int DB_OK on success. A DB_Error object if the driver
* doesn't support auto-committing transactions. * doesn't support auto-committing transactions.
*/ */
function autoCommit($onoff = false) public function autoCommit($onoff = false)
{ {
return $this->raiseError(DB_ERROR_NOT_CAPABLE); return $this->raiseError(DB_ERROR_NOT_CAPABLE);
} }
@ -1710,7 +1733,7 @@ class DB_common extends PEAR
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function commit() public function commit()
{ {
return $this->raiseError(DB_ERROR_NOT_CAPABLE); return $this->raiseError(DB_ERROR_NOT_CAPABLE);
} }
@ -1723,7 +1746,7 @@ class DB_common extends PEAR
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function rollback() public function rollback()
{ {
return $this->raiseError(DB_ERROR_NOT_CAPABLE); return $this->raiseError(DB_ERROR_NOT_CAPABLE);
} }
@ -1738,7 +1761,7 @@ class DB_common extends PEAR
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function numRows($result) public function numRows($result)
{ {
return $this->raiseError(DB_ERROR_NOT_CAPABLE); return $this->raiseError(DB_ERROR_NOT_CAPABLE);
} }
@ -1753,7 +1776,7 @@ class DB_common extends PEAR
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
return $this->raiseError(DB_ERROR_NOT_CAPABLE); return $this->raiseError(DB_ERROR_NOT_CAPABLE);
} }
@ -1775,10 +1798,12 @@ class DB_common extends PEAR
* @see DB_common::createSequence(), DB_common::dropSequence(), * @see DB_common::createSequence(), DB_common::dropSequence(),
* DB_common::nextID(), DB_common::setOption() * DB_common::nextID(), DB_common::setOption()
*/ */
function getSequenceName($sqn) public function getSequenceName($sqn)
{ {
return sprintf($this->getOption('seqname_format'), return sprintf(
preg_replace('/[^a-z0-9_.]/i', '_', $sqn)); $this->getOption('seqname_format'),
preg_replace('/[^a-z0-9_.]/i', '_', $sqn)
);
} }
// }}} // }}}
@ -1797,7 +1822,7 @@ class DB_common extends PEAR
* @see DB_common::createSequence(), DB_common::dropSequence(), * @see DB_common::createSequence(), DB_common::dropSequence(),
* DB_common::getSequenceName() * DB_common::getSequenceName()
*/ */
function nextId($seq_name, $ondemand = true) public function nextId($seq_name, $ondemand = true)
{ {
return $this->raiseError(DB_ERROR_NOT_CAPABLE); return $this->raiseError(DB_ERROR_NOT_CAPABLE);
} }
@ -1822,7 +1847,7 @@ class DB_common extends PEAR
* @see DB_common::dropSequence(), DB_common::getSequenceName(), * @see DB_common::dropSequence(), DB_common::getSequenceName(),
* DB_common::nextID() * DB_common::nextID()
*/ */
function createSequence($seq_name) public function createSequence($seq_name)
{ {
return $this->raiseError(DB_ERROR_NOT_CAPABLE); return $this->raiseError(DB_ERROR_NOT_CAPABLE);
} }
@ -1840,7 +1865,7 @@ class DB_common extends PEAR
* @see DB_common::createSequence(), DB_common::getSequenceName(), * @see DB_common::createSequence(), DB_common::getSequenceName(),
* DB_common::nextID() * DB_common::nextID()
*/ */
function dropSequence($seq_name) public function dropSequence($seq_name)
{ {
return $this->raiseError(DB_ERROR_NOT_CAPABLE); return $this->raiseError(DB_ERROR_NOT_CAPABLE);
} }
@ -1876,10 +1901,15 @@ class DB_common extends PEAR
* *
* @see PEAR_Error * @see PEAR_Error
*/ */
function &raiseError($code = DB_ERROR, $mode = null, $options = null, public function &raiseError(
$userinfo = null, $nativecode = null, $dummy1 = null, $code = DB_ERROR,
$dummy2 = null) $mode = null,
{ $options = null,
$userinfo = null,
$nativecode = null,
$dummy1 = null,
$dummy2 = null
) {
// The error is yet a DB error object // The error is yet a DB error object
if (is_object($code)) { if (is_object($code)) {
// because we the static PEAR::raiseError, our global // because we the static PEAR::raiseError, our global
@ -1888,8 +1918,15 @@ class DB_common extends PEAR
$mode = $this->_default_error_mode; $mode = $this->_default_error_mode;
$options = $this->_default_error_options; $options = $this->_default_error_options;
} }
$tmp = PEAR::raiseError($code, null, $mode, $options, $tmp = PEAR::raiseError(
null, null, true); $code,
null,
$mode,
$options,
null,
null,
true
);
return $tmp; return $tmp;
} }
@ -1903,8 +1940,15 @@ class DB_common extends PEAR
$userinfo .= ' [DB Error: ' . DB::errorMessage($code) . ']'; $userinfo .= ' [DB Error: ' . DB::errorMessage($code) . ']';
} }
$tmp = PEAR::raiseError(null, $code, $mode, $options, $userinfo, $tmp = PEAR::raiseError(
'DB_Error', true); null,
$code,
$mode,
$options,
$userinfo,
'DB_Error',
true
);
return $tmp; return $tmp;
} }
@ -1916,7 +1960,7 @@ class DB_common extends PEAR
* *
* @return mixed the DBMS' error code. A DB_Error object on failure. * @return mixed the DBMS' error code. A DB_Error object on failure.
*/ */
function errorNative() public function errorNative()
{ {
return $this->raiseError(DB_ERROR_NOT_CAPABLE); return $this->raiseError(DB_ERROR_NOT_CAPABLE);
} }
@ -1935,7 +1979,7 @@ class DB_common extends PEAR
* current driver doesn't have a mapping for the * current driver doesn't have a mapping for the
* $nativecode submitted. * $nativecode submitted.
*/ */
function errorCode($nativecode) public function errorCode($nativecode)
{ {
if (isset($this->errorcode_map[$nativecode])) { if (isset($this->errorcode_map[$nativecode])) {
return $this->errorcode_map[$nativecode]; return $this->errorcode_map[$nativecode];
@ -1957,7 +2001,7 @@ class DB_common extends PEAR
* *
* @see DB::errorMessage() * @see DB::errorMessage()
*/ */
function errorMessage($dbcode) public function errorMessage($dbcode)
{ {
return DB::errorMessage($this->errorcode_map[$dbcode]); return DB::errorMessage($this->errorcode_map[$dbcode]);
} }
@ -2085,7 +2129,7 @@ class DB_common extends PEAR
* *
* @see DB_common::setOption() * @see DB_common::setOption()
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
/* /*
* If the DB_<driver> class has a tableInfo() method, that one * If the DB_<driver> class has a tableInfo() method, that one
@ -2105,7 +2149,7 @@ class DB_common extends PEAR
* *
* @deprecated Method deprecated some time before Release 1.2 * @deprecated Method deprecated some time before Release 1.2
*/ */
function getTables() public function getTables()
{ {
return $this->getListOf('tables'); return $this->getListOf('tables');
} }
@ -2124,7 +2168,7 @@ class DB_common extends PEAR
* @return array an array listing the items sought. * @return array an array listing the items sought.
* A DB DB_Error object on failure. * A DB DB_Error object on failure.
*/ */
function getListOf($type) public function getListOf($type)
{ {
$sql = $this->getSpecialQuery($type); $sql = $this->getSpecialQuery($type);
if ($sql === null) { if ($sql === null) {
@ -2155,7 +2199,7 @@ class DB_common extends PEAR
* @access protected * @access protected
* @see DB_common::getListOf() * @see DB_common::getListOf()
*/ */
function getSpecialQuery($type) public function getSpecialQuery($type)
{ {
return $this->raiseError(DB_ERROR_UNSUPPORTED); return $this->raiseError(DB_ERROR_UNSUPPORTED);
} }
@ -2174,7 +2218,7 @@ class DB_common extends PEAR
* *
* @access public * @access public
*/ */
function nextQueryIsManip($manip) public function nextQueryIsManip($manip)
{ {
$this->_next_query_manip = $manip; $this->_next_query_manip = $manip;
} }
@ -2194,7 +2238,7 @@ class DB_common extends PEAR
* *
* @access protected * @access protected
*/ */
function _checkManip($query) public function _checkManip($query)
{ {
if ($this->_next_query_manip || DB::isManip($query)) { if ($this->_next_query_manip || DB::isManip($query)) {
$this->_last_query_manip = true; $this->_last_query_manip = true;
@ -2218,7 +2262,7 @@ class DB_common extends PEAR
* *
* @access protected * @access protected
*/ */
function _rtrimArrayValues(&$array) public function _rtrimArrayValues(&$array)
{ {
foreach ($array as $key => $value) { foreach ($array as $key => $value) {
if (is_string($value)) { if (is_string($value)) {
@ -2239,7 +2283,7 @@ class DB_common extends PEAR
* *
* @access protected * @access protected
*/ */
function _convertNullArrayValuesToEmpty(&$array) public function _convertNullArrayValuesToEmpty(&$array)
{ {
foreach ($array as $key => $value) { foreach ($array as $key => $value) {
if (is_null($value)) { if (is_null($value)) {
@ -2257,5 +2301,3 @@ class DB_common extends PEAR
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -52,13 +52,13 @@ class DB_dbase extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'dbase'; public $phptype = 'dbase';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'dbase'; public $dbsyntax = 'dbase';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -73,7 +73,7 @@ class DB_dbase extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => false, 'limit' => false,
'new_link' => false, 'new_link' => false,
'numrows' => true, 'numrows' => true,
@ -87,27 +87,27 @@ class DB_dbase extends DB_common
* A mapping of native error codes to DB error codes * A mapping of native error codes to DB error codes
* @var array * @var array
*/ */
var $errorcode_map = array( public $errorcode_map = array(
); );
/** /**
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
/** /**
* A means of emulating result resources * A means of emulating result resources
* @var array * @var array
*/ */
var $res_row = array(); public $res_row = array();
/** /**
* The quantity of results so far * The quantity of results so far
@ -116,7 +116,7 @@ class DB_dbase extends DB_common
* *
* @var integer * @var integer
*/ */
var $result = 0; public $result = 0;
/** /**
* Maps dbase data type id's to human readable strings * Maps dbase data type id's to human readable strings
@ -127,7 +127,7 @@ class DB_dbase extends DB_common
* @var array * @var array
* @since Property available since Release 1.7.0 * @since Property available since Release 1.7.0
*/ */
var $types = array( public $types = array(
'C' => 'character', 'C' => 'character',
'D' => 'date', 'D' => 'date',
'L' => 'boolean', 'L' => 'boolean',
@ -144,7 +144,7 @@ class DB_dbase extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -199,7 +199,7 @@ class DB_dbase extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('dbase')) { if (!PEAR::loadExtension('dbase')) {
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
@ -220,32 +220,48 @@ class DB_dbase extends DB_common
if (!file_exists($dsn['database'])) { if (!file_exists($dsn['database'])) {
$this->dsn['mode'] = 2; $this->dsn['mode'] = 2;
if (empty($dsn['fields']) || !is_array($dsn['fields'])) { if (empty($dsn['fields']) || !is_array($dsn['fields'])) {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
'the dbase file does not exist and ' null,
null,
null,
'the dbase file does not exist and '
. 'it could not be created because ' . 'it could not be created because '
. 'the "fields" element of the DSN ' . 'the "fields" element of the DSN '
. 'is not properly set'); . 'is not properly set'
);
} }
$this->connection = @dbase_create($dsn['database'], $this->connection = @dbase_create(
$dsn['fields']); $dsn['database'],
$dsn['fields']
);
if (!$this->connection) { if (!$this->connection) {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
'the dbase file does not exist and ' null,
null,
null,
'the dbase file does not exist and '
. 'the attempt to create it failed: ' . 'the attempt to create it failed: '
. $php_errormsg); . $php_errormsg
);
} }
} else { } else {
if (!isset($this->dsn['mode'])) { if (!isset($this->dsn['mode'])) {
$this->dsn['mode'] = 0; $this->dsn['mode'] = 0;
} }
$this->connection = @dbase_open($dsn['database'], $this->connection = @dbase_open(
$this->dsn['mode']); $dsn['database'],
$this->dsn['mode']
);
if (!$this->connection) { if (!$this->connection) {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
$php_errormsg); null,
null,
null,
$php_errormsg
);
} }
} }
return DB_OK; return DB_OK;
@ -259,7 +275,7 @@ class DB_dbase extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
$ret = @dbase_close($this->connection); $ret = @dbase_close($this->connection);
$this->connection = null; $this->connection = null;
@ -269,7 +285,7 @@ class DB_dbase extends DB_common
// }}} // }}}
// {{{ &query() // {{{ &query()
function &query($query = null) public function &query($query = null)
{ {
// emulate result resources // emulate result resources
$this->res_row[(int)$this->result] = 0; $this->res_row[(int)$this->result] = 0;
@ -300,7 +316,7 @@ class DB_dbase extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
if ($rownum === null) { if ($rownum === null) {
$rownum = $this->res_row[(int)$result]++; $rownum = $this->res_row[(int)$result]++;
@ -340,7 +356,7 @@ class DB_dbase extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult($result) public function freeResult($result)
{ {
return true; return true;
} }
@ -361,7 +377,7 @@ class DB_dbase extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($foo) public function numCols($foo)
{ {
return @dbase_numfields($this->connection); return @dbase_numfields($this->connection);
} }
@ -382,7 +398,7 @@ class DB_dbase extends DB_common
* *
* @see DB_result::numRows() * @see DB_result::numRows()
*/ */
function numRows($foo) public function numRows($foo)
{ {
return @dbase_numrecords($this->connection); return @dbase_numrecords($this->connection);
} }
@ -399,7 +415,8 @@ class DB_dbase extends DB_common
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since release 1.7.8. * @since Method available since release 1.7.8.
*/ */
function quoteBoolean($boolean) { public function quoteBoolean($boolean)
{
return $boolean ? 'T' : 'F'; return $boolean ? 'T' : 'F';
} }
@ -419,14 +436,18 @@ class DB_dbase extends DB_common
* @see DB_common::tableInfo() * @see DB_common::tableInfo()
* @since Method available since Release 1.7.0 * @since Method available since Release 1.7.0
*/ */
function tableInfo($result = null, $mode = null) public function tableInfo($result = null, $mode = null)
{ {
if (function_exists('dbase_get_header_info')) { if (function_exists('dbase_get_header_info')) {
$id = @dbase_get_header_info($this->connection); $id = @dbase_get_header_info($this->connection);
if (!$id && $php_errormsg) { if (!$id && $php_errormsg) {
return $this->raiseError(DB_ERROR, return $this->raiseError(
null, null, null, DB_ERROR,
$php_errormsg); null,
null,
null,
$php_errormsg
);
} }
} else { } else {
/* /*
@ -436,9 +457,13 @@ class DB_dbase extends DB_common
*/ */
$db = @fopen($this->dsn['database'], 'r'); $db = @fopen($this->dsn['database'], 'r');
if (!$db) { if (!$db) {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
$php_errormsg); null,
null,
null,
$php_errormsg
);
} }
$id = array(); $id = array();
@ -506,5 +531,3 @@ class DB_dbase extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -53,13 +53,13 @@ class DB_fbsql extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'fbsql'; public $phptype = 'fbsql';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'fbsql'; public $dbsyntax = 'fbsql';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -74,7 +74,7 @@ class DB_fbsql extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => 'alter', 'limit' => 'alter',
'new_link' => false, 'new_link' => false,
'numrows' => true, 'numrows' => true,
@ -88,7 +88,7 @@ class DB_fbsql extends DB_common
* A mapping of native error codes to DB error codes * A mapping of native error codes to DB error codes
* @var array * @var array
*/ */
var $errorcode_map = array( public $errorcode_map = array(
22 => DB_ERROR_SYNTAX, 22 => DB_ERROR_SYNTAX,
85 => DB_ERROR_ALREADY_EXISTS, 85 => DB_ERROR_ALREADY_EXISTS,
108 => DB_ERROR_SYNTAX, 108 => DB_ERROR_SYNTAX,
@ -111,13 +111,13 @@ class DB_fbsql extends DB_common
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
// }}} // }}}
@ -128,7 +128,7 @@ class DB_fbsql extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -146,7 +146,7 @@ class DB_fbsql extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('fbsql')) { if (!PEAR::loadExtension('fbsql')) {
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
@ -168,19 +168,27 @@ class DB_fbsql extends DB_common
$ini = ini_get('track_errors'); $ini = ini_get('track_errors');
$php_errormsg = ''; $php_errormsg = '';
if ($ini) { if ($ini) {
$this->connection = @call_user_func_array($connect_function, $this->connection = @call_user_func_array(
$params); $connect_function,
$params
);
} else { } else {
@ini_set('track_errors', 1); @ini_set('track_errors', 1);
$this->connection = @call_user_func_array($connect_function, $this->connection = @call_user_func_array(
$params); $connect_function,
$params
);
@ini_set('track_errors', $ini); @ini_set('track_errors', $ini);
} }
if (!$this->connection) { if (!$this->connection) {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
$php_errormsg); null,
null,
null,
$php_errormsg
);
} }
if ($dsn['database']) { if ($dsn['database']) {
@ -200,7 +208,7 @@ class DB_fbsql extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
$ret = @fbsql_close($this->connection); $ret = @fbsql_close($this->connection);
$this->connection = null; $this->connection = null;
@ -219,7 +227,7 @@ class DB_fbsql extends DB_common
* + the DB_OK constant for other successful queries * + the DB_OK constant for other successful queries
* + a DB_Error object on failure * + a DB_Error object on failure
*/ */
function simpleQuery($query) public function simpleQuery($query)
{ {
$this->last_query = $query; $this->last_query = $query;
$query = $this->modifyQuery($query); $query = $this->modifyQuery($query);
@ -247,7 +255,7 @@ class DB_fbsql extends DB_common
* *
* @return true if a result is available otherwise return false * @return true if a result is available otherwise return false
*/ */
function nextResult($result) public function nextResult($result)
{ {
return @fbsql_next_result($result); return @fbsql_next_result($result);
} }
@ -275,7 +283,7 @@ class DB_fbsql extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
if ($rownum !== null) { if ($rownum !== null) {
if (!@fbsql_data_seek($result, $rownum)) { if (!@fbsql_data_seek($result, $rownum)) {
@ -318,7 +326,7 @@ class DB_fbsql extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult($result) public function freeResult($result)
{ {
return is_resource($result) ? fbsql_free_result($result) : false; return is_resource($result) ? fbsql_free_result($result) : false;
} }
@ -334,7 +342,7 @@ class DB_fbsql extends DB_common
* @return int DB_OK on success. A DB_Error object if the driver * @return int DB_OK on success. A DB_Error object if the driver
* doesn't support auto-committing transactions. * doesn't support auto-committing transactions.
*/ */
function autoCommit($onoff=false) public function autoCommit($onoff=false)
{ {
if ($onoff) { if ($onoff) {
$this->query("SET COMMIT TRUE"); $this->query("SET COMMIT TRUE");
@ -351,7 +359,7 @@ class DB_fbsql extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function commit() public function commit()
{ {
@fbsql_commit($this->connection); @fbsql_commit($this->connection);
} }
@ -364,7 +372,7 @@ class DB_fbsql extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function rollback() public function rollback()
{ {
@fbsql_rollback($this->connection); @fbsql_rollback($this->connection);
} }
@ -385,7 +393,7 @@ class DB_fbsql extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($result) public function numCols($result)
{ {
$cols = @fbsql_num_fields($result); $cols = @fbsql_num_fields($result);
if (!$cols) { if (!$cols) {
@ -410,7 +418,7 @@ class DB_fbsql extends DB_common
* *
* @see DB_result::numRows() * @see DB_result::numRows()
*/ */
function numRows($result) public function numRows($result)
{ {
$rows = @fbsql_num_rows($result); $rows = @fbsql_num_rows($result);
if ($rows === null) { if ($rows === null) {
@ -429,7 +437,7 @@ class DB_fbsql extends DB_common
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
if ($this->_last_query_manip) { if ($this->_last_query_manip) {
$result = @fbsql_affected_rows($this->connection); $result = @fbsql_affected_rows($this->connection);
@ -437,7 +445,7 @@ class DB_fbsql extends DB_common
$result = 0; $result = 0;
} }
return $result; return $result;
} }
// }}} // }}}
// {{{ nextId() // {{{ nextId()
@ -455,7 +463,7 @@ class DB_fbsql extends DB_common
* @see DB_common::nextID(), DB_common::getSequenceName(), * @see DB_common::nextID(), DB_common::getSequenceName(),
* DB_fbsql::createSequence(), DB_fbsql::dropSequence() * DB_fbsql::createSequence(), DB_fbsql::dropSequence()
*/ */
function nextId($seq_name, $ondemand = true) public function nextId($seq_name, $ondemand = true)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
do { do {
@ -491,7 +499,7 @@ class DB_fbsql extends DB_common
* @see DB_common::createSequence(), DB_common::getSequenceName(), * @see DB_common::createSequence(), DB_common::getSequenceName(),
* DB_fbsql::nextID(), DB_fbsql::dropSequence() * DB_fbsql::nextID(), DB_fbsql::dropSequence()
*/ */
function createSequence($seq_name) public function createSequence($seq_name)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
$res = $this->query('CREATE TABLE ' . $seqname $res = $this->query('CREATE TABLE ' . $seqname
@ -516,7 +524,7 @@ class DB_fbsql extends DB_common
* @see DB_common::dropSequence(), DB_common::getSequenceName(), * @see DB_common::dropSequence(), DB_common::getSequenceName(),
* DB_fbsql::nextID(), DB_fbsql::createSequence() * DB_fbsql::nextID(), DB_fbsql::createSequence()
*/ */
function dropSequence($seq_name) public function dropSequence($seq_name)
{ {
return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name) return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name)
. ' RESTRICT'); . ' RESTRICT');
@ -541,14 +549,20 @@ class DB_fbsql extends DB_common
* *
* @access protected * @access protected
*/ */
function modifyLimitQuery($query, $from, $count, $params = array()) public function modifyLimitQuery($query, $from, $count, $params = array())
{ {
if (DB::isManip($query) || $this->_next_query_manip) { if (DB::isManip($query) || $this->_next_query_manip) {
return preg_replace('/^([\s(])*SELECT/i', return preg_replace(
"\\1SELECT TOP($count)", $query); '/^([\s(])*SELECT/i',
"\\1SELECT TOP($count)",
$query
);
} else { } else {
return preg_replace('/([\s(])*SELECT/i', return preg_replace(
"\\1SELECT TOP($from, $count)", $query); '/([\s(])*SELECT/i',
"\\1SELECT TOP($from, $count)",
$query
);
} }
} }
@ -564,7 +578,8 @@ class DB_fbsql extends DB_common
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since release 1.7.8. * @since Method available since release 1.7.8.
*/ */
function quoteBoolean($boolean) { public function quoteBoolean($boolean)
{
return $boolean ? 'TRUE' : 'FALSE'; return $boolean ? 'TRUE' : 'FALSE';
} }
@ -580,7 +595,8 @@ class DB_fbsql extends DB_common
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since release 1.7.8. * @since Method available since release 1.7.8.
*/ */
function quoteFloat($float) { public function quoteFloat($float)
{
return $this->escapeSimple(str_replace(',', '.', strval(floatval($float)))); return $this->escapeSimple(str_replace(',', '.', strval(floatval($float))));
} }
@ -599,13 +615,18 @@ class DB_fbsql extends DB_common
* @see DB_common::raiseError(), * @see DB_common::raiseError(),
* DB_fbsql::errorNative(), DB_common::errorCode() * DB_fbsql::errorNative(), DB_common::errorCode()
*/ */
function fbsqlRaiseError($errno = null) public function fbsqlRaiseError($errno = null)
{ {
if ($errno === null) { if ($errno === null) {
$errno = $this->errorCode(fbsql_errno($this->connection)); $errno = $this->errorCode(fbsql_errno($this->connection));
} }
return $this->raiseError($errno, null, null, null, return $this->raiseError(
@fbsql_error($this->connection)); $errno,
null,
null,
null,
@fbsql_error($this->connection)
);
} }
// }}} // }}}
@ -616,7 +637,7 @@ class DB_fbsql extends DB_common
* *
* @return int the DBMS' error code * @return int the DBMS' error code
*/ */
function errorNative() public function errorNative()
{ {
return @fbsql_errno($this->connection); return @fbsql_errno($this->connection);
} }
@ -639,15 +660,18 @@ class DB_fbsql extends DB_common
* *
* @see DB_common::tableInfo() * @see DB_common::tableInfo()
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
if (is_string($result)) { if (is_string($result)) {
/* /*
* Probably received a table name. * Probably received a table name.
* Create a result resource identifier. * Create a result resource identifier.
*/ */
$id = @fbsql_list_fields($this->dsn['database'], $id = @fbsql_list_fields(
$result, $this->connection); $this->dsn['database'],
$result,
$this->connection
);
$got_string = true; $got_string = true;
} elseif (isset($result->result)) { } elseif (isset($result->result)) {
/* /*
@ -720,7 +744,7 @@ class DB_fbsql extends DB_common
* @access protected * @access protected
* @see DB_common::getListOf() * @see DB_common::getListOf()
*/ */
function getSpecialQuery($type) public function getSpecialQuery($type)
{ {
switch ($type) { switch ($type) {
case 'tables': case 'tables':
@ -736,7 +760,7 @@ class DB_fbsql extends DB_common
. ' "table_type" = \'VIEW\'' . ' "table_type" = \'VIEW\''
. ' AND "schema_name" = current_schema'; . ' AND "schema_name" = current_schema';
case 'users': case 'users':
return 'SELECT "user_name" from information_schema.users'; return 'SELECT "user_name" from information_schema.users';
case 'functions': case 'functions':
return 'SELECT "routine_name" FROM' return 'SELECT "routine_name" FROM'
. ' information_schema.psm_routines' . ' information_schema.psm_routines'
@ -765,5 +789,3 @@ class DB_fbsql extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -61,13 +61,13 @@ class DB_ibase extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'ibase'; public $phptype = 'ibase';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'ibase'; public $dbsyntax = 'ibase';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -84,7 +84,7 @@ class DB_ibase extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => false, 'limit' => false,
'new_link' => false, 'new_link' => false,
'numrows' => 'emulate', 'numrows' => 'emulate',
@ -98,7 +98,7 @@ class DB_ibase extends DB_common
* A mapping of native error codes to DB error codes * A mapping of native error codes to DB error codes
* @var array * @var array
*/ */
var $errorcode_map = array( public $errorcode_map = array(
-104 => DB_ERROR_SYNTAX, -104 => DB_ERROR_SYNTAX,
-150 => DB_ERROR_ACCESS_VIOLATION, -150 => DB_ERROR_ACCESS_VIOLATION,
-151 => DB_ERROR_ACCESS_VIOLATION, -151 => DB_ERROR_ACCESS_VIOLATION,
@ -134,13 +134,13 @@ class DB_ibase extends DB_common
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
/** /**
@ -148,14 +148,14 @@ class DB_ibase extends DB_common
* @var integer * @var integer
* @access private * @access private
*/ */
var $affected = 0; public $affected = 0;
/** /**
* Should data manipulation queries be committed automatically? * Should data manipulation queries be committed automatically?
* @var bool * @var bool
* @access private * @access private
*/ */
var $autocommit = true; public $autocommit = true;
/** /**
* The prepared statement handle from the most recently executed statement * The prepared statement handle from the most recently executed statement
@ -166,14 +166,14 @@ class DB_ibase extends DB_common
* *
* @var resource * @var resource
*/ */
var $last_stmt; public $last_stmt;
/** /**
* Is the given prepared statement a data manipulation query? * Is the given prepared statement a data manipulation query?
* @var array * @var array
* @access private * @access private
*/ */
var $manip_query = array(); public $manip_query = array();
// }}} // }}}
@ -184,7 +184,7 @@ class DB_ibase extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -212,7 +212,7 @@ class DB_ibase extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('interbase')) { if (!PEAR::loadExtension('interbase')) {
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
@ -255,7 +255,7 @@ class DB_ibase extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
$ret = @ibase_close($this->connection); $ret = @ibase_close($this->connection);
$this->connection = null; $this->connection = null;
@ -274,7 +274,7 @@ class DB_ibase extends DB_common
* + the DB_OK constant for other successful queries * + the DB_OK constant for other successful queries
* + a DB_Error object on failure * + a DB_Error object on failure
*/ */
function simpleQuery($query) public function simpleQuery($query)
{ {
$ismanip = $this->_checkManip($query); $ismanip = $this->_checkManip($query);
$this->last_query = $query; $this->last_query = $query;
@ -317,11 +317,14 @@ class DB_ibase extends DB_common
* *
* @access protected * @access protected
*/ */
function modifyLimitQuery($query, $from, $count, $params = array()) public function modifyLimitQuery($query, $from, $count, $params = array())
{ {
if ($this->dsn['dbsyntax'] == 'firebird') { if ($this->dsn['dbsyntax'] == 'firebird') {
$query = preg_replace('/^([\s(])*SELECT/i', $query = preg_replace(
"SELECT FIRST $count SKIP $from", $query); '/^([\s(])*SELECT/i',
"SELECT FIRST $count SKIP $from",
$query
);
} }
return $query; return $query;
} }
@ -338,7 +341,7 @@ class DB_ibase extends DB_common
* *
* @return true if a result is available otherwise return false * @return true if a result is available otherwise return false
*/ */
function nextResult($result) public function nextResult($result)
{ {
return false; return false;
} }
@ -366,7 +369,7 @@ class DB_ibase extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
if ($rownum !== null) { if ($rownum !== null) {
return $this->ibaseRaiseError(DB_ERROR_NOT_CAPABLE); return $this->ibaseRaiseError(DB_ERROR_NOT_CAPABLE);
@ -411,7 +414,7 @@ class DB_ibase extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult($result) public function freeResult($result)
{ {
return is_resource($result) ? ibase_free_result($result) : false; return is_resource($result) ? ibase_free_result($result) : false;
} }
@ -419,7 +422,7 @@ class DB_ibase extends DB_common
// }}} // }}}
// {{{ freeQuery() // {{{ freeQuery()
function freeQuery($query) public function freeQuery($query)
{ {
return is_resource($query) ? ibase_free_query($query) : false; return is_resource($query) ? ibase_free_query($query) : false;
} }
@ -434,7 +437,7 @@ class DB_ibase extends DB_common
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
if (is_integer($this->affected)) { if (is_integer($this->affected)) {
return $this->affected; return $this->affected;
@ -458,7 +461,7 @@ class DB_ibase extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($result) public function numCols($result)
{ {
$cols = @ibase_num_fields($result); $cols = @ibase_num_fields($result);
if (!$cols) { if (!$cols) {
@ -492,10 +495,14 @@ class DB_ibase extends DB_common
* @param string $query query to be prepared * @param string $query query to be prepared
* @return mixed DB statement resource on success. DB_Error on failure. * @return mixed DB statement resource on success. DB_Error on failure.
*/ */
function prepare($query) public function prepare($query)
{ {
$tokens = preg_split('/((?<!\\\)[&?!])/', $query, -1, $tokens = preg_split(
PREG_SPLIT_DELIM_CAPTURE); '/((?<!\\\)[&?!])/',
$query,
-1,
PREG_SPLIT_DELIM_CAPTURE
);
$token = 0; $token = 0;
$types = array(); $types = array();
$newquery = ''; $newquery = '';
@ -548,7 +555,7 @@ class DB_ibase extends DB_common
* @see DB_ibase::prepare() * @see DB_ibase::prepare()
* @access public * @access public
*/ */
function &execute($stmt, $data = array()) public function &execute($stmt, $data = array())
{ {
$data = (array)$data; $data = (array)$data;
$this->last_parameters = $data; $this->last_parameters = $data;
@ -618,7 +625,7 @@ class DB_ibase extends DB_common
* *
* @see DB_ibase::prepare() * @see DB_ibase::prepare()
*/ */
function freePrepared($stmt, $free_resource = true) public function freePrepared($stmt, $free_resource = true)
{ {
if (!is_resource($stmt)) { if (!is_resource($stmt)) {
return false; return false;
@ -643,7 +650,7 @@ class DB_ibase extends DB_common
* @return int DB_OK on success. A DB_Error object if the driver * @return int DB_OK on success. A DB_Error object if the driver
* doesn't support auto-committing transactions. * doesn't support auto-committing transactions.
*/ */
function autoCommit($onoff = false) public function autoCommit($onoff = false)
{ {
$this->autocommit = $onoff ? 1 : 0; $this->autocommit = $onoff ? 1 : 0;
return DB_OK; return DB_OK;
@ -657,7 +664,7 @@ class DB_ibase extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function commit() public function commit()
{ {
return @ibase_commit($this->connection); return @ibase_commit($this->connection);
} }
@ -670,7 +677,7 @@ class DB_ibase extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function rollback() public function rollback()
{ {
return @ibase_rollback($this->connection); return @ibase_rollback($this->connection);
} }
@ -678,7 +685,7 @@ class DB_ibase extends DB_common
// }}} // }}}
// {{{ transactionInit() // {{{ transactionInit()
function transactionInit($trans_args = 0) public function transactionInit($trans_args = 0)
{ {
return $trans_args return $trans_args
? @ibase_trans($trans_args, $this->connection) ? @ibase_trans($trans_args, $this->connection)
@ -701,7 +708,7 @@ class DB_ibase extends DB_common
* @see DB_common::nextID(), DB_common::getSequenceName(), * @see DB_common::nextID(), DB_common::getSequenceName(),
* DB_ibase::createSequence(), DB_ibase::dropSequence() * DB_ibase::createSequence(), DB_ibase::dropSequence()
*/ */
function nextId($seq_name, $ondemand = true) public function nextId($seq_name, $ondemand = true)
{ {
$sqn = strtoupper($this->getSequenceName($seq_name)); $sqn = strtoupper($this->getSequenceName($seq_name));
$repeat = 0; $repeat = 0;
@ -742,7 +749,7 @@ class DB_ibase extends DB_common
* @see DB_common::createSequence(), DB_common::getSequenceName(), * @see DB_common::createSequence(), DB_common::getSequenceName(),
* DB_ibase::nextID(), DB_ibase::dropSequence() * DB_ibase::nextID(), DB_ibase::dropSequence()
*/ */
function createSequence($seq_name) public function createSequence($seq_name)
{ {
$sqn = strtoupper($this->getSequenceName($seq_name)); $sqn = strtoupper($this->getSequenceName($seq_name));
$this->pushErrorHandling(PEAR_ERROR_RETURN); $this->pushErrorHandling(PEAR_ERROR_RETURN);
@ -765,7 +772,7 @@ class DB_ibase extends DB_common
* @see DB_common::dropSequence(), DB_common::getSequenceName(), * @see DB_common::dropSequence(), DB_common::getSequenceName(),
* DB_ibase::nextID(), DB_ibase::createSequence() * DB_ibase::nextID(), DB_ibase::createSequence()
*/ */
function dropSequence($seq_name) public function dropSequence($seq_name)
{ {
return $this->query('DELETE FROM RDB$GENERATORS ' return $this->query('DELETE FROM RDB$GENERATORS '
. "WHERE RDB\$GENERATOR_NAME='" . "WHERE RDB\$GENERATOR_NAME='"
@ -789,7 +796,7 @@ class DB_ibase extends DB_common
* *
* @access private * @access private
*/ */
function _ibaseFieldFlags($field_name, $table_name) public function _ibaseFieldFlags($field_name, $table_name)
{ {
$sql = 'SELECT R.RDB$CONSTRAINT_TYPE CTYPE' $sql = 'SELECT R.RDB$CONSTRAINT_TYPE CTYPE'
.' FROM RDB$INDEX_SEGMENTS I' .' FROM RDB$INDEX_SEGMENTS I'
@ -860,7 +867,7 @@ class DB_ibase extends DB_common
* @see DB_common::raiseError(), * @see DB_common::raiseError(),
* DB_ibase::errorNative(), DB_ibase::errorCode() * DB_ibase::errorNative(), DB_ibase::errorCode()
*/ */
function &ibaseRaiseError($errno = null) public function &ibaseRaiseError($errno = null)
{ {
if ($errno === null) { if ($errno === null) {
$errno = $this->errorCode($this->errorNative()); $errno = $this->errorCode($this->errorNative());
@ -879,13 +886,16 @@ class DB_ibase extends DB_common
* *
* @since Method available since Release 1.7.0 * @since Method available since Release 1.7.0
*/ */
function errorNative() public function errorNative()
{ {
if (function_exists('ibase_errcode')) { if (function_exists('ibase_errcode')) {
return @ibase_errcode(); return @ibase_errcode();
} }
if (preg_match('/^Dynamic SQL Error SQL error code = ([0-9-]+)/i', if (preg_match(
@ibase_errmsg(), $m)) { '/^Dynamic SQL Error SQL error code = ([0-9-]+)/i',
@ibase_errmsg(),
$m
)) {
return (int)$m[1]; return (int)$m[1];
} }
return null; return null;
@ -905,7 +915,7 @@ class DB_ibase extends DB_common
* *
* @since Method available since Release 1.7.0 * @since Method available since Release 1.7.0
*/ */
function errorCode($nativecode = null) public function errorCode($nativecode = null)
{ {
if (isset($this->errorcode_map[$nativecode])) { if (isset($this->errorcode_map[$nativecode])) {
return $this->errorcode_map[$nativecode]; return $this->errorcode_map[$nativecode];
@ -969,15 +979,17 @@ class DB_ibase extends DB_common
* *
* @see DB_common::tableInfo() * @see DB_common::tableInfo()
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
if (is_string($result)) { if (is_string($result)) {
/* /*
* Probably received a table name. * Probably received a table name.
* Create a result resource identifier. * Create a result resource identifier.
*/ */
$id = @ibase_query($this->connection, $id = @ibase_query(
"SELECT * FROM $result WHERE 1=0"); $this->connection,
"SELECT * FROM $result WHERE 1=0"
);
$got_string = true; $got_string = true;
} elseif (isset($result->result)) { } elseif (isset($result->result)) {
/* /*
@ -1053,7 +1065,7 @@ class DB_ibase extends DB_common
* @access protected * @access protected
* @see DB_common::getListOf() * @see DB_common::getListOf()
*/ */
function getSpecialQuery($type) public function getSpecialQuery($type)
{ {
switch ($type) { switch ($type) {
case 'tables': case 'tables':
@ -1069,7 +1081,6 @@ class DB_ibase extends DB_common
} }
// }}} // }}}
} }
/* /*
@ -1078,5 +1089,3 @@ class DB_ibase extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -59,13 +59,13 @@ class DB_ifx extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'ifx'; public $phptype = 'ifx';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'ifx'; public $dbsyntax = 'ifx';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -80,7 +80,7 @@ class DB_ifx extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => 'emulate', 'limit' => 'emulate',
'new_link' => false, 'new_link' => false,
'numrows' => 'emulate', 'numrows' => 'emulate',
@ -94,7 +94,7 @@ class DB_ifx extends DB_common
* A mapping of native error codes to DB error codes * A mapping of native error codes to DB error codes
* @var array * @var array
*/ */
var $errorcode_map = array( public $errorcode_map = array(
'-201' => DB_ERROR_SYNTAX, '-201' => DB_ERROR_SYNTAX,
'-206' => DB_ERROR_NOSUCHTABLE, '-206' => DB_ERROR_NOSUCHTABLE,
'-217' => DB_ERROR_NOSUCHFIELD, '-217' => DB_ERROR_NOSUCHFIELD,
@ -128,13 +128,13 @@ class DB_ifx extends DB_common
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
/** /**
@ -142,7 +142,7 @@ class DB_ifx extends DB_common
* @var bool * @var bool
* @access private * @access private
*/ */
var $autocommit = true; public $autocommit = true;
/** /**
* The quantity of transactions begun * The quantity of transactions begun
@ -153,14 +153,14 @@ class DB_ifx extends DB_common
* @var integer * @var integer
* @access private * @access private
*/ */
var $transaction_opcount = 0; public $transaction_opcount = 0;
/** /**
* The number of rows affected by a data manipulation query * The number of rows affected by a data manipulation query
* @var integer * @var integer
* @access private * @access private
*/ */
var $affected = 0; public $affected = 0;
// }}} // }}}
@ -171,7 +171,7 @@ class DB_ifx extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -189,11 +189,10 @@ class DB_ifx extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('informix') && if (!PEAR::loadExtension('informix') &&
!PEAR::loadExtension('Informix')) !PEAR::loadExtension('Informix')) {
{
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
} }
@ -224,7 +223,7 @@ class DB_ifx extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
$ret = @ifx_close($this->connection); $ret = @ifx_close($this->connection);
$this->connection = null; $this->connection = null;
@ -243,7 +242,7 @@ class DB_ifx extends DB_common
* + the DB_OK constant for other successful queries * + the DB_OK constant for other successful queries
* + a DB_Error object on failure * + a DB_Error object on failure
*/ */
function simpleQuery($query) public function simpleQuery($query)
{ {
$ismanip = $this->_checkManip($query); $ismanip = $this->_checkManip($query);
$this->last_query = $query; $this->last_query = $query;
@ -294,7 +293,7 @@ class DB_ifx extends DB_common
* *
* @return true if a result is available otherwise return false * @return true if a result is available otherwise return false
*/ */
function nextResult($result) public function nextResult($result)
{ {
return false; return false;
} }
@ -309,7 +308,7 @@ class DB_ifx extends DB_common
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
if ($this->_last_query_manip) { if ($this->_last_query_manip) {
return $this->affected; return $this->affected;
@ -341,7 +340,7 @@ class DB_ifx extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
if (($rownum !== null) && ($rownum < 0)) { if (($rownum !== null) && ($rownum < 0)) {
return null; return null;
@ -367,8 +366,7 @@ class DB_ifx extends DB_common
} }
$arr = $order; $arr = $order;
} elseif ($fetchmode == DB_FETCHMODE_ASSOC && } elseif ($fetchmode == DB_FETCHMODE_ASSOC &&
$this->options['portability'] & DB_PORTABILITY_LOWERCASE) $this->options['portability'] & DB_PORTABILITY_LOWERCASE) {
{
$arr = array_change_key_case($arr, CASE_LOWER); $arr = array_change_key_case($arr, CASE_LOWER);
} }
if ($this->options['portability'] & DB_PORTABILITY_RTRIM) { if ($this->options['portability'] & DB_PORTABILITY_RTRIM) {
@ -396,7 +394,7 @@ class DB_ifx extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($result) public function numCols($result)
{ {
if (!$cols = @ifx_num_fields($result)) { if (!$cols = @ifx_num_fields($result)) {
return $this->ifxRaiseError(); return $this->ifxRaiseError();
@ -420,7 +418,7 @@ class DB_ifx extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult($result) public function freeResult($result)
{ {
return is_resource($result) ? ifx_free_result($result) : false; return is_resource($result) ? ifx_free_result($result) : false;
} }
@ -436,7 +434,7 @@ class DB_ifx extends DB_common
* @return int DB_OK on success. A DB_Error object if the driver * @return int DB_OK on success. A DB_Error object if the driver
* doesn't support auto-committing transactions. * doesn't support auto-committing transactions.
*/ */
function autoCommit($onoff = true) public function autoCommit($onoff = true)
{ {
// XXX if $this->transaction_opcount > 0, we should probably // XXX if $this->transaction_opcount > 0, we should probably
// issue a warning here. // issue a warning here.
@ -452,7 +450,7 @@ class DB_ifx extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function commit() public function commit()
{ {
if ($this->transaction_opcount > 0) { if ($this->transaction_opcount > 0) {
$result = @ifx_query('COMMIT WORK', $this->connection); $result = @ifx_query('COMMIT WORK', $this->connection);
@ -472,7 +470,7 @@ class DB_ifx extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function rollback() public function rollback()
{ {
if ($this->transaction_opcount > 0) { if ($this->transaction_opcount > 0) {
$result = @ifx_query('ROLLBACK WORK', $this->connection); $result = @ifx_query('ROLLBACK WORK', $this->connection);
@ -499,13 +497,18 @@ class DB_ifx extends DB_common
* @see DB_common::raiseError(), * @see DB_common::raiseError(),
* DB_ifx::errorNative(), DB_ifx::errorCode() * DB_ifx::errorNative(), DB_ifx::errorCode()
*/ */
function ifxRaiseError($errno = null) public function ifxRaiseError($errno = null)
{ {
if ($errno === null) { if ($errno === null) {
$errno = $this->errorCode(ifx_error()); $errno = $this->errorCode(ifx_error());
} }
return $this->raiseError($errno, null, null, null, return $this->raiseError(
$this->errorNative()); $errno,
null,
null,
null,
$this->errorNative()
);
} }
// }}} // }}}
@ -516,7 +519,7 @@ class DB_ifx extends DB_common
* *
* @return string the DBMS' error code and message * @return string the DBMS' error code and message
*/ */
function errorNative() public function errorNative()
{ {
return @ifx_error() . ' ' . @ifx_errormsg(); return @ifx_error() . ' ' . @ifx_errormsg();
} }
@ -534,7 +537,7 @@ class DB_ifx extends DB_common
* @return int a portable DB error code, or DB_ERROR if this DB * @return int a portable DB error code, or DB_ERROR if this DB
* implementation has no mapping for the given error code. * implementation has no mapping for the given error code.
*/ */
function errorCode($nativecode) public function errorCode($nativecode)
{ {
if (preg_match('/SQLCODE=(.*)]/', $nativecode, $match)) { if (preg_match('/SQLCODE=(.*)]/', $nativecode, $match)) {
$code = $match[1]; $code = $match[1];
@ -570,15 +573,17 @@ class DB_ifx extends DB_common
* @see DB_common::tableInfo() * @see DB_common::tableInfo()
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
if (is_string($result)) { if (is_string($result)) {
/* /*
* Probably received a table name. * Probably received a table name.
* Create a result resource identifier. * Create a result resource identifier.
*/ */
$id = @ifx_query("SELECT * FROM $result WHERE 1=0", $id = @ifx_query(
$this->connection); "SELECT * FROM $result WHERE 1=0",
$this->connection
);
$got_string = true; $got_string = true;
} elseif (isset($result->result)) { } elseif (isset($result->result)) {
/* /*
@ -659,7 +664,7 @@ class DB_ifx extends DB_common
* @access protected * @access protected
* @see DB_common::getListOf() * @see DB_common::getListOf()
*/ */
function getSpecialQuery($type) public function getSpecialQuery($type)
{ {
switch ($type) { switch ($type) {
case 'tables': case 'tables':
@ -670,7 +675,6 @@ class DB_ifx extends DB_common
} }
// }}} // }}}
} }
/* /*
@ -679,5 +683,3 @@ class DB_ifx extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -59,13 +59,13 @@ class DB_msql extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'msql'; public $phptype = 'msql';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'msql'; public $dbsyntax = 'msql';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -80,7 +80,7 @@ class DB_msql extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => 'emulate', 'limit' => 'emulate',
'new_link' => false, 'new_link' => false,
'numrows' => true, 'numrows' => true,
@ -94,20 +94,20 @@ class DB_msql extends DB_common
* A mapping of native error codes to DB error codes * A mapping of native error codes to DB error codes
* @var array * @var array
*/ */
var $errorcode_map = array( public $errorcode_map = array(
); );
/** /**
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
/** /**
@ -119,7 +119,7 @@ class DB_msql extends DB_common
* @var resource * @var resource
* @access private * @access private
*/ */
var $_result; public $_result;
// }}} // }}}
@ -130,7 +130,7 @@ class DB_msql extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -146,13 +146,13 @@ class DB_msql extends DB_common
* Example of how to connect: * Example of how to connect:
* <code> * <code>
* require_once 'DB.php'; * require_once 'DB.php';
* *
* // $dsn = 'msql://hostname/dbname'; // use a TCP connection * // $dsn = 'msql://hostname/dbname'; // use a TCP connection
* $dsn = 'msql:///dbname'; // use a socket * $dsn = 'msql:///dbname'; // use a socket
* $options = array( * $options = array(
* 'portability' => DB_PORTABILITY_ALL, * 'portability' => DB_PORTABILITY_ALL,
* ); * );
* *
* $db = DB::connect($dsn, $options); * $db = DB::connect($dsn, $options);
* if (PEAR::isError($db)) { * if (PEAR::isError($db)) {
* die($db->getMessage()); * die($db->getMessage());
@ -164,7 +164,7 @@ class DB_msql extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('msql')) { if (!PEAR::loadExtension('msql')) {
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
@ -187,24 +187,36 @@ class DB_msql extends DB_common
$ini = ini_get('track_errors'); $ini = ini_get('track_errors');
$php_errormsg = ''; $php_errormsg = '';
if ($ini) { if ($ini) {
$this->connection = @call_user_func_array($connect_function, $this->connection = @call_user_func_array(
$params); $connect_function,
$params
);
} else { } else {
@ini_set('track_errors', 1); @ini_set('track_errors', 1);
$this->connection = @call_user_func_array($connect_function, $this->connection = @call_user_func_array(
$params); $connect_function,
$params
);
@ini_set('track_errors', $ini); @ini_set('track_errors', $ini);
} }
if (!$this->connection) { if (!$this->connection) {
if (($err = @msql_error()) != '') { if (($err = @msql_error()) != '') {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
$err); null,
null,
null,
$err
);
} else { } else {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
$php_errormsg); null,
null,
null,
$php_errormsg
);
} }
} }
@ -222,7 +234,7 @@ class DB_msql extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
$ret = @msql_close($this->connection); $ret = @msql_close($this->connection);
$this->connection = null; $this->connection = null;
@ -241,7 +253,7 @@ class DB_msql extends DB_common
* + the DB_OK constant for other successful queries * + the DB_OK constant for other successful queries
* + a DB_Error object on failure * + a DB_Error object on failure
*/ */
function simpleQuery($query) public function simpleQuery($query)
{ {
$this->last_query = $query; $this->last_query = $query;
$query = $this->modifyQuery($query); $query = $this->modifyQuery($query);
@ -273,7 +285,7 @@ class DB_msql extends DB_common
* *
* @return true if a result is available otherwise return false * @return true if a result is available otherwise return false
*/ */
function nextResult($result) public function nextResult($result)
{ {
return false; return false;
} }
@ -305,7 +317,7 @@ class DB_msql extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
if ($rownum !== null) { if ($rownum !== null) {
if (!@msql_data_seek($result, $rownum)) { if (!@msql_data_seek($result, $rownum)) {
@ -348,7 +360,7 @@ class DB_msql extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult($result) public function freeResult($result)
{ {
return is_resource($result) ? msql_free_result($result) : false; return is_resource($result) ? msql_free_result($result) : false;
} }
@ -369,7 +381,7 @@ class DB_msql extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($result) public function numCols($result)
{ {
$cols = @msql_num_fields($result); $cols = @msql_num_fields($result);
if (!$cols) { if (!$cols) {
@ -394,7 +406,7 @@ class DB_msql extends DB_common
* *
* @see DB_result::numRows() * @see DB_result::numRows()
*/ */
function numRows($result) public function numRows($result)
{ {
$rows = @msql_num_rows($result); $rows = @msql_num_rows($result);
if ($rows === false) { if ($rows === false) {
@ -413,7 +425,7 @@ class DB_msql extends DB_common
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
if (!$this->_result) { if (!$this->_result) {
return 0; return 0;
@ -437,7 +449,7 @@ class DB_msql extends DB_common
* @see DB_common::nextID(), DB_common::getSequenceName(), * @see DB_common::nextID(), DB_common::getSequenceName(),
* DB_msql::createSequence(), DB_msql::dropSequence() * DB_msql::createSequence(), DB_msql::dropSequence()
*/ */
function nextId($seq_name, $ondemand = true) public function nextId($seq_name, $ondemand = true)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
$repeat = false; $repeat = false;
@ -482,7 +494,7 @@ class DB_msql extends DB_common
* @see DB_common::createSequence(), DB_common::getSequenceName(), * @see DB_common::createSequence(), DB_common::getSequenceName(),
* DB_msql::nextID(), DB_msql::dropSequence() * DB_msql::nextID(), DB_msql::dropSequence()
*/ */
function createSequence($seq_name) public function createSequence($seq_name)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
$res = $this->query('CREATE TABLE ' . $seqname $res = $this->query('CREATE TABLE ' . $seqname
@ -507,7 +519,7 @@ class DB_msql extends DB_common
* @see DB_common::dropSequence(), DB_common::getSequenceName(), * @see DB_common::dropSequence(), DB_common::getSequenceName(),
* DB_msql::nextID(), DB_msql::createSequence() * DB_msql::nextID(), DB_msql::createSequence()
*/ */
function dropSequence($seq_name) public function dropSequence($seq_name)
{ {
return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name)); return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name));
} }
@ -525,7 +537,7 @@ class DB_msql extends DB_common
* @see DB_common::quoteIdentifier() * @see DB_common::quoteIdentifier()
* @since Method available since Release 1.7.0 * @since Method available since Release 1.7.0
*/ */
function quoteIdentifier($str) public function quoteIdentifier($str)
{ {
return $this->raiseError(DB_ERROR_UNSUPPORTED); return $this->raiseError(DB_ERROR_UNSUPPORTED);
} }
@ -542,7 +554,8 @@ class DB_msql extends DB_common
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since release 1.7.8. * @since Method available since release 1.7.8.
*/ */
function quoteFloat($float) { public function quoteFloat($float)
{
return $this->escapeSimple(str_replace(',', '.', strval(floatval($float)))); return $this->escapeSimple(str_replace(',', '.', strval(floatval($float))));
} }
@ -559,7 +572,7 @@ class DB_msql extends DB_common
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since Release 1.7.0 * @since Method available since Release 1.7.0
*/ */
function escapeSimple($str) public function escapeSimple($str)
{ {
return addslashes($str); return addslashes($str);
} }
@ -579,7 +592,7 @@ class DB_msql extends DB_common
* @see DB_common::raiseError(), * @see DB_common::raiseError(),
* DB_msql::errorNative(), DB_msql::errorCode() * DB_msql::errorNative(), DB_msql::errorCode()
*/ */
function msqlRaiseError($errno = null) public function msqlRaiseError($errno = null)
{ {
$native = $this->errorNative(); $native = $this->errorNative();
if ($errno === null) { if ($errno === null) {
@ -596,7 +609,7 @@ class DB_msql extends DB_common
* *
* @return string the DBMS' error message * @return string the DBMS' error message
*/ */
function errorNative() public function errorNative()
{ {
return @msql_error(); return @msql_error();
} }
@ -611,7 +624,7 @@ class DB_msql extends DB_common
* *
* @return integer the error number from a DB_ERROR* constant * @return integer the error number from a DB_ERROR* constant
*/ */
function errorCode($errormsg) public function errorCode($errormsg)
{ {
static $error_regexps; static $error_regexps;
@ -702,15 +715,17 @@ class DB_msql extends DB_common
* *
* @see DB_common::setOption() * @see DB_common::setOption()
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
if (is_string($result)) { if (is_string($result)) {
/* /*
* Probably received a table name. * Probably received a table name.
* Create a result resource identifier. * Create a result resource identifier.
*/ */
$id = @msql_query("SELECT * FROM $result", $id = @msql_query(
$this->connection); "SELECT * FROM $result",
$this->connection
);
$got_string = true; $got_string = true;
} elseif (isset($result->result)) { } elseif (isset($result->result)) {
/* /*
@ -794,15 +809,17 @@ class DB_msql extends DB_common
* @access protected * @access protected
* @see DB_common::getListOf() * @see DB_common::getListOf()
*/ */
function getSpecialQuery($type) public function getSpecialQuery($type)
{ {
switch ($type) { switch ($type) {
case 'databases': case 'databases':
$id = @msql_list_dbs($this->connection); $id = @msql_list_dbs($this->connection);
break; break;
case 'tables': case 'tables':
$id = @msql_list_tables($this->dsn['database'], $id = @msql_list_tables(
$this->connection); $this->dsn['database'],
$this->connection
);
break; break;
default: default:
return null; return null;
@ -818,7 +835,6 @@ class DB_msql extends DB_common
} }
// }}} // }}}
} }
/* /*
@ -827,5 +843,3 @@ class DB_msql extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -60,13 +60,13 @@ class DB_mssql extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'mssql'; public $phptype = 'mssql';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'mssql'; public $dbsyntax = 'mssql';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -81,7 +81,7 @@ class DB_mssql extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => 'emulate', 'limit' => 'emulate',
'new_link' => false, 'new_link' => false,
'numrows' => true, 'numrows' => true,
@ -96,7 +96,7 @@ class DB_mssql extends DB_common
* @var array * @var array
*/ */
// XXX Add here error codes ie: 'S100E' => DB_ERROR_SYNTAX // XXX Add here error codes ie: 'S100E' => DB_ERROR_SYNTAX
var $errorcode_map = array( public $errorcode_map = array(
102 => DB_ERROR_SYNTAX, 102 => DB_ERROR_SYNTAX,
110 => DB_ERROR_VALUE_COUNT_ON_ROW, 110 => DB_ERROR_VALUE_COUNT_ON_ROW,
155 => DB_ERROR_NOSUCHFIELD, 155 => DB_ERROR_NOSUCHFIELD,
@ -137,13 +137,13 @@ class DB_mssql extends DB_common
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
/** /**
@ -151,7 +151,7 @@ class DB_mssql extends DB_common
* @var bool * @var bool
* @access private * @access private
*/ */
var $autocommit = true; public $autocommit = true;
/** /**
* The quantity of transactions begun * The quantity of transactions begun
@ -162,7 +162,7 @@ class DB_mssql extends DB_common
* @var integer * @var integer
* @access private * @access private
*/ */
var $transaction_opcount = 0; public $transaction_opcount = 0;
/** /**
* The database specified in the DSN * The database specified in the DSN
@ -172,7 +172,7 @@ class DB_mssql extends DB_common
* @var string * @var string
* @access private * @access private
*/ */
var $_db = null; public $_db = null;
// }}} // }}}
@ -183,7 +183,7 @@ class DB_mssql extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -201,11 +201,10 @@ class DB_mssql extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('mssql') && !PEAR::loadExtension('sybase') if (!PEAR::loadExtension('mssql') && !PEAR::loadExtension('sybase')
&& !PEAR::loadExtension('sybase_ct')) && !PEAR::loadExtension('sybase_ct')) {
{
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
} }
@ -229,15 +228,23 @@ class DB_mssql extends DB_common
$this->connection = @call_user_func_array($connect_function, $params); $this->connection = @call_user_func_array($connect_function, $params);
if (!$this->connection) { if (!$this->connection) {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
@mssql_get_last_message()); null,
null,
null,
@mssql_get_last_message()
);
} }
if ($dsn['database']) { if ($dsn['database']) {
if (!@mssql_select_db($dsn['database'], $this->connection)) { if (!@mssql_select_db($dsn['database'], $this->connection)) {
return $this->raiseError(DB_ERROR_NODBSELECTED, return $this->raiseError(
null, null, null, DB_ERROR_NODBSELECTED,
@mssql_get_last_message()); null,
null,
null,
@mssql_get_last_message()
);
} }
$this->_db = $dsn['database']; $this->_db = $dsn['database'];
} }
@ -252,7 +259,7 @@ class DB_mssql extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
$ret = @mssql_close($this->connection); $ret = @mssql_close($this->connection);
$this->connection = null; $this->connection = null;
@ -271,7 +278,7 @@ class DB_mssql extends DB_common
* + the DB_OK constant for other successful queries * + the DB_OK constant for other successful queries
* + a DB_Error object on failure * + a DB_Error object on failure
*/ */
function simpleQuery($query) public function simpleQuery($query)
{ {
$ismanip = $this->_checkManip($query); $ismanip = $this->_checkManip($query);
$this->last_query = $query; $this->last_query = $query;
@ -309,7 +316,7 @@ class DB_mssql extends DB_common
* *
* @return true if a result is available otherwise return false * @return true if a result is available otherwise return false
*/ */
function nextResult($result) public function nextResult($result)
{ {
return @mssql_next_result($result); return @mssql_next_result($result);
} }
@ -337,7 +344,7 @@ class DB_mssql extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
if ($rownum !== null) { if ($rownum !== null) {
if (!@mssql_data_seek($result, $rownum)) { if (!@mssql_data_seek($result, $rownum)) {
@ -380,7 +387,7 @@ class DB_mssql extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult($result) public function freeResult($result)
{ {
return is_resource($result) ? mssql_free_result($result) : false; return is_resource($result) ? mssql_free_result($result) : false;
} }
@ -401,7 +408,7 @@ class DB_mssql extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($result) public function numCols($result)
{ {
$cols = @mssql_num_fields($result); $cols = @mssql_num_fields($result);
if (!$cols) { if (!$cols) {
@ -426,7 +433,7 @@ class DB_mssql extends DB_common
* *
* @see DB_result::numRows() * @see DB_result::numRows()
*/ */
function numRows($result) public function numRows($result)
{ {
$rows = @mssql_num_rows($result); $rows = @mssql_num_rows($result);
if ($rows === false) { if ($rows === false) {
@ -446,7 +453,7 @@ class DB_mssql extends DB_common
* @return int DB_OK on success. A DB_Error object if the driver * @return int DB_OK on success. A DB_Error object if the driver
* doesn't support auto-committing transactions. * doesn't support auto-committing transactions.
*/ */
function autoCommit($onoff = false) public function autoCommit($onoff = false)
{ {
// XXX if $this->transaction_opcount > 0, we should probably // XXX if $this->transaction_opcount > 0, we should probably
// issue a warning here. // issue a warning here.
@ -462,7 +469,7 @@ class DB_mssql extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function commit() public function commit()
{ {
if ($this->transaction_opcount > 0) { if ($this->transaction_opcount > 0) {
if (!@mssql_select_db($this->_db, $this->connection)) { if (!@mssql_select_db($this->_db, $this->connection)) {
@ -485,7 +492,7 @@ class DB_mssql extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function rollback() public function rollback()
{ {
if ($this->transaction_opcount > 0) { if ($this->transaction_opcount > 0) {
if (!@mssql_select_db($this->_db, $this->connection)) { if (!@mssql_select_db($this->_db, $this->connection)) {
@ -510,7 +517,7 @@ class DB_mssql extends DB_common
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
if ($this->_last_query_manip) { if ($this->_last_query_manip) {
$res = @mssql_query('select @@rowcount', $this->connection); $res = @mssql_query('select @@rowcount', $this->connection);
@ -546,7 +553,7 @@ class DB_mssql extends DB_common
* @see DB_common::nextID(), DB_common::getSequenceName(), * @see DB_common::nextID(), DB_common::getSequenceName(),
* DB_mssql::createSequence(), DB_mssql::dropSequence() * DB_mssql::createSequence(), DB_mssql::dropSequence()
*/ */
function nextId($seq_name, $ondemand = true) public function nextId($seq_name, $ondemand = true)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
if (!@mssql_select_db($this->_db, $this->connection)) { if (!@mssql_select_db($this->_db, $this->connection)) {
@ -558,8 +565,7 @@ class DB_mssql extends DB_common
$result = $this->query("INSERT INTO $seqname (vapor) VALUES (0)"); $result = $this->query("INSERT INTO $seqname (vapor) VALUES (0)");
$this->popErrorHandling(); $this->popErrorHandling();
if ($ondemand && DB::isError($result) && if ($ondemand && DB::isError($result) &&
($result->getCode() == DB_ERROR || $result->getCode() == DB_ERROR_NOSUCHTABLE)) ($result->getCode() == DB_ERROR || $result->getCode() == DB_ERROR_NOSUCHTABLE)) {
{
$repeat = 1; $repeat = 1;
$result = $this->createSequence($seq_name); $result = $this->createSequence($seq_name);
if (DB::isError($result)) { if (DB::isError($result)) {
@ -597,7 +603,7 @@ class DB_mssql extends DB_common
* @see DB_common::createSequence(), DB_common::getSequenceName(), * @see DB_common::createSequence(), DB_common::getSequenceName(),
* DB_mssql::nextID(), DB_mssql::dropSequence() * DB_mssql::nextID(), DB_mssql::dropSequence()
*/ */
function createSequence($seq_name) public function createSequence($seq_name)
{ {
return $this->query('CREATE TABLE ' return $this->query('CREATE TABLE '
. $this->getSequenceName($seq_name) . $this->getSequenceName($seq_name)
@ -618,7 +624,7 @@ class DB_mssql extends DB_common
* @see DB_common::dropSequence(), DB_common::getSequenceName(), * @see DB_common::dropSequence(), DB_common::getSequenceName(),
* DB_mssql::nextID(), DB_mssql::createSequence() * DB_mssql::nextID(), DB_mssql::createSequence()
*/ */
function dropSequence($seq_name) public function dropSequence($seq_name)
{ {
return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name)); return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name));
} }
@ -635,7 +641,7 @@ class DB_mssql extends DB_common
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function escapeSimple($str) public function escapeSimple($str)
{ {
return str_replace( return str_replace(
array("'", "\\\r\n", "\\\n"), array("'", "\\\r\n", "\\\n"),
@ -657,7 +663,7 @@ class DB_mssql extends DB_common
* @see DB_common::quoteIdentifier() * @see DB_common::quoteIdentifier()
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function quoteIdentifier($str) public function quoteIdentifier($str)
{ {
return '[' . str_replace(']', ']]', $str) . ']'; return '[' . str_replace(']', ']]', $str) . ']';
} }
@ -677,14 +683,19 @@ class DB_mssql extends DB_common
* @see DB_common::raiseError(), * @see DB_common::raiseError(),
* DB_mssql::errorNative(), DB_mssql::errorCode() * DB_mssql::errorNative(), DB_mssql::errorCode()
*/ */
function mssqlRaiseError($code = null) public function mssqlRaiseError($code = null)
{ {
$message = @mssql_get_last_message(); $message = @mssql_get_last_message();
if (!$code) { if (!$code) {
$code = $this->errorNative(); $code = $this->errorNative();
} }
return $this->raiseError($this->errorCode($code, $message), return $this->raiseError(
null, null, null, "$code - $message"); $this->errorCode($code, $message),
null,
null,
null,
"$code - $message"
);
} }
// }}} // }}}
@ -695,7 +706,7 @@ class DB_mssql extends DB_common
* *
* @return int the DBMS' error code * @return int the DBMS' error code
*/ */
function errorNative() public function errorNative()
{ {
$res = @mssql_query('select @@ERROR as ErrorCode', $this->connection); $res = @mssql_query('select @@ERROR as ErrorCode', $this->connection);
if (!$res) { if (!$res) {
@ -717,15 +728,14 @@ class DB_mssql extends DB_common
* @return integer an error number from a DB error constant * @return integer an error number from a DB error constant
* @see errorNative() * @see errorNative()
*/ */
function errorCode($nativecode = null, $msg = '') public function errorCode($nativecode = null, $msg = '')
{ {
if (!$nativecode) { if (!$nativecode) {
$nativecode = $this->errorNative(); $nativecode = $this->errorNative();
} }
if (isset($this->errorcode_map[$nativecode])) { if (isset($this->errorcode_map[$nativecode])) {
if ($nativecode == 3701 if ($nativecode == 3701
&& preg_match('/Cannot drop the index/i', $msg)) && preg_match('/Cannot drop the index/i', $msg)) {
{
return DB_ERROR_NOT_FOUND; return DB_ERROR_NOT_FOUND;
} }
return $this->errorcode_map[$nativecode]; return $this->errorcode_map[$nativecode];
@ -755,7 +765,7 @@ class DB_mssql extends DB_common
* *
* @see DB_common::tableInfo() * @see DB_common::tableInfo()
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
if (is_string($result)) { if (is_string($result)) {
/* /*
@ -765,8 +775,10 @@ class DB_mssql extends DB_common
if (!@mssql_select_db($this->_db, $this->connection)) { if (!@mssql_select_db($this->_db, $this->connection)) {
return $this->mssqlRaiseError(DB_ERROR_NODBSELECTED); return $this->mssqlRaiseError(DB_ERROR_NODBSELECTED);
} }
$id = @mssql_query("SELECT * FROM $result WHERE 1=0", $id = @mssql_query(
$this->connection); "SELECT * FROM $result WHERE 1=0",
$this->connection
);
$got_string = true; $got_string = true;
} elseif (isset($result->result)) { } elseif (isset($result->result)) {
/* /*
@ -804,8 +816,10 @@ class DB_mssql extends DB_common
for ($i = 0; $i < $count; $i++) { for ($i = 0; $i < $count; $i++) {
if ($got_string) { if ($got_string) {
$flags = $this->_mssql_field_flags($result, $flags = $this->_mssql_field_flags(
@mssql_field_name($id, $i)); $result,
@mssql_field_name($id, $i)
);
if (DB::isError($flags)) { if (DB::isError($flags)) {
return $flags; return $flags;
} }
@ -858,13 +872,12 @@ class DB_mssql extends DB_common
* @access private * @access private
* @author Joern Barthel <j_barthel@web.de> * @author Joern Barthel <j_barthel@web.de>
*/ */
function _mssql_field_flags($table, $column) public function _mssql_field_flags($table, $column)
{ {
static $tableName = null; static $tableName = null;
static $flags = array(); static $flags = array();
if ($table != $tableName) { if ($table != $tableName) {
$flags = array(); $flags = array();
$tableName = $table; $tableName = $table;
@ -935,7 +948,7 @@ class DB_mssql extends DB_common
* @access private * @access private
* @author Joern Barthel <j_barthel@web.de> * @author Joern Barthel <j_barthel@web.de>
*/ */
function _add_flag(&$array, $value) public function _add_flag(&$array, $value)
{ {
if (!is_array($array)) { if (!is_array($array)) {
$array = array($value); $array = array($value);
@ -958,7 +971,7 @@ class DB_mssql extends DB_common
* @access protected * @access protected
* @see DB_common::getListOf() * @see DB_common::getListOf()
*/ */
function getSpecialQuery($type) public function getSpecialQuery($type)
{ {
switch ($type) { switch ($type) {
case 'tables': case 'tables':
@ -980,5 +993,3 @@ class DB_mssql extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -52,13 +52,13 @@ class DB_mysql extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'mysql'; public $phptype = 'mysql';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'mysql'; public $dbsyntax = 'mysql';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -73,7 +73,7 @@ class DB_mysql extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => 'alter', 'limit' => 'alter',
'new_link' => '4.2.0', 'new_link' => '4.2.0',
'numrows' => true, 'numrows' => true,
@ -87,7 +87,7 @@ class DB_mysql extends DB_common
* A mapping of native error codes to DB error codes * A mapping of native error codes to DB error codes
* @var array * @var array
*/ */
var $errorcode_map = array( public $errorcode_map = array(
1004 => DB_ERROR_CANNOT_CREATE, 1004 => DB_ERROR_CANNOT_CREATE,
1005 => DB_ERROR_CANNOT_CREATE, 1005 => DB_ERROR_CANNOT_CREATE,
1006 => DB_ERROR_CANNOT_CREATE, 1006 => DB_ERROR_CANNOT_CREATE,
@ -120,13 +120,13 @@ class DB_mysql extends DB_common
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
/** /**
@ -134,7 +134,7 @@ class DB_mysql extends DB_common
* @var bool * @var bool
* @access private * @access private
*/ */
var $autocommit = true; public $autocommit = true;
/** /**
* The quantity of transactions begun * The quantity of transactions begun
@ -145,7 +145,7 @@ class DB_mysql extends DB_common
* @var integer * @var integer
* @access private * @access private
*/ */
var $transaction_opcount = 0; public $transaction_opcount = 0;
/** /**
* The database specified in the DSN * The database specified in the DSN
@ -155,7 +155,7 @@ class DB_mysql extends DB_common
* @var string * @var string
* @access private * @access private
*/ */
var $_db = ''; public $_db = '';
// }}} // }}}
@ -166,7 +166,7 @@ class DB_mysql extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -193,7 +193,7 @@ class DB_mysql extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('mysql')) { if (!PEAR::loadExtension('mysql')) {
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
@ -219,8 +219,7 @@ class DB_mysql extends DB_common
if (!$persistent) { if (!$persistent) {
if (isset($dsn['new_link']) if (isset($dsn['new_link'])
&& ($dsn['new_link'] == 'true' || $dsn['new_link'] === true)) && ($dsn['new_link'] == 'true' || $dsn['new_link'] === true)) {
{
$params[] = true; $params[] = true;
} else { } else {
$params[] = false; $params[] = false;
@ -236,24 +235,36 @@ class DB_mysql extends DB_common
$ini = ini_get('track_errors'); $ini = ini_get('track_errors');
$php_errormsg = ''; $php_errormsg = '';
if ($ini) { if ($ini) {
$this->connection = @call_user_func_array($connect_function, $this->connection = @call_user_func_array(
$params); $connect_function,
$params
);
} else { } else {
@ini_set('track_errors', 1); @ini_set('track_errors', 1);
$this->connection = @call_user_func_array($connect_function, $this->connection = @call_user_func_array(
$params); $connect_function,
$params
);
@ini_set('track_errors', $ini); @ini_set('track_errors', $ini);
} }
if (!$this->connection) { if (!$this->connection) {
if (($err = @mysql_error()) != '') { if (($err = @mysql_error()) != '') {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
$err); null,
null,
null,
$err
);
} else { } else {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
$php_errormsg); null,
null,
null,
$php_errormsg
);
} }
} }
@ -275,7 +286,7 @@ class DB_mysql extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
$ret = @mysql_close($this->connection); $ret = @mysql_close($this->connection);
$this->connection = null; $this->connection = null;
@ -298,7 +309,7 @@ class DB_mysql extends DB_common
* + the DB_OK constant for other successful queries * + the DB_OK constant for other successful queries
* + a DB_Error object on failure * + a DB_Error object on failure
*/ */
function simpleQuery($query) public function simpleQuery($query)
{ {
$ismanip = $this->_checkManip($query); $ismanip = $this->_checkManip($query);
$this->last_query = $query; $this->last_query = $query;
@ -344,7 +355,7 @@ class DB_mysql extends DB_common
* *
* @return false * @return false
*/ */
function nextResult($result) public function nextResult($result)
{ {
return false; return false;
} }
@ -372,7 +383,7 @@ class DB_mysql extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
if ($rownum !== null) { if ($rownum !== null) {
if (!@mysql_data_seek($result, $rownum)) { if (!@mysql_data_seek($result, $rownum)) {
@ -420,7 +431,7 @@ class DB_mysql extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult($result) public function freeResult($result)
{ {
return is_resource($result) ? mysql_free_result($result) : false; return is_resource($result) ? mysql_free_result($result) : false;
} }
@ -441,7 +452,7 @@ class DB_mysql extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($result) public function numCols($result)
{ {
$cols = @mysql_num_fields($result); $cols = @mysql_num_fields($result);
if (!$cols) { if (!$cols) {
@ -466,7 +477,7 @@ class DB_mysql extends DB_common
* *
* @see DB_result::numRows() * @see DB_result::numRows()
*/ */
function numRows($result) public function numRows($result)
{ {
$rows = @mysql_num_rows($result); $rows = @mysql_num_rows($result);
if ($rows === null) { if ($rows === null) {
@ -486,7 +497,7 @@ class DB_mysql extends DB_common
* @return int DB_OK on success. A DB_Error object if the driver * @return int DB_OK on success. A DB_Error object if the driver
* doesn't support auto-committing transactions. * doesn't support auto-committing transactions.
*/ */
function autoCommit($onoff = false) public function autoCommit($onoff = false)
{ {
// XXX if $this->transaction_opcount > 0, we should probably // XXX if $this->transaction_opcount > 0, we should probably
// issue a warning here. // issue a warning here.
@ -502,7 +513,7 @@ class DB_mysql extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function commit() public function commit()
{ {
if ($this->transaction_opcount > 0) { if ($this->transaction_opcount > 0) {
if ($this->_db) { if ($this->_db) {
@ -528,7 +539,7 @@ class DB_mysql extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function rollback() public function rollback()
{ {
if ($this->transaction_opcount > 0) { if ($this->transaction_opcount > 0) {
if ($this->_db) { if ($this->_db) {
@ -556,14 +567,14 @@ class DB_mysql extends DB_common
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
if ($this->_last_query_manip) { if ($this->_last_query_manip) {
return @mysql_affected_rows($this->connection); return @mysql_affected_rows($this->connection);
} else { } else {
return 0; return 0;
} }
} }
// }}} // }}}
// {{{ nextId() // {{{ nextId()
@ -581,7 +592,7 @@ class DB_mysql extends DB_common
* @see DB_common::nextID(), DB_common::getSequenceName(), * @see DB_common::nextID(), DB_common::getSequenceName(),
* DB_mysql::createSequence(), DB_mysql::dropSequence() * DB_mysql::createSequence(), DB_mysql::dropSequence()
*/ */
function nextId($seq_name, $ondemand = true) public function nextId($seq_name, $ondemand = true)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
do { do {
@ -622,10 +633,8 @@ class DB_mysql extends DB_common
} }
// We know what the result will be, so no need to try again // We know what the result will be, so no need to try again
return 1; return 1;
} elseif ($ondemand && DB::isError($result) && } elseif ($ondemand && DB::isError($result) &&
$result->getCode() == DB_ERROR_NOSUCHTABLE) $result->getCode() == DB_ERROR_NOSUCHTABLE) {
{
// ONDEMAND TABLE CREATION // ONDEMAND TABLE CREATION
$result = $this->createSequence($seq_name); $result = $this->createSequence($seq_name);
if (DB::isError($result)) { if (DB::isError($result)) {
@ -633,10 +642,8 @@ class DB_mysql extends DB_common
} else { } else {
$repeat = 1; $repeat = 1;
} }
} elseif (DB::isError($result) && } elseif (DB::isError($result) &&
$result->getCode() == DB_ERROR_ALREADY_EXISTS) $result->getCode() == DB_ERROR_ALREADY_EXISTS) {
{
// BACKWARDS COMPAT // BACKWARDS COMPAT
// see _BCsequence() comment // see _BCsequence() comment
$result = $this->_BCsequence($seqname); $result = $this->_BCsequence($seqname);
@ -663,7 +670,7 @@ class DB_mysql extends DB_common
* @see DB_common::createSequence(), DB_common::getSequenceName(), * @see DB_common::createSequence(), DB_common::getSequenceName(),
* DB_mysql::nextID(), DB_mysql::dropSequence() * DB_mysql::nextID(), DB_mysql::dropSequence()
*/ */
function createSequence($seq_name) public function createSequence($seq_name)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
$res = $this->query('CREATE TABLE ' . $seqname $res = $this->query('CREATE TABLE ' . $seqname
@ -694,7 +701,7 @@ class DB_mysql extends DB_common
* @see DB_common::dropSequence(), DB_common::getSequenceName(), * @see DB_common::dropSequence(), DB_common::getSequenceName(),
* DB_mysql::nextID(), DB_mysql::createSequence() * DB_mysql::nextID(), DB_mysql::createSequence()
*/ */
function dropSequence($seq_name) public function dropSequence($seq_name)
{ {
return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name)); return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name));
} }
@ -712,7 +719,7 @@ class DB_mysql extends DB_common
* *
* @access private * @access private
*/ */
function _BCsequence($seqname) public function _BCsequence($seqname)
{ {
// Obtain a user-level lock... this will release any previous // Obtain a user-level lock... this will release any previous
// application locks, but unlike LOCK TABLES, it does not abort // application locks, but unlike LOCK TABLES, it does not abort
@ -767,7 +774,7 @@ class DB_mysql extends DB_common
* @see DB_common::quoteIdentifier() * @see DB_common::quoteIdentifier()
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function quoteIdentifier($str) public function quoteIdentifier($str)
{ {
return '`' . str_replace('`', '``', $str) . '`'; return '`' . str_replace('`', '``', $str) . '`';
} }
@ -785,7 +792,7 @@ class DB_mysql extends DB_common
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function escapeSimple($str) public function escapeSimple($str)
{ {
if (function_exists('mysql_real_escape_string')) { if (function_exists('mysql_real_escape_string')) {
return @mysql_real_escape_string($str, $this->connection); return @mysql_real_escape_string($str, $this->connection);
@ -811,14 +818,17 @@ class DB_mysql extends DB_common
* @access protected * @access protected
* @see DB_common::setOption() * @see DB_common::setOption()
*/ */
function modifyQuery($query) public function modifyQuery($query)
{ {
if ($this->options['portability'] & DB_PORTABILITY_DELETE_COUNT) { if ($this->options['portability'] & DB_PORTABILITY_DELETE_COUNT) {
// "DELETE FROM table" gives 0 affected rows in MySQL. // "DELETE FROM table" gives 0 affected rows in MySQL.
// This little hack lets you know how many rows were deleted. // This little hack lets you know how many rows were deleted.
if (preg_match('/^\s*DELETE\s+FROM\s+(\S+)\s*$/i', $query)) { if (preg_match('/^\s*DELETE\s+FROM\s+(\S+)\s*$/i', $query)) {
$query = preg_replace('/^\s*DELETE\s+FROM\s+(\S+)\s*$/', $query = preg_replace(
'DELETE FROM \1 WHERE 1=1', $query); '/^\s*DELETE\s+FROM\s+(\S+)\s*$/',
'DELETE FROM \1 WHERE 1=1',
$query
);
} }
} }
return $query; return $query;
@ -843,7 +853,7 @@ class DB_mysql extends DB_common
* *
* @access protected * @access protected
*/ */
function modifyLimitQuery($query, $from, $count, $params = array()) public function modifyLimitQuery($query, $from, $count, $params = array())
{ {
if (DB::isManip($query) || $this->_next_query_manip) { if (DB::isManip($query) || $this->_next_query_manip) {
return $query . " LIMIT $count"; return $query . " LIMIT $count";
@ -867,7 +877,7 @@ class DB_mysql extends DB_common
* @see DB_common::raiseError(), * @see DB_common::raiseError(),
* DB_mysql::errorNative(), DB_common::errorCode() * DB_mysql::errorNative(), DB_common::errorCode()
*/ */
function mysqlRaiseError($errno = null) public function mysqlRaiseError($errno = null)
{ {
if ($errno === null) { if ($errno === null) {
if ($this->options['portability'] & DB_PORTABILITY_ERRORS) { if ($this->options['portability'] & DB_PORTABILITY_ERRORS) {
@ -882,9 +892,14 @@ class DB_mysql extends DB_common
} }
$errno = $this->errorCode(mysql_errno($this->connection)); $errno = $this->errorCode(mysql_errno($this->connection));
} }
return $this->raiseError($errno, null, null, null, return $this->raiseError(
@mysql_errno($this->connection) . ' ** ' . $errno,
@mysql_error($this->connection)); null,
null,
null,
@mysql_errno($this->connection) . ' ** ' .
@mysql_error($this->connection)
);
} }
// }}} // }}}
@ -895,7 +910,7 @@ class DB_mysql extends DB_common
* *
* @return int the DBMS' error code * @return int the DBMS' error code
*/ */
function errorNative() public function errorNative()
{ {
return @mysql_errno($this->connection); return @mysql_errno($this->connection);
} }
@ -918,7 +933,7 @@ class DB_mysql extends DB_common
* *
* @see DB_common::tableInfo() * @see DB_common::tableInfo()
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
if (is_string($result)) { if (is_string($result)) {
// Fix for bug #11580. // Fix for bug #11580.
@ -932,8 +947,10 @@ class DB_mysql extends DB_common
* Probably received a table name. * Probably received a table name.
* Create a result resource identifier. * Create a result resource identifier.
*/ */
$id = @mysql_query("SELECT * FROM $result LIMIT 0", $id = @mysql_query(
$this->connection); "SELECT * FROM $result LIMIT 0",
$this->connection
);
$got_string = true; $got_string = true;
} elseif (isset($result->result)) { } elseif (isset($result->result)) {
/* /*
@ -1006,7 +1023,7 @@ class DB_mysql extends DB_common
* @access protected * @access protected
* @see DB_common::getListOf() * @see DB_common::getListOf()
*/ */
function getSpecialQuery($type) public function getSpecialQuery($type)
{ {
switch ($type) { switch ($type) {
case 'tables': case 'tables':
@ -1021,7 +1038,6 @@ class DB_mysql extends DB_common
} }
// }}} // }}}
} }
/* /*
@ -1030,5 +1046,3 @@ class DB_mysql extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -55,13 +55,13 @@ class DB_mysqli extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'mysqli'; public $phptype = 'mysqli';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'mysqli'; public $dbsyntax = 'mysqli';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -76,7 +76,7 @@ class DB_mysqli extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => 'alter', 'limit' => 'alter',
'new_link' => false, 'new_link' => false,
'numrows' => true, 'numrows' => true,
@ -90,7 +90,7 @@ class DB_mysqli extends DB_common
* A mapping of native error codes to DB error codes * A mapping of native error codes to DB error codes
* @var array * @var array
*/ */
var $errorcode_map = array( public $errorcode_map = array(
1004 => DB_ERROR_CANNOT_CREATE, 1004 => DB_ERROR_CANNOT_CREATE,
1005 => DB_ERROR_CANNOT_CREATE, 1005 => DB_ERROR_CANNOT_CREATE,
1006 => DB_ERROR_CANNOT_CREATE, 1006 => DB_ERROR_CANNOT_CREATE,
@ -123,13 +123,13 @@ class DB_mysqli extends DB_common
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
/** /**
@ -137,7 +137,7 @@ class DB_mysqli extends DB_common
* @var bool * @var bool
* @access private * @access private
*/ */
var $autocommit = true; public $autocommit = true;
/** /**
* The quantity of transactions begun * The quantity of transactions begun
@ -148,7 +148,7 @@ class DB_mysqli extends DB_common
* @var integer * @var integer
* @access private * @access private
*/ */
var $transaction_opcount = 0; public $transaction_opcount = 0;
/** /**
* The database specified in the DSN * The database specified in the DSN
@ -158,7 +158,7 @@ class DB_mysqli extends DB_common
* @var string * @var string
* @access private * @access private
*/ */
var $_db = ''; public $_db = '';
/** /**
* Array for converting MYSQLI_*_FLAG constants to text values * Array for converting MYSQLI_*_FLAG constants to text values
@ -166,7 +166,7 @@ class DB_mysqli extends DB_common
* @access public * @access public
* @since Property available since Release 1.6.5 * @since Property available since Release 1.6.5
*/ */
var $mysqli_flags = array( public $mysqli_flags = array(
MYSQLI_NOT_NULL_FLAG => 'not_null', MYSQLI_NOT_NULL_FLAG => 'not_null',
MYSQLI_PRI_KEY_FLAG => 'primary_key', MYSQLI_PRI_KEY_FLAG => 'primary_key',
MYSQLI_UNIQUE_KEY_FLAG => 'unique_key', MYSQLI_UNIQUE_KEY_FLAG => 'unique_key',
@ -188,7 +188,7 @@ class DB_mysqli extends DB_common
* @access public * @access public
* @since Property available since Release 1.6.5 * @since Property available since Release 1.6.5
*/ */
var $mysqli_types = array( public $mysqli_types = array(
MYSQLI_TYPE_DECIMAL => 'decimal', MYSQLI_TYPE_DECIMAL => 'decimal',
MYSQLI_TYPE_TINY => 'tinyint', MYSQLI_TYPE_TINY => 'tinyint',
MYSQLI_TYPE_SHORT => 'int', MYSQLI_TYPE_SHORT => 'int',
@ -228,7 +228,7 @@ class DB_mysqli extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -253,7 +253,7 @@ class DB_mysqli extends DB_common
* Example of how to connect using SSL: * Example of how to connect using SSL:
* <code> * <code>
* require_once 'DB.php'; * require_once 'DB.php';
* *
* $dsn = array( * $dsn = array(
* 'phptype' => 'mysqli', * 'phptype' => 'mysqli',
* 'username' => 'someuser', * 'username' => 'someuser',
@ -266,11 +266,11 @@ class DB_mysqli extends DB_common
* 'capath' => '/path/to/ca/dir', * 'capath' => '/path/to/ca/dir',
* 'cipher' => 'AES', * 'cipher' => 'AES',
* ); * );
* *
* $options = array( * $options = array(
* 'ssl' => true, * 'ssl' => true,
* ); * );
* *
* $db = DB::connect($dsn, $options); * $db = DB::connect($dsn, $options);
* if (PEAR::isError($db)) { * if (PEAR::isError($db)) {
* die($db->getMessage()); * die($db->getMessage());
@ -282,7 +282,7 @@ class DB_mysqli extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('mysqli')) { if (!PEAR::loadExtension('mysqli')) {
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
@ -308,14 +308,14 @@ class DB_mysqli extends DB_common
empty($dsn['cipher']) ? null : $dsn['cipher'] empty($dsn['cipher']) ? null : $dsn['cipher']
); );
if ($this->connection = @mysqli_real_connect( if ($this->connection = @mysqli_real_connect(
$init, $init,
$dsn['hostspec'], $dsn['hostspec'],
$dsn['username'], $dsn['username'],
$dsn['password'], $dsn['password'],
$dsn['database'], $dsn['database'],
$dsn['port'], $dsn['port'],
$dsn['socket'])) $dsn['socket']
{ )) {
$this->connection = $init; $this->connection = $init;
} }
} else { } else {
@ -333,13 +333,21 @@ class DB_mysqli extends DB_common
if (!$this->connection) { if (!$this->connection) {
if (($err = @mysqli_connect_error()) != '') { if (($err = @mysqli_connect_error()) != '') {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
$err); null,
null,
null,
$err
);
} else { } else {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
$php_errormsg); null,
null,
null,
$php_errormsg
);
} }
} }
@ -358,7 +366,7 @@ class DB_mysqli extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
$ret = @mysqli_close($this->connection); $ret = @mysqli_close($this->connection);
$this->connection = null; $this->connection = null;
@ -377,7 +385,7 @@ class DB_mysqli extends DB_common
* + the DB_OK constant for other successful queries * + the DB_OK constant for other successful queries
* + a DB_Error object on failure * + a DB_Error object on failure
*/ */
function simpleQuery($query) public function simpleQuery($query)
{ {
$ismanip = $this->_checkManip($query); $ismanip = $this->_checkManip($query);
$this->last_query = $query; $this->last_query = $query;
@ -419,7 +427,7 @@ class DB_mysqli extends DB_common
* @return false * @return false
* @access public * @access public
*/ */
function nextResult($result) public function nextResult($result)
{ {
return false; return false;
} }
@ -447,7 +455,7 @@ class DB_mysqli extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
if ($rownum !== null) { if ($rownum !== null) {
if (!@mysqli_data_seek($result, $rownum)) { if (!@mysqli_data_seek($result, $rownum)) {
@ -495,7 +503,7 @@ class DB_mysqli extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult($result) public function freeResult($result)
{ {
if (! $result instanceof mysqli_result) { if (! $result instanceof mysqli_result) {
return false; return false;
@ -520,7 +528,7 @@ class DB_mysqli extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($result) public function numCols($result)
{ {
$cols = @mysqli_num_fields($result); $cols = @mysqli_num_fields($result);
if (!$cols) { if (!$cols) {
@ -545,7 +553,7 @@ class DB_mysqli extends DB_common
* *
* @see DB_result::numRows() * @see DB_result::numRows()
*/ */
function numRows($result) public function numRows($result)
{ {
$rows = @mysqli_num_rows($result); $rows = @mysqli_num_rows($result);
if ($rows === null) { if ($rows === null) {
@ -565,7 +573,7 @@ class DB_mysqli extends DB_common
* @return int DB_OK on success. A DB_Error object if the driver * @return int DB_OK on success. A DB_Error object if the driver
* doesn't support auto-committing transactions. * doesn't support auto-committing transactions.
*/ */
function autoCommit($onoff = false) public function autoCommit($onoff = false)
{ {
// XXX if $this->transaction_opcount > 0, we should probably // XXX if $this->transaction_opcount > 0, we should probably
// issue a warning here. // issue a warning here.
@ -581,7 +589,7 @@ class DB_mysqli extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function commit() public function commit()
{ {
if ($this->transaction_opcount > 0) { if ($this->transaction_opcount > 0) {
if ($this->_db) { if ($this->_db) {
@ -607,7 +615,7 @@ class DB_mysqli extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function rollback() public function rollback()
{ {
if ($this->transaction_opcount > 0) { if ($this->transaction_opcount > 0) {
if ($this->_db) { if ($this->_db) {
@ -635,14 +643,14 @@ class DB_mysqli extends DB_common
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
if ($this->_last_query_manip) { if ($this->_last_query_manip) {
return @mysqli_affected_rows($this->connection); return @mysqli_affected_rows($this->connection);
} else { } else {
return 0; return 0;
} }
} }
// }}} // }}}
// {{{ nextId() // {{{ nextId()
@ -660,7 +668,7 @@ class DB_mysqli extends DB_common
* @see DB_common::nextID(), DB_common::getSequenceName(), * @see DB_common::nextID(), DB_common::getSequenceName(),
* DB_mysqli::createSequence(), DB_mysqli::dropSequence() * DB_mysqli::createSequence(), DB_mysqli::dropSequence()
*/ */
function nextId($seq_name, $ondemand = true) public function nextId($seq_name, $ondemand = true)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
do { do {
@ -704,10 +712,8 @@ class DB_mysqli extends DB_common
} }
// We know what the result will be, so no need to try again // We know what the result will be, so no need to try again
return 1; return 1;
} elseif ($ondemand && DB::isError($result) && } elseif ($ondemand && DB::isError($result) &&
$result->getCode() == DB_ERROR_NOSUCHTABLE) $result->getCode() == DB_ERROR_NOSUCHTABLE) {
{
// ONDEMAND TABLE CREATION // ONDEMAND TABLE CREATION
$result = $this->createSequence($seq_name); $result = $this->createSequence($seq_name);
@ -719,10 +725,8 @@ class DB_mysqli extends DB_common
// First ID of a newly created sequence is 1 // First ID of a newly created sequence is 1
return 1; return 1;
} }
} elseif (DB::isError($result) && } elseif (DB::isError($result) &&
$result->getCode() == DB_ERROR_ALREADY_EXISTS) $result->getCode() == DB_ERROR_ALREADY_EXISTS) {
{
// BACKWARDS COMPAT // BACKWARDS COMPAT
// see _BCsequence() comment // see _BCsequence() comment
$result = $this->_BCsequence($seqname); $result = $this->_BCsequence($seqname);
@ -746,7 +750,7 @@ class DB_mysqli extends DB_common
* @see DB_common::createSequence(), DB_common::getSequenceName(), * @see DB_common::createSequence(), DB_common::getSequenceName(),
* DB_mysqli::nextID(), DB_mysqli::dropSequence() * DB_mysqli::nextID(), DB_mysqli::dropSequence()
*/ */
function createSequence($seq_name) public function createSequence($seq_name)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
$res = $this->query('CREATE TABLE ' . $seqname $res = $this->query('CREATE TABLE ' . $seqname
@ -772,7 +776,7 @@ class DB_mysqli extends DB_common
* @see DB_common::dropSequence(), DB_common::getSequenceName(), * @see DB_common::dropSequence(), DB_common::getSequenceName(),
* DB_mysql::nextID(), DB_mysql::createSequence() * DB_mysql::nextID(), DB_mysql::createSequence()
*/ */
function dropSequence($seq_name) public function dropSequence($seq_name)
{ {
return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name)); return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name));
} }
@ -790,7 +794,7 @@ class DB_mysqli extends DB_common
* *
* @access private * @access private
*/ */
function _BCsequence($seqname) public function _BCsequence($seqname)
{ {
// Obtain a user-level lock... this will release any previous // Obtain a user-level lock... this will release any previous
// application locks, but unlike LOCK TABLES, it does not abort // application locks, but unlike LOCK TABLES, it does not abort
@ -846,7 +850,7 @@ class DB_mysqli extends DB_common
* @see DB_common::quoteIdentifier() * @see DB_common::quoteIdentifier()
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function quoteIdentifier($str) public function quoteIdentifier($str)
{ {
return '`' . str_replace('`', '``', $str) . '`'; return '`' . str_replace('`', '``', $str) . '`';
} }
@ -864,7 +868,7 @@ class DB_mysqli extends DB_common
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function escapeSimple($str) public function escapeSimple($str)
{ {
return @mysqli_real_escape_string($this->connection, $str); return @mysqli_real_escape_string($this->connection, $str);
} }
@ -888,7 +892,7 @@ class DB_mysqli extends DB_common
* *
* @access protected * @access protected
*/ */
function modifyLimitQuery($query, $from, $count, $params = array()) public function modifyLimitQuery($query, $from, $count, $params = array())
{ {
if (DB::isManip($query) || $this->_next_query_manip) { if (DB::isManip($query) || $this->_next_query_manip) {
return $query . " LIMIT $count"; return $query . " LIMIT $count";
@ -912,7 +916,7 @@ class DB_mysqli extends DB_common
* @see DB_common::raiseError(), * @see DB_common::raiseError(),
* DB_mysqli::errorNative(), DB_common::errorCode() * DB_mysqli::errorNative(), DB_common::errorCode()
*/ */
function mysqliRaiseError($errno = null) public function mysqliRaiseError($errno = null)
{ {
if ($errno === null) { if ($errno === null) {
if ($this->options['portability'] & DB_PORTABILITY_ERRORS) { if ($this->options['portability'] & DB_PORTABILITY_ERRORS) {
@ -927,9 +931,14 @@ class DB_mysqli extends DB_common
} }
$errno = $this->errorCode(mysqli_errno($this->connection)); $errno = $this->errorCode(mysqli_errno($this->connection));
} }
return $this->raiseError($errno, null, null, null, return $this->raiseError(
@mysqli_errno($this->connection) . ' ** ' . $errno,
@mysqli_error($this->connection)); null,
null,
null,
@mysqli_errno($this->connection) . ' ** ' .
@mysqli_error($this->connection)
);
} }
// }}} // }}}
@ -940,7 +949,7 @@ class DB_mysqli extends DB_common
* *
* @return int the DBMS' error code * @return int the DBMS' error code
*/ */
function errorNative() public function errorNative()
{ {
return @mysqli_errno($this->connection); return @mysqli_errno($this->connection);
} }
@ -963,7 +972,7 @@ class DB_mysqli extends DB_common
* *
* @see DB_common::setOption() * @see DB_common::setOption()
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
if (is_string($result)) { if (is_string($result)) {
// Fix for bug #11580. // Fix for bug #11580.
@ -977,8 +986,10 @@ class DB_mysqli extends DB_common
* Probably received a table name. * Probably received a table name.
* Create a result resource identifier. * Create a result resource identifier.
*/ */
$id = @mysqli_query($this->connection, $id = @mysqli_query(
"SELECT * FROM $result LIMIT 0"); $this->connection,
"SELECT * FROM $result LIMIT 0"
);
$got_string = true; $got_string = true;
} elseif (isset($result->result)) { } elseif (isset($result->result)) {
/* /*
@ -1072,7 +1083,7 @@ class DB_mysqli extends DB_common
* @access protected * @access protected
* @see DB_common::getListOf() * @see DB_common::getListOf()
*/ */
function getSpecialQuery($type) public function getSpecialQuery($type)
{ {
switch ($type) { switch ($type) {
case 'tables': case 'tables':
@ -1087,7 +1098,6 @@ class DB_mysqli extends DB_common
} }
// }}} // }}}
} }
/* /*
@ -1096,5 +1106,3 @@ class DB_mysqli extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -58,13 +58,13 @@ class DB_oci8 extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'oci8'; public $phptype = 'oci8';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'oci8'; public $dbsyntax = 'oci8';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -79,7 +79,7 @@ class DB_oci8 extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => 'alter', 'limit' => 'alter',
'new_link' => '5.0.0', 'new_link' => '5.0.0',
'numrows' => 'subquery', 'numrows' => 'subquery',
@ -93,7 +93,7 @@ class DB_oci8 extends DB_common
* A mapping of native error codes to DB error codes * A mapping of native error codes to DB error codes
* @var array * @var array
*/ */
var $errorcode_map = array( public $errorcode_map = array(
1 => DB_ERROR_CONSTRAINT, 1 => DB_ERROR_CONSTRAINT,
900 => DB_ERROR_SYNTAX, 900 => DB_ERROR_SYNTAX,
904 => DB_ERROR_NOSUCHFIELD, 904 => DB_ERROR_NOSUCHFIELD,
@ -119,13 +119,13 @@ class DB_oci8 extends DB_common
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
/** /**
@ -133,7 +133,7 @@ class DB_oci8 extends DB_common
* @var bool * @var bool
* @access private * @access private
*/ */
var $autocommit = true; public $autocommit = true;
/** /**
* Stores the $data passed to execute() in the oci8 driver * Stores the $data passed to execute() in the oci8 driver
@ -146,27 +146,27 @@ class DB_oci8 extends DB_common
* @var array * @var array
* @access private * @access private
*/ */
var $_data = array(); public $_data = array();
/** /**
* The result or statement handle from the most recently executed query * The result or statement handle from the most recently executed query
* @var resource * @var resource
*/ */
var $last_stmt; public $last_stmt;
/** /**
* Is the given prepared statement a data manipulation query? * Is the given prepared statement a data manipulation query?
* @var array * @var array
* @access private * @access private
*/ */
var $manip_query = array(); public $manip_query = array();
/** /**
* Store of prepared SQL queries. * Store of prepared SQL queries.
* @var array * @var array
* @access private * @access private
*/ */
var $_prepared_queries = array(); public $_prepared_queries = array();
// }}} // }}}
@ -177,7 +177,7 @@ class DB_oci8 extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -213,7 +213,7 @@ class DB_oci8 extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('oci8')) { if (!PEAR::loadExtension('oci8')) {
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
@ -233,8 +233,7 @@ class DB_oci8 extends DB_common
if (function_exists('oci_connect')) { if (function_exists('oci_connect')) {
if (isset($dsn['new_link']) if (isset($dsn['new_link'])
&& ($dsn['new_link'] == 'true' || $dsn['new_link'] === true)) && ($dsn['new_link'] == 'true' || $dsn['new_link'] === true)) {
{
$connect_function = 'oci_new_connect'; $connect_function = 'oci_new_connect';
} else { } else {
$connect_function = $persistent ? 'oci_pconnect' $connect_function = $persistent ? 'oci_pconnect'
@ -245,36 +244,48 @@ class DB_oci8 extends DB_common
} }
$char = empty($dsn['charset']) ? null : $dsn['charset']; $char = empty($dsn['charset']) ? null : $dsn['charset'];
$this->connection = @$connect_function($dsn['username'], $this->connection = @$connect_function(
$dsn['password'], $dsn['username'],
$db, $dsn['password'],
$char); $db,
$char
);
$error = OCIError(); $error = OCIError();
if (!empty($error) && $error['code'] == 12541) { if (!empty($error) && $error['code'] == 12541) {
// Couldn't find TNS listener. Try direct connection. // Couldn't find TNS listener. Try direct connection.
$this->connection = @$connect_function($dsn['username'], $this->connection = @$connect_function(
$dsn['password'], $dsn['username'],
null, $dsn['password'],
$char); null,
$char
);
} }
} else { } else {
$connect_function = $persistent ? 'OCIPLogon' : 'OCILogon'; $connect_function = $persistent ? 'OCIPLogon' : 'OCILogon';
if ($db) { if ($db) {
$this->connection = @$connect_function($dsn['username'], $this->connection = @$connect_function(
$dsn['password'], $dsn['username'],
$db); $dsn['password'],
$db
);
} elseif ($dsn['username'] || $dsn['password']) { } elseif ($dsn['username'] || $dsn['password']) {
$this->connection = @$connect_function($dsn['username'], $this->connection = @$connect_function(
$dsn['password']); $dsn['username'],
$dsn['password']
);
} }
} }
if (!$this->connection) { if (!$this->connection) {
$error = OCIError(); $error = OCIError();
$error = (is_array($error)) ? $error['message'] : null; $error = (is_array($error)) ? $error['message'] : null;
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
$error); null,
null,
null,
$error
);
} }
return DB_OK; return DB_OK;
} }
@ -287,7 +298,7 @@ class DB_oci8 extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
if (function_exists('oci_close')) { if (function_exists('oci_close')) {
$ret = @oci_close($this->connection); $ret = @oci_close($this->connection);
@ -314,7 +325,7 @@ class DB_oci8 extends DB_common
* + the DB_OK constant for other successful queries * + the DB_OK constant for other successful queries
* + a DB_Error object on failure * + a DB_Error object on failure
*/ */
function simpleQuery($query) public function simpleQuery($query)
{ {
$this->_data = array(); $this->_data = array();
$this->last_parameters = array(); $this->last_parameters = array();
@ -325,9 +336,9 @@ class DB_oci8 extends DB_common
return $this->oci8RaiseError(); return $this->oci8RaiseError();
} }
if ($this->autocommit) { if ($this->autocommit) {
$success = @OCIExecute($result,OCI_COMMIT_ON_SUCCESS); $success = @OCIExecute($result, OCI_COMMIT_ON_SUCCESS);
} else { } else {
$success = @OCIExecute($result,OCI_DEFAULT); $success = @OCIExecute($result, OCI_DEFAULT);
} }
if (!$success) { if (!$success) {
return $this->oci8RaiseError($result); return $this->oci8RaiseError($result);
@ -353,7 +364,7 @@ class DB_oci8 extends DB_common
* *
* @return true if a result is available otherwise return false * @return true if a result is available otherwise return false
*/ */
function nextResult($result) public function nextResult($result)
{ {
return false; return false;
} }
@ -381,20 +392,19 @@ class DB_oci8 extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
if ($rownum !== null) { if ($rownum !== null) {
return $this->raiseError(DB_ERROR_NOT_CAPABLE); return $this->raiseError(DB_ERROR_NOT_CAPABLE);
} }
if ($fetchmode & DB_FETCHMODE_ASSOC) { if ($fetchmode & DB_FETCHMODE_ASSOC) {
$moredata = @OCIFetchInto($result,$arr,OCI_ASSOC+OCI_RETURN_NULLS+OCI_RETURN_LOBS); $moredata = @OCIFetchInto($result, $arr, OCI_ASSOC+OCI_RETURN_NULLS+OCI_RETURN_LOBS);
if ($this->options['portability'] & DB_PORTABILITY_LOWERCASE && if ($this->options['portability'] & DB_PORTABILITY_LOWERCASE &&
$moredata) $moredata) {
{
$arr = array_change_key_case($arr, CASE_LOWER); $arr = array_change_key_case($arr, CASE_LOWER);
} }
} else { } else {
$moredata = OCIFetchInto($result,$arr,OCI_RETURN_NULLS+OCI_RETURN_LOBS); $moredata = OCIFetchInto($result, $arr, OCI_RETURN_NULLS+OCI_RETURN_LOBS);
} }
if (!$moredata) { if (!$moredata) {
return null; return null;
@ -424,7 +434,7 @@ class DB_oci8 extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult($result) public function freeResult($result)
{ {
return is_resource($result) ? OCIFreeStatement($result) : false; return is_resource($result) ? OCIFreeStatement($result) : false;
} }
@ -441,7 +451,7 @@ class DB_oci8 extends DB_common
* *
* @see DB_oci8::prepare() * @see DB_oci8::prepare()
*/ */
function freePrepared($stmt, $free_resource = true) public function freePrepared($stmt, $free_resource = true)
{ {
if (!is_resource($stmt)) { if (!is_resource($stmt)) {
return false; return false;
@ -478,12 +488,11 @@ class DB_oci8 extends DB_common
* *
* @see DB_result::numRows(), DB_common::setOption() * @see DB_result::numRows(), DB_common::setOption()
*/ */
function numRows($result) public function numRows($result)
{ {
// emulate numRows for Oracle. yuck. // emulate numRows for Oracle. yuck.
if ($this->options['portability'] & DB_PORTABILITY_NUMROWS && if ($this->options['portability'] & DB_PORTABILITY_NUMROWS &&
$result === $this->last_stmt) $result === $this->last_stmt) {
{
$countquery = 'SELECT COUNT(*) FROM ('.$this->last_query.')'; $countquery = 'SELECT COUNT(*) FROM ('.$this->last_query.')';
$save_query = $this->last_query; $save_query = $this->last_query;
$save_stmt = $this->last_stmt; $save_stmt = $this->last_stmt;
@ -495,8 +504,7 @@ class DB_oci8 extends DB_common
$this->last_stmt = $save_stmt; $this->last_stmt = $save_stmt;
if (DB::isError($count) || if (DB::isError($count) ||
DB::isError($row = $count->fetchRow(DB_FETCHMODE_ORDERED))) DB::isError($row = $count->fetchRow(DB_FETCHMODE_ORDERED))) {
{
return $this->raiseError(DB_ERROR_NOT_CAPABLE); return $this->raiseError(DB_ERROR_NOT_CAPABLE);
} }
@ -521,7 +529,7 @@ class DB_oci8 extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($result) public function numCols($result)
{ {
$cols = @OCINumCols($result); $cols = @OCINumCols($result);
if (!$cols) { if (!$cols) {
@ -560,10 +568,14 @@ class DB_oci8 extends DB_common
* *
* @see DB_oci8::execute() * @see DB_oci8::execute()
*/ */
function prepare($query) public function prepare($query)
{ {
$tokens = preg_split('/((?<!\\\)[&?!])/', $query, -1, $tokens = preg_split(
PREG_SPLIT_DELIM_CAPTURE); '/((?<!\\\)[&?!])/',
$query,
-1,
PREG_SPLIT_DELIM_CAPTURE
);
$binds = count($tokens) - 1; $binds = count($tokens) - 1;
$token = 0; $token = 0;
$types = array(); $types = array();
@ -627,7 +639,7 @@ class DB_oci8 extends DB_common
* *
* @see DB_oci8::prepare() * @see DB_oci8::prepare()
*/ */
function &execute($stmt, $data = array()) public function &execute($stmt, $data = array())
{ {
$data = (array)$data; $data = (array)$data;
$this->last_parameters = $data; $this->last_parameters = $data;
@ -671,8 +683,12 @@ class DB_oci8 extends DB_common
$tmp = $this->oci8RaiseError($stmt); $tmp = $this->oci8RaiseError($stmt);
return $tmp; return $tmp;
} }
$this->last_query = preg_replace("/:bind$i(?!\d)/", $this->last_query = preg_replace(
$this->quoteSmart($data[$key]), $this->last_query, 1); "/:bind$i(?!\d)/",
$this->quoteSmart($data[$key]),
$this->last_query,
1
);
$i++; $i++;
} }
if ($this->autocommit) { if ($this->autocommit) {
@ -708,9 +724,10 @@ class DB_oci8 extends DB_common
* @return int DB_OK on success. A DB_Error object if the driver * @return int DB_OK on success. A DB_Error object if the driver
* doesn't support auto-committing transactions. * doesn't support auto-committing transactions.
*/ */
function autoCommit($onoff = false) public function autoCommit($onoff = false)
{ {
$this->autocommit = (bool)$onoff;; $this->autocommit = (bool)$onoff;
;
return DB_OK; return DB_OK;
} }
@ -722,7 +739,7 @@ class DB_oci8 extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function commit() public function commit()
{ {
$result = @OCICommit($this->connection); $result = @OCICommit($this->connection);
if (!$result) { if (!$result) {
@ -739,7 +756,7 @@ class DB_oci8 extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function rollback() public function rollback()
{ {
$result = @OCIRollback($this->connection); $result = @OCIRollback($this->connection);
if (!$result) { if (!$result) {
@ -758,7 +775,7 @@ class DB_oci8 extends DB_common
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
if ($this->last_stmt === false) { if ($this->last_stmt === false) {
return $this->oci8RaiseError(); return $this->oci8RaiseError();
@ -784,7 +801,7 @@ class DB_oci8 extends DB_common
* *
* @access protected * @access protected
*/ */
function modifyQuery($query) public function modifyQuery($query)
{ {
if (preg_match('/^\s*SELECT/i', $query) && if (preg_match('/^\s*SELECT/i', $query) &&
!preg_match('/\sFROM\s/i', $query)) { !preg_match('/\sFROM\s/i', $query)) {
@ -812,7 +829,7 @@ class DB_oci8 extends DB_common
* *
* @access protected * @access protected
*/ */
function modifyLimitQuery($query, $from, $count, $params = array()) public function modifyLimitQuery($query, $from, $count, $params = array())
{ {
// Let Oracle return the name of the columns instead of // Let Oracle return the name of the columns instead of
// coding a "home" SQL parser // coding a "home" SQL parser
@ -836,7 +853,7 @@ class DB_oci8 extends DB_common
$ncols = OCINumCols($result); $ncols = OCINumCols($result);
$cols = array(); $cols = array();
for ( $i = 1; $i <= $ncols; $i++ ) { for ($i = 1; $i <= $ncols; $i++) {
$cols[] = '"' . OCIColumnName($result, $i) . '"'; $cols[] = '"' . OCIColumnName($result, $i) . '"';
} }
$fields = implode(', ', $cols); $fields = implode(', ', $cols);
@ -874,7 +891,7 @@ class DB_oci8 extends DB_common
* @see DB_common::nextID(), DB_common::getSequenceName(), * @see DB_common::nextID(), DB_common::getSequenceName(),
* DB_oci8::createSequence(), DB_oci8::dropSequence() * DB_oci8::createSequence(), DB_oci8::dropSequence()
*/ */
function nextId($seq_name, $ondemand = true) public function nextId($seq_name, $ondemand = true)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
$repeat = 0; $repeat = 0;
@ -910,7 +927,7 @@ class DB_oci8 extends DB_common
* @see DB_common::createSequence(), DB_common::getSequenceName(), * @see DB_common::createSequence(), DB_common::getSequenceName(),
* DB_oci8::nextID(), DB_oci8::dropSequence() * DB_oci8::nextID(), DB_oci8::dropSequence()
*/ */
function createSequence($seq_name) public function createSequence($seq_name)
{ {
return $this->query('CREATE SEQUENCE ' return $this->query('CREATE SEQUENCE '
. $this->getSequenceName($seq_name)); . $this->getSequenceName($seq_name));
@ -929,7 +946,7 @@ class DB_oci8 extends DB_common
* @see DB_common::dropSequence(), DB_common::getSequenceName(), * @see DB_common::dropSequence(), DB_common::getSequenceName(),
* DB_oci8::nextID(), DB_oci8::createSequence() * DB_oci8::nextID(), DB_oci8::createSequence()
*/ */
function dropSequence($seq_name) public function dropSequence($seq_name)
{ {
return $this->query('DROP SEQUENCE ' return $this->query('DROP SEQUENCE '
. $this->getSequenceName($seq_name)); . $this->getSequenceName($seq_name));
@ -950,16 +967,26 @@ class DB_oci8 extends DB_common
* @see DB_common::raiseError(), * @see DB_common::raiseError(),
* DB_oci8::errorNative(), DB_oci8::errorCode() * DB_oci8::errorNative(), DB_oci8::errorCode()
*/ */
function oci8RaiseError($errno = null) public function oci8RaiseError($errno = null)
{ {
if ($errno === null) { if ($errno === null) {
$error = @OCIError($this->connection); $error = @OCIError($this->connection);
return $this->raiseError($this->errorCode($error['code']), return $this->raiseError(
null, null, null, $error['message']); $this->errorCode($error['code']),
null,
null,
null,
$error['message']
);
} elseif (is_resource($errno)) { } elseif (is_resource($errno)) {
$error = @OCIError($errno); $error = @OCIError($errno);
return $this->raiseError($this->errorCode($error['code']), return $this->raiseError(
null, null, null, $error['message']); $this->errorCode($error['code']),
null,
null,
null,
$error['message']
);
} }
return $this->raiseError($this->errorCode($errno)); return $this->raiseError($this->errorCode($errno));
} }
@ -973,7 +1000,7 @@ class DB_oci8 extends DB_common
* @return int the DBMS' error code. FALSE if the code could not be * @return int the DBMS' error code. FALSE if the code could not be
* determined * determined
*/ */
function errorNative() public function errorNative()
{ {
if (is_resource($this->last_stmt)) { if (is_resource($this->last_stmt)) {
$error = @OCIError($this->last_stmt); $error = @OCIError($this->last_stmt);
@ -1009,7 +1036,7 @@ class DB_oci8 extends DB_common
* *
* @see DB_common::tableInfo() * @see DB_common::tableInfo()
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
if ($this->options['portability'] & DB_PORTABILITY_LOWERCASE) { if ($this->options['portability'] & DB_PORTABILITY_LOWERCASE) {
$case_func = 'strtolower'; $case_func = 'strtolower';
@ -1061,7 +1088,6 @@ class DB_oci8 extends DB_common
$res['num_fields'] = $i; $res['num_fields'] = $i;
} }
@OCIFreeStatement($stmt); @OCIFreeStatement($stmt);
} else { } else {
if (isset($result->result)) { if (isset($result->result)) {
/* /*
@ -1114,7 +1140,7 @@ class DB_oci8 extends DB_common
* @access protected * @access protected
* @see DB_common::getListOf() * @see DB_common::getListOf()
*/ */
function getSpecialQuery($type) public function getSpecialQuery($type)
{ {
switch ($type) { switch ($type) {
case 'tables': case 'tables':
@ -1140,12 +1166,12 @@ class DB_oci8 extends DB_common
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since release 1.7.8. * @since Method available since release 1.7.8.
*/ */
function quoteFloat($float) { public function quoteFloat($float)
{
return $this->escapeSimple(str_replace(',', '.', strval(floatval($float)))); return $this->escapeSimple(str_replace(',', '.', strval(floatval($float))));
} }
// }}} // }}}
} }
/* /*
@ -1154,5 +1180,3 @@ class DB_oci8 extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -55,13 +55,13 @@ class DB_odbc extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'odbc'; public $phptype = 'odbc';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'sql92'; public $dbsyntax = 'sql92';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -81,7 +81,7 @@ class DB_odbc extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => 'emulate', 'limit' => 'emulate',
'new_link' => false, 'new_link' => false,
'numrows' => true, 'numrows' => true,
@ -95,7 +95,7 @@ class DB_odbc extends DB_common
* A mapping of native error codes to DB error codes * A mapping of native error codes to DB error codes
* @var array * @var array
*/ */
var $errorcode_map = array( public $errorcode_map = array(
'01004' => DB_ERROR_TRUNCATED, '01004' => DB_ERROR_TRUNCATED,
'07001' => DB_ERROR_MISMATCH, '07001' => DB_ERROR_MISMATCH,
'21S01' => DB_ERROR_VALUE_COUNT_ON_ROW, '21S01' => DB_ERROR_VALUE_COUNT_ON_ROW,
@ -132,13 +132,13 @@ class DB_odbc extends DB_common
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
/** /**
@ -146,7 +146,7 @@ class DB_odbc extends DB_common
* @var integer * @var integer
* @access private * @access private
*/ */
var $affected = 0; public $affected = 0;
// }}} // }}}
@ -157,7 +157,7 @@ class DB_odbc extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -178,7 +178,7 @@ class DB_odbc extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('odbc')) { if (!PEAR::loadExtension('odbc')) {
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
@ -213,18 +213,28 @@ class DB_odbc extends DB_common
$connect_function = $persistent ? 'odbc_pconnect' : 'odbc_connect'; $connect_function = $persistent ? 'odbc_pconnect' : 'odbc_connect';
if (empty($dsn['cursor'])) { if (empty($dsn['cursor'])) {
$this->connection = @$connect_function($odbcdsn, $dsn['username'], $this->connection = @$connect_function(
$dsn['password']); $odbcdsn,
$dsn['username'],
$dsn['password']
);
} else { } else {
$this->connection = @$connect_function($odbcdsn, $dsn['username'], $this->connection = @$connect_function(
$dsn['password'], $odbcdsn,
$dsn['cursor']); $dsn['username'],
$dsn['password'],
$dsn['cursor']
);
} }
if (!is_resource($this->connection)) { if (!is_resource($this->connection)) {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
$this->errorNative()); null,
null,
null,
$this->errorNative()
);
} }
return DB_OK; return DB_OK;
} }
@ -237,7 +247,7 @@ class DB_odbc extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
$err = @odbc_close($this->connection); $err = @odbc_close($this->connection);
$this->connection = null; $this->connection = null;
@ -256,7 +266,7 @@ class DB_odbc extends DB_common
* + the DB_OK constant for other successful queries * + the DB_OK constant for other successful queries
* + a DB_Error object on failure * + a DB_Error object on failure
*/ */
function simpleQuery($query) public function simpleQuery($query)
{ {
$this->last_query = $query; $this->last_query = $query;
$query = $this->modifyQuery($query); $query = $this->modifyQuery($query);
@ -286,7 +296,7 @@ class DB_odbc extends DB_common
* *
* @return true if a result is available otherwise return false * @return true if a result is available otherwise return false
*/ */
function nextResult($result) public function nextResult($result)
{ {
return @odbc_next_result($result); return @odbc_next_result($result);
} }
@ -314,7 +324,7 @@ class DB_odbc extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
$arr = array(); $arr = array();
if ($rownum !== null) { if ($rownum !== null) {
@ -365,7 +375,7 @@ class DB_odbc extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult($result) public function freeResult($result)
{ {
return is_resource($result) ? odbc_free_result($result) : false; return is_resource($result) ? odbc_free_result($result) : false;
} }
@ -386,7 +396,7 @@ class DB_odbc extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($result) public function numCols($result)
{ {
$cols = @odbc_num_fields($result); $cols = @odbc_num_fields($result);
if (!$cols) { if (!$cols) {
@ -405,7 +415,7 @@ class DB_odbc extends DB_common
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
if (empty($this->affected)) { // In case of SELECT stms if (empty($this->affected)) { // In case of SELECT stms
return 0; return 0;
@ -436,7 +446,7 @@ class DB_odbc extends DB_common
* *
* @see DB_result::numRows() * @see DB_result::numRows()
*/ */
function numRows($result) public function numRows($result)
{ {
$nrows = @odbc_num_rows($result); $nrows = @odbc_num_rows($result);
if ($nrows == -1) { if ($nrows == -1) {
@ -464,7 +474,7 @@ class DB_odbc extends DB_common
* @see DB_common::quoteIdentifier() * @see DB_common::quoteIdentifier()
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function quoteIdentifier($str) public function quoteIdentifier($str)
{ {
switch ($this->dsn['dbsyntax']) { switch ($this->dsn['dbsyntax']) {
case 'access': case 'access':
@ -496,7 +506,7 @@ class DB_odbc extends DB_common
* @see DB_common::nextID(), DB_common::getSequenceName(), * @see DB_common::nextID(), DB_common::getSequenceName(),
* DB_odbc::createSequence(), DB_odbc::dropSequence() * DB_odbc::createSequence(), DB_odbc::dropSequence()
*/ */
function nextId($seq_name, $ondemand = true) public function nextId($seq_name, $ondemand = true)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
$repeat = 0; $repeat = 0;
@ -546,7 +556,7 @@ class DB_odbc extends DB_common
* @see DB_common::createSequence(), DB_common::getSequenceName(), * @see DB_common::createSequence(), DB_common::getSequenceName(),
* DB_odbc::nextID(), DB_odbc::dropSequence() * DB_odbc::nextID(), DB_odbc::dropSequence()
*/ */
function createSequence($seq_name) public function createSequence($seq_name)
{ {
return $this->query('CREATE TABLE ' return $this->query('CREATE TABLE '
. $this->getSequenceName($seq_name) . $this->getSequenceName($seq_name)
@ -567,7 +577,7 @@ class DB_odbc extends DB_common
* @see DB_common::dropSequence(), DB_common::getSequenceName(), * @see DB_common::dropSequence(), DB_common::getSequenceName(),
* DB_odbc::nextID(), DB_odbc::createSequence() * DB_odbc::nextID(), DB_odbc::createSequence()
*/ */
function dropSequence($seq_name) public function dropSequence($seq_name)
{ {
return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name)); return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name));
} }
@ -583,7 +593,7 @@ class DB_odbc extends DB_common
* @return int DB_OK on success. A DB_Error object if the driver * @return int DB_OK on success. A DB_Error object if the driver
* doesn't support auto-committing transactions. * doesn't support auto-committing transactions.
*/ */
function autoCommit($onoff = false) public function autoCommit($onoff = false)
{ {
if (!@odbc_autocommit($this->connection, $onoff)) { if (!@odbc_autocommit($this->connection, $onoff)) {
return $this->odbcRaiseError(); return $this->odbcRaiseError();
@ -599,7 +609,7 @@ class DB_odbc extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function commit() public function commit()
{ {
if (!@odbc_commit($this->connection)) { if (!@odbc_commit($this->connection)) {
return $this->odbcRaiseError(); return $this->odbcRaiseError();
@ -615,7 +625,7 @@ class DB_odbc extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function rollback() public function rollback()
{ {
if (!@odbc_rollback($this->connection)) { if (!@odbc_rollback($this->connection)) {
return $this->odbcRaiseError(); return $this->odbcRaiseError();
@ -638,7 +648,7 @@ class DB_odbc extends DB_common
* @see DB_common::raiseError(), * @see DB_common::raiseError(),
* DB_odbc::errorNative(), DB_common::errorCode() * DB_odbc::errorNative(), DB_common::errorCode()
*/ */
function odbcRaiseError($errno = null) public function odbcRaiseError($errno = null)
{ {
if ($errno === null) { if ($errno === null) {
switch ($this->dbsyntax) { switch ($this->dbsyntax) {
@ -664,9 +674,13 @@ class DB_odbc extends DB_common
} }
foreach ($error_regexps as $regexp => $code) { foreach ($error_regexps as $regexp => $code) {
if (preg_match($regexp, $errormsg)) { if (preg_match($regexp, $errormsg)) {
return $this->raiseError($code, return $this->raiseError(
null, null, null, $code,
$native_code . ' ' . $errormsg); null,
null,
null,
$native_code . ' ' . $errormsg
);
} }
} }
$errno = DB_ERROR; $errno = DB_ERROR;
@ -678,8 +692,13 @@ class DB_odbc extends DB_common
$errno = $this->errorCode(odbc_error($this->connection)); $errno = $this->errorCode(odbc_error($this->connection));
} }
} }
return $this->raiseError($errno, null, null, null, return $this->raiseError(
$this->errorNative()); $errno,
null,
null,
null,
$this->errorNative()
);
} }
// }}} // }}}
@ -690,7 +709,7 @@ class DB_odbc extends DB_common
* *
* @return string the DBMS' error code and message * @return string the DBMS' error code and message
*/ */
function errorNative() public function errorNative()
{ {
if (!is_resource($this->connection)) { if (!is_resource($this->connection)) {
return @odbc_error() . ' ' . @odbc_errormsg(); return @odbc_error() . ' ' . @odbc_errormsg();
@ -717,7 +736,7 @@ class DB_odbc extends DB_common
* @see DB_common::tableInfo() * @see DB_common::tableInfo()
* @since Method available since Release 1.7.0 * @since Method available since Release 1.7.0
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
if (is_string($result)) { if (is_string($result)) {
/* /*
@ -803,7 +822,7 @@ class DB_odbc extends DB_common
* @see DB_common::getListOf() * @see DB_common::getListOf()
* @since Method available since Release 1.7.0 * @since Method available since Release 1.7.0
*/ */
function getSpecialQuery($type) public function getSpecialQuery($type)
{ {
switch ($type) { switch ($type) {
case 'databases': case 'databases':
@ -813,9 +832,10 @@ class DB_odbc extends DB_common
$res = @odbc_data_source($this->connection, SQL_FETCH_FIRST); $res = @odbc_data_source($this->connection, SQL_FETCH_FIRST);
if (is_array($res)) { if (is_array($res)) {
$out = array($res['server']); $out = array($res['server']);
while($res = @odbc_data_source($this->connection, while ($res = @odbc_data_source(
SQL_FETCH_NEXT)) $this->connection,
{ SQL_FETCH_NEXT
)) {
$out[] = $res['server']; $out[] = $res['server'];
} }
return $out; return $out;
@ -858,7 +878,6 @@ class DB_odbc extends DB_common
} }
// }}} // }}}
} }
/* /*
@ -867,5 +886,3 @@ class DB_odbc extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -54,13 +54,13 @@ class DB_pgsql extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'pgsql'; public $phptype = 'pgsql';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'pgsql'; public $dbsyntax = 'pgsql';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -75,7 +75,7 @@ class DB_pgsql extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => 'alter', 'limit' => 'alter',
'new_link' => '4.3.0', 'new_link' => '4.3.0',
'numrows' => true, 'numrows' => true,
@ -89,20 +89,20 @@ class DB_pgsql extends DB_common
* A mapping of native error codes to DB error codes * A mapping of native error codes to DB error codes
* @var array * @var array
*/ */
var $errorcode_map = array( public $errorcode_map = array(
); );
/** /**
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
/** /**
@ -110,7 +110,7 @@ class DB_pgsql extends DB_common
* @var bool * @var bool
* @access private * @access private
*/ */
var $autocommit = true; public $autocommit = true;
/** /**
* The quantity of transactions begun * The quantity of transactions begun
@ -121,27 +121,27 @@ class DB_pgsql extends DB_common
* @var integer * @var integer
* @access private * @access private
*/ */
var $transaction_opcount = 0; public $transaction_opcount = 0;
/** /**
* The number of rows affected by a data manipulation query * The number of rows affected by a data manipulation query
* @var integer * @var integer
*/ */
var $affected = 0; public $affected = 0;
/** /**
* The current row being looked at in fetchInto() * The current row being looked at in fetchInto()
* @var array * @var array
* @access private * @access private
*/ */
var $row = array(); public $row = array();
/** /**
* The number of rows in a given result set * The number of rows in a given result set
* @var array * @var array
* @access private * @access private
*/ */
var $_num_rows = array(); public $_num_rows = array();
// }}} // }}}
@ -152,7 +152,7 @@ class DB_pgsql extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -187,12 +187,12 @@ class DB_pgsql extends DB_common
* Example of connecting to a new link via a socket: * Example of connecting to a new link via a socket:
* <code> * <code>
* require_once 'DB.php'; * require_once 'DB.php';
* *
* $dsn = 'pgsql://user:pass@unix(/tmp)/dbname?new_link=true'; * $dsn = 'pgsql://user:pass@unix(/tmp)/dbname?new_link=true';
* $options = array( * $options = array(
* 'portability' => DB_PORTABILITY_ALL, * 'portability' => DB_PORTABILITY_ALL,
* ); * );
* *
* $db = DB::connect($dsn, $options); * $db = DB::connect($dsn, $options);
* if (PEAR::isError($db)) { * if (PEAR::isError($db)) {
* die($db->getMessage()); * die($db->getMessage());
@ -206,7 +206,7 @@ class DB_pgsql extends DB_common
* *
* @link http://www.postgresql.org/docs/current/static/libpq.html#LIBPQ-CONNECT * @link http://www.postgresql.org/docs/current/static/libpq.html#LIBPQ-CONNECT
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('pgsql')) { if (!PEAR::loadExtension('pgsql')) {
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
@ -262,8 +262,7 @@ class DB_pgsql extends DB_common
} }
if (isset($dsn['new_link']) if (isset($dsn['new_link'])
&& ($dsn['new_link'] == 'true' || $dsn['new_link'] === true)) && ($dsn['new_link'] == 'true' || $dsn['new_link'] === true)) {
{
if (version_compare(phpversion(), '4.3.0', '>=')) { if (version_compare(phpversion(), '4.3.0', '>=')) {
$params[] = PGSQL_CONNECT_FORCE_NEW; $params[] = PGSQL_CONNECT_FORCE_NEW;
} }
@ -274,19 +273,27 @@ class DB_pgsql extends DB_common
$ini = ini_get('track_errors'); $ini = ini_get('track_errors');
$php_errormsg = ''; $php_errormsg = '';
if ($ini) { if ($ini) {
$this->connection = @call_user_func_array($connect_function, $this->connection = @call_user_func_array(
$params); $connect_function,
$params
);
} else { } else {
@ini_set('track_errors', 1); @ini_set('track_errors', 1);
$this->connection = @call_user_func_array($connect_function, $this->connection = @call_user_func_array(
$params); $connect_function,
$params
);
@ini_set('track_errors', $ini); @ini_set('track_errors', $ini);
} }
if (!$this->connection) { if (!$this->connection) {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
$php_errormsg); null,
null,
null,
$php_errormsg
);
} }
return DB_OK; return DB_OK;
} }
@ -299,7 +306,7 @@ class DB_pgsql extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
$ret = @pg_close($this->connection); $ret = @pg_close($this->connection);
$this->connection = null; $this->connection = null;
@ -318,7 +325,7 @@ class DB_pgsql extends DB_common
* + the DB_OK constant for other successful queries * + the DB_OK constant for other successful queries
* + a DB_Error object on failure * + a DB_Error object on failure
*/ */
function simpleQuery($query) public function simpleQuery($query)
{ {
$ismanip = $this->_checkManip($query); $ismanip = $this->_checkManip($query);
$this->last_query = $query; $this->last_query = $query;
@ -353,9 +360,10 @@ class DB_pgsql extends DB_common
if ($ismanip) { if ($ismanip) {
$this->affected = @pg_affected_rows($result); $this->affected = @pg_affected_rows($result);
return DB_OK; return DB_OK;
} elseif (preg_match('/^\s*\(*\s*(SELECT|EXPLAIN|FETCH|SHOW|WITH)\s/si', } elseif (preg_match(
$query)) '/^\s*\(*\s*(SELECT|EXPLAIN|FETCH|SHOW|WITH)\s/si',
{ $query
)) {
$this->row[(int)$result] = 0; // reset the row counter. $this->row[(int)$result] = 0; // reset the row counter.
$numrows = $this->numRows($result); $numrows = $this->numRows($result);
if (is_object($numrows)) { if (is_object($numrows)) {
@ -382,7 +390,7 @@ class DB_pgsql extends DB_common
* *
* @return true if a result is available otherwise return false * @return true if a result is available otherwise return false
*/ */
function nextResult($result) public function nextResult($result)
{ {
return false; return false;
} }
@ -410,7 +418,7 @@ class DB_pgsql extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
$result_int = (int)$result; $result_int = (int)$result;
$rownum = ($rownum !== null) ? $rownum : $this->row[$result_int]; $rownum = ($rownum !== null) ? $rownum : $this->row[$result_int];
@ -454,7 +462,7 @@ class DB_pgsql extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult($result) public function freeResult($result)
{ {
if (is_resource($result)) { if (is_resource($result)) {
unset($this->row[(int)$result]); unset($this->row[(int)$result]);
@ -477,7 +485,8 @@ class DB_pgsql extends DB_common
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since release 1.7.8. * @since Method available since release 1.7.8.
*/ */
function quoteBoolean($boolean) { public function quoteBoolean($boolean)
{
return $boolean ? 'TRUE' : 'FALSE'; return $boolean ? 'TRUE' : 'FALSE';
} }
@ -497,7 +506,7 @@ class DB_pgsql extends DB_common
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function escapeSimple($str) public function escapeSimple($str)
{ {
if (function_exists('pg_escape_string')) { if (function_exists('pg_escape_string')) {
/* This fixes an undocumented BC break in PHP 5.2.0 which changed /* This fixes an undocumented BC break in PHP 5.2.0 which changed
@ -532,7 +541,7 @@ class DB_pgsql extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($result) public function numCols($result)
{ {
$cols = @pg_numfields($result); $cols = @pg_numfields($result);
if (!$cols) { if (!$cols) {
@ -557,7 +566,7 @@ class DB_pgsql extends DB_common
* *
* @see DB_result::numRows() * @see DB_result::numRows()
*/ */
function numRows($result) public function numRows($result)
{ {
$rows = @pg_numrows($result); $rows = @pg_numrows($result);
if ($rows === null) { if ($rows === null) {
@ -577,7 +586,7 @@ class DB_pgsql extends DB_common
* @return int DB_OK on success. A DB_Error object if the driver * @return int DB_OK on success. A DB_Error object if the driver
* doesn't support auto-committing transactions. * doesn't support auto-committing transactions.
*/ */
function autoCommit($onoff = false) public function autoCommit($onoff = false)
{ {
// XXX if $this->transaction_opcount > 0, we should probably // XXX if $this->transaction_opcount > 0, we should probably
// issue a warning here. // issue a warning here.
@ -593,7 +602,7 @@ class DB_pgsql extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function commit() public function commit()
{ {
if ($this->transaction_opcount > 0) { if ($this->transaction_opcount > 0) {
// (disabled) hack to shut up error messages from libpq.a // (disabled) hack to shut up error messages from libpq.a
@ -615,7 +624,7 @@ class DB_pgsql extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function rollback() public function rollback()
{ {
if ($this->transaction_opcount > 0) { if ($this->transaction_opcount > 0) {
$result = @pg_exec($this->connection, 'abort;'); $result = @pg_exec($this->connection, 'abort;');
@ -637,7 +646,7 @@ class DB_pgsql extends DB_common
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
return $this->affected; return $this->affected;
} }
@ -658,7 +667,7 @@ class DB_pgsql extends DB_common
* @see DB_common::nextID(), DB_common::getSequenceName(), * @see DB_common::nextID(), DB_common::getSequenceName(),
* DB_pgsql::createSequence(), DB_pgsql::dropSequence() * DB_pgsql::createSequence(), DB_pgsql::dropSequence()
*/ */
function nextId($seq_name, $ondemand = true) public function nextId($seq_name, $ondemand = true)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
$repeat = false; $repeat = false;
@ -700,7 +709,7 @@ class DB_pgsql extends DB_common
* @see DB_common::createSequence(), DB_common::getSequenceName(), * @see DB_common::createSequence(), DB_common::getSequenceName(),
* DB_pgsql::nextID(), DB_pgsql::dropSequence() * DB_pgsql::nextID(), DB_pgsql::dropSequence()
*/ */
function createSequence($seq_name) public function createSequence($seq_name)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
$result = $this->query("CREATE SEQUENCE ${seqname}"); $result = $this->query("CREATE SEQUENCE ${seqname}");
@ -720,7 +729,7 @@ class DB_pgsql extends DB_common
* @see DB_common::dropSequence(), DB_common::getSequenceName(), * @see DB_common::dropSequence(), DB_common::getSequenceName(),
* DB_pgsql::nextID(), DB_pgsql::createSequence() * DB_pgsql::nextID(), DB_pgsql::createSequence()
*/ */
function dropSequence($seq_name) public function dropSequence($seq_name)
{ {
return $this->query('DROP SEQUENCE ' return $this->query('DROP SEQUENCE '
. $this->getSequenceName($seq_name)); . $this->getSequenceName($seq_name));
@ -745,7 +754,7 @@ class DB_pgsql extends DB_common
* *
* @access protected * @access protected
*/ */
function modifyLimitQuery($query, $from, $count, $params = array()) public function modifyLimitQuery($query, $from, $count, $params = array())
{ {
return "$query LIMIT $count OFFSET $from"; return "$query LIMIT $count OFFSET $from";
} }
@ -765,7 +774,7 @@ class DB_pgsql extends DB_common
* @see DB_common::raiseError(), * @see DB_common::raiseError(),
* DB_pgsql::errorNative(), DB_pgsql::errorCode() * DB_pgsql::errorNative(), DB_pgsql::errorCode()
*/ */
function pgsqlRaiseError($errno = null) public function pgsqlRaiseError($errno = null)
{ {
$native = $this->errorNative(); $native = $this->errorNative();
if (!$native) { if (!$native) {
@ -784,12 +793,12 @@ class DB_pgsql extends DB_common
/** /**
* Gets the DBMS' native error message produced by the last query * Gets the DBMS' native error message produced by the last query
* *
* {@internal Error messages are used instead of error codes * {@internal Error messages are used instead of error codes
* in order to support older versions of PostgreSQL.}} * in order to support older versions of PostgreSQL.}}
* *
* @return string the DBMS' error message * @return string the DBMS' error message
*/ */
function errorNative() public function errorNative()
{ {
return @pg_errormessage($this->connection); return @pg_errormessage($this->connection);
} }
@ -803,7 +812,7 @@ class DB_pgsql extends DB_common
* @param string $errormsg error message returned from the database * @param string $errormsg error message returned from the database
* @return integer an error number from a DB error constant * @return integer an error number from a DB error constant
*/ */
function errorCode($errormsg) public function errorCode($errormsg)
{ {
static $error_regexps; static $error_regexps;
if (!isset($error_regexps)) { if (!isset($error_regexps)) {
@ -880,7 +889,7 @@ class DB_pgsql extends DB_common
* *
* @see DB_common::tableInfo() * @see DB_common::tableInfo()
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
if (is_string($result)) { if (is_string($result)) {
/* /*
@ -965,7 +974,7 @@ class DB_pgsql extends DB_common
* *
* @access private * @access private
*/ */
function _pgFieldFlags($resource, $num_field, $table_name) public function _pgFieldFlags($resource, $num_field, $table_name)
{ {
$field_name = @pg_fieldname($resource, $num_field); $field_name = @pg_fieldname($resource, $num_field);
@ -1019,8 +1028,9 @@ class DB_pgsql extends DB_common
if (in_array($num_field + 1, $keys)) { if (in_array($num_field + 1, $keys)) {
$flags .= ($row[0] == 't' && $row[1] == 'f') ? 'unique_key ' : ''; $flags .= ($row[0] == 't' && $row[1] == 'f') ? 'unique_key ' : '';
$flags .= ($row[1] == 't') ? 'primary_key ' : ''; $flags .= ($row[1] == 't') ? 'primary_key ' : '';
if (count($keys) > 1) if (count($keys) > 1) {
$flags .= 'multiple_key '; $flags .= 'multiple_key ';
}
} }
} }
@ -1041,7 +1051,7 @@ class DB_pgsql extends DB_common
* @access protected * @access protected
* @see DB_common::getListOf() * @see DB_common::getListOf()
*/ */
function getSpecialQuery($type) public function getSpecialQuery($type)
{ {
switch ($type) { switch ($type) {
case 'tables': case 'tables':
@ -1105,12 +1115,11 @@ class DB_pgsql extends DB_common
* *
* @access protected * @access protected
*/ */
function _checkManip($query) public function _checkManip($query)
{ {
return (preg_match('/^\s*(SAVEPOINT|RELEASE)\s+/i', $query) return (preg_match('/^\s*(SAVEPOINT|RELEASE)\s+/i', $query)
|| parent::_checkManip($query)); || parent::_checkManip($query));
} }
} }
/* /*
@ -1119,5 +1128,3 @@ class DB_pgsql extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -58,13 +58,13 @@ class DB_sqlite extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'sqlite'; public $phptype = 'sqlite';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'sqlite'; public $dbsyntax = 'sqlite';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -79,7 +79,7 @@ class DB_sqlite extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => 'alter', 'limit' => 'alter',
'new_link' => false, 'new_link' => false,
'numrows' => true, 'numrows' => true,
@ -98,20 +98,20 @@ class DB_sqlite extends DB_common
* *
* @var array * @var array
*/ */
var $errorcode_map = array( public $errorcode_map = array(
); );
/** /**
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
/** /**
@ -121,7 +121,7 @@ class DB_sqlite extends DB_common
* *
* @var array * @var array
*/ */
var $keywords = array ( public $keywords = array(
'BLOB' => '', 'BLOB' => '',
'BOOLEAN' => '', 'BOOLEAN' => '',
'CHARACTER' => '', 'CHARACTER' => '',
@ -145,7 +145,7 @@ class DB_sqlite extends DB_common
* @var string * @var string
* @access private * @access private
*/ */
var $_lasterror = ''; public $_lasterror = '';
// }}} // }}}
@ -156,7 +156,7 @@ class DB_sqlite extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -176,12 +176,12 @@ class DB_sqlite extends DB_common
* Example of connecting to a database in read-only mode: * Example of connecting to a database in read-only mode:
* <code> * <code>
* require_once 'DB.php'; * require_once 'DB.php';
* *
* $dsn = 'sqlite:///path/and/name/of/db/file?mode=0400'; * $dsn = 'sqlite:///path/and/name/of/db/file?mode=0400';
* $options = array( * $options = array(
* 'portability' => DB_PORTABILITY_ALL, * 'portability' => DB_PORTABILITY_ALL,
* ); * );
* *
* $db = DB::connect($dsn, $options); * $db = DB::connect($dsn, $options);
* if (PEAR::isError($db)) { * if (PEAR::isError($db)) {
* die($db->getMessage()); * die($db->getMessage());
@ -193,7 +193,7 @@ class DB_sqlite extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('sqlite')) { if (!PEAR::loadExtension('sqlite')) {
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
@ -214,8 +214,7 @@ class DB_sqlite extends DB_common
return $this->sqliteRaiseError(DB_ERROR_NOT_FOUND); return $this->sqliteRaiseError(DB_ERROR_NOT_FOUND);
} }
if (!isset($dsn['mode']) || if (!isset($dsn['mode']) ||
!is_numeric($dsn['mode'])) !is_numeric($dsn['mode'])) {
{
$mode = 0644; $mode = 0644;
} else { } else {
$mode = octdec($dsn['mode']); $mode = octdec($dsn['mode']);
@ -242,9 +241,13 @@ class DB_sqlite extends DB_common
$php_errormsg = ''; $php_errormsg = '';
if (!$this->connection = @$connect_function($dsn['database'])) { if (!$this->connection = @$connect_function($dsn['database'])) {
return $this->raiseError(DB_ERROR_NODBSELECTED, return $this->raiseError(
null, null, null, DB_ERROR_NODBSELECTED,
$php_errormsg); null,
null,
null,
$php_errormsg
);
} }
return DB_OK; return DB_OK;
} }
@ -257,7 +260,7 @@ class DB_sqlite extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
$ret = @sqlite_close($this->connection); $ret = @sqlite_close($this->connection);
$this->connection = null; $this->connection = null;
@ -280,7 +283,7 @@ class DB_sqlite extends DB_common
* + the DB_OK constant for other successful queries * + the DB_OK constant for other successful queries
* + a DB_Error object on failure * + a DB_Error object on failure
*/ */
function simpleQuery($query) public function simpleQuery($query)
{ {
$ismanip = $this->_checkManip($query); $ismanip = $this->_checkManip($query);
$this->last_query = $query; $this->last_query = $query;
@ -319,7 +322,7 @@ class DB_sqlite extends DB_common
* *
* @return bool true if a result is available otherwise return false * @return bool true if a result is available otherwise return false
*/ */
function nextResult($result) public function nextResult($result)
{ {
return false; return false;
} }
@ -347,7 +350,7 @@ class DB_sqlite extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
if ($rownum !== null) { if ($rownum !== null) {
if (!@sqlite_seek($this->result, $rownum)) { if (!@sqlite_seek($this->result, $rownum)) {
@ -405,7 +408,7 @@ class DB_sqlite extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult(&$result) public function freeResult(&$result)
{ {
// XXX No native free? // XXX No native free?
if (!is_resource($result)) { if (!is_resource($result)) {
@ -431,7 +434,7 @@ class DB_sqlite extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($result) public function numCols($result)
{ {
$cols = @sqlite_num_fields($result); $cols = @sqlite_num_fields($result);
if (!$cols) { if (!$cols) {
@ -456,7 +459,7 @@ class DB_sqlite extends DB_common
* *
* @see DB_result::numRows() * @see DB_result::numRows()
*/ */
function numRows($result) public function numRows($result)
{ {
$rows = @sqlite_num_rows($result); $rows = @sqlite_num_rows($result);
if ($rows === null) { if ($rows === null) {
@ -475,7 +478,7 @@ class DB_sqlite extends DB_common
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
return @sqlite_changes($this->connection); return @sqlite_changes($this->connection);
} }
@ -493,7 +496,7 @@ class DB_sqlite extends DB_common
* @see DB_common::dropSequence(), DB_common::getSequenceName(), * @see DB_common::dropSequence(), DB_common::getSequenceName(),
* DB_sqlite::nextID(), DB_sqlite::createSequence() * DB_sqlite::nextID(), DB_sqlite::createSequence()
*/ */
function dropSequence($seq_name) public function dropSequence($seq_name)
{ {
return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name)); return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name));
} }
@ -508,7 +511,7 @@ class DB_sqlite extends DB_common
* @see DB_common::createSequence(), DB_common::getSequenceName(), * @see DB_common::createSequence(), DB_common::getSequenceName(),
* DB_sqlite::nextID(), DB_sqlite::dropSequence() * DB_sqlite::nextID(), DB_sqlite::dropSequence()
*/ */
function createSequence($seq_name) public function createSequence($seq_name)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
$query = 'CREATE TABLE ' . $seqname . $query = 'CREATE TABLE ' . $seqname .
@ -543,7 +546,7 @@ class DB_sqlite extends DB_common
* @see DB_common::nextID(), DB_common::getSequenceName(), * @see DB_common::nextID(), DB_common::getSequenceName(),
* DB_sqlite::createSequence(), DB_sqlite::dropSequence() * DB_sqlite::createSequence(), DB_sqlite::dropSequence()
*/ */
function nextId($seq_name, $ondemand = true) public function nextId($seq_name, $ondemand = true)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
@ -558,8 +561,7 @@ class DB_sqlite extends DB_common
return $id; return $id;
} }
} elseif ($ondemand && DB::isError($result) && } elseif ($ondemand && DB::isError($result) &&
$result->getCode() == DB_ERROR_NOSUCHTABLE) $result->getCode() == DB_ERROR_NOSUCHTABLE) {
{
$result = $this->createSequence($seq_name); $result = $this->createSequence($seq_name);
if (DB::isError($result)) { if (DB::isError($result)) {
return $this->raiseError($result); return $this->raiseError($result);
@ -587,7 +589,7 @@ class DB_sqlite extends DB_common
* @return mixed an array on an unspecified key, integer on a passed * @return mixed an array on an unspecified key, integer on a passed
* arg and false at a stats error * arg and false at a stats error
*/ */
function getDbFileStats($arg = '') public function getDbFileStats($arg = '')
{ {
$stats = stat($this->dsn['database']); $stats = stat($this->dsn['database']);
if ($stats == false) { if ($stats == false) {
@ -625,7 +627,7 @@ class DB_sqlite extends DB_common
* @since Method available since Release 1.6.1 * @since Method available since Release 1.6.1
* @see DB_common::escapeSimple() * @see DB_common::escapeSimple()
*/ */
function escapeSimple($str) public function escapeSimple($str)
{ {
return @sqlite_escape_string($str); return @sqlite_escape_string($str);
} }
@ -649,7 +651,7 @@ class DB_sqlite extends DB_common
* *
* @access protected * @access protected
*/ */
function modifyLimitQuery($query, $from, $count, $params = array()) public function modifyLimitQuery($query, $from, $count, $params = array())
{ {
return "$query LIMIT $count OFFSET $from"; return "$query LIMIT $count OFFSET $from";
} }
@ -671,12 +673,15 @@ class DB_sqlite extends DB_common
* @access protected * @access protected
* @see DB_common::setOption() * @see DB_common::setOption()
*/ */
function modifyQuery($query) public function modifyQuery($query)
{ {
if ($this->options['portability'] & DB_PORTABILITY_DELETE_COUNT) { if ($this->options['portability'] & DB_PORTABILITY_DELETE_COUNT) {
if (preg_match('/^\s*DELETE\s+FROM\s+(\S+)\s*$/i', $query)) { if (preg_match('/^\s*DELETE\s+FROM\s+(\S+)\s*$/i', $query)) {
$query = preg_replace('/^\s*DELETE\s+FROM\s+(\S+)\s*$/', $query = preg_replace(
'DELETE FROM \1 WHERE 1=1', $query); '/^\s*DELETE\s+FROM\s+(\S+)\s*$/',
'DELETE FROM \1 WHERE 1=1',
$query
);
} }
} }
return $query; return $query;
@ -697,7 +702,7 @@ class DB_sqlite extends DB_common
* @see DB_common::raiseError(), * @see DB_common::raiseError(),
* DB_sqlite::errorNative(), DB_sqlite::errorCode() * DB_sqlite::errorNative(), DB_sqlite::errorCode()
*/ */
function sqliteRaiseError($errno = null) public function sqliteRaiseError($errno = null)
{ {
$native = $this->errorNative(); $native = $this->errorNative();
if ($errno === null) { if ($errno === null) {
@ -721,7 +726,7 @@ class DB_sqlite extends DB_common
* *
* @return string the DBMS' error message * @return string the DBMS' error message
*/ */
function errorNative() public function errorNative()
{ {
return $this->_lasterror; return $this->_lasterror;
} }
@ -736,7 +741,7 @@ class DB_sqlite extends DB_common
* *
* @return integer the DB error number * @return integer the DB error number
*/ */
function errorCode($errormsg) public function errorCode($errormsg)
{ {
static $error_regexps; static $error_regexps;
@ -785,22 +790,29 @@ class DB_sqlite extends DB_common
* @see DB_common::tableInfo() * @see DB_common::tableInfo()
* @since Method available since Release 1.7.0 * @since Method available since Release 1.7.0
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
if (is_string($result)) { if (is_string($result)) {
/* /*
* Probably received a table name. * Probably received a table name.
* Create a result resource identifier. * Create a result resource identifier.
*/ */
$id = @sqlite_array_query($this->connection, $id = @sqlite_array_query(
"PRAGMA table_info('$result');", $this->connection,
SQLITE_ASSOC); "PRAGMA table_info('$result');",
SQLITE_ASSOC
);
$got_string = true; $got_string = true;
} else { } else {
$this->last_query = ''; $this->last_query = '';
return $this->raiseError(DB_ERROR_NOT_CAPABLE, null, null, null, return $this->raiseError(
'This DBMS can not obtain tableInfo' . DB_ERROR_NOT_CAPABLE,
' from result sets'); null,
null,
null,
'This DBMS can not obtain tableInfo' .
' from result sets'
);
} }
if ($this->options['portability'] & DB_PORTABILITY_LOWERCASE) { if ($this->options['portability'] & DB_PORTABILITY_LOWERCASE) {
@ -820,7 +832,7 @@ class DB_sqlite extends DB_common
if (strpos($id[$i]['type'], '(') !== false) { if (strpos($id[$i]['type'], '(') !== false) {
$bits = explode('(', $id[$i]['type']); $bits = explode('(', $id[$i]['type']);
$type = $bits[0]; $type = $bits[0];
$len = rtrim($bits[1],')'); $len = rtrim($bits[1], ')');
} else { } else {
$type = $id[$i]['type']; $type = $id[$i]['type'];
$len = 0; $len = 0;
@ -877,11 +889,16 @@ class DB_sqlite extends DB_common
* @access protected * @access protected
* @see DB_common::getListOf() * @see DB_common::getListOf()
*/ */
function getSpecialQuery($type, $args = array()) public function getSpecialQuery($type, $args = array())
{ {
if (!is_array($args)) { if (!is_array($args)) {
return $this->raiseError('no key specified', null, null, null, return $this->raiseError(
'Argument has to be an array.'); 'no key specified',
null,
null,
null,
'Argument has to be an array.'
);
} }
switch ($type) { switch ($type) {
@ -959,5 +976,3 @@ class DB_sqlite extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -47,33 +47,33 @@ class DB_storage extends PEAR
/** the name of the table (or view, if the backend database supports /** the name of the table (or view, if the backend database supports
updates in views) we hold data from */ updates in views) we hold data from */
var $_table = null; public $_table = null;
/** which column(s) in the table contains primary keys, can be a /** which column(s) in the table contains primary keys, can be a
string for single-column primary keys, or an array of strings string for single-column primary keys, or an array of strings
for multiple-column primary keys */ for multiple-column primary keys */
var $_keycolumn = null; public $_keycolumn = null;
/** DB connection handle used for all transactions */ /** DB connection handle used for all transactions */
var $_dbh = null; public $_dbh = null;
/** an assoc with the names of database fields stored as properties /** an assoc with the names of database fields stored as properties
in this object */ in this object */
var $_properties = array(); public $_properties = array();
/** an assoc with the names of the properties in this object that /** an assoc with the names of the properties in this object that
have been changed since they were fetched from the database */ have been changed since they were fetched from the database */
var $_changes = array(); public $_changes = array();
/** flag that decides if data in this object can be changed. /** flag that decides if data in this object can be changed.
objects that don't have their table's key column in their objects that don't have their table's key column in their
property lists will be flagged as read-only. */ property lists will be flagged as read-only. */
var $_readonly = false; public $_readonly = false;
/** function or method that implements a validator for fields that /** function or method that implements a validator for fields that
are set, this validator function returns true if the field is are set, this validator function returns true if the field is
valid, false if not */ valid, false if not */
var $_validator = null; public $_validator = null;
// }}} // }}}
// {{{ constructor // {{{ constructor
@ -94,7 +94,7 @@ class DB_storage extends PEAR
* a reference to this object * a reference to this object
* *
*/ */
function __construct($table, $keycolumn, &$dbh, $validator = null) public function __construct($table, $keycolumn, &$dbh, $validator = null)
{ {
$this->PEAR('DB_Error'); $this->PEAR('DB_Error');
$this->_table = $table; $this->_table = $table;
@ -115,7 +115,7 @@ class DB_storage extends PEAR
* *
* @access private * @access private
*/ */
function _makeWhere($keyval = null) public function _makeWhere($keyval = null)
{ {
if (is_array($this->_keycolumn)) { if (is_array($this->_keycolumn)) {
if ($keyval === null) { if ($keyval === null) {
@ -164,7 +164,7 @@ class DB_storage extends PEAR
* *
* @return int DB_OK on success, a DB error if not * @return int DB_OK on success, a DB error if not
*/ */
function setup($keyval) public function setup($keyval)
{ {
$whereclause = $this->_makeWhere($keyval); $whereclause = $this->_makeWhere($keyval);
$query = 'SELECT * FROM ' . $this->_table . ' WHERE ' . $whereclause; $query = 'SELECT * FROM ' . $this->_table . ' WHERE ' . $whereclause;
@ -177,8 +177,15 @@ class DB_storage extends PEAR
return $row; return $row;
} }
if (!$row) { if (!$row) {
return $this->raiseError(null, DB_ERROR_NOT_FOUND, null, null, return $this->raiseError(
$query, null, true); null,
DB_ERROR_NOT_FOUND,
null,
null,
$query,
null,
true
);
} }
foreach ($row as $key => $value) { foreach ($row as $key => $value) {
$this->_properties[$key] = true; $this->_properties[$key] = true;
@ -194,7 +201,7 @@ class DB_storage extends PEAR
* Create a new (empty) row in the configured table for this * Create a new (empty) row in the configured table for this
* object. * object.
*/ */
function insert($newpk) public function insert($newpk)
{ {
if (is_array($this->_keycolumn)) { if (is_array($this->_keycolumn)) {
$primarykey = $this->_keycolumn; $primarykey = $this->_keycolumn;
@ -225,7 +232,7 @@ class DB_storage extends PEAR
* Output a simple description of this DB_storage object. * Output a simple description of this DB_storage object.
* @return string object description * @return string object description
*/ */
function toString() public function toString()
{ {
$info = strtolower(get_class($this)); $info = strtolower(get_class($this));
$info .= " (table="; $info .= " (table=";
@ -272,7 +279,7 @@ class DB_storage extends PEAR
/** /**
* Dump the contents of this object to "standard output". * Dump the contents of this object to "standard output".
*/ */
function dump() public function dump()
{ {
foreach ($this->_properties as $prop => $foo) { foreach ($this->_properties as $prop => $foo) {
print "$prop = "; print "$prop = ";
@ -290,7 +297,7 @@ class DB_storage extends PEAR
* of properties/columns * of properties/columns
* @return object a new instance of DB_storage or a subclass of it * @return object a new instance of DB_storage or a subclass of it
*/ */
function &create($table, &$data) public function &create($table, &$data)
{ {
$classname = strtolower(get_class($this)); $classname = strtolower(get_class($this));
$obj = new $classname($table); $obj = new $classname($table);
@ -319,39 +326,39 @@ class DB_storage extends PEAR
* key column was not found among the columns returned by $query), * key column was not found among the columns returned by $query),
* or another DB error code in case of errors. * or another DB error code in case of errors.
*/ */
// XXX commented out for now // XXX commented out for now
/* /*
function loadFromQuery($query, $params = null) function loadFromQuery($query, $params = null)
{ {
if (sizeof($this->_properties)) { if (sizeof($this->_properties)) {
if (sizeof($this->_changes)) { if (sizeof($this->_changes)) {
$this->store(); $this->store();
$this->_changes = array(); $this->_changes = array();
}
$this->_properties = array();
} }
$this->_properties = array(); $rowdata = $this->_dbh->getRow($query, DB_FETCHMODE_ASSOC, $params);
} if (DB::isError($rowdata)) {
$rowdata = $this->_dbh->getRow($query, DB_FETCHMODE_ASSOC, $params); return $rowdata;
if (DB::isError($rowdata)) {
return $rowdata;
}
reset($rowdata);
$found_keycolumn = false;
while (list($key, $value) = each($rowdata)) {
if ($key == $this->_keycolumn) {
$found_keycolumn = true;
} }
$this->_properties[$key] = true; reset($rowdata);
$this->$key = &$value; $found_keycolumn = false;
unset($value); // have to unset, or all properties will while (list($key, $value) = each($rowdata)) {
// refer to the same value if ($key == $this->_keycolumn) {
$found_keycolumn = true;
}
$this->_properties[$key] = true;
$this->$key = &$value;
unset($value); // have to unset, or all properties will
// refer to the same value
}
if (!$found_keycolumn) {
$this->_readonly = true;
return DB_WARNING_READ_ONLY;
}
return DB_OK;
} }
if (!$found_keycolumn) { */
$this->_readonly = true;
return DB_WARNING_READ_ONLY;
}
return DB_OK;
}
*/
// }}} // }}}
// {{{ set() // {{{ set()
@ -359,24 +366,33 @@ class DB_storage extends PEAR
/** /**
* Modify an attriute value. * Modify an attriute value.
*/ */
function set($property, $newvalue) public function set($property, $newvalue)
{ {
// only change if $property is known and object is not // only change if $property is known and object is not
// read-only // read-only
if ($this->_readonly) { if ($this->_readonly) {
return $this->raiseError(null, DB_WARNING_READ_ONLY, null, return $this->raiseError(
null, null, null, true); null,
DB_WARNING_READ_ONLY,
null,
null,
null,
null,
true
);
} }
if (@isset($this->_properties[$property])) { if (@isset($this->_properties[$property])) {
if (empty($this->_validator)) { if (empty($this->_validator)) {
$valid = true; $valid = true;
} else { } else {
$valid = @call_user_func($this->_validator, $valid = @call_user_func(
$this->_table, $this->_validator,
$property, $this->_table,
$newvalue, $property,
$this->$property, $newvalue,
$this); $this->$property,
$this
);
} }
if ($valid) { if ($valid) {
$this->$property = $newvalue; $this->$property = $newvalue;
@ -386,15 +402,27 @@ class DB_storage extends PEAR
$this->_changes[$property]++; $this->_changes[$property]++;
} }
} else { } else {
return $this->raiseError(null, DB_ERROR_INVALID, null, return $this->raiseError(
null, "invalid field: $property", null,
null, true); DB_ERROR_INVALID,
null,
null,
"invalid field: $property",
null,
true
);
} }
return true; return true;
} }
return $this->raiseError(null, DB_ERROR_NOSUCHFIELD, null, return $this->raiseError(
null, "unknown field: $property", null,
null, true); DB_ERROR_NOSUCHFIELD,
null,
null,
"unknown field: $property",
null,
true
);
} }
// }}} // }}}
@ -408,7 +436,7 @@ class DB_storage extends PEAR
* @return attribute contents, or null if the attribute name is * @return attribute contents, or null if the attribute name is
* unknown * unknown
*/ */
function &get($property) public function &get($property)
{ {
// only return if $property is known // only return if $property is known
if (isset($this->_properties[$property])) { if (isset($this->_properties[$property])) {
@ -425,7 +453,7 @@ class DB_storage extends PEAR
* Destructor, calls DB_storage::store() if there are changes * Destructor, calls DB_storage::store() if there are changes
* that are to be kept. * that are to be kept.
*/ */
function _DB_storage() public function _DB_storage()
{ {
if (sizeof($this->_changes)) { if (sizeof($this->_changes)) {
$this->store(); $this->store();
@ -443,7 +471,7 @@ class DB_storage extends PEAR
* *
* @return DB_OK or a DB error * @return DB_OK or a DB error
*/ */
function store() public function store()
{ {
$params = array(); $params = array();
$vars = array(); $vars = array();
@ -473,11 +501,18 @@ class DB_storage extends PEAR
* *
* @return mixed DB_OK or a DB error * @return mixed DB_OK or a DB error
*/ */
function remove() public function remove()
{ {
if ($this->_readonly) { if ($this->_readonly) {
return $this->raiseError(null, DB_WARNING_READ_ONLY, null, return $this->raiseError(
null, null, null, true); null,
DB_WARNING_READ_ONLY,
null,
null,
null,
null,
true
);
} }
$query = 'DELETE FROM ' . $this->_table .' WHERE '. $query = 'DELETE FROM ' . $this->_table .' WHERE '.
$this->_makeWhere(); $this->_makeWhere();
@ -502,5 +537,3 @@ class DB_storage extends PEAR
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>

View File

@ -57,13 +57,13 @@ class DB_sybase extends DB_common
* The DB driver type (mysql, oci8, odbc, etc.) * The DB driver type (mysql, oci8, odbc, etc.)
* @var string * @var string
*/ */
var $phptype = 'sybase'; public $phptype = 'sybase';
/** /**
* The database syntax variant to be used (db2, access, etc.), if any * The database syntax variant to be used (db2, access, etc.), if any
* @var string * @var string
*/ */
var $dbsyntax = 'sybase'; public $dbsyntax = 'sybase';
/** /**
* The capabilities of this DB implementation * The capabilities of this DB implementation
@ -78,7 +78,7 @@ class DB_sybase extends DB_common
* *
* @var array * @var array
*/ */
var $features = array( public $features = array(
'limit' => 'emulate', 'limit' => 'emulate',
'new_link' => false, 'new_link' => false,
'numrows' => true, 'numrows' => true,
@ -92,20 +92,20 @@ class DB_sybase extends DB_common
* A mapping of native error codes to DB error codes * A mapping of native error codes to DB error codes
* @var array * @var array
*/ */
var $errorcode_map = array( public $errorcode_map = array(
); );
/** /**
* The raw database connection created by PHP * The raw database connection created by PHP
* @var resource * @var resource
*/ */
var $connection; public $connection;
/** /**
* The DSN information for connecting to a database * The DSN information for connecting to a database
* @var array * @var array
*/ */
var $dsn = array(); public $dsn = array();
/** /**
@ -113,7 +113,7 @@ class DB_sybase extends DB_common
* @var bool * @var bool
* @access private * @access private
*/ */
var $autocommit = true; public $autocommit = true;
/** /**
* The quantity of transactions begun * The quantity of transactions begun
@ -124,7 +124,7 @@ class DB_sybase extends DB_common
* @var integer * @var integer
* @access private * @access private
*/ */
var $transaction_opcount = 0; public $transaction_opcount = 0;
/** /**
* The database specified in the DSN * The database specified in the DSN
@ -134,7 +134,7 @@ class DB_sybase extends DB_common
* @var string * @var string
* @access private * @access private
*/ */
var $_db = ''; public $_db = '';
// }}} // }}}
@ -145,7 +145,7 @@ class DB_sybase extends DB_common
* *
* @return void * @return void
*/ */
function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
@ -169,11 +169,10 @@ class DB_sybase extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function connect($dsn, $persistent = false) public function connect($dsn, $persistent = false)
{ {
if (!PEAR::loadExtension('sybase') && if (!PEAR::loadExtension('sybase') &&
!PEAR::loadExtension('sybase_ct')) !PEAR::loadExtension('sybase_ct')) {
{
return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);
} }
@ -190,28 +189,42 @@ class DB_sybase extends DB_common
$connect_function = $persistent ? 'sybase_pconnect' : 'sybase_connect'; $connect_function = $persistent ? 'sybase_pconnect' : 'sybase_connect';
if ($dsn['username']) { if ($dsn['username']) {
$this->connection = @$connect_function($dsn['hostspec'], $this->connection = @$connect_function(
$dsn['username'], $dsn['hostspec'],
$dsn['password'], $dsn['username'],
$dsn['charset'], $dsn['password'],
$dsn['appname']); $dsn['charset'],
$dsn['appname']
);
} else { } else {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
'The DSN did not contain a username.'); null,
null,
null,
'The DSN did not contain a username.'
);
} }
if (!$this->connection) { if (!$this->connection) {
return $this->raiseError(DB_ERROR_CONNECT_FAILED, return $this->raiseError(
null, null, null, DB_ERROR_CONNECT_FAILED,
@sybase_get_last_message()); null,
null,
null,
@sybase_get_last_message()
);
} }
if ($dsn['database']) { if ($dsn['database']) {
if (!@sybase_select_db($dsn['database'], $this->connection)) { if (!@sybase_select_db($dsn['database'], $this->connection)) {
return $this->raiseError(DB_ERROR_NODBSELECTED, return $this->raiseError(
null, null, null, DB_ERROR_NODBSELECTED,
@sybase_get_last_message()); null,
null,
null,
@sybase_get_last_message()
);
} }
$this->_db = $dsn['database']; $this->_db = $dsn['database'];
} }
@ -227,7 +240,7 @@ class DB_sybase extends DB_common
* *
* @return bool TRUE on success, FALSE on failure * @return bool TRUE on success, FALSE on failure
*/ */
function disconnect() public function disconnect()
{ {
$ret = @sybase_close($this->connection); $ret = @sybase_close($this->connection);
$this->connection = null; $this->connection = null;
@ -246,7 +259,7 @@ class DB_sybase extends DB_common
* + the DB_OK constant for other successful queries * + the DB_OK constant for other successful queries
* + a DB_Error object on failure * + a DB_Error object on failure
*/ */
function simpleQuery($query) public function simpleQuery($query)
{ {
$ismanip = $this->_checkManip($query); $ismanip = $this->_checkManip($query);
$this->last_query = $query; $this->last_query = $query;
@ -287,7 +300,7 @@ class DB_sybase extends DB_common
* *
* @return true if a result is available otherwise return false * @return true if a result is available otherwise return false
*/ */
function nextResult($result) public function nextResult($result)
{ {
return false; return false;
} }
@ -315,7 +328,7 @@ class DB_sybase extends DB_common
* *
* @see DB_result::fetchInto() * @see DB_result::fetchInto()
*/ */
function fetchInto($result, &$arr, $fetchmode, $rownum = null) public function fetchInto($result, &$arr, $fetchmode, $rownum = null)
{ {
if ($rownum !== null) { if ($rownum !== null) {
if (!@sybase_data_seek($result, $rownum)) { if (!@sybase_data_seek($result, $rownum)) {
@ -368,7 +381,7 @@ class DB_sybase extends DB_common
* *
* @see DB_result::free() * @see DB_result::free()
*/ */
function freeResult($result) public function freeResult($result)
{ {
return is_resource($result) ? sybase_free_result($result) : false; return is_resource($result) ? sybase_free_result($result) : false;
} }
@ -389,7 +402,7 @@ class DB_sybase extends DB_common
* *
* @see DB_result::numCols() * @see DB_result::numCols()
*/ */
function numCols($result) public function numCols($result)
{ {
$cols = @sybase_num_fields($result); $cols = @sybase_num_fields($result);
if (!$cols) { if (!$cols) {
@ -414,7 +427,7 @@ class DB_sybase extends DB_common
* *
* @see DB_result::numRows() * @see DB_result::numRows()
*/ */
function numRows($result) public function numRows($result)
{ {
$rows = @sybase_num_rows($result); $rows = @sybase_num_rows($result);
if ($rows === false) { if ($rows === false) {
@ -433,7 +446,7 @@ class DB_sybase extends DB_common
* *
* @return int the number of rows. A DB_Error object on failure. * @return int the number of rows. A DB_Error object on failure.
*/ */
function affectedRows() public function affectedRows()
{ {
if ($this->_last_query_manip) { if ($this->_last_query_manip) {
$result = @sybase_affected_rows($this->connection); $result = @sybase_affected_rows($this->connection);
@ -441,7 +454,7 @@ class DB_sybase extends DB_common
$result = 0; $result = 0;
} }
return $result; return $result;
} }
// }}} // }}}
// {{{ nextId() // {{{ nextId()
@ -459,7 +472,7 @@ class DB_sybase extends DB_common
* @see DB_common::nextID(), DB_common::getSequenceName(), * @see DB_common::nextID(), DB_common::getSequenceName(),
* DB_sybase::createSequence(), DB_sybase::dropSequence() * DB_sybase::createSequence(), DB_sybase::dropSequence()
*/ */
function nextId($seq_name, $ondemand = true) public function nextId($seq_name, $ondemand = true)
{ {
$seqname = $this->getSequenceName($seq_name); $seqname = $this->getSequenceName($seq_name);
if ($this->_db && !@sybase_select_db($this->_db, $this->connection)) { if ($this->_db && !@sybase_select_db($this->_db, $this->connection)) {
@ -471,8 +484,7 @@ class DB_sybase extends DB_common
$result = $this->query("INSERT INTO $seqname (vapor) VALUES (0)"); $result = $this->query("INSERT INTO $seqname (vapor) VALUES (0)");
$this->popErrorHandling(); $this->popErrorHandling();
if ($ondemand && DB::isError($result) && if ($ondemand && DB::isError($result) &&
($result->getCode() == DB_ERROR || $result->getCode() == DB_ERROR_NOSUCHTABLE)) ($result->getCode() == DB_ERROR || $result->getCode() == DB_ERROR_NOSUCHTABLE)) {
{
$repeat = 1; $repeat = 1;
$result = $this->createSequence($seq_name); $result = $this->createSequence($seq_name);
if (DB::isError($result)) { if (DB::isError($result)) {
@ -502,7 +514,7 @@ class DB_sybase extends DB_common
* @see DB_common::createSequence(), DB_common::getSequenceName(), * @see DB_common::createSequence(), DB_common::getSequenceName(),
* DB_sybase::nextID(), DB_sybase::dropSequence() * DB_sybase::nextID(), DB_sybase::dropSequence()
*/ */
function createSequence($seq_name) public function createSequence($seq_name)
{ {
return $this->query('CREATE TABLE ' return $this->query('CREATE TABLE '
. $this->getSequenceName($seq_name) . $this->getSequenceName($seq_name)
@ -523,7 +535,7 @@ class DB_sybase extends DB_common
* @see DB_common::dropSequence(), DB_common::getSequenceName(), * @see DB_common::dropSequence(), DB_common::getSequenceName(),
* DB_sybase::nextID(), DB_sybase::createSequence() * DB_sybase::nextID(), DB_sybase::createSequence()
*/ */
function dropSequence($seq_name) public function dropSequence($seq_name)
{ {
return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name)); return $this->query('DROP TABLE ' . $this->getSequenceName($seq_name));
} }
@ -540,7 +552,8 @@ class DB_sybase extends DB_common
* @see DB_common::quoteSmart() * @see DB_common::quoteSmart()
* @since Method available since release 1.7.8. * @since Method available since release 1.7.8.
*/ */
function quoteFloat($float) { public function quoteFloat($float)
{
return $this->escapeSimple(str_replace(',', '.', strval(floatval($float)))); return $this->escapeSimple(str_replace(',', '.', strval(floatval($float))));
} }
@ -555,7 +568,7 @@ class DB_sybase extends DB_common
* @return int DB_OK on success. A DB_Error object if the driver * @return int DB_OK on success. A DB_Error object if the driver
* doesn't support auto-committing transactions. * doesn't support auto-committing transactions.
*/ */
function autoCommit($onoff = false) public function autoCommit($onoff = false)
{ {
// XXX if $this->transaction_opcount > 0, we should probably // XXX if $this->transaction_opcount > 0, we should probably
// issue a warning here. // issue a warning here.
@ -571,7 +584,7 @@ class DB_sybase extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function commit() public function commit()
{ {
if ($this->transaction_opcount > 0) { if ($this->transaction_opcount > 0) {
if ($this->_db && !@sybase_select_db($this->_db, $this->connection)) { if ($this->_db && !@sybase_select_db($this->_db, $this->connection)) {
@ -594,7 +607,7 @@ class DB_sybase extends DB_common
* *
* @return int DB_OK on success. A DB_Error object on failure. * @return int DB_OK on success. A DB_Error object on failure.
*/ */
function rollback() public function rollback()
{ {
if ($this->transaction_opcount > 0) { if ($this->transaction_opcount > 0) {
if ($this->_db && !@sybase_select_db($this->_db, $this->connection)) { if ($this->_db && !@sybase_select_db($this->_db, $this->connection)) {
@ -624,7 +637,7 @@ class DB_sybase extends DB_common
* @see DB_common::raiseError(), * @see DB_common::raiseError(),
* DB_sybase::errorNative(), DB_sybase::errorCode() * DB_sybase::errorNative(), DB_sybase::errorCode()
*/ */
function sybaseRaiseError($errno = null) public function sybaseRaiseError($errno = null)
{ {
$native = $this->errorNative(); $native = $this->errorNative();
if ($errno === null) { if ($errno === null) {
@ -641,7 +654,7 @@ class DB_sybase extends DB_common
* *
* @return string the DBMS' error message * @return string the DBMS' error message
*/ */
function errorNative() public function errorNative()
{ {
return @sybase_get_last_message(); return @sybase_get_last_message();
} }
@ -655,7 +668,7 @@ class DB_sybase extends DB_common
* @param string $errormsg error message returned from the database * @param string $errormsg error message returned from the database
* @return integer an error number from a DB error constant * @return integer an error number from a DB error constant
*/ */
function errorCode($errormsg) public function errorCode($errormsg)
{ {
static $error_regexps; static $error_regexps;
@ -730,7 +743,7 @@ class DB_sybase extends DB_common
* @see DB_common::tableInfo() * @see DB_common::tableInfo()
* @since Method available since Release 1.6.0 * @since Method available since Release 1.6.0
*/ */
function tableInfo($result, $mode = null) public function tableInfo($result, $mode = null)
{ {
if (is_string($result)) { if (is_string($result)) {
/* /*
@ -740,8 +753,10 @@ class DB_sybase extends DB_common
if ($this->_db && !@sybase_select_db($this->_db, $this->connection)) { if ($this->_db && !@sybase_select_db($this->_db, $this->connection)) {
return $this->sybaseRaiseError(DB_ERROR_NODBSELECTED); return $this->sybaseRaiseError(DB_ERROR_NODBSELECTED);
} }
$id = @sybase_query("SELECT * FROM $result WHERE 1=0", $id = @sybase_query(
$this->connection); "SELECT * FROM $result WHERE 1=0",
$this->connection
);
$got_string = true; $got_string = true;
} elseif (isset($result->result)) { } elseif (isset($result->result)) {
/* /*
@ -791,7 +806,9 @@ class DB_sybase extends DB_common
); );
if ($res[$i]['table']) { if ($res[$i]['table']) {
$res[$i]['flags'] = $this->_sybase_field_flags( $res[$i]['flags'] = $this->_sybase_field_flags(
$res[$i]['table'], $res[$i]['name']); $res[$i]['table'],
$res[$i]['name']
);
} }
if ($mode & DB_TABLEINFO_ORDER) { if ($mode & DB_TABLEINFO_ORDER) {
$res['order'][$res[$i]['name']] = $i; $res['order'][$res[$i]['name']] = $i;
@ -825,7 +842,7 @@ class DB_sybase extends DB_common
* *
* @access private * @access private
*/ */
function _sybase_field_flags($table, $column) public function _sybase_field_flags($table, $column)
{ {
static $tableName = null; static $tableName = null;
static $flags = array(); static $flags = array();
@ -868,7 +885,6 @@ class DB_sybase extends DB_common
} }
sybase_free_result($res); sybase_free_result($res);
} }
if (array_key_exists($column, $flags)) { if (array_key_exists($column, $flags)) {
@ -892,7 +908,7 @@ class DB_sybase extends DB_common
* *
* @access private * @access private
*/ */
function _add_flag(&$array, $value) public function _add_flag(&$array, $value)
{ {
if (!is_array($array)) { if (!is_array($array)) {
$array = array($value); $array = array($value);
@ -915,7 +931,7 @@ class DB_sybase extends DB_common
* @access protected * @access protected
* @see DB_common::getListOf() * @see DB_common::getListOf()
*/ */
function getSpecialQuery($type) public function getSpecialQuery($type)
{ {
switch ($type) { switch ($type) {
case 'tables': case 'tables':
@ -929,7 +945,6 @@ class DB_sybase extends DB_common
} }
// }}} // }}}
} }
/* /*
@ -938,5 +953,3 @@ class DB_sybase extends DB_common
* c-basic-offset: 4 * c-basic-offset: 4
* End: * End:
*/ */
?>