Public Member Functions | Protected Member Functions | Protected Attributes

DbEngine Class Reference

Inheritance diagram for DbEngine:
MysqlEngine PGsqlEngine

List of all members.

Public Member Functions

 tryConnect ()
 setAdminPassCode ($u, $p)
 checkAdmin ()
 canAdministrate ()
 needVersion ()
 hasTable ($tablename)
 beginTransaction ()
 commitTransaction ()
 rollbackTransaction ()
 select ($table, $cols, $where="", $orderby="")
 insert ($table, array $values)
 update ($table, array $values, $where)
 deleteRows ($table, $where)
 sqlSelect ($table, $cols, $where, $orderby)
 sqlBeginTransaction ()
 sqlCommitTransaction ()
 sqlRollbackTransaction ()
 escapeInt ($i)
 escapeIntList (array $il)
 escapeStringList (array $il)
 escapeListColumn (array $il, $table, $col)
 escapeString ($s)
 escapeBlob ($s)
 escapeBool ($s)
 escapeColumn ($table, $col, $val)
 getConfig ($key)
 setConfig ($key, $val)
 canUseDb ()
 createDb ()
 showCreateDb ()
 lastError ()
 isNull ($val)
 transactionIsUpdating ()
 setTransactionUpdating ($tm)
 dumpBackup ()
 syncSequences ()
 syncSequence ($table)
 restoreData ($file, $overwrite)

Protected Member Functions

 lockDB ($writelock)
 unlockDB ()
 createTable ($tablename, $table)
 tableName ($tname)
 dataType ($type)
 columnFlag ($flag, $col, $table)
 sqlCreateTable ($tablename, $table)
 createTableExtras ($tablename, $table)
 sqlCreateTablePrimaryKey (array $cols)
 sqlInsert ($table, array $values)
 sqlDelete ($table, $where)
 sqlUpdate ($table, array $values, $where)

Protected Attributes

 $transmode = false

Detailed Description

Abstract base class for database engines


Member Function Documentation

DbEngine::beginTransaction (  )  [abstract]

begins a transaction; must be implemented by driver; use sqlBeginTransaction to create the SQL statement!

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::canAdministrate (  ) 

returns whether a passcode is known and admin.php may be used

DbEngine::canUseDb (  ) 

tries to find out whether the connected DB version is usable

DbEngine::checkAdmin (  ) 

check admin credentials

DbEngine::columnFlag ( flag,
col,
table 
) [protected]

returns the correct name/coding of a flag: primarykey, notnull, unique (implies notnull), foreignkey:$table:$col, defaultint:$val, defaultstr:$val, index

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::commitTransaction (  )  [abstract]

ends a transaction successfully; must be implemented by driver; returns true on success; use sqlCommitTransaction to create the SQL statement!

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::createDb (  ) 

creates the database, used by admin.php only!!

DbEngine::createTable ( tablename,
table 
) [abstract, protected]

creates a table; the argument is an array of the form "col-name" => array("col-type", "flags"...); use sqlCreateTable() etc. to create the actual statement

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::createTableExtras ( tablename,
table 
) [protected]

This function can be used to amend the column definitions of a table; if overwritten it must return a string; overwrite this to implement DB specific syntax

Reimplemented in MysqlEngine.

DbEngine::dataType ( type  )  [protected]

returns the correct type name for the required abstract data type; types that must be understood are: int32 (INTEGER), int64 (LONG INTEGER), seq32 (auto-incrementing int), seq64, bool (boolean), string:$length (text up to 255 chars, length is optional, default is 255; VARCHAR($length)), text (unlimited text)

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::deleteRows ( table,
where 
) [abstract]

delete database values; returns the amount of rows deleted or false if an error occurred; use sqlDelete to create the SQL statement!

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::dumpBackup (  ) 

dump a backup (returned as string)

DbEngine::escapeBlob ( s  ) 

escapes blobs; the default uses addslashes and encloses the value in ''; it is recommended to overwrite this with the proper escaping procedure for the target DB

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::escapeBool ( s  ) 

escapes a boolean value; the default translates 0, '0', 'f', 'false', 'n', 'no', false to FALSE and numerics !=0, 't', 'true', 'y', 'yes', true to TRUE; any other value (incl. the PHP constant null) is translated to NULL

Reimplemented in MysqlEngine.

DbEngine::escapeColumn ( table,
col,
val 
)

generic escape routine: queries the schema for the correct escape mechanism and then returns the appropriately escaped value

DbEngine::escapeInt ( i  ) 

escapes integers; the default implementation just makes sure it is an int (false and null are translated to NULL)

DbEngine::escapeIntList ( array $  il  ) 

escapes a list of integers; uses escapeInt for each element; automatically adds parentheses

DbEngine::escapeListColumn ( array $  il,
table,
col 
)

escapes a list of values for a specific column; uses escapeInt for each element; automatically adds parentheses

DbEngine::escapeString ( s  ) 

escapes strings; the default uses addslashes and encloses the value in ''; it is recommended to overwrite this with the proper escaping procedure for the target DB (false and null are translated to NULL)

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::escapeStringList ( array $  il  ) 

escapes a list of strings; uses escapeInt for each element; automatically adds parentheses

DbEngine::getConfig ( key  ) 

returns a configuration setting

DbEngine::hasTable ( tablename  )  [abstract]

returns whether the table exists; must be implemented by driver

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::insert ( table,
array $  values 
) [abstract]

insert values into a table; returns false on failure, the new primary key if a sequence was set, true otherwise; use sqlInsert to create the SQL statement!

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::isNull ( val  ) 

returns whether the result value is NULL; the default interprets only the special value null as NULL

DbEngine::lastError (  )  [abstract]

returns the error string of the last operation

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::lockDB ( writelock  )  [protected]

locks the database - only used by the backup functions; if necessary should also start a transaction; default just starts a transaction

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::needVersion (  ) 

returns the version of the DB layout that is required by this version of Magic Smoke

DbEngine::restoreData ( file,
overwrite 
)

called from admin.php: restore a backup

DbEngine::rollbackTransaction (  )  [abstract]

ends a transaction with a rollback; must be implemented by driver; returns true on success; use sqlRollbackTransaction to create the SQL statement!

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::select ( table,
cols,
where = "",
orderby = "" 
) [abstract]

gets some data from the database; $table is the name of the table, $cols is the list of columns to return or "*" for all, $where is the where clause of the SQL-statement, $orderby may contain additional ORDER BY or GROUP BY clauses; returns array of rows, which are in *_fetch_array format; returns false on error; use sqlSelect to create the SQL statement!; make sure that NULL values are returned as PHP value null (most DB drivers already do this)

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::setAdminPassCode ( u,
p 
)

set the admin passcode; used by the config.php file if admin access is allowed

DbEngine::setConfig ( key,
val 
)

sets a config setting

DbEngine::setTransactionUpdating ( tm  ) 

set the transaction mode: true if it is an updating transaction

DbEngine::showCreateDb (  ) 

shows how the database would be created, used by admin.php only!!

DbEngine::sqlBeginTransaction (  ) 

returns the SQL92 statement for beginning a transaction; overwrite this to implement DB specific syntax

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::sqlCommitTransaction (  ) 

returns the SQL92 statement for committing a transaction; overwrite this to implement DB specific syntax

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::sqlCreateTable ( tablename,
table 
) [protected]

creates a SQL92 statement for creating a table; overwrite this to implement DB specific syntax

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::sqlCreateTablePrimaryKey ( array $  cols  )  [protected]

creates primary key statement for sqlCreateTable; overwrite this to implement DB specific syntax

DbEngine::sqlDelete ( table,
where 
) [protected]

creates a SQL92 statement for deletes; overwrite this to implement DB specific syntax

DbEngine::sqlInsert ( table,
array $  values 
) [protected]

creates a SQL92 statement for inserts; overwrite this to implement DB specific syntax

DbEngine::sqlRollbackTransaction (  ) 

returns the SQL92 statement for rolling a transaction back; overwrite this to implement DB specific syntax

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::sqlSelect ( table,
cols,
where,
orderby 
)

creates a SQL92 statement for selects; overwrite this to implement DB specific syntax; the concrete DB implementation should append "for update" to the select statement if $this->transmode is true and the DB supports it

DbEngine::sqlUpdate ( table,
array $  values,
where 
) [protected]

creates a SQL92 statement for updates; overwrite this to implement DB specific syntax

DbEngine::syncSequence ( table  ) 

synchronize the sequence of one database table; overwrite to actually do something

Reimplemented in PGsqlEngine.

DbEngine::syncSequences (  ) 

synchronize all sequences with current data

DbEngine::tableName ( tname  )  [protected]

transform an internally used table name to the actual table name in the DB; the default implementation returns exactly what it gets

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::transactionIsUpdating (  ) 

returns whether the DB driver currently believes to be in RW transaction mode

DbEngine::tryConnect (  )  [abstract]

connect to the database, must be overwritten by DB driver

Reimplemented in MysqlEngine, and PGsqlEngine.

DbEngine::unlockDB (  )  [protected]

unlocks the database - only used by the backup functions; if necessary should also commit a transaction; default just commits

Reimplemented in MysqlEngine.

DbEngine::update ( table,
array $  values,
where 
) [abstract]

update database values; returns how many rows have been changed or false for failure; use sqlUpdate to create the SQL statement!

Reimplemented in MysqlEngine, and PGsqlEngine.


Member Data Documentation

DbEngine::$transmode = false [protected]

transaction RO/RW mode: false=assume readonly, true=assume inserts/updates


The documentation for this class was generated from the following file: