ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
MDB2_Driver_Reverse_Common Class Reference
+ Inheritance diagram for MDB2_Driver_Reverse_Common:
+ Collaboration diagram for MDB2_Driver_Reverse_Common:

Public Member Functions

 getTableFieldDefinition ($table, $field)
 Get the structure of a field into an array.
 getTableIndexDefinition ($table, $index)
 Get the structure of an index into an array.
 getTableConstraintDefinition ($table, $index)
 Get the structure of an constraints into an array.
 getSequenceDefinition ($sequence)
 Get the structure of a sequence into an array.
 getTriggerDefinition ($trigger)
 Get the structure of a trigger into an array.
 tableInfo ($result, $mode=null)
 Returns information about a table or a result set.
- Public Member Functions inherited from MDB2_Module_Common
 __construct ($db_index)
 Constructor.
 MDB2_Module_Common ($db_index)
 PHP 4 Constructor.
getDBInstance ()
 Get the instance of MDB2 associated with the module instance.

Additional Inherited Members

- Data Fields inherited from MDB2_Module_Common
 $db_index

Detailed Description

Definition at line 70 of file Common.php.

Member Function Documentation

MDB2_Driver_Reverse_Common::getSequenceDefinition (   $sequence)

Get the structure of a sequence into an array.

Parameters
string$sequencename of sequence that should be used in method
Returns
mixed data array on success, a MDB2 error on failure The returned array has this structure:
         array (
             [start] => n
         );
         
public

Reimplemented in MDB2_Driver_Reverse_oci8.

Definition at line 182 of file Common.php.

References MDB2_Module_Common\getDBInstance(), and PEAR\isError().

{
$db =& $this->getDBInstance();
if (PEAR::isError($db)) {
return $db;
}
$start = $db->currId($sequence);
if (PEAR::isError($start)) {
return $start;
}
if ($db->supports('current_id')) {
$start++;
} else {
$db->warnings[] = 'database does not support getting current
sequence value, the sequence value was incremented';
}
$definition = array();
if ($start != 1) {
$definition = array('start' => $start);
}
return $definition;
}

+ Here is the call graph for this function:

MDB2_Driver_Reverse_Common::getTableConstraintDefinition (   $table,
  $index 
)

Get the structure of an constraints into an array.

Parameters
string$tablename of table that should be used in method
string$indexname of index that should be used in method
Returns
mixed data array on success, a MDB2 error on failure The returned array has this structure:
         array (
             [primary] => 1
             [fields] => array (
                 [field1name] => array() // one entry per each field covered
                 [field2name] => array() // by the index
                 [field3name] => array(
                     [sorting] => ascending
                 )
             )
         );
         
public

Reimplemented in MDB2_Driver_Reverse_mysqli, MDB2_Driver_Reverse_oci8, MDB2_Driver_Reverse_pgsql, and MDB2_Driver_Reverse_mysql.

Definition at line 155 of file Common.php.

References MDB2_Module_Common\getDBInstance(), PEAR\isError(), and MDB2_ERROR_UNSUPPORTED.

Referenced by tableInfo().

{
$db =& $this->getDBInstance();
if (PEAR::isError($db)) {
return $db;
}
return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
'method not implemented', __FUNCTION__);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

MDB2_Driver_Reverse_Common::getTableFieldDefinition (   $table,
  $field 
)

Get the structure of a field into an array.

Parameters
string$tablename of table that should be used in method
string$fieldname of field that should be used in method
Returns
mixed data array on success, a MDB2 error on failure. The returned array contains an array for each field definition, with all or some of these indices, depending on the field data type: [notnull] [nativetype] [length] [fixed] [default] [type] [mdb2type] public

Reimplemented in MDB2_Driver_Reverse_mysqli, MDB2_Driver_Reverse_mysql, MDB2_Driver_Reverse_oci8, and MDB2_Driver_Reverse_pgsql.

Definition at line 86 of file Common.php.

References MDB2_Module_Common\getDBInstance(), PEAR\isError(), and MDB2_ERROR_UNSUPPORTED.

Referenced by tableInfo().

{
$db =& $this->getDBInstance();
if (PEAR::isError($db)) {
return $db;
}
return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
'method not implemented', __FUNCTION__);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

MDB2_Driver_Reverse_Common::getTableIndexDefinition (   $table,
  $index 
)

Get the structure of an index into an array.

Parameters
string$tablename of table that should be used in method
string$indexname of index that should be used in method
Returns
mixed data array on success, a MDB2 error on failure The returned array has this structure: array ( [fields] => array ( [field1name] => array() // one entry per each field covered [field2name] => array() // by the index [field3name] => array( [sorting] => ascending ) ) ); public

Reimplemented in MDB2_Driver_Reverse_mysqli, MDB2_Driver_Reverse_pgsql, MDB2_Driver_Reverse_oci8, and MDB2_Driver_Reverse_mysql.

Definition at line 120 of file Common.php.

References MDB2_Module_Common\getDBInstance(), PEAR\isError(), and MDB2_ERROR_UNSUPPORTED.

Referenced by tableInfo().

{
$db =& $this->getDBInstance();
if (PEAR::isError($db)) {
return $db;
}
return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
'method not implemented', __FUNCTION__);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

MDB2_Driver_Reverse_Common::getTriggerDefinition (   $trigger)

Get the structure of a trigger into an array.

EXPERIMENTAL

WARNING: this function is experimental and may change the returned value at any time until labelled as non-experimental

Parameters
string$triggername of trigger that should be used in method
Returns
mixed data array on success, a MDB2 error on failure The returned array has this structure:
         array (
             [trigger_name]    => 'trigger name',
             [table_name]      => 'table name',
             [trigger_body]    => 'trigger body definition',
             [trigger_type]    => 'BEFORE' | 'AFTER',
             [trigger_event]   => 'INSERT' | 'UPDATE' | 'DELETE'
                 //or comma separated list of multiple events, when supported
             [trigger_enabled] => true|false
             [trigger_comment] => 'trigger comment',
         );
         
The oci8 driver also returns a [when_clause] index. public

Reimplemented in MDB2_Driver_Reverse_oci8, MDB2_Driver_Reverse_mysqli, MDB2_Driver_Reverse_mysql, and MDB2_Driver_Reverse_pgsql.

Definition at line 235 of file Common.php.

References MDB2_Module_Common\getDBInstance(), PEAR\isError(), and MDB2_ERROR_UNSUPPORTED.

{
$db =& $this->getDBInstance();
if (PEAR::isError($db)) {
return $db;
}
return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
'method not implemented', __FUNCTION__);
}

+ Here is the call graph for this function:

MDB2_Driver_Reverse_Common::tableInfo (   $result,
  $mode = null 
)

Returns information about a table or a result set.

The format of the resulting array depends on which $mode you select. The sample output below is based on this query:

   SELECT tblFoo.fldID, tblFoo.fldPhone, tblBar.fldId
   FROM tblFoo
   JOIN tblBar ON tblFoo.fldId = tblBar.fldId
  • null (default)

      [0] => Array (
          [table] => tblFoo
          [name] => fldId
          [type] => int
          [len] => 11
          [flags] => primary_key not_null
      )
      [1] => Array (
          [table] => tblFoo
          [name] => fldPhone
          [type] => string
          [len] => 20
          [flags] =>
      )
      [2] => Array (
          [table] => tblBar
          [name] => fldId
          [type] => int
          [len] => 11
          [flags] => primary_key not_null
      )
      

  • MDB2_TABLEINFO_ORDER

    In addition to the information found in the default output, a notation of the number of columns is provided by the <samp>num_fields</samp> element while the <samp>order</samp> element provides an array with the column names as the keys and their location index number (corresponding to the keys in the the default output) as the values.

    If a result set has identical field names, the last one is used.

      [num_fields] => 3
      [order] => Array (
          [fldId] => 2
          [fldTrans] => 1
      )
      

  • MDB2_TABLEINFO_ORDERTABLE

    Similar to MDB2_TABLEINFO_ORDER but adds more dimensions to the array in which the table names are keys and the field names are sub-keys. This is helpful for queries that join tables which have identical field names.

      [num_fields] => 3
      [ordertable] => Array (
          [tblFoo] => Array (
              [fldId] => 0
              [fldPhone] => 1
          )
          [tblBar] => Array (
              [fldId] => 2
          )
      )
      

The <samp>flags</samp> element contains a space separated list of extra information about the field. This data is inconsistent between DBMS's due to the way each DBMS works.

  • <samp>primary_key</samp>
  • <samp>unique_key</samp>
  • <samp>multiple_key</samp>
  • <samp>not_null</samp>

Most DBMS's only provide the <samp>table</samp> and <samp>flags</samp> elements if $result is a table name. The following DBMS's provide full information from queries:

  • fbsql
  • mysql

If the 'portability' option has <samp>MDB2_PORTABILITY_FIX_CASE</samp> turned on, the names of tables and fields will be lower or upper cased.

Parameters
object | string$resultMDB2_result object from a query or a string containing the name of a table. While this also accepts a query result resource identifier, this behavior is deprecated.
int$modeeither unused or one of the tableInfo modes: MDB2_TABLEINFO_ORDERTABLE, MDB2_TABLEINFO_ORDER or MDB2_TABLEINFO_FULL (which does both). These are bitwise, so the first two can be combined using |.
Returns
array an associative array with the information requested. A MDB2_Error object on failure.
See Also
MDB2_Driver_Common::setOption()

Reimplemented in MDB2_Driver_Reverse_oci8, MDB2_Driver_Reverse_mysqli, MDB2_Driver_Reverse_pgsql, and MDB2_Driver_Reverse_mysql.

Definition at line 369 of file Common.php.

References $res, $result, MDB2_Module_Common\getDBInstance(), getTableConstraintDefinition(), getTableFieldDefinition(), getTableIndexDefinition(), PEAR\isError(), MDB2_ERROR_UNSUPPORTED, MDB2_TABLEINFO_ORDER, and MDB2_TABLEINFO_ORDERTABLE.

{
$db =& $this->getDBInstance();
if (PEAR::isError($db)) {
return $db;
}
if (!is_string($result)) {
return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
'method not implemented', __FUNCTION__);
}
$db->loadModule('Manager', null, true);
$fields = $db->manager->listTableFields($result);
if (PEAR::isError($fields)) {
return $fields;
}
$flags = array();
$idxname_format = $db->getOption('idxname_format');
$db->setOption('idxname_format', '%s');
$indexes = $db->manager->listTableIndexes($result);
if (PEAR::isError($indexes)) {
$db->setOption('idxname_format', $idxname_format);
return $indexes;
}
foreach ($indexes as $index) {
$definition = $this->getTableIndexDefinition($result, $index);
if (PEAR::isError($definition)) {
$db->setOption('idxname_format', $idxname_format);
return $definition;
}
if (count($definition['fields']) > 1) {
foreach ($definition['fields'] as $field => $sort) {
$flags[$field] = 'multiple_key';
}
}
}
$constraints = $db->manager->listTableConstraints($result);
if (PEAR::isError($constraints)) {
return $constraints;
}
foreach ($constraints as $constraint) {
$definition = $this->getTableConstraintDefinition($result, $constraint);
if (PEAR::isError($definition)) {
$db->setOption('idxname_format', $idxname_format);
return $definition;
}
$flag = !empty($definition['primary'])
? 'primary_key' : (!empty($definition['unique'])
? 'unique_key' : false);
if ($flag) {
foreach ($definition['fields'] as $field => $sort) {
if (empty($flags[$field]) || $flags[$field] != 'primary_key') {
$flags[$field] = $flag;
}
}
}
}
if ($mode) {
$res['num_fields'] = count($fields);
}
foreach ($fields as $i => $field) {
$definition = $this->getTableFieldDefinition($result, $field);
if (PEAR::isError($definition)) {
$db->setOption('idxname_format', $idxname_format);
return $definition;
}
$res[$i] = $definition[0];
$res[$i]['name'] = $field;
$res[$i]['table'] = $result;
$res[$i]['type'] = preg_replace('/^([a-z]+).*$/i', '\\1', trim($definition[0]['nativetype']));
// 'primary_key', 'unique_key', 'multiple_key'
$res[$i]['flags'] = empty($flags[$field]) ? '' : $flags[$field];
// not_null', 'unsigned', 'auto_increment', 'default_[rawencodedvalue]'
if (!empty($res[$i]['notnull'])) {
$res[$i]['flags'].= ' not_null';
}
if (!empty($res[$i]['unsigned'])) {
$res[$i]['flags'].= ' unsigned';
}
if (!empty($res[$i]['auto_increment'])) {
$res[$i]['flags'].= ' autoincrement';
}
if (!empty($res[$i]['default'])) {
$res[$i]['flags'].= ' default_'.rawurlencode($res[$i]['default']);
}
if ($mode & MDB2_TABLEINFO_ORDER) {
$res['order'][$res[$i]['name']] = $i;
}
$res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i;
}
}
$db->setOption('idxname_format', $idxname_format);
return $res;
}

+ Here is the call graph for this function:


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