mirror of
https://github.com/dg/dibi.git
synced 2025-08-16 11:04:43 +02:00
parser updates, DibiResult:: to Dibi::
This commit is contained in:
@@ -67,6 +67,23 @@ interface IDibiVariable
|
||||
*/
|
||||
class dibi
|
||||
{
|
||||
/**
|
||||
* Column type in relation to PHP native type
|
||||
*/
|
||||
const
|
||||
FIELD_TEXT = 's', // as 'string'
|
||||
FIELD_BINARY = 'b',
|
||||
FIELD_BOOL = 'l', // as 'logical'
|
||||
FIELD_INTEGER = 'i',
|
||||
FIELD_FLOAT = 'f',
|
||||
FIELD_DATE = 'd',
|
||||
FIELD_DATETIME = 't',
|
||||
FIELD_UNKNOWN = '?',
|
||||
|
||||
// special
|
||||
FIELD_COUNTER = 'c'; // counter or autoincrement, is integer
|
||||
|
||||
|
||||
/**
|
||||
* Connection registry storage for DibiDriver objects
|
||||
* @var array
|
||||
@@ -191,7 +208,7 @@ class dibi
|
||||
*/
|
||||
static public function getConnection($name = NULL)
|
||||
{
|
||||
return $name === NULL
|
||||
return NULL === $name
|
||||
? self::$conn
|
||||
: @self::$registry[$name];
|
||||
}
|
||||
|
@@ -273,38 +273,38 @@ class DibiMySqlResult extends DibiResult
|
||||
private function createMeta()
|
||||
{
|
||||
static $types = array(
|
||||
'ENUM' => self::FIELD_TEXT, // eventually self::FIELD_INTEGER
|
||||
'SET' => self::FIELD_TEXT, // eventually self::FIELD_INTEGER
|
||||
'CHAR' => self::FIELD_TEXT,
|
||||
'VARCHAR' => self::FIELD_TEXT,
|
||||
'STRING' => self::FIELD_TEXT,
|
||||
'TINYTEXT' => self::FIELD_TEXT,
|
||||
'TEXT' => self::FIELD_TEXT,
|
||||
'MEDIUMTEXT'=> self::FIELD_TEXT,
|
||||
'LONGTEXT' => self::FIELD_TEXT,
|
||||
'BINARY' => self::FIELD_BINARY,
|
||||
'VARBINARY' => self::FIELD_BINARY,
|
||||
'TINYBLOB' => self::FIELD_BINARY,
|
||||
'BLOB' => self::FIELD_BINARY,
|
||||
'MEDIUMBLOB'=> self::FIELD_BINARY,
|
||||
'LONGBLOB' => self::FIELD_BINARY,
|
||||
'DATE' => self::FIELD_DATE,
|
||||
'DATETIME' => self::FIELD_DATETIME,
|
||||
'TIMESTAMP' => self::FIELD_DATETIME,
|
||||
'TIME' => self::FIELD_DATETIME,
|
||||
'BIT' => self::FIELD_BOOL,
|
||||
'YEAR' => self::FIELD_INTEGER,
|
||||
'TINYINT' => self::FIELD_INTEGER,
|
||||
'SMALLINT' => self::FIELD_INTEGER,
|
||||
'MEDIUMINT' => self::FIELD_INTEGER,
|
||||
'INT' => self::FIELD_INTEGER,
|
||||
'INTEGER' => self::FIELD_INTEGER,
|
||||
'BIGINT' => self::FIELD_INTEGER,
|
||||
'FLOAT' => self::FIELD_FLOAT,
|
||||
'DOUBLE' => self::FIELD_FLOAT,
|
||||
'REAL' => self::FIELD_FLOAT,
|
||||
'DECIMAL' => self::FIELD_FLOAT,
|
||||
'NUMERIC' => self::FIELD_FLOAT,
|
||||
'ENUM' => dibi::FIELD_TEXT, // eventually dibi::FIELD_INTEGER
|
||||
'SET' => dibi::FIELD_TEXT, // eventually dibi::FIELD_INTEGER
|
||||
'CHAR' => dibi::FIELD_TEXT,
|
||||
'VARCHAR' => dibi::FIELD_TEXT,
|
||||
'STRING' => dibi::FIELD_TEXT,
|
||||
'TINYTEXT' => dibi::FIELD_TEXT,
|
||||
'TEXT' => dibi::FIELD_TEXT,
|
||||
'MEDIUMTEXT'=> dibi::FIELD_TEXT,
|
||||
'LONGTEXT' => dibi::FIELD_TEXT,
|
||||
'BINARY' => dibi::FIELD_BINARY,
|
||||
'VARBINARY' => dibi::FIELD_BINARY,
|
||||
'TINYBLOB' => dibi::FIELD_BINARY,
|
||||
'BLOB' => dibi::FIELD_BINARY,
|
||||
'MEDIUMBLOB'=> dibi::FIELD_BINARY,
|
||||
'LONGBLOB' => dibi::FIELD_BINARY,
|
||||
'DATE' => dibi::FIELD_DATE,
|
||||
'DATETIME' => dibi::FIELD_DATETIME,
|
||||
'TIMESTAMP' => dibi::FIELD_DATETIME,
|
||||
'TIME' => dibi::FIELD_DATETIME,
|
||||
'BIT' => dibi::FIELD_BOOL,
|
||||
'YEAR' => dibi::FIELD_INTEGER,
|
||||
'TINYINT' => dibi::FIELD_INTEGER,
|
||||
'SMALLINT' => dibi::FIELD_INTEGER,
|
||||
'MEDIUMINT' => dibi::FIELD_INTEGER,
|
||||
'INT' => dibi::FIELD_INTEGER,
|
||||
'INTEGER' => dibi::FIELD_INTEGER,
|
||||
'BIGINT' => dibi::FIELD_INTEGER,
|
||||
'FLOAT' => dibi::FIELD_FLOAT,
|
||||
'DOUBLE' => dibi::FIELD_FLOAT,
|
||||
'REAL' => dibi::FIELD_FLOAT,
|
||||
'DECIMAL' => dibi::FIELD_FLOAT,
|
||||
'NUMERIC' => dibi::FIELD_FLOAT,
|
||||
);
|
||||
|
||||
$count = mysql_num_fields($this->resource);
|
||||
@@ -317,12 +317,12 @@ class DibiMySqlResult extends DibiResult
|
||||
$info['table'] = mysql_field_table($this->resource, $index);
|
||||
|
||||
if (in_array('auto_increment', $info['flags'])) // or 'primary_key' ?
|
||||
$info['type'] = self::FIELD_COUNTER;
|
||||
$info['type'] = dibi::FIELD_COUNTER;
|
||||
else {
|
||||
$info['type'] = isset($types[$native]) ? $types[$native] : self::FIELD_UNKNOWN;
|
||||
$info['type'] = isset($types[$native]) ? $types[$native] : dibi::FIELD_UNKNOWN;
|
||||
|
||||
// if ($info['type'] == self::FIELD_TEXT && $info['length'] > 255)
|
||||
// $info['type'] = self::FIELD_LONG_TEXT;
|
||||
// if ($info['type'] == dibi::FIELD_TEXT && $info['length'] > 255)
|
||||
// $info['type'] = dibi::FIELD_LONG_TEXT;
|
||||
}
|
||||
|
||||
$name = mysql_field_name($this->resource, $index);
|
||||
|
@@ -233,31 +233,31 @@ class DibiMySqliResult extends DibiResult
|
||||
private function createMeta()
|
||||
{
|
||||
static $types = array(
|
||||
MYSQLI_TYPE_FLOAT => self::FIELD_FLOAT,
|
||||
MYSQLI_TYPE_DOUBLE => self::FIELD_FLOAT,
|
||||
MYSQLI_TYPE_DECIMAL => self::FIELD_FLOAT,
|
||||
// MYSQLI_TYPE_NEWDECIMAL=> self::FIELD_FLOAT,
|
||||
// MYSQLI_TYPE_BIT => self::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_TINY => self::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_SHORT => self::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_LONG => self::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_LONGLONG => self::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_INT24 => self::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_YEAR => self::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_GEOMETRY => self::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_DATE => self::FIELD_DATE,
|
||||
MYSQLI_TYPE_NEWDATE => self::FIELD_DATE,
|
||||
MYSQLI_TYPE_TIMESTAMP => self::FIELD_DATETIME,
|
||||
MYSQLI_TYPE_TIME => self::FIELD_DATETIME,
|
||||
MYSQLI_TYPE_DATETIME => self::FIELD_DATETIME,
|
||||
MYSQLI_TYPE_ENUM => self::FIELD_TEXT, // eventually self::FIELD_INTEGER
|
||||
MYSQLI_TYPE_SET => self::FIELD_TEXT, // eventually self::FIELD_INTEGER
|
||||
MYSQLI_TYPE_STRING => self::FIELD_TEXT,
|
||||
MYSQLI_TYPE_VAR_STRING=> self::FIELD_TEXT,
|
||||
MYSQLI_TYPE_TINY_BLOB => self::FIELD_BINARY,
|
||||
MYSQLI_TYPE_MEDIUM_BLOB=> self::FIELD_BINARY,
|
||||
MYSQLI_TYPE_LONG_BLOB => self::FIELD_BINARY,
|
||||
MYSQLI_TYPE_BLOB => self::FIELD_BINARY,
|
||||
MYSQLI_TYPE_FLOAT => dibi::FIELD_FLOAT,
|
||||
MYSQLI_TYPE_DOUBLE => dibi::FIELD_FLOAT,
|
||||
MYSQLI_TYPE_DECIMAL => dibi::FIELD_FLOAT,
|
||||
// MYSQLI_TYPE_NEWDECIMAL=> dibi::FIELD_FLOAT,
|
||||
// MYSQLI_TYPE_BIT => dibi::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_TINY => dibi::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_SHORT => dibi::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_LONG => dibi::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_LONGLONG => dibi::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_INT24 => dibi::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_YEAR => dibi::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_GEOMETRY => dibi::FIELD_INTEGER,
|
||||
MYSQLI_TYPE_DATE => dibi::FIELD_DATE,
|
||||
MYSQLI_TYPE_NEWDATE => dibi::FIELD_DATE,
|
||||
MYSQLI_TYPE_TIMESTAMP => dibi::FIELD_DATETIME,
|
||||
MYSQLI_TYPE_TIME => dibi::FIELD_DATETIME,
|
||||
MYSQLI_TYPE_DATETIME => dibi::FIELD_DATETIME,
|
||||
MYSQLI_TYPE_ENUM => dibi::FIELD_TEXT, // eventually dibi::FIELD_INTEGER
|
||||
MYSQLI_TYPE_SET => dibi::FIELD_TEXT, // eventually dibi::FIELD_INTEGER
|
||||
MYSQLI_TYPE_STRING => dibi::FIELD_TEXT,
|
||||
MYSQLI_TYPE_VAR_STRING=> dibi::FIELD_TEXT,
|
||||
MYSQLI_TYPE_TINY_BLOB => dibi::FIELD_BINARY,
|
||||
MYSQLI_TYPE_MEDIUM_BLOB=> dibi::FIELD_BINARY,
|
||||
MYSQLI_TYPE_LONG_BLOB => dibi::FIELD_BINARY,
|
||||
MYSQLI_TYPE_BLOB => dibi::FIELD_BINARY,
|
||||
);
|
||||
|
||||
$count = mysqli_num_fields($this->resource);
|
||||
@@ -267,11 +267,11 @@ class DibiMySqliResult extends DibiResult
|
||||
$native = $info['native'] = $info['type'];
|
||||
|
||||
if ($info['flags'] & MYSQLI_AUTO_INCREMENT_FLAG) // or 'primary_key' ?
|
||||
$info['type'] = self::FIELD_COUNTER;
|
||||
$info['type'] = dibi::FIELD_COUNTER;
|
||||
else {
|
||||
$info['type'] = isset($types[$native]) ? $types[$native] : self::FIELD_UNKNOWN;
|
||||
// if ($info['type'] == self::FIELD_TEXT && $info['length'] > 255)
|
||||
// $info['type'] = self::FIELD_LONG_TEXT;
|
||||
$info['type'] = isset($types[$native]) ? $types[$native] : dibi::FIELD_UNKNOWN;
|
||||
// if ($info['type'] == dibi::FIELD_TEXT && $info['length'] > 255)
|
||||
// $info['type'] = dibi::FIELD_LONG_TEXT;
|
||||
}
|
||||
|
||||
$this->meta[$info['name']] = $info;
|
||||
|
@@ -230,28 +230,28 @@ class DibiOdbcResult extends DibiResult
|
||||
return $this->meta;
|
||||
|
||||
static $types = array(
|
||||
'CHAR' => self::FIELD_TEXT,
|
||||
'COUNTER' => self::FIELD_COUNTER,
|
||||
'VARCHAR' => self::FIELD_TEXT,
|
||||
'LONGCHAR' => self::FIELD_TEXT,
|
||||
'INTEGER' => self::FIELD_INTEGER,
|
||||
'DATETIME' => self::FIELD_DATETIME,
|
||||
'CURRENCY' => self::FIELD_FLOAT,
|
||||
'BIT' => self::FIELD_BOOL,
|
||||
'LONGBINARY'=> self::FIELD_BINARY,
|
||||
'SMALLINT' => self::FIELD_INTEGER,
|
||||
'BYTE' => self::FIELD_INTEGER,
|
||||
'BIGINT' => self::FIELD_INTEGER,
|
||||
'INT' => self::FIELD_INTEGER,
|
||||
'TINYINT' => self::FIELD_INTEGER,
|
||||
'REAL' => self::FIELD_FLOAT,
|
||||
'DOUBLE' => self::FIELD_FLOAT,
|
||||
'DECIMAL' => self::FIELD_FLOAT,
|
||||
'NUMERIC' => self::FIELD_FLOAT,
|
||||
'MONEY' => self::FIELD_FLOAT,
|
||||
'SMALLMONEY'=> self::FIELD_FLOAT,
|
||||
'FLOAT' => self::FIELD_FLOAT,
|
||||
'YESNO' => self::FIELD_BOOL,
|
||||
'CHAR' => dibi::FIELD_TEXT,
|
||||
'COUNTER' => dibi::FIELD_COUNTER,
|
||||
'VARCHAR' => dibi::FIELD_TEXT,
|
||||
'LONGCHAR' => dibi::FIELD_TEXT,
|
||||
'INTEGER' => dibi::FIELD_INTEGER,
|
||||
'DATETIME' => dibi::FIELD_DATETIME,
|
||||
'CURRENCY' => dibi::FIELD_FLOAT,
|
||||
'BIT' => dibi::FIELD_BOOL,
|
||||
'LONGBINARY'=> dibi::FIELD_BINARY,
|
||||
'SMALLINT' => dibi::FIELD_INTEGER,
|
||||
'BYTE' => dibi::FIELD_INTEGER,
|
||||
'BIGINT' => dibi::FIELD_INTEGER,
|
||||
'INT' => dibi::FIELD_INTEGER,
|
||||
'TINYINT' => dibi::FIELD_INTEGER,
|
||||
'REAL' => dibi::FIELD_FLOAT,
|
||||
'DOUBLE' => dibi::FIELD_FLOAT,
|
||||
'DECIMAL' => dibi::FIELD_FLOAT,
|
||||
'NUMERIC' => dibi::FIELD_FLOAT,
|
||||
'MONEY' => dibi::FIELD_FLOAT,
|
||||
'SMALLMONEY'=> dibi::FIELD_FLOAT,
|
||||
'FLOAT' => dibi::FIELD_FLOAT,
|
||||
'YESNO' => dibi::FIELD_BOOL,
|
||||
// and many others?
|
||||
);
|
||||
|
||||
@@ -261,7 +261,7 @@ class DibiOdbcResult extends DibiResult
|
||||
$native = strtoupper(odbc_field_type($this->resource, $index));
|
||||
$name = odbc_field_name($this->resource, $index);
|
||||
$this->meta[$name] = array(
|
||||
'type' => isset($types[$native]) ? $types[$native] : self::FIELD_UNKNOWN,
|
||||
'type' => isset($types[$native]) ? $types[$native] : dibi::FIELD_UNKNOWN,
|
||||
'native' => $native,
|
||||
'length' => odbc_field_len($this->resource, $index),
|
||||
'scale' => odbc_field_scale($this->resource, $index),
|
||||
|
@@ -226,8 +226,8 @@ class DibiSqliteResult extends DibiResult
|
||||
$this->meta = $this->convert = array();
|
||||
for ($index = 0; $index < $count; $index++) {
|
||||
$name = sqlite_field_name($this->resource, $index);
|
||||
$this->meta[$name] = array('type' => self::FIELD_UNKNOWN);
|
||||
$this->convert[$name] = self::FIELD_UNKNOWN;
|
||||
$this->meta[$name] = array('type' => dibi::FIELD_UNKNOWN);
|
||||
$this->convert[$name] = dibi::FIELD_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -57,9 +57,9 @@ class DibiParser
|
||||
// iterate
|
||||
$sql = array();
|
||||
foreach ($args as $arg)
|
||||
{
|
||||
// %if was opened
|
||||
if ($mod == 'if') {
|
||||
{
|
||||
// %if was opened
|
||||
if ('if' == $mod) {
|
||||
$mod = FALSE;
|
||||
$this->ifLevel++;
|
||||
if (!$comment && !$arg) {
|
||||
@@ -72,17 +72,19 @@ class DibiParser
|
||||
}
|
||||
|
||||
// simple string means SQL
|
||||
if (is_string($arg) && !$mod) {
|
||||
$sql[] = $this->formatValue($arg, 'p'); // preserve it
|
||||
if (is_string($arg) && (!$mod || 'p'==$mod)) {
|
||||
$mod = FALSE;
|
||||
// will generate new mod
|
||||
$sql[] = $this->formatValue($arg, 'p');
|
||||
continue;
|
||||
}
|
||||
|
||||
// array without modifier - autoselect between SET or VALUES
|
||||
if (is_array($arg) && !$mod && is_string(key($arg))) {
|
||||
// associative array without modifier - autoselect between SET or VALUES
|
||||
if (!$mod && is_array($arg) && is_string(key($arg))) {
|
||||
if (!$command)
|
||||
$command = strtoupper(substr(ltrim($args[0]), 0, 6));
|
||||
|
||||
$mod = ($command == 'INSERT' || $command == 'REPLAC') ? 'V' : 'S';
|
||||
$mod = ('INSERT' == $command || 'REPLAC' == $command) ? 'V' : 'S';
|
||||
}
|
||||
|
||||
// default processing
|
||||
@@ -116,20 +118,44 @@ class DibiParser
|
||||
switch ($modifier) {
|
||||
case 'S': // SET
|
||||
foreach ($value as $k => $v) {
|
||||
list($k, $mod) = explode('%', $k.'%', 3); // split modifier
|
||||
$vx[] = $this->driver->quoteName($k) . '=' . $this->formatValue($v, $mod);
|
||||
// split into identifier & modifier
|
||||
$pair = explode('%', $k, 2);
|
||||
|
||||
if (isset($pair[1])) {
|
||||
$mod = $pair[1];
|
||||
// %? skips NULLS
|
||||
if (isset($mod[0]) && '?' == $mod[0]) {
|
||||
if (NULL === $v) continue;
|
||||
$mod = substr($mod, 1);
|
||||
}
|
||||
} else $mod = FALSE;
|
||||
|
||||
// generate array
|
||||
$vx[] = $this->driver->quoteName($pair[0]) . '=' . $this->formatValue($v, $mod);
|
||||
}
|
||||
|
||||
return implode(', ', $vx);
|
||||
|
||||
|
||||
case 'V': // VALUES
|
||||
foreach ($value as $k => $v) {
|
||||
list($k, $mod) = explode('%', $k.'%', 3); // split modifier
|
||||
$kx[] = $this->driver->quoteName($k);
|
||||
// split into identifier & modifier
|
||||
$pair = explode('%', $k, 2);
|
||||
|
||||
if (isset($pair[1])) {
|
||||
$mod = $pair[1];
|
||||
// %m? skips NULLS
|
||||
if (isset($mod[0]) && '?' == $mod[0]) {
|
||||
if ($v === NULL) continue;
|
||||
$mod = substr($mod, 1);
|
||||
}
|
||||
} else $mod = FALSE;
|
||||
|
||||
// generate arrays
|
||||
$kx[] = $this->driver->quoteName($pair[0]);
|
||||
$vx[] = $this->formatValue($v, $mod);
|
||||
}
|
||||
|
||||
return '(' . implode(', ', $kx) . ') VALUES (' . implode(', ', $vx) . ')';
|
||||
|
||||
|
||||
default: // LIST
|
||||
foreach ($value as $v)
|
||||
@@ -154,7 +180,9 @@ class DibiParser
|
||||
case "s": // string
|
||||
return $this->driver->escape($value, TRUE);
|
||||
case 'b': // boolean
|
||||
return $value ? $this->driver->formats['TRUE'] : $this->driver->formats['FALSE'];
|
||||
return $value
|
||||
? $this->driver->formats['TRUE']
|
||||
: $this->driver->formats['FALSE'];
|
||||
case 'i':
|
||||
case 'u': // unsigned int
|
||||
case 'd': // signed int
|
||||
@@ -162,9 +190,14 @@ class DibiParser
|
||||
case 'f': // float
|
||||
return (string) (float) $value; // something like -9E-005 is accepted by SQL
|
||||
case 'D': // date
|
||||
return date($this->driver->formats['date'], is_string($value) ? strtotime($value) : $value);
|
||||
return date($this->driver->formats['date'], is_string($value)
|
||||
? strtotime($value)
|
||||
: $value);
|
||||
case 't': // datetime
|
||||
case 'T': // datetime
|
||||
return date($this->driver->formats['datetime'], is_string($value) ? strtotime($value) : $value);
|
||||
return date($this->driver->formats['datetime'], is_string($value)
|
||||
? strtotime($value)
|
||||
: $value);
|
||||
case 'n': // identifier name
|
||||
return $this->driver->quoteName($value);
|
||||
case 'p': // preserve as SQL
|
||||
@@ -173,7 +206,7 @@ class DibiParser
|
||||
// speed-up - is regexp required?
|
||||
$toSkip = strcspn($value, '`[\'"%');
|
||||
|
||||
if ($toSkip == strlen($value)) // needn't be translated
|
||||
if (strlen($value) == $toSkip) // needn't be translated
|
||||
return $value;
|
||||
|
||||
// note: only this can change $this->modifier
|
||||
@@ -245,8 +278,8 @@ class DibiParser
|
||||
// [4] => string
|
||||
// [5] => "
|
||||
// [6] => string
|
||||
// [7] => right modifier
|
||||
// [8] => %else | %end
|
||||
// [7] => %else | %end
|
||||
// [8] => right modifier
|
||||
// [9] => lone-quote
|
||||
|
||||
if ($matches[1]) // SQL identifiers: `ident`
|
||||
@@ -271,7 +304,7 @@ class DibiParser
|
||||
return "**Unexpected condition $matches[8]**";
|
||||
}
|
||||
|
||||
if ($matches[7] == 'end') {
|
||||
if ('end' == $matches[7]) {
|
||||
$this->ifLevel--;
|
||||
if ($this->ifLevelStart == $this->ifLevel + 1) {
|
||||
// close comment
|
||||
|
@@ -45,23 +45,6 @@ if (!interface_exists('Countable', false)) {
|
||||
*/
|
||||
abstract class DibiResult implements IteratorAggregate, Countable
|
||||
{
|
||||
/**
|
||||
* Column type in relation to PHP native type
|
||||
*/
|
||||
const
|
||||
FIELD_TEXT = 's', // as 'string'
|
||||
FIELD_BINARY = 'b',
|
||||
FIELD_BOOL = 'l', // as 'logical'
|
||||
FIELD_INTEGER = 'i',
|
||||
FIELD_FLOAT = 'f',
|
||||
FIELD_DATE = 'd',
|
||||
FIELD_DATETIME = 't',
|
||||
FIELD_UNKNOWN = '?',
|
||||
|
||||
// special
|
||||
FIELD_COUNTER = 'c'; // counter or autoincrement, is integer
|
||||
|
||||
|
||||
/**
|
||||
* Describes columns types
|
||||
* @var array
|
||||
@@ -270,12 +253,12 @@ abstract class DibiResult implements IteratorAggregate, Countable
|
||||
return $value;
|
||||
|
||||
static $conv = array(
|
||||
self::FIELD_TEXT => 'string',
|
||||
self::FIELD_BINARY => 'string',
|
||||
self::FIELD_BOOL => 'bool',
|
||||
self::FIELD_INTEGER => 'int',
|
||||
self::FIELD_FLOAT => 'float',
|
||||
self::FIELD_COUNTER => 'int',
|
||||
dibi::FIELD_TEXT => 'string',
|
||||
dibi::FIELD_BINARY => 'string',
|
||||
dibi::FIELD_BOOL => 'bool',
|
||||
dibi::FIELD_INTEGER => 'int',
|
||||
dibi::FIELD_FLOAT => 'float',
|
||||
dibi::FIELD_COUNTER => 'int',
|
||||
);
|
||||
|
||||
if (isset($conv[$type])) {
|
||||
@@ -283,10 +266,10 @@ abstract class DibiResult implements IteratorAggregate, Countable
|
||||
return $value;
|
||||
}
|
||||
|
||||
if ($type == self::FIELD_DATE)
|
||||
if ($type == dibi::FIELD_DATE)
|
||||
return strtotime($value); // !!! not good
|
||||
|
||||
if ($type == self::FIELD_DATETIME)
|
||||
if ($type == dibi::FIELD_DATETIME)
|
||||
return strtotime($value); // !!! not good
|
||||
|
||||
return $value;
|
||||
|
Reference in New Issue
Block a user