ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilADTGroupDBBridge.php
Go to the documentation of this file.
1 <?php
2 
3 require_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 }
afterUpdateElement(string $field_type, string $field_name, int $field_id)
getTable()
Get table name.
getPrimary()
Get primary fields.
static getInstance()
Get singleton.
ADT base class.
Definition: class.ilADT.php:11
if($format !==null) $name
Definition: metadata.php:230
ADT DB bridge base class.
prepareInsert(array &$a_fields)
$factory
Definition: metadata.php:58