Вход Регистрация
Файл: Form Generator/Project Files/system/database/DB_forge.php
Строк: 212
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * Code Igniter
 *
 * An open source application development framework for PHP 5.1.6 or newer
 *
 * @package        CodeIgniter
 * @author        ExpressionEngine Dev Team
 * @copyright    Copyright (c) 2008 - 2011, EllisLab, Inc.
 * @license        http://codeigniter.com/user_guide/license.html
 * @link        http://codeigniter.com
 * @since        Version 1.0
 * @filesource
 */

// ------------------------------------------------------------------------

/**
 * Database Utility Class
 *
 * @category    Database
 * @author        ExpressionEngine Dev Team
 * @link        http://codeigniter.com/user_guide/database/
 */
class CI_DB_forge {

    var 
$fields            = array();
    var 
$keys            = array();
    var 
$primary_keys    = array();
    var 
$db_char_set    =    '';

    
/**
     * Constructor
     *
     * Grabs the CI super object instance so we can access it.
     *
     */
    
function __construct()
    {
        
// Assign the main database object to $this->db
        
$CI =& get_instance();
        
$this->db =& $CI->db;
        
log_message('debug'"Database Forge Class Initialized");
    }

    
// --------------------------------------------------------------------

    /**
     * Create database
     *
     * @access    public
     * @param    string    the database name
     * @return    bool
     */
    
function create_database($db_name)
    {
        
$sql $this->_create_database($db_name);

        if (
is_bool($sql))
        {
            return 
$sql;
        }

        return 
$this->db->query($sql);
    }

    
// --------------------------------------------------------------------

    /**
     * Drop database
     *
     * @access    public
     * @param    string    the database name
     * @return    bool
     */
    
function drop_database($db_name)
    {
        
$sql $this->_drop_database($db_name);

        if (
is_bool($sql))
        {
            return 
$sql;
        }

        return 
$this->db->query($sql);
    }

    
// --------------------------------------------------------------------

    /**
     * Add Key
     *
     * @access    public
     * @param    string    key
     * @param    string    type
     * @return    void
     */
    
function add_key($key ''$primary FALSE)
    {
        if (
is_array($key))
        {
            foreach (
$key as $one)
            {
                
$this->add_key($one$primary);
            }

            return;
        }

        if (
$key == '')
        {
            
show_error('Key information is required for that operation.');
        }

        if (
$primary === TRUE)
        {
            
$this->primary_keys[] = $key;
        }
        else
        {
            
$this->keys[] = $key;
        }
    }

    
// --------------------------------------------------------------------

    /**
     * Add Field
     *
     * @access    public
     * @param    string    collation
     * @return    void
     */
    
function add_field($field '')
    {
        if (
$field == '')
        {
            
show_error('Field information is required.');
        }

        if (
is_string($field))
        {
            if (
$field == 'id')
            {
                
$this->add_field(array(
                                        
'id' => array(
                                                    
'type' => 'INT',
                                                    
'constraint' => 9,
                                                    
'auto_increment' => TRUE
                                                    
)
                                ));
                
$this->add_key('id'TRUE);
            }
            else
            {
                if (
strpos($field' ') === FALSE)
                {
                    
show_error('Field information is required for that operation.');
                }

                
$this->fields[] = $field;
            }
        }

        if (
is_array($field))
        {
            
$this->fields array_merge($this->fields$field);
        }

    }

    
// --------------------------------------------------------------------

    /**
     * Create Table
     *
     * @access    public
     * @param    string    the table name
     * @return    bool
     */
    
function create_table($table ''$if_not_exists FALSE)
    {
        if (
$table == '')
        {
            
show_error('A table name is required for that operation.');
        }

        if (
count($this->fields) == 0)
        {
            
show_error('Field information is required.');
        }

        
$sql $this->_create_table($this->db->dbprefix.$table$this->fields$this->primary_keys$this->keys$if_not_exists);

        
$this->_reset();
        return 
$this->db->query($sql);
    }

    
// --------------------------------------------------------------------

    /**
     * Drop Table
     *
     * @access    public
     * @param    string    the table name
     * @return    bool
     */
    
function drop_table($table_name)
    {
        
$sql $this->_drop_table($this->db->dbprefix.$table_name);

        if (
is_bool($sql))
        {
            return 
$sql;
        }

        return 
$this->db->query($sql);
    }

    
// --------------------------------------------------------------------

    /**
     * Rename Table
     *
     * @access    public
     * @param    string    the old table name
     * @param    string    the new table name
     * @return    bool
     */
    
function rename_table($table_name$new_table_name)
    {
        if (
$table_name == '' OR $new_table_name == '')
        {
            
show_error('A table name is required for that operation.');
        }

        
$sql $this->_rename_table($this->db->dbprefix.$table_name$this->db->dbprefix.$new_table_name);
        return 
$this->db->query($sql);
    }

    
// --------------------------------------------------------------------

    /**
     * Column Add
     *
     * @access    public
     * @param    string    the table name
     * @param    string    the column name
     * @param    string    the column definition
     * @return    bool
     */
    
function add_column($table ''$field = array(), $after_field '')
    {
        if (
$table == '')
        {
            
show_error('A table name is required for that operation.');
        }

        
// add field info into field array, but we can only do one at a time
        // so we cycle through

        
foreach ($field as $k => $v)
        {
            
$this->add_field(array($k => $field[$k]));

            if (
count($this->fields) == 0)
            {
                
show_error('Field information is required.');
            }

            
$sql $this->_alter_table('ADD'$this->db->dbprefix.$table$this->fields$after_field);

            
$this->_reset();

            if (
$this->db->query($sql) === FALSE)
            {
                return 
FALSE;
            }
        }

        return 
TRUE;

    }

    
// --------------------------------------------------------------------

    /**
     * Column Drop
     *
     * @access    public
     * @param    string    the table name
     * @param    string    the column name
     * @return    bool
     */
    
function drop_column($table ''$column_name '')
    {

        if (
$table == '')
        {
            
show_error('A table name is required for that operation.');
        }

        if (
$column_name == '')
        {
            
show_error('A column name is required for that operation.');
        }

        
$sql $this->_alter_table('DROP'$this->db->dbprefix.$table$column_name);

        return 
$this->db->query($sql);
    }

    
// --------------------------------------------------------------------

    /**
     * Column Modify
     *
     * @access    public
     * @param    string    the table name
     * @param    string    the column name
     * @param    string    the column definition
     * @return    bool
     */
    
function modify_column($table ''$field = array())
    {
        if (
$table == '')
        {
            
show_error('A table name is required for that operation.');
        }

        
// add field info into field array, but we can only do one at a time
        // so we cycle through

        
foreach ($field as $k => $v)
        {
            
// If no name provided, use the current name
            
if ( ! isset($field[$k]['name']))
            {
                
$field[$k]['name'] = $k;
            }

            
$this->add_field(array($k => $field[$k]));

            if (
count($this->fields) == 0)
            {
                
show_error('Field information is required.');
            }

            
$sql $this->_alter_table('CHANGE'$this->db->dbprefix.$table$this->fields);

            
$this->_reset();

            if (
$this->db->query($sql) === FALSE)
            {
                return 
FALSE;
            }
        }

        return 
TRUE;
    }

    
// --------------------------------------------------------------------

    /**
     * Reset
     *
     * Resets table creation vars
     *
     * @access    private
     * @return    void
     */
    
function _reset()
    {
        
$this->fields        = array();
        
$this->keys            = array();
        
$this->primary_keys    = array();
    }

}

/* End of file DB_forge.php */
/* Location: ./system/database/DB_forge.php */
Онлайн: 1
Реклама