ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.arStorage.php
Go to the documentation of this file.
1 <?php
2 require_once(dirname(__FILE__) . '/../class.ActiveRecord.php');
3 
11 abstract class arStorage extends ActiveRecord {
12 
17 
18 
24  public static function getInstance(&$model) {
29  arFieldCache::storeFromStorage(get_called_class(), $model);
30  $storage = self::getCalledClass();
31  $method = self::_toCamelCase('get_' . $storage->getArFieldList()->getPrimaryFieldName());
32  $storage->setExternalModelForStorage($model);
33  $storage->{$storage->getArFieldList()->getPrimaryFieldName()} = $model->{$method}();
34  if ($storage->{$storage->getArFieldList()->getPrimaryFieldName()}) {
35  $storage->read();
36  }
37  $storage->mapFromActiveRecord();
38 
39  return $storage;
40  }
41 
42 
43  public function create() {
44  $this->mapToActiveRecord();
45  parent::create();
46  }
47 
48 
49  public function update() {
50  $this->mapToActiveRecord();
51  parent::update();
52  }
53 
54 
55  public function read() {
56  parent::read();
57  $this->mapFromActiveRecord();
58  }
59 
60 
61  protected function mapToActiveRecord() {
62  foreach (array_keys($this->getArFieldList()->getArrayForConnector()) as $key) {
63  $this->{$key} = $this->getValueForStorage($key);
64  }
65  }
66 
67 
68  protected function mapFromActiveRecord() {
69  foreach (array_keys($this->getArFieldList()->getArrayForConnector()) as $key) {
70  $this->setValueToModel($key, $this->{$key});
71  }
72  }
73 
74 
80  public function getValueForStorage($key) {
81  $method = self::_toCamelCase('get_' . $key);
82 
83  return $this->getExternalModelForStorage()->{$method}();
84  }
85 
86 
93  public function setValueToModel($key, $value) {
94  $method = self::_toCamelCase('set_' . $key);
95 
96  return $this->getExternalModelForStorage()->{$method}($value);
97  }
98 
99 
100 
101 
102  //
103  // Setter & Getter
104  //
105 
109  public function setExternalModelForStorage($model) {
110  $this->external_model_for_storage = $model;
111  }
112 
113 
117  public function getExternalModelForStorage() {
119  }
120 }
121 
122 ?>
123 
Class ActiveRecord.
Class arStorage.
getValueForStorage($key)
getExternalModelForStorage()
static storeFromStorage($storage_class_name, arStorageInterface $foreign_model)
setValueToModel($key, $value)
setExternalModelForStorage($model)