19 declare(strict_types=1);
75 public static function setCloneOf(
int $old,
int $new,
string $type): void
77 if (!self::$clone_mapping) {
78 self::initCloneMapping();
80 self::$clone_mapping[$type][$old] = $new;
85 self::$clone_mapping = [
86 self::TYPE_DATACOLLECTION => [],
87 self::TYPE_TABLE => [],
88 self::TYPE_FIELD => [],
89 self::TYPE_RECORD => [],
90 self::TYPE_TABLEVIEW => [],
96 $type_cache = self::$clone_mapping[$type];
99 if (!is_array($type_cache)) {
103 if (isset($type_cache[$id])) {
104 $clone_id = $type_cache[
$id];
106 foreach ($type_cache as $key => $mapping) {
107 if ($mapping == $id) {
118 case self::TYPE_DATACOLLECTION:
120 case self::TYPE_FIELD:
121 return self::getFieldCache($clone_id);
122 case self::TYPE_TABLE:
123 return self::getTableCache($clone_id);
124 case self::TYPE_RECORD:
125 return self::getRecordCache($clone_id);
133 if (is_null($table_id) ===
true || $table_id === 0) {
136 $tables_cache = &self::$tables_cache;
137 if (!isset($tables_cache[$table_id])) {
138 $tables_cache[$table_id] =
new ilDclTable($table_id);
141 return $tables_cache[$table_id];
146 $fields_cache = &self::$fields_cache;
147 if (!isset($fields_cache[$field_id])) {
151 return $fields_cache[$field_id];
156 $records_cache = &self::$records_cache;
157 if (!$record_id || !isset($records_cache[$record_id])) {
161 return $records_cache[$record_id];
168 $fid = $field->
getId();
169 $rid = $record->getId();
170 if (!isset(self::$record_field_cache[$rid])) {
171 self::$record_field_cache[$rid] = [];
173 } elseif (!isset(self::$record_field_cache[$rid][$fid])) {
177 return self::$record_field_cache[$rid][$fid];
185 if (!isset(self::$field_representation_cache[$field->
getId()])) {
189 return self::$field_representation_cache[$field->
getId()];
200 if (!isset(self::$record_representation_cache[$record_field->
getId()])) {
204 return self::$record_representation_cache[$record_field->
getId()];
213 if (!isset(self::$field_properties_cache[$field_id])) {
214 self::$field_properties_cache[$field_id] = [];
216 foreach ($result as $prop) {
217 self::$field_properties_cache[$field_id][$prop->getName()] = $prop;
221 return self::$field_properties_cache[$field_id];
230 foreach ($fields as $field_key => $field) {
231 if (isset(self::$field_properties_cache[$field->getId()])) {
232 unset($fields[$field_key]);
236 if (count($fields) > 0) {
238 foreach ($fields as $field) {
239 $field_ids[] = $field->getId();
242 foreach ($result as $prop) {
243 if (!isset(self::$field_properties_cache[$prop->getFieldId()])) {
244 self::$field_properties_cache[$prop->getFieldId()] = [];
246 self::$field_properties_cache[$prop->getFieldId()][$prop->getName()] = $prop;
257 if (self::$datatype_cache ==
null) {
261 if (!isset(self::$datatype_cache[$datatyp_id])) {
265 return self::$datatype_cache[$datatyp_id];
270 $fields_cache = &self::$fields_cache;
271 if (isset($fields_cache[$rec[
"id"]])) {
272 return $fields_cache[$rec[
"id"]];
275 $field->setId($rec[
"id"]);
276 $field->setTableId($rec[
"table_id"]);
277 if (
null !== $rec[
"title"]) {
278 $field->setTitle($rec[
"title"]);
280 if (
null !== $rec[
"description"]) {
281 $field->setDescription($rec[
"description"]);
283 $field->setDatatypeId($rec[
"datatype_id"]);
284 $field->setUnique((
bool) $rec[
"is_unique"]);
285 $fields_cache[$rec[
"id"]] = $field;
295 self::$fields_cache = [];
296 self::$record_field_cache = [];
297 self::$records_cache = [];
const TYPE_DATACOLLECTION
static array $records_cache
static preloadFieldProperties(array $fields)
Preloads field properties.
static getFieldRepresentationInstance(ilDclBaseFieldModel $field)
static array $record_field_cache
static initCloneMapping()
static getFieldCache(int $field_id=0)
static array $tables_cache
static getRecordModelInstance(?int $record_id)
static array $field_properties_cache
static array $field_representation_cache
static where($where, $operator=null)
static array $fields_cache
static resetCache()
Resets all the cache fields.
static getFieldRepresentation(ilDclBaseFieldModel $field)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static getDatatype(int $datatyp_id)
Get cached datatypes.
static getFieldModelInstanceByClass(ilDclBaseFieldModel $field, ?int $field_id=null)
Gets the correct instance of a fieldModel class Checks if a field is a plugin a replaces the fieldMod...
static getFieldModelInstance(int $field_id, ?int $datatype=null)
Get FieldModel from field-id and datatype.
static getAllDatatype(bool $force=false)
Get all possible Datatypes.
static getTableCache(?int $table_id=null)
static getRecordRepresentation(ilDclBaseRecordFieldModel $record_field)
Returns a record representation.
static setCloneOf(int $old, int $new, string $type)
static getRecordFieldInstance(object $field, object $record)
Creates a RecordField instance and loads the field and record representation.
static array $clone_mapping
static getRecordRepresentationInstance(ilDclBaseRecordFieldModel $record_field)
Get RecordRepresentation from RecordFieldModel.
static getRecordCache(?int $record_id)
static array $datatype_cache
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
static buildFieldFromRecord(array $rec)
static getCloneOf(int $id, string $type)
static getRecordFieldCache(object $record, object $field)
static getFieldProperties(string $field_id)
Cache Field properties.
static array $record_representation_cache