ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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. More...
 
 getTableIndexDefinition ($table, $index)
 Get the structure of an index into an array. More...
 
 getTableConstraintDefinition ($table, $index)
 Get the structure of an constraints into an array. More...
 
 getSequenceDefinition ($sequence)
 Get the structure of a sequence into an array. More...
 
 getTriggerDefinition ($trigger)
 Get the structure of a trigger into an array. More...
 
 tableInfo ($result, $mode=null)
 Returns information about a table or a result set. More...
 
- Public Member Functions inherited from MDB2_Module_Common
 __construct ($db_index)
 Constructor. More...
 
 MDB2_Module_Common ($db_index)
 PHP 4 Constructor. More...
 
getDBInstance ()
 Get the instance of MDB2 associated with the module instance. More...
 

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

◆ getSequenceDefinition()

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

Definition at line 182 of file Common.php.

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

183  {
184  $db =& $this->getDBInstance();
185  if (PEAR::isError($db)) {
186  return $db;
187  }
188 
189  $start = $db->currId($sequence);
190  if (PEAR::isError($start)) {
191  return $start;
192  }
193  if ($db->supports('current_id')) {
194  $start++;
195  } else {
196  $db->warnings[] = 'database does not support getting current
197  sequence value, the sequence value was incremented';
198  }
199  $definition = array();
200  if ($start != 1) {
201  $definition = array('start' => $start);
202  }
203  return $definition;
204  }
Create styles array
The data for the language used.
& getDBInstance()
Get the instance of MDB2 associated with the module instance.
Definition: MDB2.php:4244
isError($data, $code=null)
Tell whether a value is a PEAR error.
Definition: PEAR.php:280
+ Here is the call graph for this function:

◆ getTableConstraintDefinition()

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

Definition at line 155 of file Common.php.

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

Referenced by tableInfo().

156  {
157  $db =& $this->getDBInstance();
158  if (PEAR::isError($db)) {
159  return $db;
160  }
161 
162  return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
163  'method not implemented', __FUNCTION__);
164  }
const MDB2_ERROR_UNSUPPORTED
Definition: MDB2.php:78
& getDBInstance()
Get the instance of MDB2 associated with the module instance.
Definition: MDB2.php:4244
isError($data, $code=null)
Tell whether a value is a PEAR error.
Definition: PEAR.php:280
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getTableFieldDefinition()

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

Definition at line 86 of file Common.php.

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

Referenced by tableInfo().

87  {
88  $db =& $this->getDBInstance();
89  if (PEAR::isError($db)) {
90  return $db;
91  }
92 
93  return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
94  'method not implemented', __FUNCTION__);
95  }
const MDB2_ERROR_UNSUPPORTED
Definition: MDB2.php:78
& getDBInstance()
Get the instance of MDB2 associated with the module instance.
Definition: MDB2.php:4244
isError($data, $code=null)
Tell whether a value is a PEAR error.
Definition: PEAR.php:280
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getTableIndexDefinition()

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

Definition at line 120 of file Common.php.

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

Referenced by tableInfo().

121  {
122  $db =& $this->getDBInstance();
123  if (PEAR::isError($db)) {
124  return $db;
125  }
126 
127  return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
128  'method not implemented', __FUNCTION__);
129  }
const MDB2_ERROR_UNSUPPORTED
Definition: MDB2.php:78
& getDBInstance()
Get the instance of MDB2 associated with the module instance.
Definition: MDB2.php:4244
isError($data, $code=null)
Tell whether a value is a PEAR error.
Definition: PEAR.php:280
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getTriggerDefinition()

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

Definition at line 235 of file Common.php.

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

236  {
237  $db =& $this->getDBInstance();
238  if (PEAR::isError($db)) {
239  return $db;
240  }
241 
242  return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
243  'method not implemented', __FUNCTION__);
244  }
const MDB2_ERROR_UNSUPPORTED
Definition: MDB2.php:78
& getDBInstance()
Get the instance of MDB2 associated with the module instance.
Definition: MDB2.php:4244
isError($data, $code=null)
Tell whether a value is a PEAR error.
Definition: PEAR.php:280
+ Here is the call graph for this function:

◆ tableInfo()

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()

Definition at line 369 of file Common.php.

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

370  {
371  $db =& $this->getDBInstance();
372  if (PEAR::isError($db)) {
373  return $db;
374  }
375 
376  if (!is_string($result)) {
377  return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
378  'method not implemented', __FUNCTION__);
379  }
380 
381  $db->loadModule('Manager', null, true);
382  $fields = $db->manager->listTableFields($result);
383  if (PEAR::isError($fields)) {
384  return $fields;
385  }
386 
387  $flags = array();
388 
389  $idxname_format = $db->getOption('idxname_format');
390  $db->setOption('idxname_format', '%s');
391 
392  $indexes = $db->manager->listTableIndexes($result);
393  if (PEAR::isError($indexes)) {
394  $db->setOption('idxname_format', $idxname_format);
395  return $indexes;
396  }
397 
398  foreach ($indexes as $index) {
399  $definition = $this->getTableIndexDefinition($result, $index);
400  if (PEAR::isError($definition)) {
401  $db->setOption('idxname_format', $idxname_format);
402  return $definition;
403  }
404  if (count($definition['fields']) > 1) {
405  foreach ($definition['fields'] as $field => $sort) {
406  $flags[$field] = 'multiple_key';
407  }
408  }
409  }
410 
411  $constraints = $db->manager->listTableConstraints($result);
412  if (PEAR::isError($constraints)) {
413  return $constraints;
414  }
415 
416  foreach ($constraints as $constraint) {
417  $definition = $this->getTableConstraintDefinition($result, $constraint);
418  if (PEAR::isError($definition)) {
419  $db->setOption('idxname_format', $idxname_format);
420  return $definition;
421  }
422  $flag = !empty($definition['primary'])
423  ? 'primary_key' : (!empty($definition['unique'])
424  ? 'unique_key' : false);
425  if ($flag) {
426  foreach ($definition['fields'] as $field => $sort) {
427  if (empty($flags[$field]) || $flags[$field] != 'primary_key') {
428  $flags[$field] = $flag;
429  }
430  }
431  }
432  }
433 
434  if ($mode) {
435  $res['num_fields'] = count($fields);
436  }
437 
438  foreach ($fields as $i => $field) {
439  $definition = $this->getTableFieldDefinition($result, $field);
440  if (PEAR::isError($definition)) {
441  $db->setOption('idxname_format', $idxname_format);
442  return $definition;
443  }
444  $res[$i] = $definition[0];
445  $res[$i]['name'] = $field;
446  $res[$i]['table'] = $result;
447  $res[$i]['type'] = preg_replace('/^([a-z]+).*$/i', '\\1', trim($definition[0]['nativetype']));
448  // 'primary_key', 'unique_key', 'multiple_key'
449  $res[$i]['flags'] = empty($flags[$field]) ? '' : $flags[$field];
450  // not_null', 'unsigned', 'auto_increment', 'default_[rawencodedvalue]'
451  if (!empty($res[$i]['notnull'])) {
452  $res[$i]['flags'].= ' not_null';
453  }
454  if (!empty($res[$i]['unsigned'])) {
455  $res[$i]['flags'].= ' unsigned';
456  }
457  if (!empty($res[$i]['auto_increment'])) {
458  $res[$i]['flags'].= ' autoincrement';
459  }
460  if (!empty($res[$i]['default'])) {
461  $res[$i]['flags'].= ' default_'.rawurlencode($res[$i]['default']);
462  }
463 
464  if ($mode & MDB2_TABLEINFO_ORDER) {
465  $res['order'][$res[$i]['name']] = $i;
466  }
467  if ($mode & MDB2_TABLEINFO_ORDERTABLE) {
468  $res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i;
469  }
470  }
471 
472  $db->setOption('idxname_format', $idxname_format);
473  return $res;
474  }
getTableFieldDefinition($table, $field)
Get the structure of a field into an array.
Definition: Common.php:86
$result
const MDB2_ERROR_UNSUPPORTED
Definition: MDB2.php:78
const MDB2_TABLEINFO_ORDER
These are constants for the tableInfo-function they are bitwised or&#39;ed.
Definition: Common.php:59
$index
Definition: metadata.php:60
getTableIndexDefinition($table, $index)
Get the structure of an index into an array.
Definition: Common.php:120
foreach($_POST as $key=> $value) $res
const MDB2_TABLEINFO_ORDERTABLE
Definition: Common.php:60
Create styles array
The data for the language used.
getTableConstraintDefinition($table, $index)
Get the structure of an constraints into an array.
Definition: Common.php:155
& getDBInstance()
Get the instance of MDB2 associated with the module instance.
Definition: MDB2.php:4244
$i
Definition: disco.tpl.php:19
isError($data, $code=null)
Tell whether a value is a PEAR error.
Definition: PEAR.php:280
+ Here is the call graph for this function:

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