ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilADTGroupDBBridge.php
Go to the documentation of this file.
1<?php
2
3require_once "Services/ADT/classes/Bridges/class.ilADTDBBridge.php";
4
6{
7 protected $elements = []; // [array]
8
9 protected function isValidADT(ilADT $a_adt)
10 {
11 return ($a_adt instanceof ilADTGroup);
12 }
13
14
15 // elements
16
17 protected function prepareElements()
18 {
19 if (sizeof($this->elements)) {
20 return;
21 }
22
23 $this->elements = array();
25
26 // convert ADTs to DB bridges
27
28 foreach ($this->getADT()->getElements() as $name => $element) {
29 $this->elements[$name] = $factory->getDBBridgeForInstance($element);
30 $this->elements[$name]->setElementId($name);
31 $this->elements[$name]->setTable($this->getTable());
32 $this->elements[$name]->setPrimary($this->getPrimary());
33 }
34 }
35
39 public function getElements()
40 {
41 $this->prepareElements();
42 return $this->elements;
43 }
44
45 public function getElement($a_element_id)
46 {
47 if (array_key_exists($a_element_id, $this->getElements())) {
48 return $this->elements[$a_element_id];
49 }
50 }
51
52
53 // properties
54
55 public function setTable($a_table)
56 {
57 parent::setTable($a_table);
58
59 if (sizeof($this->elements)) {
60 foreach (array_keys($this->getADT()->getElements()) as $name) {
61 $this->elements[$name]->setTable($this->getTable());
62 }
63 }
64 }
65
66 public function setPrimary(array $a_value)
67 {
68 parent::setPrimary($a_value);
69
70 if (sizeof($this->elements)) {
71 foreach (array_keys($this->getADT()->getElements()) as $name) {
72 $this->elements[$name]->setPrimary($this->getPrimary());
73 }
74 }
75 }
76
77
78 // CRUD
79
80 public function readRecord(array $a_row)
81 {
82 foreach ($this->getElements() as $element) {
83 $element->readRecord($a_row);
84 }
85 }
86
87 public function prepareInsert(array &$a_fields)
88 {
89 foreach ($this->getElements() as $element) {
90 $element->prepareInsert($a_fields);
91 }
92 }
93
94 public function afterInsert()
95 {
96 foreach ($this->getElements() as $element) {
97 $element->afterInsert();
98 }
99 }
100
101 public function afterUpdate()
102 {
103 foreach ($this->getElements() as $element) {
104 $element->afterUpdate();
105 }
106 }
107
113 public function afterUpdateElement(string $field_type, string $field_name, int $field_id)
114 {
115 $element = $this->getElement($field_id);
116 if (!$element) {
117 return;
118 }
119 $element->setPrimary(
120 array_merge(
121 $this->getPrimary(),
122 [
123 $field_name => [$field_type,$field_id]
124 ]
125 )
126 );
127 $element->setElementId($field_id);
128 $element->afterUpdate();
129 }
130
131
132 public function afterDelete()
133 {
134 foreach ($this->getElements() as $element) {
135 $element->afterDelete();
136 }
137 }
138}
An exception for terminatinating execution or to throw for unit testing.
ADT DB bridge base class.
getPrimary()
Get primary fields.
getTable()
Get table name.
static getInstance()
Get singleton.
afterDelete()
After delete hook to enable sub-tables.
afterUpdate()
After update hook to enable sub-tables.
setTable($a_table)
Set table name.
isValidADT(ilADT $a_adt)
Check if given ADT is valid.
afterUpdateElement(string $field_type, string $field_name, int $field_id)
setPrimary(array $a_value)
Set primary fields (in MDB2 format)
prepareInsert(array &$a_fields)
Prepare ADT values for insert.
readRecord(array $a_row)
Import DB values to ADT.
afterInsert()
After insert hook to enable sub-tables.
ADT base class.
Definition: class.ilADT.php:12
$factory
Definition: metadata.php:58
if($format !==null) $name
Definition: metadata.php:230