ILIAS  trunk Revision v11.0_alpha-1769-g99a433fe2dc
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ILIAS\components\Database\Integrity\Integrity Class Reference
+ Collaboration diagram for ILIAS\components\Database\Integrity\Integrity:

Public Member Functions

 __construct (private ilDBInterface $database)
 
 check (Definition $definition)
 Example: $violations = $this->check(new Definition([ new Association(new Field('mail', 'folder_id'), new Field('mail', 'folder_id') ])))->violations(); Mail example: $mailId = new Field('mail', 'mail_id'); $mailObjDataId = new Field('mail_obj_data', 'obj_id'); $defintions = [ new Definition([new Association(new Field('mail', 'folder_id'), $mailObjDataId)]), new Definition([new Association(new Field('mail_attachment', 'mail_id'), $mailId)]), new Definition([new Association(new Field('mail_cron_orphaned', 'mail_id'), $mailId)]), new Definition([new Association(new Field('mail_cron_orphaned', 'folder_id'), $mailObjDataId)]), new Definition([new Association(new Field('mail_tree', 'child'), $mailObjDataId)]), new Definition([new Association(new Field('mail_tree', 'parent'), new Field('mail_tree', 'child', 'parent'))], new Ignore(null, '0')), ]; $results = array_map([$this, 'check'], $defintions);. More...
 

Detailed Description

Definition at line 25 of file Integrity.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\components\Database\Integrity\Integrity::__construct ( private ilDBInterface  $database)

Definition at line 27 of file Integrity.php.

29  {
30  }

Member Function Documentation

◆ check()

ILIAS\components\Database\Integrity\Integrity::check ( Definition  $definition)

Example: $violations = $this->check(new Definition([ new Association(new Field('mail', 'folder_id'), new Field('mail', 'folder_id') ])))->violations(); Mail example: $mailId = new Field('mail', 'mail_id'); $mailObjDataId = new Field('mail_obj_data', 'obj_id'); $defintions = [ new Definition([new Association(new Field('mail', 'folder_id'), $mailObjDataId)]), new Definition([new Association(new Field('mail_attachment', 'mail_id'), $mailId)]), new Definition([new Association(new Field('mail_cron_orphaned', 'mail_id'), $mailId)]), new Definition([new Association(new Field('mail_cron_orphaned', 'folder_id'), $mailObjDataId)]), new Definition([new Association(new Field('mail_tree', 'child'), $mailObjDataId)]), new Definition([new Association(new Field('mail_tree', 'parent'), new Field('mail_tree', 'child', 'parent'))], new Ignore(null, '0')), ]; $results = array_map([$this, 'check'], $defintions);.

Definition at line 50 of file Integrity.php.

References ILIAS\components\Database\Integrity\Definition\associations(), ILIAS\components\Database\Integrity\Definition\ignoreValues(), ILIAS\components\Database\Integrity\Definition\referenceTableName(), and ILIAS\components\Database\Integrity\Definition\tableName().

50  : Result
51  {
52  $on = [];
53  $where = [];
54  // $definition->associations() always returns a non empty array
55  foreach ($definition->associations() as $association) {
56  $on[] = sprintf('%s = %s', $association->field()->fieldName(), $association->referenceField()->fieldName());
57  $where[] = sprintf('%s IS NULL', $association->referenceField()->fieldName());
58  foreach ($definition->ignoreValues() as $value_to_ignore) {
59  $where[] = sprintf('%s %s', $association->field()->fieldName(), $value_to_ignore);
60  }
61  }
62 
63  $result = $this->database->query(sprintf(
64  'SELECT COUNT(1) as violations FROM %s LEFT JOIN %s ON %s WHERE %s',
65  $definition->tableName(),
66  $definition->referenceTableName(),
67  implode(' AND ', $on),
68  implode(' AND ', $where),
69  ));
70 
71  $result = $this->database->fetchAssoc($result);
72 
73  return new Result((int) $result['violations']);
74  }
+ Here is the call graph for this function:

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