ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.arStorage.php
Go to the documentation of this file.
1<?php
2require_once(dirname(__FILE__) . '/../class.ActiveRecord.php');
3
11abstract 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() {
118 return $this->external_model_for_storage;
119 }
120}
121
122?>
123
Class ActiveRecord.
static _toCamelCase($str, $capitalise_first_char=false)
static storeFromStorage($storage_class_name, arStorageInterface $foreign_model)
Class arStorage.
setExternalModelForStorage($model)
getExternalModelForStorage()
getValueForStorage($key)
setValueToModel($key, $value)