ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
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
         );
         
@access public

Reimplemented in MDB2_Driver_Reverse_oci8.

Definition at line 182 of file Common.php.

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 }
& getDBInstance()
Get the instance of MDB2 associated with the module instance.
Definition: MDB2.php:4206
isError($data, $code=null)
Tell whether a value is a PEAR error.
Definition: PEAR.php:279

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

+ 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
                 )
             )
         );
         
@access 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.

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:73

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

Referenced by tableInfo().

+ 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] @access public

Reimplemented in MDB2_Driver_Reverse_mysql, MDB2_Driver_Reverse_mysqli, MDB2_Driver_Reverse_oci8, and MDB2_Driver_Reverse_pgsql.

Definition at line 86 of file Common.php.

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 }

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

Referenced by tableInfo().

+ 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 ) ) ); @access public

Reimplemented in MDB2_Driver_Reverse_mysql, MDB2_Driver_Reverse_mysqli, MDB2_Driver_Reverse_oci8, and MDB2_Driver_Reverse_pgsql.

Definition at line 120 of file Common.php.

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 }

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

Referenced by tableInfo().

+ 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. @access public

Reimplemented in MDB2_Driver_Reverse_mysql, MDB2_Driver_Reverse_mysqli, MDB2_Driver_Reverse_oci8, and MDB2_Driver_Reverse_pgsql.

Definition at line 235 of file Common.php.

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 }

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

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

Reimplemented in MDB2_Driver_Reverse_mysql, MDB2_Driver_Reverse_mysqli, MDB2_Driver_Reverse_oci8, and MDB2_Driver_Reverse_pgsql.

Definition at line 369 of file Common.php.

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 }
$result
const MDB2_TABLEINFO_ORDERTABLE
Definition: Common.php:60
const MDB2_TABLEINFO_ORDER
These are constants for the tableInfo-function they are bitwised or'ed.
Definition: Common.php:59
getTableConstraintDefinition($table, $index)
Get the structure of an constraints into an array.
Definition: Common.php:155
getTableIndexDefinition($table, $index)
Get the structure of an index into an array.
Definition: Common.php:120
getTableFieldDefinition($table, $field)
Get the structure of a field into an array.
Definition: Common.php:86

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

+ Here is the call graph for this function:

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