ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilDclIliasReferenceFieldModel.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22{
26 public function getRecordQuerySortObject(
27 string $direction = "asc",
28 bool $sort_by_status = false
30 $join_str
31 = "LEFT JOIN il_dcl_record_field AS sort_record_field_{$this->getId()} ON (sort_record_field_{$this->getId()}.record_id = record.id AND sort_record_field_{$this->getId()}.field_id = "
32 . $this->db->quote($this->getId(), 'integer') . ") ";
33 $join_str .= "LEFT JOIN il_dcl_stloc{$this->getStorageLocation()}_value AS sort_stloc_{$this->getId()} ON (sort_stloc_{$this->getId()}.record_field_id = sort_record_field_{$this->getId()}.id) ";
34 $join_str .= "LEFT JOIN object_reference AS sort_object_reference_{$this->getId()} ON (sort_object_reference_{$this->getId()}.ref_id = sort_stloc_{$this->getId()}.value AND sort_object_reference_{$this->getId()}.deleted IS NULL)";
35 $join_str .= "LEFT JOIN object_data AS sort_object_data_{$this->getId()} ON (sort_object_data_{$this->getId()}.obj_id = sort_object_reference_{$this->getId()}.obj_id)";
36
37 if ($sort_by_status) {
38 global $DIC;
39 $ilUser = $DIC['ilUser'];
40 $join_str .= "LEFT JOIN ut_lp_marks AS ut ON (ut.obj_id = sort_object_data_{$this->getId()}.obj_id AND ut.usr_id = "
41 . $this->db->quote($ilUser->getId(), 'integer') . ") ";
42 }
43
44 $select_str = (!$sort_by_status) ? " sort_object_data_{$this->getId()}.title AS field_{$this->getId()}," : " ut.status AS field_{$this->getId()}";
45
46 $sql_obj = new ilDclRecordQueryObject();
47 $sql_obj->setSelectStatement($select_str);
48 $sql_obj->setJoinStatement($join_str);
49 $sql_obj->setOrderStatement("field_{$this->getId()} " . $direction . ", ID ASC");
50
51 return $sql_obj;
52 }
53
58 $filter_value = "",
59 ?ilDclBaseFieldModel $sort_field = null
61 global $DIC;
62 $ilDB = $DIC['ilDB'];
63
64 $join_str
65 = "INNER JOIN il_dcl_record_field AS filter_record_field_{$this->getId()} ON (filter_record_field_{$this->getId()}.record_id = record.id AND filter_record_field_{$this->getId()}.field_id = "
66 . $ilDB->quote($this->getId(), 'integer') . ") ";
67 $join_str .= "INNER JOIN il_dcl_stloc{$this->getStorageLocation()}_value AS filter_stloc_{$this->getId()} ON (filter_stloc_{$this->getId()}.record_field_id = filter_record_field_{$this->getId()}.id) ";
68 $join_str .= "INNER JOIN object_reference AS filter_object_reference_{$this->getId()} ON (filter_object_reference_{$this->getId()}.ref_id = filter_stloc_{$this->getId()}.value ) ";
69 $join_str .= "INNER JOIN object_data AS filter_object_data_{$this->getId()} ON (filter_object_data_{$this->getId()}.obj_id = filter_object_reference_{$this->getId()}.obj_id AND filter_object_data_{$this->getId()}.title LIKE "
70 . $ilDB->quote("%$filter_value%", 'text') . ") ";
71
72 $sql_obj = new ilDclRecordQueryObject();
73 $sql_obj->setJoinStatement($join_str);
74
75 return $sql_obj;
76 }
77
78 public function getValidFieldProperties(): array
79 {
80 return [
85 ];
86 }
87
88 public function checkFieldCreationInput(ilPropertyFormGUI $form): bool
89 {
90 return $this->checkUniqueProp($form) && parent::checkFieldCreationInput($form);
91 }
92
93 public function checkValidity($value, ?int $record_id): bool
94 {
95 $this->checkUnique($value, $record_id);
96 return parent::checkValidity($value, $record_id);
97 }
98}
getRecordQueryFilterObject( $filter_value="", ?ilDclBaseFieldModel $sort_field=null)
Returns a query-object for building the record-loader-sql-query.
getValidFieldProperties()
Returns all valid properties for a field-type.
getRecordQuerySortObject(string $direction="asc", bool $sort_by_status=false)
Returns a query-object for building the record-loader-sql-query.
checkFieldCreationInput(ilPropertyFormGUI $form)
Checks input of specific fields befor saving.
checkValidity($value, ?int $record_id)
Check if input is valid.
This class represents a property form user interface.
global $DIC
Definition: shib_login.php:26