forked from GNUsocial/gnu-social
		
	make table def method of schema code work
This commit is contained in:
		
				
					committed by
					
						
						Evan Prodromou
					
				
			
			
				
	
			
			
			
						parent
						
							4f833531dd
						
					
				
				
					commit
					f31653ca5b
				
			@@ -47,15 +47,65 @@ if (!defined('LACONICA')) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class Schema
 | 
					class Schema
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    protected $db = null;
 | 
					    static $_single = null;
 | 
				
			||||||
 | 
					    protected $conn = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected function __construct()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // XXX: there should be an easier way to do this.
 | 
				
			||||||
 | 
					        $user = new User();
 | 
				
			||||||
 | 
					        $this->conn = $user->getDatabaseConnection();
 | 
				
			||||||
 | 
					        $user->free();
 | 
				
			||||||
 | 
					        unset($user);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static function get()
 | 
					    static function get()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        if (empty(self::$_single)) {
 | 
				
			||||||
 | 
					            self::$_single = new Schema();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return self::$_single;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function getTableDef($name)
 | 
					    public function getTableDef($name)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        $res =& $this->conn->query('DESCRIBE ' . $name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (PEAR::isError($res)) {
 | 
				
			||||||
 | 
					            throw new Exception($res->getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $td = new TableDef();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $td->name    = $name;
 | 
				
			||||||
 | 
					        $td->columns = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $row = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        while ($res->fetchInto($row, DB_FETCHMODE_ASSOC)) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $cd = new ColumnDef();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $cd->name = $row['Field'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $packed = $row['Type'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (preg_match('/^(\w+)\((\d+)\)$/', $packed, $match)) {
 | 
				
			||||||
 | 
					                $cd->type = $match[1];
 | 
				
			||||||
 | 
					                $cd->size = $match[2];
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                $cd->type = $packed;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $cd->nullable = ($row['Null'] == 'YES') ? true : false;
 | 
				
			||||||
 | 
					            $cd->key      = $row['Key'];
 | 
				
			||||||
 | 
					            $cd->default  = $row['Default'];
 | 
				
			||||||
 | 
					            $cd->extra    = $row['Extra'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $td->columns[] = $cd;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $td;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function getColumnDef($table, $column)
 | 
					    public function getColumnDef($table, $column)
 | 
				
			||||||
@@ -114,6 +164,10 @@ class ColumnDef
 | 
				
			|||||||
    public $name;
 | 
					    public $name;
 | 
				
			||||||
    public $type;
 | 
					    public $type;
 | 
				
			||||||
    public $size;
 | 
					    public $size;
 | 
				
			||||||
 | 
					    public $nullable;
 | 
				
			||||||
 | 
					    public $key;
 | 
				
			||||||
 | 
					    public $default;
 | 
				
			||||||
 | 
					    public $extra;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class IndexDef
 | 
					class IndexDef
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user