⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 common.php

📁 开源邮件管理系统
💻 PHP
📖 第 1 页 / 共 5 页
字号:
     * 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 = !empty($field['length']) ? $field['length'] : $db->options['default_text_field_length'];            $fixed = !empty($field['fixed']) ? $field['fixed'] : false;            return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR('.$db->options['default_text_field_length'].')')                : ($length ? 'VARCHAR('.$length.')' : 'TEXT');        case 'clob':            return 'TEXT';        case 'blob':            return 'TEXT';        case 'integer':            return 'INT';        case 'boolean':            return 'INT';        case 'date':            return 'CHAR ('.strlen('YYYY-MM-DD').')';        case 'time':            return 'CHAR ('.strlen('HH:MM:SS').')';        case 'timestamp':            return 'CHAR ('.strlen('YYYY-MM-DD HH:MM:SS').')';        case 'float':            return 'TEXT';        case 'decimal':            return 'TEXT';        }        return '';    }    // }}}    // {{{ _getDeclaration()    /**     * Obtain DBMS specific SQL code portion needed to declare a generic 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.     *      charset     *          Text value with the default CHARACTER SET for this field.     *      collation     *          Text value with the default COLLATION for this field.     * @return string  DBMS specific SQL code portion that should be used to     *      declare the specified field, or a MDB2_Error on failure     * @access protected     */    function _getDeclaration($name, $field)    {        $db =& $this->getDBInstance();        if (PEAR::isError($db)) {            return $db;        }        $name = $db->quoteIdentifier($name, true);        $declaration_options = $db->datatype->_getDeclarationOptions($field);        if (PEAR::isError($declaration_options)) {            return $declaration_options;        }        return $name.' '.$this->getTypeDeclaration($field).$declaration_options;    }    // }}}    // {{{ _getDeclarationOptions()    /**     * Obtain DBMS specific SQL code portion needed to declare a generic type     * field to be used in statement like CREATE TABLE, without the field name     * and type values (ie. just the character set, default value, if the     * field is permitted to be NULL or not, and the collation options).     *     * @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     *          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.     *      charset     *          Text value with the default CHARACTER SET for this field.     *      collation     *          Text value with the default COLLATION for this field.     * @return string  DBMS specific SQL code portion that should be used to     *      declare the specified field's options.     * @access protected     */    function _getDeclarationOptions($field)    {        $charset = empty($field['charset']) ? '' :            ' '.$this->_getCharsetFieldDeclaration($field['charset']);        $notnull = empty($field['notnull']) ? '' : ' NOT NULL';        $default = '';        if (array_key_exists('default', $field)) {            if ($field['default'] === '') {                $db =& $this->getDBInstance();                if (PEAR::isError($db)) {                    return $db;                }                $valid_default_values = $this->getValidTypes();                $field['default'] = $valid_default_values[$field['type']];                if ($field['default'] === ''&& ($db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL)) {                    $field['default'] = ' ';                }            }            if (!is_null($field['default'])) {                $default = ' DEFAULT ' . $this->quote($field['default'], $field['type']);            }        }        $collation = empty($field['collation']) ? '' :            ' '.$this->_getCollationFieldDeclaration($field['collation']);        return $charset.$default.$notnull.$collation;    }    // }}}    // {{{ _getCharsetFieldDeclaration()        /**     * Obtain DBMS specific SQL code portion needed to set the CHARACTER SET     * of a field declaration to be used in statements like CREATE TABLE.     *     * @param string $charset   name of the charset     * @return string  DBMS specific SQL code portion needed to set the CHARACTER SET     *                 of a field declaration.     */    function _getCharsetFieldDeclaration($charset)    {        return '';    }    // }}}    // {{{ _getCollationFieldDeclaration()    /**     * Obtain DBMS specific SQL code portion needed to set the COLLATION     * of a field declaration to be used in statements like CREATE TABLE.     *     * @param string $collation   name of the collation     * @return string  DBMS specific SQL code portion needed to set the COLLATION     *                 of a field declaration.     */    function _getCollationFieldDeclaration($collation)    {        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 (!empty($field['unsigned'])) {            $db =& $this->getDBInstance();            if (PEAR::isError($db)) {                return $db;            }            $db->warnings[] = "unsigned integer field \"$name\" is being declared as signed integer";        }        return $this->_getDeclaration($name, $field);    }    // }}}    // {{{ _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)    {        return $this->_getDeclaration($name, $field);    }    // }}}    // {{{ _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)    {        $db =& $this->getDBInstance();        if (PEAR::isError($db)) {            return $db;        }        $notnull = empty($field['notnull']) ? '' : ' NOT NULL';        $name = $db->quoteIdentifier($name, true);        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)    {        $db =& $this->getDBInstance();        if (PEAR::isError($db)) {            return $db;        }        $notnull = empty($field['notnull']) ? '' : ' NOT NULL';        $name = $db->quoteIdentifier($name, true);        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)    {        return $this->_getDeclaration($name, $field);    }    // }}}    // {{{ _getDateDeclaration()    /**

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -