ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
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.

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 }

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

+ Here is the call graph for this function:

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