From 4aaddb32e1bd1a7833478f1fd4194507dba2c924 Mon Sep 17 00:00:00 2001 From: thomascube Date: Thu, 18 May 2006 17:49:20 +0000 Subject: Removed MDB2 classes; install seperately --- program/lib/MDB2/Driver/Datatype/Common.php | 1263 --------------------------- program/lib/MDB2/Driver/Datatype/fbsql.php | 555 ------------ program/lib/MDB2/Driver/Datatype/ibase.php | 659 -------------- program/lib/MDB2/Driver/Datatype/mssql.php | 521 ----------- program/lib/MDB2/Driver/Datatype/mysql.php | 543 ------------ program/lib/MDB2/Driver/Datatype/mysqli.php | 568 ------------ program/lib/MDB2/Driver/Datatype/oci8.php | 607 ------------- program/lib/MDB2/Driver/Datatype/pgsql.php | 863 ------------------ program/lib/MDB2/Driver/Datatype/sqlite.php | 506 ----------- 9 files changed, 6085 deletions(-) delete mode 100755 program/lib/MDB2/Driver/Datatype/Common.php delete mode 100755 program/lib/MDB2/Driver/Datatype/fbsql.php delete mode 100755 program/lib/MDB2/Driver/Datatype/ibase.php delete mode 100755 program/lib/MDB2/Driver/Datatype/mssql.php delete mode 100644 program/lib/MDB2/Driver/Datatype/mysql.php delete mode 100755 program/lib/MDB2/Driver/Datatype/mysqli.php delete mode 100755 program/lib/MDB2/Driver/Datatype/oci8.php delete mode 100755 program/lib/MDB2/Driver/Datatype/pgsql.php delete mode 100755 program/lib/MDB2/Driver/Datatype/sqlite.php (limited to 'program/lib/MDB2/Driver/Datatype') diff --git a/program/lib/MDB2/Driver/Datatype/Common.php b/program/lib/MDB2/Driver/Datatype/Common.php deleted file mode 100755 index 808fd1881..000000000 --- a/program/lib/MDB2/Driver/Datatype/Common.php +++ /dev/null @@ -1,1263 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ - -require_once 'MDB2/LOB.php'; - -/** - * @package MDB2 - * @category Database - * @author Lukas Smith - */ - -/** - * MDB2_Driver_Common: Base class that is extended by each MDB2 driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Datatype_Common extends MDB2_Module_Common -{ - var $valid_types = array( - 'text' => true, - 'boolean' => true, - 'integer' => true, - 'decimal' => true, - 'float' => true, - 'date' => true, - 'time' => true, - 'timestamp' => true, - 'clob' => true, - 'blob' => true, - ); - - /** - * contains all LOB objects created with this MDB2 instance - * @var array - * @access protected - */ - var $lobs = array(); - - // }}} - // {{{ setResultTypes() - - /** - * Define the list of types to be associated with the columns of a given - * result set. - * - * This function may be called before invoking fetchRow(), fetchOne() - * fetchCole() and fetchAll() so that the necessary data type - * conversions are performed on the data to be retrieved by them. If this - * function is not called, the type of all result set columns is assumed - * to be text, thus leading to not perform any conversions. - * - * @param resource $result result identifier - * @param string $types array variable that lists the - * data types to be expected in the result set columns. If this array - * contains less types than the number of columns that are returned - * in the result set, the remaining columns are assumed to be of the - * type text. Currently, the types clob and blob are not fully - * supported. - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function setResultTypes(&$result, $types) - { - $types = is_array($types) ? array_values($types) : array($types); - foreach ($types as $key => $type) { - if (!isset($this->valid_types[$type])) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'setResultTypes: ' . $type . ' for '. $key .' is not a supported column type'); - } - } - $result->types = $types; - return MDB2_OK; - } - - // }}} - // {{{ _baseConvertResult() - - /** - * general type conversion method - * - * @param mixed $value refernce to a value to be converted - * @param int $type constant that specifies which type to convert to - * @return object a MDB2 error on failure - * @access protected - */ - function _baseConvertResult($value, $type) - { - switch ($type) { - case 'text': - return $value; - case 'integer': - return intval($value); - case 'boolean': - return $value == 'Y'; - case 'decimal': - return $value; - case 'float': - return doubleval($value); - case 'date': - return $value; - case 'time': - return $value; - case 'timestamp': - return $value; - case 'clob': - case 'blob': - $this->lobs[] = array( - 'buffer' => null, - 'position' => 0, - 'lob_index' => null, - 'endOfLOB' => false, - 'ressource' => $value, - 'value' => null, - ); - end($this->lobs); - $lob_index = key($this->lobs); - $this->lobs[$lob_index]['lob_index'] = $lob_index; - return fopen('MDB2LOB://'.$lob_index.'@'.$this->db_index, 'r+'); - } - - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_INVALID, null, null, - 'attempt to convert result value to an unknown type ' . $type); - } - - // }}} - // {{{ convertResult() - - /** - * convert a value to a RDBMS indepdenant MDB2 type - * - * @param mixed $value value to be converted - * @param int $type constant that specifies which type to convert to - * @return mixed converted value or a MDB2 error on failure - * @access public - */ - function convertResult($value, $type) - { - if (is_null($value)) { - return null; - } - return $this->_baseConvertResult($value, $type); - } - - // }}} - // {{{ convertResultRow() - - /** - * convert a result row - * - * @param resource $result result identifier - * @param array $row array with data - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access public - */ - function convertResultRow($types, $row) - { - if (is_array($types)) { - $current_column = -1; - foreach ($row as $key => $column) { - ++$current_column; - if (!isset($column) || !isset($types[$current_column])) { - continue; - } - $value = $this->convertResult($row[$key], $types[$current_column]); - if (PEAR::isError($value)) { - return $value; - } - $row[$key] = $value; - } - } - return $row; - } - - // }}} - // {{{ getDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare - * of the given type - * - * @param string $type type to which the value should be converted to - * @param string $name name the field to be declared. - * @param string $field definition of the field - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function getDeclaration($type, $name, $field) - { - if (!method_exists($this, "_get{$type}Declaration")) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError('type not defined: '.$type); - } - return $this->{"_get{$type}Declaration"}($name, $field); - } - - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field should be - * declared as unsigned integer if possible. - * - * default - * Integer value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field) - { - if (array_key_exists('unsigned', $field) && $field['unsigned']) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $db->warnings[] = "unsigned integer field \"$name\" is being declared as signed integer"; - } - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'integer') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' INT'.$default.$notnull; - } - - // }}} - // {{{ _getTextDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTextDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'text') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - $type = array_key_exists('length', $field) ? 'CHAR ('.$field['length'].')' : 'TEXT'; - return $name.' '.$type.$default.$notnull; - } - - // }}} - // {{{ _getCLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an character - * large object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the large - * object field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getCLOBDeclaration($name, $field) - { - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - $type = array_key_exists('length', $field) ? 'CHAR ('.$field['length'].')' : 'TEXT'; - return $name.' '.$type.$notnull; - } - - // }}} - // {{{ _getBLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an binary large - * object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the large - * object field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBLOBDeclaration($name, $field) - { - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - $type = array_key_exists('length', $field) ? 'CHAR ('.$field['length'].')' : 'TEXT'; - return $name.' '.$type.$notnull; - } - - // }}} - // {{{ _getBooleanDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a boolean type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Boolean value to be used as default for this field. - * - * notnullL - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBooleanDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'boolean') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' CHAR (1)'.$default.$notnull; - } - - // }}} - // {{{ _getDateDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a date type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Date value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDateDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'date') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' CHAR ('.strlen('YYYY-MM-DD').')'.$default.$notnull; - } - - // }}} - // {{{ _getTimestampDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a timestamp - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Timestamp value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimestampDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'timestamp') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' CHAR ('.strlen('YYYY-MM-DD HH:MM:SS').')'.$default.$notnull; - } - - // }}} - // {{{ _getTimeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a time - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Time value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimeDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'time') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' CHAR ('.strlen('HH:MM:SS').')'.$default.$notnull; - } - - // }}} - // {{{ _getFloatDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a float type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Float value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getFloatDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'float') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' TEXT'.$default.$notnull; - } - - // }}} - // {{{ _getDecimalDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a decimal type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Decimal value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDecimalDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'decimal') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' TEXT'.$default.$notnull; - } - - // }}} - // {{{ compareDefinition() - - /** - * Obtain an array of changes that may need to applied - * - * @param array $current new definition - * @param array $previous old definition - * @return array containg all changes that will need to be applied - * @access public - */ - function compareDefinition($current, $previous) - { - $type = array_key_exists('type', $current) ? $current['type'] : null; - - if (!method_exists($this, "_compare{$type}Definition")) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null, - 'type "'.$current['type'].'" is not yet supported'); - } - - if (!array_key_exists('type', $previous) || $previous['type'] != $type) { - return $current; - } - - $change = $this->{"_compare{$type}Definition"}($current, $previous); - - $previous_notnull = array_key_exists('notnull', $previous) ? $previous['notnull'] : false; - $notnull = array_key_exists('notnull', $current) ? $current['notnull'] : false; - if ($previous_notnull != $notnull) { - $change['notnull'] = true; - } - - $previous_default = array_key_exists('default', $previous) ? $previous['default'] : - ($previous_notnull ? '' : null); - $default = array_key_exists('default', $current) ? $current['default'] : - ($notnull ? '' : null); - if ($previous_default !== $default) { - $change['default'] = true; - } - - return $change; - } - - // }}} - // {{{ _compareIntegerDefinition() - - /** - * Obtain an array of changes that may need to applied to an integer field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containg all changes that will need to be applied - * @access protected - */ - function _compareIntegerDefinition($current, $previous) - { - $change = array(); - $previous_unsigned = array_key_exists('unsigned', $previous) ? $previous['unsigned'] : false; - $unsigned = array_key_exists('unsigned', $current) ? $current['unsigned'] : false; - if ($previous_unsigned != $unsigned) { - $change['unsigned'] = true; - } - $previous_autoincrement = array_key_exists('autoincrement', $previous) ? $previous['autoincrement'] : false; - $autoincrement = array_key_exists('autoincrement', $current) ? $current['autoincrement'] : false; - if ($previous_autoincrement != $autoincrement) { - $change['autoincrement'] = true; - } - return $change; - } - - // }}} - // {{{ _compareTextDefinition() - - /** - * Obtain an array of changes that may need to applied to an text field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containg all changes that will need to be applied - * @access protected - */ - function _compareTextDefinition($current, $previous) - { - $change = array(); - $previous_length = array_key_exists('length', $previous) ? $previous['length'] : 0; - $length = array_key_exists('length', $current) ? $current['length'] : 0; - if ($previous_length != $length) { - $change['length'] = true; - } - return $change; - } - - // }}} - // {{{ _compareCLOBDefinition() - - /** - * Obtain an array of changes that may need to applied to an CLOB field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containg all changes that will need to be applied - * @access protected - */ - function _compareCLOBDefinition($current, $previous) - { - return $this->_compareTextDefinition($current, $previous); - } - - // }}} - // {{{ _compareBLOBDefinition() - - /** - * Obtain an array of changes that may need to applied to an BLOB field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containg all changes that will need to be applied - * @access protected - */ - function _compareBLOBDefinition($current, $previous) - { - return $this->_compareTextDefinition($current, $previous); - } - - // }}} - // {{{ _compareDateDefinition() - - /** - * Obtain an array of changes that may need to applied to an date field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containg all changes that will need to be applied - * @access protected - */ - function _compareDateDefinition($current, $previous) - { - return array(); - } - - // }}} - // {{{ _compareTimeDefinition() - - /** - * Obtain an array of changes that may need to applied to an time field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containg all changes that will need to be applied - * @access protected - */ - function _compareTimeDefinition($current, $previous) - { - return array(); - } - - // }}} - // {{{ _compareTimestampDefinition() - - /** - * Obtain an array of changes that may need to applied to an timestamp field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containg all changes that will need to be applied - * @access protected - */ - function _compareTimestampDefinition($current, $previous) - { - return array(); - } - - // }}} - // {{{ _compareBooleanDefinition() - - /** - * Obtain an array of changes that may need to applied to an boolean field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containg all changes that will need to be applied - * @access protected - */ - function _compareBooleanDefinition($current, $previous) - { - return array(); - } - - // }}} - // {{{ _compareFloatDefinition() - - /** - * Obtain an array of changes that may need to applied to an float field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containg all changes that will need to be applied - * @access protected - */ - function _compareFloatDefinition($current, $previous) - { - return array(); - } - - // }}} - // {{{ _compareDecimalDefinition() - - /** - * Obtain an array of changes that may need to applied to an decimal field - * - * @param array $current new definition - * @param array $previous old definition - * @return array containg all changes that will need to be applied - * @access protected - */ - function _compareDecimalDefinition($current, $previous) - { - return array(); - } - - // }}} - // {{{ quote() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @param string $type type to which the value should be converted to - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access public - */ - function quote($value, $type = null, $quote = true) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (is_null($value) - || ($value === '' && $db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL) - ) { - if (!$quote) { - return null; - } - return 'NULL'; - } - - if (is_null($type)) { - switch (gettype($value)) { - case 'integer': - $type = 'integer'; - break; - case 'double': - // todo - $type = 'decimal'; - $type = 'float'; - break; - case 'boolean': - $type = 'boolean'; - break; - case 'array': - case 'object': - $type = 'text'; - break; - default: - if (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/', $value)) { - $type = 'timestamp'; - } elseif (preg_match('/^\d{2}:\d{2}$/', $value)) { - $type = 'time'; - } elseif (preg_match('/^\d{4}-\d{2}-\d{2}$/', $value)) { - $type = 'date'; - } else { - $type = 'text'; - } - break; - } - } - - if (!method_exists($this, "_quote{$type}")) { - return $db->raiseError('type not defined: '.$type); - } - $value = $this->{"_quote{$type}"}($value); - - // ugly hack to remove single quotes - if (!$quote && isset($value[0]) && $value[0] === "'") { - $value = substr($value, 1, -1); - } - - return $value; - } - - // }}} - // {{{ _quoteInteger() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteInteger($value) - { - return (int)$value; - } - - // }}} - // {{{ _quoteText() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that already contains any DBMS specific - * escaped character sequences. - * @access protected - */ - function _quoteText($value) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return "'".$db->escape($value)."'"; - } - - // }}} - // {{{ _readFile() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _readFile($value) - { - $close = false; - if (preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) { - $close = true; - if ($match[1] == 'file://') { - $value = $match[2]; - } - $value = @fopen($value, 'r'); - } - - if (is_resource($value)) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $fp = $value; - $value = ''; - while (!@feof($fp)) { - $value.= @fread($fp, $db->options['lob_buffer_length']); - } - if ($close) { - @fclose($fp); - } - } - - return $value; - } - - // }}} - // {{{ _quoteLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteLOB($value) - { - $value = $this->_readFile($value); - return $this->_quoteText($value); - } - - // }}} - // {{{ _quoteCLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteCLOB($value) - { - return $this->_quoteLOB($value); - } - - // }}} - // {{{ _quoteBLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBLOB($value) - { - return $this->_quoteLOB($value); - } - - // }}} - // {{{ _quoteBoolean() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBoolean($value) - { - return ($value ? "'Y'" : "'N'"); - } - - // }}} - // {{{ _quoteDate() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDate($value) - { - return $this->_quoteText($value); - } - - // }}} - // {{{ _quoteTimestamp() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteTimestamp($value) - { - return $this->_quoteText($value); - } - - // }}} - // {{{ _quoteTime() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteTime($value) - { - return $this->_quoteText($value); - } - - // }}} - // {{{ _quoteFloat() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteFloat($value) - { - return $this->_quoteText($value); - } - - // }}} - // {{{ _quoteDecimal() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDecimal($value) - { - return $this->_quoteText($value); - } - - // }}} - // {{{ writeLOBToFile() - - /** - * retrieve LOB from the database - * - * @param resource $lob stream handle - * @param string $file name of the file into which the LOb should be fetched - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access protected - */ - function writeLOBToFile($lob, $file) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $fp = fopen($file, 'wb'); - while (!feof($lob)) { - $result = fread($lob, $db->options['lob_buffer_length']); - $read = strlen($result); - if (fwrite($fp, $result, $read) != $read) { - fclose($fp); - return $db->raiseError(MDB2_ERROR, null, null, - 'writeLOBToFile: could not write to the output file'); - } - } - fclose($fp); - return MDB2_OK; - } - - // }}} - // {{{ _retrieveLOB() - - /** - * retrieve LOB from the database - * - * @param resource $lob stream handle - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access protected - */ - function _retrieveLOB(&$lob) - { - if (is_null($lob['value'])) { - $lob['value'] = $lob['ressource']; - } - return MDB2_OK; - } - - // }}} - // {{{ readLOB() - - /** - * Read data from large object input stream. - * - * @param resource $lob stream handle - * @param string $data reference to a variable that will hold data - * to be read from the large object input stream - * @param integer $length value that indicates the largest ammount ofdata - * to be read from the large object input stream. - * @return mixed the effective number of bytes read from the large object - * input stream on sucess or an MDB2 error object. - * @access public - * @see endOfLOB() - */ - function _readLOB($lob, $length) - { - return substr($lob['value'], $lob['position'], $length); - } - - // }}} - // {{{ _endOfLOB() - - /** - * Determine whether it was reached the end of the large object and - * therefore there is no more data to be read for the its input stream. - * - * @param resource $lob stream handle - * @return mixed true or false on success, a MDB2 error on failure - * @access protected - */ - function _endOfLOB($lob) - { - return $lob['endOfLOB']; - } - - // }}} - // {{{ destroyLOB() - - /** - * Free any resources allocated during the lifetime of the large object - * handler object. - * - * @param resource $lob stream handle - * @access public - */ - function destroyLOB($lob) - { - $lob_data = stream_get_meta_data($lob); - $lob_index = $lob_data['wrapper_data']->lob_index; - fclose($lob); - if (isset($this->lobs[$lob_index])) { - $this->_destroyLOB($lob_index); - unset($this->lobs[$lob_index]); - } - return MDB2_OK; - } - - // }}} - // {{{ _destroyLOB() - - /** - * Free any resources allocated during the lifetime of the large object - * handler object. - * - * @param int $lob_index from the lob array - * @access private - */ - function _destroyLOB($lob_index) - { - return MDB2_OK; - } - - // }}} - // {{{ implodeArray() - - /** - * apply a type to all values of an array and return as a comma seperated string - * useful for generating IN statements - * - * @access public - * - * @param array $array data array - * @param string $type determines type of the field - * - * @return string comma seperated values - */ - function implodeArray($array, $type = false) - { - if (!is_array($array) || empty($array)) { - return 'NULL'; - } - if ($type) { - foreach ($array as $value) { - $return[] = $this->quote($value, $type); - } - } else { - $return = $array; - } - return implode(', ', $return); - } -} - -?> \ No newline at end of file diff --git a/program/lib/MDB2/Driver/Datatype/fbsql.php b/program/lib/MDB2/Driver/Datatype/fbsql.php deleted file mode 100755 index a033bca6b..000000000 --- a/program/lib/MDB2/Driver/Datatype/fbsql.php +++ /dev/null @@ -1,555 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Datatype/Common.php'; - -/** - * MDB2 FrontbaseSQL driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Datatype_fbsql extends MDB2_Driver_Datatype_Common -{ - // }}} - // {{{ convertResult() - - /** - * convert a value to a RDBMS indepdenant MDB2 type - * - * @param mixed $value value to be converted - * @param int $type constant that specifies which type to convert to - * @return mixed converted value - * @access public - */ - function convertResult($value, $type) - { - if (is_null($value)) { - return null; - } - switch ($type) { - case 'boolean': - return $value == 'T'; - case 'time': - if ($value[0] == '+') { - return substr($value, 1); - } else { - return $value; - } - default: - return $this->_baseConvertResult($value, $type); - } - return $this->_baseConvertResult($value, $type); - } - - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field - * should be declared as unsigned integer if - * possible. - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field) - { - if (array_key_exists('unsigned', $field) && $field['unsigned']) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $db->warnings[] = "unsigned integer field \"$name\" is being - declared as signed integer"; - } - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'integer') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' INT'.$default.$notnull; - } - - // }}} - // {{{ _getTextDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to NULL. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTextDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'text') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - $length = array_key_exists('length', $field) ? $field['length'] : 32768; - return $name.' VARCHAR ('.$length.')'.$default.$notnull; - } - - // }}} - // {{{ _getCLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an character - * large object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the - * properties of the field being declared as array - * indexes. Currently, the types of supported field - * properties are as follows: - * - * length - * Integer value that determines the maximum length - * of the large object field. If this argument is - * missing the field should be declared to have the - * longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field - * is constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getCLOBDeclaration($name, $field) - { - return "$name CLOB".((array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''); - } - - // }}} - // {{{ _getBLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an binary large - * object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * length - * Integer value that determines the maximum length - * of the large object field. If this argument is - * missing the field should be declared to have the - * longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBLOBDeclaration($name, $field) - { - return "$name BLOB".((array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''); - } - - // }}} - // {{{ _getBooleanDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a boolean type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Boolean value to be used as default for this field. - * - * notnullL - * Boolean flag that indicates whether this field is constrained - * to not be set to NULL. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBooleanDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'boolean') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' BOOLEAN)'.$default.$notnull; - } - - // }}} - // {{{ _getDateDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an date type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field properties - * are as follows: - * - * default - * Date value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDateDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT DATE '. - $this->quote($field['default'], 'date') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' DATE'.$default.$notnull; - } - - // }}} - // {{{ _getTimestampDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an timestamp - * type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Time stamp value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimestampDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT TIMESTAMP '. - $this->quote($field['default'], 'timestamp') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' TIMESTAMP'.$default.$notnull; - } - - // }}} - // {{{ _getTimeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an time type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Time value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimeDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT TIME '. - $this->quote($field['default'], 'time') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' TIME'.$default.$notnull; - } - - // }}} - // {{{ _getFloatDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an float type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getFloatDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'float') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' FLOAT'.$default.$notnull; - } - - // }}} - // {{{ _getDecimalDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an decimal type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDecimalDeclaration($name, $field) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $type = 'DECIMAL(18,'.$db->options['decimal_places'].')'; - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'decimal') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$default.$notnull; - } - - // }}} - // {{{ _quoteBLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBLOB($value) - { - $value = $this->_readFile($value); - return "'".addslashes($value)."'"; - } - - // }}} - // {{{ _quoteBoolean() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBoolean($value) - { - return ($value ? 'True' : 'False'); - } - - // }}} - // {{{ _quoteDate() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDate($value) - { - return 'DATE'.$this->_quoteText($value); - } - - // }}} - // {{{ _quoteTimestamp() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteTimestamp($value) - { - return 'TIMESTAMP'.$this->_quoteText($value); - } - - // }}} - // {{{ _quoteTime() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteTime($value) - { - return 'TIME'.$this->_quoteText($value); - } - - // }}} - // {{{ _quoteFloat() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteFloat($value) - { - return (float)$value; - } - - // }}} - // {{{ _quoteDecimal() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDecimal($value) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->escape($value); - } -} - -?> diff --git a/program/lib/MDB2/Driver/Datatype/ibase.php b/program/lib/MDB2/Driver/Datatype/ibase.php deleted file mode 100755 index 958665440..000000000 --- a/program/lib/MDB2/Driver/Datatype/ibase.php +++ /dev/null @@ -1,659 +0,0 @@ - | -// | Lorenzo Alberton | -// +----------------------------------------------------------------------+ -// -// $Id$ - -require_once 'MDB2/Driver/Datatype/Common.php'; - -/** - * MDB2 Firebird/Interbase driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - * @author Lorenzo Alberton - */ -class MDB2_Driver_Datatype_ibase extends MDB2_Driver_Datatype_Common -{ - // {{{ convertResult() - - /** - * convert a value to a RDBMS independent MDB2 type - * - * @param mixed $value value to be converted - * @param int $type constant that specifies which type to convert to - * @return mixed converted value or a MDB2 error on failure - * @access public - */ - function convertResult($value, $type) - { - if (is_null($value)) { - return null; - } - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - switch ($type) { - case 'decimal': - return sprintf('%.'.$db->options['decimal_places'].'f', doubleval($value)/pow(10.0, $db->options['decimal_places'])); - case 'timestamp': - return substr($value, 0, strlen('YYYY-MM-DD HH:MM:SS')); - default: - return $this->_baseConvertResult($value, $type); - } - } - - // }}} - // {{{ getTypeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function getTypeDeclaration($field) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - switch ($field['type']) { - case 'text': - $length = (array_key_exists('length', $field) ? $field['length'] : (!PEAR::isError($length = $db->options['default_text_field_length']) ? $length : 4000)); - return 'VARCHAR ('.$length.')'; - case 'clob': - return 'BLOB SUB_TYPE 1'; - case 'blob': - return 'BLOB SUB_TYPE 0'; - case 'integer': - return 'INTEGER'; - case 'boolean': - return 'CHAR (1)'; - case 'date': - return 'DATE'; - case 'time': - return 'TIME'; - case 'timestamp': - return 'TIMESTAMP'; - case 'float': - return 'DOUBLE PRECISION'; - case 'decimal': - return 'DECIMAL(18,'.$db->options['decimal_places'].')'; - } - return ''; - } - - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field should be - * declared as unsigned integer if possible. - * - * default - * Integer value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field) - { - if (array_key_exists('unsigned', $field) && $field['unsigned']) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - $db->warnings[] = "unsigned integer field \"$name\" is being declared as signed integer"; - } - - if (array_key_exists('autoincrement', $field) && $field['autoincrement']) { - return $name.' PRIMARY KEY'; - } - - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'integer') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' INT'.$default.$notnull; - } - - // }}} - // {{{ _getTextDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a text type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTextDeclaration($name, $field) - { - $type = $this->getTypeDeclaration($field); - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'text') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$default.$notnull; - } - - // }}} - // {{{ _getCLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a character - * large object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the large - * object field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getCLOBDeclaration($name, $field) - { - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$notnull; - } - - // }}} - // {{{ _getBLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a binary large - * object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the large - * object field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBLOBDeclaration($name, $field) - { - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$notnull; - } - - // }}} - // {{{ _getDateDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a date type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Date value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDateDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'date') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getTimeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a time - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Time value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimeDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'time') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getTimestampDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a timestamp - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Timestamp value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimestampDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'timestamp') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getFloatDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a float type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Float value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getFloatDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'float') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getDecimalDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a decimal type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Decimal value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDecimalDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'decimal') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _quoteLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteLOB($value) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - if (PEAR::isError($connect = $db->connect())) { - return $connect; - } - $close = true; - if (is_resource($value)) { - $close = false; - } elseif (preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) { - if ($match[1] == 'file://') { - $value = $match[2]; - } - $value = @fopen($value, 'r'); - } else { - $fp = @tmpfile(); - @fwrite($fp, $value); - @rewind($fp); - $value = $fp; - } - if ($db->in_transaction) { - $blob_id = @ibase_blob_import($db->transaction_id, $value); - } else { - $blob_id = @ibase_blob_import($db->connection, $value); - } - if ($close) { - @fclose($value); - } - return $blob_id; - } - - // }}} - // {{{ _quoteDecimal() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDecimal($value) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return (strval(round($value*pow(10.0, $db->options['decimal_places'])))); - } - - // }}} - // {{{ _retrieveLOB() - - /** - * retrieve LOB from the database - * - * @param resource $lob stream handle - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access protected - */ - function _retrieveLOB(&$lob) - { - if (!array_key_exists('handle', $lob)) { - $lob['handle'] = @ibase_blob_open($lob['ressource']); - if (!$lob['handle']) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR, null, null, - '_retrieveLOB: Could not open fetched large object field' . @ibase_errmsg()); - } - } - return MDB2_OK; - } - - // }}} - // {{{ _readLOB() - - /** - * Read data from large object input stream. - * - * @param resource $lob stream handle - * @param blob $data reference to a variable that will hold data to be - * read from the large object input stream - * @param int $length integer value that indicates the largest ammount of - * data to be read from the large object input stream. - * @return mixed length on success, a MDB2 error on failure - * @access protected - */ - function _readLOB($lob, $length) - { - $data = ibase_blob_get($lob['handle'], $length); - if (!is_string($data)) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR, null, null, - 'Read Result LOB: ' . @ibase_errmsg()); - } - return $data; - } - - // }}} - // {{{ _destroyLOB() - - /** - * Free any resources allocated during the lifetime of the large object - * handler object. - * - * @param resource $lob stream handle - * @access protected - */ - function _destroyLOB($lob_index) - { - if (isset($this->lobs[$lob_index]['handle'])) { - @ibase_blob_close($this->lobs[$lob_index]['handle']); - } - } - - // }}} - // {{{ mapNativeDatatype() - - /** - * Maps a native array description of a field to a MDB2 datatype and length - * - * @param array $field native field description - * @return array containing the various possible types and the length - * @access public - */ - function mapNativeDatatype($field) - { - $db_type = preg_replace('/\d/','', strtolower($field['typname']) ); - $length = $field['attlen']; - if ($length == '-1') { - $length = $field['atttypmod']-4; - } - if ((int)$length <= 0) { - $length = null; - } - $type = array(); - switch ($db_type) { - case 'smallint': - case 'integer': - $type[] = 'integer'; - if ($length == '1') { - $type[] = 'boolean'; - } - break; - case 'char': - case 'varchar': - $type[] = 'text'; - if ($length == '1') { - $type[] = 'boolean'; - } - break; - case 'date': - $type[] = 'date'; - $length = null; - break; - case 'timestamp': - $type[] = 'timestamp'; - $length = null; - break; - case 'time': - $type[] = 'time'; - $length = null; - break; - case 'float': - case 'double precision': - $type[] = 'float'; - break; - case 'decimal': - case 'numeric': - $type[] = 'decimal'; - break; - case 'blob': - $type[] = 'blob'; - $length = null; - break; - default: - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR, null, null, - 'getTableFieldDefinition: unknown database attribute type'); - } - - return array($type, $length); - } - - // }}} -} -?> \ No newline at end of file diff --git a/program/lib/MDB2/Driver/Datatype/mssql.php b/program/lib/MDB2/Driver/Datatype/mssql.php deleted file mode 100755 index d4594080e..000000000 --- a/program/lib/MDB2/Driver/Datatype/mssql.php +++ /dev/null @@ -1,521 +0,0 @@ - | -// | Daniel Convissor | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Datatype/Common.php'; - -/** - * MDB2 MS SQL driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Datatype_mssql extends MDB2_Driver_Datatype_Common -{ - // {{{ convertResult() - - /** - * convert a value to a RDBMS indepdenant MDB2 type - * - * @param mixed $value value to be converted - * @param int $type constant that specifies which type to convert to - * @return mixed converted value - * @access public - */ - function convertResult($value, $type) - { - if (is_null($value)) { - return null; - } - switch ($type) { - case 'boolean': - return $value == '1'; - case 'date': - if (strlen($value) > 10) { - $value = substr($value,0,10); - } - return $value; - case 'time': - if (strlen($value) > 8) { - $value = substr($value,11,8); - } - return $value; - default: - return $this->_baseConvertResult($value,$type); - } - } - - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field should be - * declared as unsigned integer if possible. - * - * default - * Integer value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field) - { - if (array_key_exists('unsigned', $field) && $field['unsigned']) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $db->warnings[] = "unsigned integer field \"$name\" is being declared as signed integer"; - } - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'integer') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ' NULL'; - return $name.' INT'.$default.$notnull; - } - - // }}} - // {{{ _getTextDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTextDeclaration($name, $field) - { - $type = array_key_exists('length', $field) ? 'VARCHAR ('.$field['length'].')' : 'TEXT'; - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'text') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ' NULL'; - return $name.' '.$type.$default.$notnull; - } - - // }}} - // {{{ _getCLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an character - * large object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the - * properties of the field being declared as array - * indexes. Currently, the types of supported field - * properties are as follows: - * - * length - * Integer value that determines the maximum length - * of the large object field. If this argument is - * missing the field should be declared to have the - * longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field - * is constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getCLOBDeclaration($name, $field) - { - if (array_key_exists('length', $field)) { - $length = $field['length']; - if ($length <= 8000) { - $type = "VARCHAR($length)"; - } else { - $type = 'TEXT'; - } - } else { - $type = 'TEXT'; - } - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ' NULL'; - return $name.' '.$type.$notnull; - } - - // }}} - // {{{ _getBLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an binary large - * object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * length - * Integer value that determines the maximum length - * of the large object field. If this argument is - * missing the field should be declared to have the - * longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBLOBDeclaration($name, $field) - { - if (array_key_exists('length', $field)) { - $length = $field['length']; - if ($length <= 8000) { - $type = "VARBINARY($length)"; - } else { - $type = 'IMAGE'; - } - } else { - $type = 'IMAGE'; - } - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ' NULL'; - return $name.' '.$type.$notnull; - } - - // }}} - // {{{ _getBooleanDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a boolean type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Boolean value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBooleanDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'boolean') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ' NULL'; - return $name.' BIT'.$default.$notnull; - } - - // }}} - // {{{ _getDateDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a date type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Date value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDateDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'date') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ' NULL'; - return $name.' CHAR ('.strlen('YYYY-MM-DD').')'.$default.$notnull; - } - - // }}} - // {{{ _getTimestampDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a timestamp - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Timestamp value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimestampDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'timestamp') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ' NULL'; - return $name.' CHAR ('.strlen('YYYY-MM-DD HH:MM:SS').')'.$default.$notnull; - } - - // }}} - // {{{ _getTimeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a time - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Time value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimeDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'time') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ' NULL'; - return $name.' CHAR ('.strlen('HH:MM:SS').')'.$default.$notnull; - } - - // }}} - // {{{ _getFloatDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an float type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getFloatDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'float') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ' NULL'; - return $name.' FLOAT'.$default.$notnull; - } - - // }}} - // {{{ _getDecimalDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an decimal type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDecimalDeclaration($name, $field) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $type = 'DECIMAL(18,'.$db->options['decimal_places'].')'; - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'decimal') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ' NULL'; - return $name.' '.$type.$default.$notnull; - } - - // }}} - // {{{ _quoteBLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBLOB($value) - { - $value = $this->_readFile($value); - return bin2hex("0x".$value); - } - - // }}} - // {{{ _quoteBoolean() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBoolean($value) - { - return ($value ? 1 : 0); - } - - // }}} - // {{{ _quoteFloat() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteFloat($value) - { - return (float)$value; - } - - // }}} - // {{{ _quoteDecimal() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDecimal($value) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->escape($value); - } -} - -?> \ No newline at end of file diff --git a/program/lib/MDB2/Driver/Datatype/mysql.php b/program/lib/MDB2/Driver/Datatype/mysql.php deleted file mode 100644 index f57867025..000000000 --- a/program/lib/MDB2/Driver/Datatype/mysql.php +++ /dev/null @@ -1,543 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Datatype/Common.php'; - -/** - * MDB2 MySQL driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Datatype_mysql extends MDB2_Driver_Datatype_Common -{ - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field - * should be declared as unsigned integer if - * possible. - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field) - { - if (array_key_exists('autoincrement', $field) && $field['autoincrement']) { - $autoinc = ' AUTO_INCREMENT PRIMARY KEY'; - $default = ''; - } else { - $autoinc = ''; - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'integer') : ''; - } - - $unsigned = (array_key_exists('unsigned', $field) && $field['unsigned']) ? ' UNSIGNED' : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' INT'.$unsigned.$default.$notnull.$autoinc; - } - - // }}} - // {{{ _getCLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an character - * large object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the - * properties of the field being declared as array - * indexes. Currently, the types of supported field - * properties are as follows: - * - * length - * Integer value that determines the maximum length - * of the large object field. If this argument is - * missing the field should be declared to have the - * longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field - * is constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getCLOBDeclaration($name, $field) - { - if (array_key_exists('length', $field)) { - $length = $field['length']; - if ($length <= 255) { - $type = 'TINYTEXT'; - } else { - if ($length <= 65535) { - $type = 'TEXT'; - } else { - if ($length <= 16777215) { - $type = 'MEDIUMTEXT'; - } else { - $type = 'LONGTEXT'; - } - } - } - } else { - $type = 'LONGTEXT'; - } - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$notnull; - } - - // }}} - // {{{ _getBLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an binary large - * object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * length - * Integer value that determines the maximum length - * of the large object field. If this argument is - * missing the field should be declared to have the - * longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBLOBDeclaration($name, $field) - { - if (array_key_exists('length', $field)) { - $length = $field['length']; - if ($length <= 255) { - $type = 'TINYBLOB'; - } else { - if ($length <= 65535) { - $type = 'BLOB'; - } else { - if ($length <= 16777215) { - $type = 'MEDIUMBLOB'; - } else { - $type = 'LONGBLOB'; - } - } - } - } else { - $type = 'LONGBLOB'; - } - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$notnull; - } - - // }}} - // {{{ _getDateDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an date type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field properties - * are as follows: - * - * default - * Date value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDateDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'date') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' DATE'.$default.$notnull; - } - - // }}} - // {{{ _getTimestampDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an timestamp - * type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Time stamp value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimestampDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'timestamp') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' DATETIME'.$default.$notnull; - } - - // }}} - // {{{ _getTimeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an time type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Time value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimeDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'time') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' TIME'.$default.$notnull; - } - - // }}} - // {{{ _getFloatDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an float type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getFloatDeclaration($name, $field) - { - $type = 'DOUBLE'; - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'float') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$default.$notnull; - } - - // }}} - // {{{ _getDecimalDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an decimal type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDecimalDeclaration($name, $field) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $type = 'DECIMAL(18,'.$db->options['decimal_places'].')'; - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'decimal') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$default.$notnull; - } - - // }}} - // {{{ _quoteBLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBLOB($value) - { - $value = $this->_readFile($value); - return "'".addslashes($value)."'"; - } - - // }}} - // {{{ _quoteFloat() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteFloat($value) - { - return (float)$value; - } - - // }}} - // {{{ _quoteDecimal() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDecimal($value) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->escape($value); - } - - // }}} - // {{{ mapNativeDatatype() - - /** - * Maps a native array description of a field to a MDB2 datatype and length - * - * @param array $field native field description - * @return array containing the various possible types and the length - * @access public - */ - function mapNativeDatatype($field) - { - $db_type = strtolower($field['type']); - $db_type = strtok($db_type, '(), '); - if ($db_type == 'national') { - $db_type = strtok('(), '); - } - $length = strtok('(), '); - $decimal = strtok('(), '); - $type = array(); - switch ($db_type) { - case 'tinyint': - case 'smallint': - case 'mediumint': - case 'int': - case 'integer': - case 'bigint': - $type[] = 'integer'; - if ($length == '1') { - $type[] = 'boolean'; - if (preg_match('/^[is|has]/', $field['field'])) { - $type = array_reverse($type); - } - } - break; - case 'char': - case 'varchar': - $type[] = 'text'; - if ($length == '1') { - $type[] = 'boolean'; - if (preg_match('/[is|has]/', $field['field'])) { - $type = array_reverse($type); - } - } - break; - case 'enum': - preg_match_all('/\'.+\'/U', $field['type'], $matches); - $length = 0; - if (is_array($matches)) { - foreach ($matches[0] as $value) { - $length = max($length, strlen($value)-2); - } - } - case 'set': - $type[] = 'text'; - $type[] = 'integer'; - break; - case 'date': - $type[] = 'date'; - $length = null; - break; - case 'datetime': - case 'timestamp': - $type[] = 'timestamp'; - $length = null; - break; - case 'time': - $type[] = 'time'; - $length = null; - break; - case 'float': - case 'double': - case 'real': - $type[] = 'float'; - break; - case 'decimal': - case 'numeric': - $type[] = 'decimal'; - break; - case 'tinytext': - case 'mediumtext': - case 'longtext': - case 'text': - if ($decimal == 'binary') { - $type[] = 'blob'; - } - $type[] = 'clob'; - $type[] = 'text'; - break; - case 'tinyblob': - case 'mediumblob': - case 'longblob': - case 'blob': - $type[] = 'blob'; - $type[] = 'text'; - $length = null; - break; - case 'year': - $type[] = 'integer'; - $type[] = 'date'; - $length = null; - break; - default: - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR, null, null, - 'getTableFieldDefinition: unknown database attribute type'); - } - - return array($type, $length); - } -} - -?> diff --git a/program/lib/MDB2/Driver/Datatype/mysqli.php b/program/lib/MDB2/Driver/Datatype/mysqli.php deleted file mode 100755 index 7c35cf8d9..000000000 --- a/program/lib/MDB2/Driver/Datatype/mysqli.php +++ /dev/null @@ -1,568 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Datatype/Common.php'; - -/** - * MDB2 MySQL driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Datatype_mysqli extends MDB2_Driver_Datatype_Common -{ - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field - * should be declared as unsigned integer if - * possible. - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field) - { - if (array_key_exists('autoincrement', $field) && $field['autoincrement']) { - $autoinc = ' AUTO_INCREMENT PRIMARY KEY'; - $default = ''; - } else { - $autoinc = ''; - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'integer') : ''; - } - - $unsigned = (array_key_exists('unsigned', $field) && $field['unsigned']) ? ' UNSIGNED' : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' INT'.$unsigned.$default.$notnull.$autoinc; - } - - // }}} - // {{{ _getCLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an character - * large object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the - * properties of the field being declared as array - * indexes. Currently, the types of supported field - * properties are as follows: - * - * length - * Integer value that determines the maximum length - * of the large object field. If this argument is - * missing the field should be declared to have the - * longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field - * is constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getCLOBDeclaration($name, $field) - { - if (array_key_exists('length', $field)) { - $length = $field['length']; - if ($length <= 255) { - $type = 'TINYTEXT'; - } else { - if ($length <= 65535) { - $type = 'TEXT'; - } else { - if ($length <= 16777215) { - $type = 'MEDIUMTEXT'; - } else { - $type = 'LONGTEXT'; - } - } - } - } else { - $type = 'LONGTEXT'; - } - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$notnull; - } - - // }}} - // {{{ _getBLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an binary large - * object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * length - * Integer value that determines the maximum length - * of the large object field. If this argument is - * missing the field should be declared to have the - * longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBLOBDeclaration($name, $field) - { - if (array_key_exists('length', $field)) { - $length = $field['length']; - if ($length <= 255) { - $type = 'TINYBLOB'; - } else { - if ($length <= 65535) { - $type = 'BLOB'; - } else { - if ($length <= 16777215) { - $type = 'MEDIUMBLOB'; - } else { - $type = 'LONGBLOB'; - } - } - } - } else { - $type = 'LONGBLOB'; - } - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$notnull; - } - - // }}} - // {{{ _getDateDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an date type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field properties - * are as follows: - * - * default - * Date value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDateDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'date') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' DATE'.$default.$notnull; - } - - // }}} - // {{{ _getTimestampDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an timestamp - * type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Time stamp value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimestampDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'timestamp') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' DATETIME'.$default.$notnull; - } - - // }}} - // {{{ _getTimeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an time type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Time value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimeDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'time') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' TIME'.$default.$notnull; - } - - // }}} - // {{{ _getFloatDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an float type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getFloatDeclaration($name, $field) - { - $type = 'DOUBLE'; - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'float') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$default.$notnull; - } - - // }}} - // {{{ _getDecimalDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an decimal type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDecimalDeclaration($name, $field) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $type = 'DECIMAL(18,'.$db->options['decimal_places'].')'; - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'decimal') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$default.$notnull; - } - - // }}} - // {{{ _quoteBLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBLOB($value) - { - $value = $this->_readFile($value); - return "'".addslashes($value)."'"; - } - - // }}} - // {{{ _quoteFloat() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteFloat($value) - { - return (float)$value; - } - - // }}} - // {{{ _quoteDecimal() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDecimal($value) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->escape($value); - } - - // }}} - // {{{ mapNativeDatatype() - - /** - * Maps a native array description of a field to a MDB2 datatype and length - * - * @param array $field native field description - * @return array containing the various possible types and the length - * @access public - */ - function mapNativeDatatype($field) - { - $db_type = strtolower($field['type']); - $db_type = strtok($db_type, '(), '); - if ($db_type == 'national') { - $db_type = strtok('(), '); - } - $length = strtok('(), '); - $decimal = strtok('(), '); - $type = array(); - switch ($db_type) { - case 'tinyint': - case 'smallint': - case 'mediumint': - case 'int': - case 'integer': - case 'bigint': - $type[] = 'integer'; - if ($length == '1') { - $type[] = 'boolean'; - if (preg_match('/^[is|has]/', $field['field'])) { - $type = array_reverse($type); - } - } - break; - case 'char': - case 'varchar': - $type[] = 'text'; - if ($length == '1') { - $type[] = 'boolean'; - if (preg_match('/[is|has]/', $field['field'])) { - $type = array_reverse($type); - } - } - break; - case 'enum': - preg_match_all('/\'.+\'/U', $field['type'], $matches); - $length = 0; - if (is_array($matches)) { - foreach ($matches[0] as $value) { - $length = max($length, strlen($value)-2); - } - } - case 'set': - $type[] = 'text'; - $type[] = 'integer'; - break; - case 'date': - $type[] = 'date'; - $length = null; - break; - case 'datetime': - case 'timestamp': - $type[] = 'timestamp'; - $length = null; - break; - case 'time': - $type[] = 'time'; - $length = null; - break; - case 'float': - case 'double': - case 'real': - $type[] = 'float'; - break; - case 'decimal': - case 'numeric': - $type[] = 'decimal'; - break; - case 'tinytext': - case 'mediumtext': - case 'longtext': - case 'text': - if ($decimal == 'binary') { - $type[] = 'blob'; - } - $type[] = 'clob'; - $type[] = 'text'; - break; - case 'tinyblob': - case 'mediumblob': - case 'longblob': - case 'blob': - $type[] = 'blob'; - $type[] = 'text'; - $length = null; - break; - case 'year': - $type[] = 'integer'; - $type[] = 'date'; - $length = null; - break; - default: - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR, null, null, - 'getTableFieldDefinition: unknown database attribute type'); - } - - return array($type, $length); - } - - // }}} - // {{{ mapPrepareDatatype() - - /** - * Maps an mdb2 datatype to mysqli prepare type - * - * @param string $type - * @return string - * @access public - */ - function mapPrepareDatatype($type) - { - switch($type) { - case 'integer': - return 'i'; - case 'float': - return 'd'; - case 'blob': - return 'b'; - default: - break; - } - return 's'; - } -} - -?> diff --git a/program/lib/MDB2/Driver/Datatype/oci8.php b/program/lib/MDB2/Driver/Datatype/oci8.php deleted file mode 100755 index 3d790c047..000000000 --- a/program/lib/MDB2/Driver/Datatype/oci8.php +++ /dev/null @@ -1,607 +0,0 @@ - | -// +----------------------------------------------------------------------+ - -// $Id$ - -require_once 'MDB2/Driver/Datatype/Common.php'; - -/** - * MDB2 OCI8 driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Datatype_oci8 extends MDB2_Driver_Datatype_Common -{ - // {{{ convertResult() - - /** - * convert a value to a RDBMS indepdenant MDB2 type - * - * @param mixed $value value to be converted - * @param int $type constant that specifies which type to convert to - * @return mixed converted value - * @access public - */ - function convertResult($value, $type) - { - if (is_null($value)) { - return null; - } - switch ($type) { - case 'date': - return substr($value, 0, strlen('YYYY-MM-DD')); - case 'time': - return substr($value, strlen('YYYY-MM-DD '), strlen('HH:MI:SS')); - default: - return $this->_baseConvertResult($value, $type); - } - } - - // }}} - // {{{ getTypeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function getTypeDeclaration($field) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - switch ($field['type']) { - case 'text': - $length = (array_key_exists('length', $field) ? $field['length'] : (($length = $db->options['default_text_field_length']) ? $length : 4000)); - return 'VARCHAR ('.$length.')'; - case 'clob': - return 'CLOB'; - case 'blob': - return 'BLOB'; - case 'integer': - return 'INT'; - case 'boolean': - return 'CHAR (1)'; - case 'date': - case 'time': - case 'timestamp': - return 'DATE'; - case 'float': - return 'NUMBER'; - case 'decimal': - return 'NUMBER(*,'.$db->options['decimal_places'].')'; - } - } - - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field should be - * declared as unsigned integer if possible. - * - * default - * Integer value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @param string $table name of the current table being processed - * by alterTable(), used for autoincrement emulation - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field, $table = null) - { - if (array_key_exists('unsigned', $field) && $field['unsigned']) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - $db->warning[] = "unsigned integer field \"$name\" is being declared as signed integer"; - } - - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'integer') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getTextDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTextDeclaration($name, $field) - { - $type = $this->getTypeDeclaration($field); - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'text') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$default.$notnull; - } - - // }}} - // {{{ _getCLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an character - * large object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the large - * object field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function _getCLOBDeclaration($name, $field) - { - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$notnull; - } - - // }}} - // {{{ _getBLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an binary large - * object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the large - * object field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBLOBDeclaration($name, $field) - { - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$notnull; - } - - // }}} - // {{{ _getDateDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a date type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Date value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDateDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'date') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getTimestampDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a timestamp - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Timestamp value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimestampDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'timestamp') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; } - - // }}} - // {{{ _getTimeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a time - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Time value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimeDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'time') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getFloatDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a float type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Float value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getFloatDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'float') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getDecimalDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a decimal type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Decimal value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDecimalDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'decimal') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _quoteCLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteCLOB($value) - { - return 'EMPTY_CLOB()'; - } - - // }}} - // {{{ _quoteBLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBLOB($value) - { - return 'EMPTY_BLOB()'; - } - - // }}} - // {{{ _quoteDate() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDate($value) - { - return $this->_quoteText("$value 00:00:00"); - } - - // }}} - // {{{ _quoteTimestamp() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteTimestamp($value) - { - return $this->_quoteText($value); - } - - // }}} - // {{{ _quoteTime() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteTime($value) - { - return $this->_quoteText("0001-01-01 $value"); - } - - // }}} - // {{{ _quoteFloat() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteFloat($value) - { - return (float)$value; - } - - // }}} - // {{{ _quoteDecimal() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDecimal($value) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->escape($value); - } - - // }}} - // {{{ writeLOBToFile() - - /** - * retrieve LOB from the database - * - * @param resource $lob stream handle - * @param string $file name of the file into which the LOb should be fetched - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access protected - */ - function writeLOBToFile($lob, $file) - { - $lob_data = stream_get_meta_data($lob); - $lob_index = $lob_data['wrapper_data']->lob_index; - if (!@$this->lobs[$lob_index]['value']->writelobtofile($file)) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(); - } - return MDB2_OK; - } - - // }}} - // {{{ _retrieveLOB() - - /** - * retrieve LOB from the database - * - * @param int $lob_index from the lob array - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access protected - */ - function _retrieveLOB(&$lob) - { - if (!array_key_exists('loaded', $lob)) { - if (!is_object($lob['ressource'])) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR, null, null, - 'attemped to retrieve LOB from non existing or NULL column'); - } - $lob['value'] = $lob['ressource']->load(); - $lob['loaded'] = true; - } - return MDB2_OK; - } -} - -?> \ No newline at end of file diff --git a/program/lib/MDB2/Driver/Datatype/pgsql.php b/program/lib/MDB2/Driver/Datatype/pgsql.php deleted file mode 100755 index 8308ba6b2..000000000 --- a/program/lib/MDB2/Driver/Datatype/pgsql.php +++ /dev/null @@ -1,863 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ - -require_once 'MDB2/Driver/Datatype/Common.php'; - -/** - * MDB2 PostGreSQL driver - * - * @package MDB2 - * @category Database - * @author Paul Cooper - */ -class MDB2_Driver_Datatype_pgsql extends MDB2_Driver_Datatype_Common -{ - // {{{ convertResult() - - /** - * convert a value to a RDBMS independent MDB2 type - * - * @param mixed $value value to be converted - * @param int $type constant that specifies which type to convert to - * @return mixed converted value or a MDB2 error on failure - * @access public - */ - function convertResult($value, $type) - { - if (is_null($value)) { - return null; - } - switch ($type) { - case 'boolean': - return $value == 't'; - case 'float': - return doubleval($value); - case 'date': - return $value; - case 'time': - return $value; - case 'timestamp': - return substr($value, 0, strlen('YYYY-MM-DD HH:MM:SS')); - default: - return $this->_baseConvertResult($value, $type); - } - } - - // }}} - // {{{ getTypeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an text type - * field to be used in statements like CREATE TABLE. - * - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access public - */ - function getTypeDeclaration($field) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - switch ($field['type']) { - case 'text': - return array_key_exists('length', $field) ? 'VARCHAR ('.$field['length'].')' : 'TEXT'; - case 'clob': - return 'OID'; - case 'blob': - return 'OID'; - case 'integer': - if (array_key_exists('autoincrement', $field) && $field['autoincrement']) { - return 'SERIAL PRIMARY KEY'; - } - return 'INT'; - case 'boolean': - return 'BOOLEAN'; - case 'date': - return 'DATE'; - case 'time': - return 'TIME without time zone'; - case 'timestamp': - return 'TIMESTAMP without time zone'; - case 'float': - return 'FLOAT8'; - case 'decimal': - return 'NUMERIC(18, '.$db->options['decimal_places'].')'; - } - } - - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field should be - * declared as unsigned integer if possible. - * - * default - * Integer value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field) - { - if (array_key_exists('unsigned', $field) && $field['unsigned']) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $db->warnings[] = "unsigned integer field \"$name\" is being declared as signed integer"; - } - if (array_key_exists('autoincrement', $field) && $field['autoincrement']) { - return $name.' '.$this->getTypeDeclaration($field); - } - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'integer') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getTextDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a text type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTextDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'text') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getCLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a character - * large object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the large - * object field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getCLOBDeclaration($name, $field) - { - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$notnull; - } - - // }}} - // {{{ _getBLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a binary large - * object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * length - * Integer value that determines the maximum length of the large - * object field. If this argument is missing the field should be - * declared to have the longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBLOBDeclaration($name, $field) - { - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$notnull; - } - - // }}} - // {{{ _getBooleanDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a boolean type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Boolean value to be used as default for this field. - * - * notnullL - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBooleanDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'boolean') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getDateDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a date type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Date value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDateDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'date') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getTimeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a time - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Time value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimeDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'time') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getTimestampDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a timestamp - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Timestamp value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimestampDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'timestamp') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getFloatDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a float type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Float value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getFloatDeclaration($name, $field) - { - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'float') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _getDecimalDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare a decimal type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param array $field associative array with the name of the properties - * of the field being declared as array indexes. Currently, the types - * of supported field properties are as follows: - * - * default - * Decimal value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is constrained - * to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDecimalDeclaration($name, $field) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $default = array_key_exists('default', $field) ? ' DEFAULT '. - $this->quote($field['default'], 'float') : ''; - $notnull = (array_key_exists('notnull', $field) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$this->getTypeDeclaration($field).$default.$notnull; - } - - // }}} - // {{{ _quoteLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteLOB($value) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $connect = $db->connect(); - if (PEAR::isError($connect)) { - return $connect; - } - if (!$db->in_transaction && !@pg_query($db->connection, 'BEGIN')) { - return $db->raiseError(MDB2_ERROR, null, null, - 'error starting transaction'); - } - if (is_resource($value)) { - $close = false; - } elseif (preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) { - $close = true; - if ($match[1] == 'file://') { - $value = $match[2]; - } - // disabled use of pg_lo_import() for now with the following line - $value = @fopen($value, 'r'); - } else { - $close = true; - $fp = @tmpfile(); - @fwrite($fp, $value); - @rewind($fp); - $value = $fp; - } - $result = false; - if (is_resource($value)) { - if (($lo = @pg_lo_create($db->connection))) { - if (($handle = @pg_lo_open($db->connection, $lo, 'w'))) { - while (!@feof($value)) { - $data = @fread($value, $db->options['lob_buffer_length']); - if ($data === '') { - break; - } - if (!@pg_lo_write($handle, $data)) { - $result = $db->raiseError(); - break; - } - } - if (!PEAR::isError($result)) { - $result = strval($lo); - } - @pg_lo_close($handle); - } else { - $result = $db->raiseError(); - @pg_lo_unlink($db->connection, $lo); - } - } - if ($close) { - @fclose($value); - } - } else { - if (!@pg_lo_import($db->connection, $value)) { - $result = $db->raiseError(); - } - } - if (!$db->in_transaction) { - if (PEAR::isError($result)) { - @pg_query($db->connection, 'ROLLBACK'); - } else { - @pg_query($db->connection, 'COMMIT'); - } - } - return $result; - } - - // }}} - // {{{ _quoteCLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteCLOB($value) - { - return $this->_quoteLOB($value); - } - - // }}} - // {{{ _quoteBLOB() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param $value - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBLOB($value) - { - return $this->_quoteLOB($value); - } - - // }}} - // {{{ _quoteBoolean() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteBoolean($value) - { - return ($value ? "'t'" : "'f'"); - } - - // }}} - // {{{ _quoteFloat() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteFloat($value) - { - return (float)$value; - } - - // }}} - // {{{ _quoteDecimal() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDecimal($value) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->escape($value); - } - - // }}} - // {{{ writeLOBToFile() - - /** - * retrieve LOB from the database - * - * @param resource $lob stream handle - * @param string $file name of the file into which the LOb should be fetched - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access protected - */ - function writeLOBToFile($lob, $file) - { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - $lob_data = stream_get_meta_data($lob); - $lob_index = $lob_data['wrapper_data']->lob_index; - if (!pg_lo_export($db->connection, $this->lobs[$lob_index]['ressource'], $file)) { - return $db->raiseError(); - } - return MDB2_OK; - } - - // }}} - // {{{ _retrieveLOB() - - /** - * retrieve LOB from the database - * - * @param resource $lob stream handle - * @return mixed MDB2_OK on success, a MDB2 error on failure - * @access protected - */ - function _retrieveLOB(&$lob) - { - if (!array_key_exists('handle', $lob)) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - if (!$db->in_transaction) { - if (!@pg_query($db->connection, 'BEGIN')) { - return $db->raiseError(); - } - $lob['in_transaction'] = true; - } - $lob['handle'] = @pg_lo_open($db->connection, $lob['ressource'], 'r'); - if (!$lob['handle']) { - if (array_key_exists('in_transaction', $lob)) { - @pg_query($db->connection, 'END'); - unset($lob['in_transaction']); - } - return $db->raiseError(); - } - } - return MDB2_OK; - } - - // }}} - // {{{ _readLOB() - - /** - * Read data from large object input stream. - * - * @param resource $lob stream handle - * @param blob $data reference to a variable that will hold data to be - * read from the large object input stream - * @param int $length integer value that indicates the largest ammount of - * data to be read from the large object input stream. - * @return mixed length on success, a MDB2 error on failure - * @access protected - */ - function _readLOB($lob, $length) - { - $data = @pg_lo_read($lob['handle'], $length); - if (!is_string($data)) { - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(); - } - return $data; - } - - // }}} - // {{{ _destroyLOB() - - /** - * Free any resources allocated during the lifetime of the large object - * handler object. - * - * @param int $lob_index from the lob array - * @access protected - */ - function _destroyLOB($lob_index) - { - if (isset($this->lobs[$lob_index]['handle'])) { - @pg_lo_close($this->lobs[$lob_index]['handle']); - unset($this->lobs[$lob_index]['handle']); - if (isset($this->lobs[$lob_index]['in_transaction'])) { -/* -for some reason this piece of code causes an apache crash - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - @pg_query($db->connection, 'END'); -*/ - } - } - } - - // }}} - // {{{ mapNativeDatatype() - - /** - * Maps a native array description of a field to a MDB2 datatype and length - * - * @param array $field native field description - * @return array containing the various possible types and the length - * @access public - */ - function mapNativeDatatype($field) - { - $db_type = preg_replace('/\d/','', strtolower($field['typname']) ); - $length = $field['attlen']; - if ($length == '-1') { - $length = $field['atttypmod']-4; - } - if ((int)$length <= 0) { - $length = null; - } - $type = array(); - switch ($db_type) { - case 'int': - $type[] = 'integer'; - if ($length == '1') { - $type[] = 'boolean'; - } - break; - case 'bool': - $type[] = 'boolean'; - $length = null; - break; - case 'text': - case 'char': - case 'varchar': - case 'bpchar': - $type[] = 'text'; - if ($length == '1') { - $type[] = 'boolean'; - } elseif (strstr($db_type, 'text')) - $type[] = 'clob'; - break; - case 'date': - $type[] = 'date'; - $length = null; - break; - case 'datetime': - case 'timestamp': - $type[] = 'timestamp'; - $length = null; - break; - case 'time': - $type[] = 'time'; - $length = null; - break; - case 'float': - case 'double': - case 'real': - $type[] = 'float'; - break; - case 'decimal': - case 'money': - case 'numeric': - $type[] = 'decimal'; - break; - case 'tinyblob': - case 'mediumblob': - case 'longblob': - case 'blob': - $type[] = 'blob'; - $length = null; - break; - case 'oid': - $type[] = 'blob'; - $type[] = 'clob'; - $length = null; - break; - case 'year': - $type[] = 'integer'; - $type[] = 'date'; - $length = null; - break; - default: - $db =& $this->getDBInstance(); - if (PEAR::isError($db)) { - return $db; - } - - return $db->raiseError(MDB2_ERROR, null, null, - 'getTableFieldDefinition: unknown database attribute type'); - } - - return array($type, $length); - } - - // }}} -} -?> \ No newline at end of file diff --git a/program/lib/MDB2/Driver/Datatype/sqlite.php b/program/lib/MDB2/Driver/Datatype/sqlite.php deleted file mode 100755 index b7a06f65a..000000000 --- a/program/lib/MDB2/Driver/Datatype/sqlite.php +++ /dev/null @@ -1,506 +0,0 @@ - | -// +----------------------------------------------------------------------+ -// -// $Id$ -// - -require_once 'MDB2/Driver/Datatype/Common.php'; - -/** - * MDB2 SQLite driver - * - * @package MDB2 - * @category Database - * @author Lukas Smith - */ -class MDB2_Driver_Datatype_sqlite extends MDB2_Driver_Datatype_Common -{ - // }}} - // {{{ _getIntegerDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an integer type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * unsigned - * Boolean flag that indicates whether the field - * should be declared as unsigned integer if - * possible. - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getIntegerDeclaration($name, $field) - { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - $unsigned = (isset($field['unsigned']) && $field['unsigned']) ? ' UNSIGNED' : ''; - $default = isset($field['default']) ? ' DEFAULT '. - $this->quote($field['default'], 'integer') : ''; - $notnull = (isset($field['notnull']) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' INT'.$unsigned.$default.$notnull; - } - - // }}} - // {{{ _getCLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an character - * large object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the - * properties of the field being declared as array - * indexes. Currently, the types of supported field - * properties are as follows: - * - * length - * Integer value that determines the maximum length - * of the large object field. If this argument is - * missing the field should be declared to have the - * longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field - * is constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getCLOBDeclaration($name, $field) - { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - if (isset($field['length'])) { - $length = $field['length']; - if ($length <= 255) { - $type = 'TINYTEXT'; - } else { - if ($length <= 65535) { - $type = 'TEXT'; - } else { - if ($length <= 16777215) { - $type = 'MEDIUMTEXT'; - } else { - $type = 'LONGTEXT'; - } - } - } - } else { - $type = 'LONGTEXT'; - } - $notnull = (isset($field['notnull']) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$notnull; - } - - // }}} - // {{{ _getBLOBDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an binary large - * object type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * length - * Integer value that determines the maximum length - * of the large object field. If this argument is - * missing the field should be declared to have the - * longest length allowed by the DBMS. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getBLOBDeclaration($name, $field) - { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - if (isset($field['length'])) { - $length = $field['length']; - if ($length <= 255) { - $type = 'TINYBLOB'; - } else { - if ($length <= 65535) { - $type = 'BLOB'; - } else { - if ($length <= 16777215) { - $type = 'MEDIUMBLOB'; - } else { - $type = 'LONGBLOB'; - } - } - } - } - else { - $type = 'LONGBLOB'; - } - $notnull = (isset($field['notnull']) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$notnull; - } - - // }}} - // {{{ _getDateDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an date type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field properties - * are as follows: - * - * default - * Date value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDateDeclaration($name, $field) - { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - $default = isset($field['default']) ? ' DEFAULT '. - $this->quote($field['default'], 'date') : ''; - $notnull = (isset($field['notnull']) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' DATE'.$default.$notnull; - } - - // }}} - // {{{ _getTimestampDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an timestamp - * type field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Time stamp value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimestampDeclaration($name, $field) - { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - $default = isset($field['default']) ? ' DEFAULT '. - $this->quote($field['default'], 'timestamp') : ''; - $notnull = (isset($field['notnull']) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' DATETIME'.$default.$notnull; - } - - // }}} - // {{{ _getTimeDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an time type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Time value to be used as default for this field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getTimeDeclaration($name, $field) - { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - $default = isset($field['default']) ? ' DEFAULT '. - $this->quote($field['default'], 'time') : ''; - $notnull = (isset($field['notnull']) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' TIME'.$default.$notnull; - } - - // }}} - // {{{ _getFloatDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an float type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getFloatDeclaration($name, $field) - { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - $type = 'DOUBLE'.($db->options['fixed_float'] ? '('. - ($db->options['fixed_float']+2).','.$db->options['fixed_float'].')' : ''); - $default = isset($field['default']) ? ' DEFAULT '. - $this->quote($field['default'], 'float') : ''; - $notnull = (isset($field['notnull']) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$default.$notnull; - } - - // }}} - // {{{ _getDecimalDeclaration() - - /** - * Obtain DBMS specific SQL code portion needed to declare an decimal type - * field to be used in statements like CREATE TABLE. - * - * @param string $name name the field to be declared. - * @param string $field associative array with the name of the properties - * of the field being declared as array indexes. - * Currently, the types of supported field - * properties are as follows: - * - * default - * Integer value to be used as default for this - * field. - * - * notnull - * Boolean flag that indicates whether this field is - * constrained to not be set to null. - * @return string DBMS specific SQL code portion that should be used to - * declare the specified field. - * @access protected - */ - function _getDecimalDeclaration($name, $field) - { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - $type = 'BIGINT'; - $default = isset($field['default']) ? ' DEFAULT '. - $this->quote($field['default'], 'decimal') : ''; - $notnull = (isset($field['notnull']) && $field['notnull']) ? ' NOT NULL' : ''; - return $name.' '.$type.$default.$notnull; - } - - // }}} - // {{{ _quoteFloat() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteFloat($value) - { - return (float)$value; - } - - // }}} - // {{{ _quoteDecimal() - - /** - * Convert a text value into a DBMS specific format that is suitable to - * compose query statements. - * - * @param string $value text string value that is intended to be converted. - * @return string text string that represents the given argument value in - * a DBMS specific format. - * @access protected - */ - function _quoteDecimal($value) - { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - return $db->escape($value); - } - - // }}} - // {{{ mapNativeDatatype() - - /** - * Maps a native array description of a field to a MDB2 datatype and length - * - * @param array $field native field description - * @return array containing the various possible types and the length - * @access public - */ - function mapNativeDatatype($field) - { - $db =& $GLOBALS['_MDB2_databases'][$this->db_index]; - $db_type = $field['type']; - $length = isset($field['length']) ? $field['length'] : null; - $type = array(); - switch ($db_type) { - case 'tinyint': - case 'smallint': - case 'mediumint': - case 'int': - case 'integer': - case 'bigint': - $type[] = 'integer'; - if ($length == '1') { - $type[] = 'boolean'; - if (preg_match('/^[is|has]/', $field['name'])) { - $type = array_reverse($type); - } - } - $type[] = 'decimal'; - break; - case 'tinytext': - case 'mediumtext': - case 'longtext': - case 'text': - case 'char': - case 'varchar': - case "varchar2": - $type[] = 'text'; - if ($length == '1') { - $type[] = 'boolean'; - if (preg_match('/[is|has]/', $field['name'])) { - $type = array_reverse($type); - } - } elseif (strstr($db_type, 'text')) - $type[] = 'clob'; - break; - case 'enum': - preg_match_all('/\'.+\'/U',$row[$type_column], $matches); - $length = 0; - if (is_array($matches)) { - foreach ($matches[0] as $value) { - $length = max($length, strlen($value)-2); - } - } - case 'set': - $type[] = 'text'; - $type[] = 'integer'; - break; - case 'date': - $type[] = 'date'; - $length = null; - break; - case 'datetime': - case 'timestamp': - $type[] = 'timestamp'; - $length = null; - break; - case 'time': - $type[] = 'time'; - $length = null; - break; - case 'float': - case 'double': - case 'real': - $type[] = 'float'; - break; - case 'decimal': - case 'numeric': - $type[] = 'decimal'; - break; - case 'tinyblob': - case 'mediumblob': - case 'longblob': - case 'blob': - $type[] = 'text'; - $length = null; - break; - case 'year': - $type[] = 'integer'; - $type[] = 'date'; - $length = null; - break; - default: - return $db->raiseError(MDB2_ERROR, null, null, - 'getTableFieldDefinition: unknown database attribute type'); - } - - return array($type, $length); - } -} - -?> -- cgit v1.2.3