Phpfox_Database_Export

Description

Exports database structure into SQL code based on the driver. Mainly used when exporting a new version that will be released to our clients to keep a schema of a database structure for each SQL driver.

  • author: Raymond Benc
  • version: $Id: export.class.php 1687 2010-07-22 03:13:27Z Raymond_Benc $
  • copyright: [PHPFOX_COPYRIGHT]

Located in /include/library/phpfox/database/export.class.php (line 18)


	
			
Variable Summary
 array $_aFields
 array $_aMap
Method Summary
 Phpfox_Database_Export __construct ()
 array getFields ()
 string process (string $dbms, array $aSchema)
 string processAlter (string $sDb, array $aSql, [bool $bIsPatch = false])
Variables
array $_aFields = array() (line 27)

Array of fields in a table which we later use to identify what has been changed from a previous version.

  • access: private
array $_aMap = array(
'mysql' => array(
'INT:' => 'int(%d)',
'BINT' => 'bigint(20)',
'UINT' => 'mediumint(8) UNSIGNED',
'UINT:' => 'int(%d) UNSIGNED',
'TINT:' => 'tinyint(%d)',
'USINT' => 'smallint(4) UNSIGNED',
'BOOL' => 'tinyint(1) UNSIGNED',
'VCHAR' => 'varchar(255)',
'VCHAR:' => 'varchar(%d)',
'CHAR:' => 'char(%d)',
'XSTEXT' => 'text',
'XSTEXT_UNI'=> 'varchar(100)',
'STEXT' => 'text',
'STEXT_UNI' => 'varchar(255)',
'TEXT' => 'text',
'TEXT_UNI' => 'text',
'MTEXT' => 'mediumtext',
'MTEXT_UNI' => 'mediumtext',
'TIMESTAMP' => 'int(11) UNSIGNED',
'DECIMAL' => 'decimal(5,2)',
'DECIMAL:' => 'decimal(%d,2)',
'PDECIMAL' => 'decimal(6,3)',
'PDECIMAL:' => 'decimal(%d,3)',
'VCHAR_UNI' => 'varchar(255)',
'VCHAR_UNI:'=> 'varchar(%d)',
'VCHAR_CI' => 'varchar(255)',
'VARBINARY' => 'varbinary(255)',
),'firebird'=>array('INT:'=>'INTEGER','BINT'=>'DOUBLE PRECISION','UINT'=>'INTEGER','UINT:'=>'INTEGER','TINT:'=>'INTEGER','USINT'=>'INTEGER','BOOL'=>'INTEGER','VCHAR'=>'VARCHAR(255) CHARACTER SET NONE','VCHAR:'=>'VARCHAR(%d) CHARACTER SET NONE','CHAR:'=>'CHAR(%d) CHARACTER SET NONE','XSTEXT'=>'BLOB SUB_TYPE TEXT CHARACTER SET NONE','STEXT'=>'BLOB SUB_TYPE TEXT CHARACTER SET NONE','TEXT'=>'BLOB SUB_TYPE TEXT CHARACTER SET NONE','MTEXT'=>'BLOB SUB_TYPE TEXT CHARACTER SET NONE','XSTEXT_UNI'=>'VARCHAR(100) CHARACTER SET UTF8','STEXT_UNI'=>'VARCHAR(255) CHARACTER SET UTF8','TEXT_UNI'=>'BLOB SUB_TYPE TEXT CHARACTER SET UTF8','MTEXT_UNI'=>'BLOB SUB_TYPE TEXT CHARACTER SET UTF8','TIMESTAMP'=>'INTEGER','DECIMAL'=>'DOUBLE PRECISION','DECIMAL:'=>'DOUBLE PRECISION','PDECIMAL'=>'DOUBLE PRECISION','PDECIMAL:'=>'DOUBLE PRECISION','VCHAR_UNI'=>'VARCHAR(255) CHARACTER SET UTF8','VCHAR_UNI:'=>'VARCHAR(%d) CHARACTER SET UTF8','VCHAR_CI'=>'VARCHAR(255) CHARACTER SET UTF8','VARBINARY'=>'CHAR(255) CHARACTER SET NONE',),'mssql'=>array('INT:'=>'[int]','BINT'=>'[float]','UINT'=>'[int]','UINT:'=>'[int]','TINT:'=>'[int]','USINT'=>'[int]','BOOL'=>'[int]','VCHAR'=>'[varchar] (255)','VCHAR:'=>'[varchar] (%d)','CHAR:'=>'[char] (%d)','XSTEXT'=>'[varchar] (1000)','STEXT'=>'[varchar] (3000)','TEXT'=>'[varchar] (8000)','MTEXT'=>'[text]','XSTEXT_UNI'=>'[varchar] (100)','STEXT_UNI'=>'[varchar] (255)','TEXT_UNI'=>'[varchar] (4000)','MTEXT_UNI'=>'[text]','TIMESTAMP'=>'[int]','DECIMAL'=>'[float]','DECIMAL:'=>'[float]','PDECIMAL'=>'[float]','PDECIMAL:'=>'[float]','VCHAR_UNI'=>'[varchar] (255)','VCHAR_UNI:'=>'[varchar] (%d)','VCHAR_CI'=>'[varchar] (255)','VARBINARY'=>'[varchar] (255)',),'db2'=>array('INT:'=>'integer','BINT'=>'float','UINT'=>'integer','UINT:'=>'integer','TINT:'=>'smallint','USINT'=>'smallint','BOOL'=>'smallint','VCHAR'=>'varchar(255)','VCHAR:'=>'varchar(%d)','CHAR:'=>'char(%d)','XSTEXT'=>'clob(65K)','STEXT'=>'varchar(3000)','TEXT'=>'clob(65K)','MTEXT'=>'clob(16M)','XSTEXT_UNI'=>'varchar(100)','STEXT_UNI'=>'varchar(255)','TEXT_UNI'=>'clob(65K)','MTEXT_UNI'=>'clob(16M)','TIMESTAMP'=>'integer','DECIMAL'=>'float','VCHAR_UNI'=>'varchar(255)','VCHAR_UNI:'=>'varchar(%d)','VCHAR_CI'=>'varchar(255)','VARBINARY'=>'varchar(255)',),'oracle'=>array('INT:'=>'number(%d)','BINT'=>'number(20)','UINT'=>'number(8)','UINT:'=>'number(%d)','TINT:'=>'number(%d)','USINT'=>'number(4)','BOOL'=>'number(1)','VCHAR'=>'varchar2(255 char)','VCHAR:'=>'varchar2(%d char)','CHAR:'=>'char(%d char)','XSTEXT'=>'varchar2(1000 char)','STEXT'=>'varchar2(3000 char)','TEXT'=>'clob','MTEXT'=>'clob','XSTEXT_UNI'=>'varchar2(100 char)','STEXT_UNI'=>'varchar2(255 char)','TEXT_UNI'=>'clob','MTEXT_UNI'=>'clob','TIMESTAMP'=>'number(11)','DECIMAL'=>'number(5, 2)','DECIMAL:'=>'number(%d, 2)','PDECIMAL'=>'number(6, 3)','PDECIMAL:'=>'number(%d, 3)','VCHAR_UNI'=>'varchar2(255 char)','VCHAR_UNI:'=>'varchar2(%d char)','VCHAR_CI'=>'varchar2(255 char)','VARBINARY'=>'raw(255)',),'sqlite'=>array('INT:'=>'int(%d)','BINT'=>'bigint(20)','UINT'=>'INTEGER UNSIGNED','UINT:'=>'INTEGER UNSIGNED','TINT:'=>'tinyint(%d)','USINT'=>'INTEGER UNSIGNED','BOOL'=>'INTEGER UNSIGNED','VCHAR'=>'varchar(255)','VCHAR:'=>'varchar(%d)','CHAR:'=>'char(%d)','XSTEXT'=>'text(65535)','STEXT'=>'text(65535)','TEXT'=>'text(65535)','MTEXT'=>'mediumtext(16777215)','XSTEXT_UNI'=>'text(65535)','STEXT_UNI'=>'text(65535)','TEXT_UNI'=>'text(65535)','MTEXT_UNI'=>'mediumtext(16777215)','TIMESTAMP'=>'INTEGER UNSIGNED','DECIMAL'=>'decimal(5,2)','DECIMAL:'=>'decimal(%d,2)','PDECIMAL'=>'decimal(6,3)','PDECIMAL:'=>'decimal(%d,3)','VCHAR_UNI'=>'varchar(255)','VCHAR_UNI:'=>'varchar(%d)','VCHAR_CI'=>'varchar(255)','VARBINARY'=>'blob',),'postgres'=>array('INT:'=>'INT4','BINT'=>'INT8','UINT'=>'INT4','UINT:'=>'INT4','USINT'=>'INT2','BOOL'=>'boolean','TINT:'=>'INT2','VCHAR'=>'varchar(255)','VCHAR:'=>'varchar(%d)','CHAR:'=>'char(%d)','XSTEXT'=>'varchar(1000)','STEXT'=>'varchar(3000)','TEXT'=>'varchar(8000)','MTEXT'=>'TEXT','XSTEXT_UNI'=>'varchar(100)','STEXT_UNI'=>'varchar(255)','TEXT_UNI'=>'varchar(4000)','MTEXT_UNI'=>'TEXT','TIMESTAMP'=>'INT4',// unsigned
'DECIMAL'=>'decimal(5,2)','DECIMAL:'=>'decimal(%d,2)','PDECIMAL'=>'decimal(6,3)','PDECIMAL:'=>'decimal(%d,3)','VCHAR_UNI'=>'varchar(255)','VCHAR_UNI:'=>'varchar(%d)','VCHAR_CI'=>'varchar(255)','VARBINARY'=>'bytea',),)
(line 34)

Mapping of all the tested SQL drivers and the fields it supports.

  • access: private
Methods
Constructor __construct (line 247)

Class constructor

  • access: public
Phpfox_Database_Export __construct ()
getFields (line 994)

Returns all the fields for all the tables in our database so we can compare with past versions.

  • access: public
array getFields ()
process (line 259)

Process an array of SQL logic and transform it into SQL code that can be executed.

  • return: Converted SQL code that can be executed with a query()
  • access: public
string process (string $dbms, array $aSchema)
  • string $dbms: Database driver to use
  • array $aSchema: Array of SQL login to transform
processAlter (line 823)

During each upgrade of the product we run this method to check if any new fields need to be update or updated.

It can also add or alter any keys.

  • return: Returns SQL code that can be executed with a query()
  • access: public
string processAlter (string $sDb, array $aSql, [bool $bIsPatch = false])
  • string $sDb: Database driver we are using
  • array $aSql: Array of SQL logic we need to work with and convert into SQL code
  • bool $bIsPatch: Check if this is just a patch update or a full out upgrade.

Documentation generated on Tue, 28 Sep 2010 10:36:39 +0200 by phpDocumentor 1.4.0a2