ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilDataCollectionCache.php
Go to the documentation of this file.
1<?php
2require_once('class.ilDataCollectionReferenceField.php');
3require_once('class.ilDataCollectionRatingField.php');
4require_once('class.ilDataCollectionILIASRefField.php');
5require_once('./Modules/DataCollection/classes/Field/Formula/class.ilDataCollectionFormulaField.php');
6require_once('./Modules/DataCollection/classes/Field/Text/class.ilDataCollectionTextField.php');
7require_once('class.ilDataCollectionNReferenceField.php');
8
16
20 protected static $tables_cache;
24 protected static $fields_cache;
28 protected static $records_cache;
34 protected static $record_field_cache;
35
36
42 public static function getTableCache($table_id = 0) {
43 if ($table_id == 0) {
44 return new ilDataCollectionTable();
45 }
47 if (!isset($tables_cache[$table_id])) {
48 $tables_cache[$table_id] = new ilDataCollectionTable($table_id);
49 }
50
51 return $tables_cache[$table_id];
52 }
53
54
60 public static function getFieldCache($field_id = 0) {
62 if (!isset($fields_cache[$field_id])) {
63 $fields_cache[$field_id] = new ilDataCollectionField($field_id);
64 }
65
66 return $fields_cache[$field_id];
67 }
68
69
75 public static function getRecordCache($record_id = 0) {
77 if (!isset($records_cache[$record_id])) {
78 $records_cache[$record_id] = new ilDataCollectionRecord($record_id);
79 }
80
81 return $records_cache[$record_id];
82 }
83
84
91 public static function getRecordFieldCache($record, $field) {
92 $fid = $field->getId();
93 $rid = $record->getId();
94 if (!isset(self::$record_field_cache[$rid])) {
95 self::$record_field_cache[$rid] = array();
96 self::$record_field_cache[$rid][$fid] = self::getInstance($record, $field);
97 } elseif (!isset(self::$record_field_cache[$rid][$fid])) {
98 self::$record_field_cache[$rid][$fid] = self::getInstance($record, $field);
99 }
100
101 return self::$record_field_cache[$rid][$fid];
102 }
103
104
113 public static function getInstance($record, $field) {
114 switch ($field->getDatatypeId()) {
116 return new ilDataCollectionRatingField($record, $field);
118 return new ilDataCollectionILIASRefField($record, $field);
120 if (!$field->isNRef()) {
121 return new ilDataCollectionReferenceField($record, $field);
122 } else {
123 return new ilDataCollectionNReferenceField($record, $field);
124 }
126 return new ilDataCollectionFormulaField($record, $field);
128 return new ilDataCollectionTextField($record, $field);
129 default:
130 return new ilDataCollectionRecordField($record, $field);
131 }
132 }
133
134
140 public static function buildFieldFromRecord($rec) {
142 if (isset($fields_cache[$rec["id"]])) {
143 return $fields_cache[$rec["id"]];
144 }
145 $field = new ilDataCollectionField();
146 $field->setId($rec["id"]);
147 $field->setTableId($rec["table_id"]);
148 $field->setTitle($rec["title"]);
149 $field->setDescription($rec["description"]);
150 $field->setDatatypeId($rec["datatype_id"]);
151 $field->setRequired($rec["required"]);
152 $field->setUnique($rec["is_unique"]);
153 $field->setLocked($rec["is_locked"]);
154 $fields_cache[$rec["id"]] = $field;
155
156 return $field;
157 }
158}
Class ilDataCollectionCache.
static getRecordFieldCache($record, $field)
static getRecordCache($record_id=0)
static getInstance($record, $field)
@description This function is used to decide which type of record field is to be instanciated.
Class ilDataCollectionField.
Class ilDataCollectionNReferenceField.
Class ilDataCollectionRecord.
Class ilDataCollectionField.
Class ilDataCollectionTextField.