ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilDataCollectionCache.php
Go to the documentation of this file.
1 <?php
2 require_once('class.ilDataCollectionReferenceField.php');
3 require_once('class.ilDataCollectionRatingField.php');
4 require_once('class.ilDataCollectionILIASRefField.php');
5 require_once('./Modules/DataCollection/classes/Field/Formula/class.ilDataCollectionFormulaField.php');
6 require_once('./Modules/DataCollection/classes/Field/Text/class.ilDataCollectionTextField.php');
7 require_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  }
46  $tables_cache = &self::$tables_cache;
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) {
61  $fields_cache = &self::$fields_cache;
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) {
76  $records_cache = &self::$records_cache;
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) {
141  $fields_cache = &self::$fields_cache;
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 }
static getRecordCache($record_id=0)
Class ilDataCollectionField.
static getInstance($record, $field)
This function is used to decide which type of record field is to be instanciated. ...
Class ilDataCollectionRecord.
static getRecordFieldCache($record, $field)
Class ilDataCollectionTextField.
Class ilDataCollectionNReferenceField.
Class ilDataCollectionField.
Class ilDataCollectionCache.