ILIAS  trunk Revision v12.0_alpha-1221-g4e438232683
ilDclTable Class Reference
+ Collaboration diagram for ilDclTable:

Public Member Functions

 __construct (int $a_id=0)
 
 doRead ()
 Read table. More...
 
 doDelete (bool $delete_only_content=false, bool $omit_notification=false)
 Delete table Attention this does not delete the maintable of it's the maintable of the collection. More...
 
 doCreate (bool $create_tablefield_setting=true, bool $create_standardview=true)
 
 doUpdate ()
 
 setId (int $a_id)
 Set table id. More...
 
 getId ()
 Get table id. More...
 
 setObjId (int $a_id)
 
 getObjId ()
 
 setTitle (string $a_title)
 
 getTitle ()
 
 getCollectionObject ()
 
 getRecords ()
 
 loadRecords ()
 
 deleteField (int $field_id)
 
 getField (string $field_id)
 
 getFieldIds ()
 
 getCustomFields ()
 
 getNewFieldOrder ()
 getNewOrder More...
 
 getFields ()
 Returns all fields of this table including the standard fields. More...
 
 reloadFields ()
 
 getTableViews ()
 
 getVisibleTableViews (int $user_id=0, bool $with_active_detailedview=false)
 
 getFirstTableViewId (int $user_id=0, bool $with_detailed_view=false)
 
 getFieldsForFormula ()
 Returns all fields of this table including the standard fields, wich are supported for formulas. More...
 
 getRecordFields ()
 Returns all fields of this table which are NOT standard fields. More...
 
 getEditableFields (bool $creation_mode)
 
 getExportableFields ()
 Return all the fields that are marked as exportable. More...
 
 hasPermissionToEditRecord (int $ref_id, ilDclBaseRecordModel $record)
 
 hasPermissionToDeleteRecord (int $ref_id, ilDclBaseRecordModel $record)
 
 hasPermissionToDeleteRecords (int $ref_id)
 
 hasPermissionToViewRecord (int $ref_id, ilDclBaseRecordModel $record, int $user_id=0)
 
 checkLimit ()
 
 updateFields ()
 Update fields. More...
 
 sortFields (array &$fields)
 sortFields More...
 
 buildOrderFields ()
 buildOrderFields orders the fields. More...
 
 getFieldByTitle (string $title)
 Get a field by title. More...
 
 setAddPerm (bool $add_perm)
 
 getAddPerm ()
 
 setDeletePerm (bool $delete_perm)
 
 getDeletePerm ()
 
 setEditByOwner (bool $edit_by_owner)
 
 getEditByOwner ()
 
 getDeleteByOwner ()
 
 setDeleteByOwner (bool $delete_by_owner)
 
 setEditPerm (bool $edit_perm)
 
 getEditPerm ()
 
 setLimited (bool $limited)
 
 getLimited ()
 
 setLimitEnd (string $limit_end)
 
 getLimitEnd ()
 
 setLimitStart (string $limit_start)
 
 getLimitStart ()
 
 setIsVisible (bool $is_visible)
 
 getIsVisible ()
 
 setDescription (string $description)
 
 getDescription ()
 
 setDefaultSortField (string $default_sort_field)
 
 getDefaultSortField ()
 
 setDefaultSortFieldOrder (string $default_sort_field_order)
 
 getDefaultSortFieldOrder ()
 
 setPublicCommentsEnabled (bool $public_comments)
 
 getPublicCommentsEnabled ()
 
 setViewOwnRecordsPerm (bool $view_own_perm)
 
 getViewOwnRecordsPerm ()
 
 getSaveConfirmation ()
 
 setSaveConfirmation (bool $save_confirmation)
 
 hasCustomFields ()
 
 compareOrder (ilDclBaseFieldModel $a, ilDclBaseFieldModel $b)
 
 cloneStructure (ilDclTable $original)
 
 afterClone ()
 
 _hasRecords ()
 _hasRecords More...
 
 addField (ilDclBaseFieldModel $field)
 
 setExportEnabled (bool $export_enabled)
 
 getExportEnabled ()
 
 getOrder ()
 
 updateOrder ()
 
 setOrder (int $table_order)
 
 setImportEnabled (bool $import_enabled)
 
 getImportEnabled ()
 
 getPartialRecords (string $ref_id, string $sort, string $direction, ?int $limit, int $offset, array $filter=[])
 Return only the needed subset of record objects for the table, according to sorting, paging and filters. More...
 
 showInvalidFields (bool $value)
 

Static Public Member Functions

static _tableExists (int $table_id)
 
static _getTableIdByTitle (string $title, int $obj_id)
 
static _hasFieldByTitle (string $title, int $obj_id)
 Checks if a table has a field with the given title. More...
 

Protected Member Functions

 loadObj ()
 
 loadCustomFields ()
 
 doesRecordBelongToUser (ilDclBaseRecordModel $record)
 
 sortByOrder (array &$array)
 

Protected Attributes

int $id = 0
 
int $objId = null
 
ilObjDataCollection $obj = null
 
string $title = ""
 
array $fields = []
 
array $stdFields = []
 
array $records = []
 
bool $is_visible = false
 
bool $add_perm = false
 
bool $edit_perm = false
 
bool $delete_perm = false
 
bool $edit_by_owner = false
 
bool $delete_by_owner = false
 
bool $save_confirmation = false
 
bool $limited = false
 
string $limit_start = ""
 
string $limit_end = ""
 
bool $export_enabled = false
 
int $table_order = 0
 
bool $import_enabled = false
 
string $default_sort_field = "0"
 
string $default_sort_field_order = 'asc'
 Default sort-order (asc|desc) More...
 
string $description = ''
 Description for this table displayed above records. More...
 
bool $public_comments = false
 True if users can add comments on each record of this table. More...
 
int $view_own_records_perm = 0
 True if user can only view his/her own entries in the table. More...
 
array $all_fields = null
 table fields and std fields combined More...
 
ILIAS HTTP Services $http
 
ILIAS Refinery Factory $refinery
 
ilObjUser $user
 
ilDBInterface $db
 
bool $show_invalid = false
 

Detailed Description

Definition at line 24 of file class.ilDclTable.php.

Constructor & Destructor Documentation

◆ __construct()

ilDclTable::__construct ( int  $a_id = 0)

Definition at line 83 of file class.ilDclTable.php.

84 {
85 global $DIC;
86
87 $this->http = $DIC->http();
88 $this->refinery = $DIC->refinery();
89 $this->db = $DIC->database();
90 $this->user = $DIC->user();
91
92 if ($a_id != 0) {
93 $this->id = $a_id;
94 $this->doRead();
95 }
96 }
doRead()
Read table.
static http()
Fetches the global http state from ILIAS.
global $DIC
Definition: shib_login.php:26

References $DIC, doRead(), ILIAS\FileDelivery\http(), ILIAS\Repository\refinery(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

Member Function Documentation

◆ _getTableIdByTitle()

static ilDclTable::_getTableIdByTitle ( string  $title,
int  $obj_id 
)
static
Parameters
int$obj_idDatacollection object ID where the table belongs to

Definition at line 1094 of file class.ilDclTable.php.

1094 : int
1095 {
1096 global $DIC;
1097 $ilDB = $DIC['ilDB'];
1098
1099 $result = $ilDB->query(
1100 'SELECT id FROM il_dcl_table WHERE title = ' . $ilDB->quote($title, 'text') . ' AND obj_id = '
1101 . $ilDB->quote($obj_id, 'integer')
1102 );
1103 $id = 0;
1104 while ($rec = $ilDB->fetchAssoc($result)) {
1105 $id = $rec['id'];
1106 }
1107
1108 return $id;
1109 }

References $DIC, $id, $ilDB, and $title.

◆ _hasFieldByTitle()

static ilDclTable::_hasFieldByTitle ( string  $title,
int  $obj_id 
)
static

Checks if a table has a field with the given title.

Parameters
string$titleTitle of field
int$obj_idof the table

Definition at line 1163 of file class.ilDclTable.php.

1163 : bool
1164 {
1165 global $DIC;
1166 $ilDB = $DIC['ilDB'];
1167 $result = $ilDB->query(
1168 'SELECT * FROM il_dcl_field WHERE table_id = ' . $ilDB->quote($obj_id, 'integer') . ' AND title = '
1169 . $ilDB->quote($title, 'text')
1170 );
1171
1172 return (bool) $ilDB->numRows($result);
1173 }

References $DIC, $ilDB, and $title.

Referenced by ilDclFieldEditGUI\checkInput().

+ Here is the caller graph for this function:

◆ _hasRecords()

ilDclTable::_hasRecords ( )

_hasRecords

Definition at line 1064 of file class.ilDclTable.php.

1064 : bool
1065 {
1066 return count($this->getRecords()) > 0;
1067 }

References getRecords().

+ Here is the call graph for this function:

◆ _tableExists()

static ilDclTable::_tableExists ( int  $table_id)
static
Returns
bool returns true if there exists a table with id $table_id

Definition at line 1080 of file class.ilDclTable.php.

1080 : bool
1081 {
1082 global $DIC;
1083 $ilDB = $DIC['ilDB'];
1084
1085 $query = "SELECT * FROM il_dcl_table WHERE id = " . $table_id;
1086 $result = $ilDB->query($query);
1087
1088 return $result->numRows() != 0;
1089 }

References $DIC, and $ilDB.

Referenced by ilDclBaseFieldModel\doCreate(), and ilDclBaseRecordModel\doCreate().

+ Here is the caller graph for this function:

◆ addField()

ilDclTable::addField ( ilDclBaseFieldModel  $field)
Parameters
ilDclBaseFieldModel$fieldadd an already created field for eg. ordering.

Definition at line 1072 of file class.ilDclTable.php.

1072 : void
1073 {
1074 $this->all_fields[$field->getId()] = $field;
1075 }

References ilDclBaseFieldModel\getId().

+ Here is the call graph for this function:

◆ afterClone()

ilDclTable::afterClone ( )

Definition at line 1054 of file class.ilDclTable.php.

1054 : void
1055 {
1056 foreach ($this->getFields() as $field) {
1057 $field->afterClone($this->getRecords());
1058 }
1059 }
getFields()
Returns all fields of this table including the standard fields.

References getFields(), and getRecords().

+ Here is the call graph for this function:

◆ buildOrderFields()

ilDclTable::buildOrderFields ( )

buildOrderFields orders the fields.

Definition at line 764 of file class.ilDclTable.php.

764 : void
765 {
766 $fields = $this->getFields();
767 $this->sortByOrder($fields);
768 $count = 10;
769 $offset = 10;
770 foreach ($fields as $field) {
771 if (!is_null($field->getOrder())) {
772 $field->setOrder($count);
773 $count = $count + $offset;
774 $field->doUpdate();
775 }
776 }
777 }
sortByOrder(array &$array)

References $fields, getFields(), and sortByOrder().

Referenced by doCreate().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkLimit()

ilDclTable::checkLimit ( )

Definition at line 691 of file class.ilDclTable.php.

691 : bool
692 {
693 if ($this->getLimited()) {
694 $from = null;
695 $to = null;
696 $now = new ilDateTime(date("Y-m-d H:i:s"), IL_CAL_DATE);
697
698 if ($this->getLimitStart() != "") {
699 $from = new ilDateTime($this->getLimitStart(), IL_CAL_DATE);
700 }
701 if ($this->getLimitEnd() != "") {
702 $to = new ilDateTime($this->getLimitEnd(), IL_CAL_DATE);
703 }
704
705 if ($from == null && $to == null) {
706 return true;
707 }
708 if ($from <= $now && $now <= $to) {
709 return true;
710 }
711 if ($from <= $now && $to == null) {
712 return true;
713 }
714 if ($from == null && $now <= $to) {
715 return true;
716 }
717
718 return ($from <= $now && $now <= $to);
719 }
720
721 return true;
722 }
const IL_CAL_DATE
@classDescription Date and time handling

References getLimited(), getLimitEnd(), getLimitStart(), and IL_CAL_DATE.

Referenced by hasPermissionToDeleteRecord(), and hasPermissionToEditRecord().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cloneStructure()

ilDclTable::cloneStructure ( ilDclTable  $original)

Definition at line 983 of file class.ilDclTable.php.

983 : void
984 {
985 $this->setTitle($original->getTitle());
986 $this->setDescription($original->getDescription());
987 $this->setIsVisible($original->getIsVisible());
988 $this->setEditByOwner($original->getEditByOwner());
989 $this->setAddPerm($original->getAddPerm());
990 $this->setEditPerm($original->getEditPerm());
991 $this->setDeleteByOwner($original->getDeleteByOwner());
992 $this->setSaveConfirmation($original->getSaveConfirmation());
993 $this->setDeletePerm($original->getDeletePerm());
994 $this->setLimited($original->getLimited());
995 $this->setLimitStart($original->getLimitStart());
996 $this->setLimitEnd($original->getLimitEnd());
997 $this->setViewOwnRecordsPerm($original->getViewOwnRecordsPerm());
998 $this->setExportEnabled($original->getExportEnabled());
999 $this->setImportEnabled($original->getImportEnabled());
1002 $this->setOrder($original->getOrder());
1003
1004 $this->doCreate(true, false);
1005 // reset stdFields to get new for the created object
1006
1008 // Clone standard-fields
1009 $org_std_fields = $original->getStandardFields();
1010 foreach ($this->getStandardFields() as $element_key => $std_field) {
1011 $std_field->clone($org_std_fields[$element_key]);
1012 if ($std_field->getId() === $original->getDefaultSortField()) {
1013 $default_sort_field = $std_field->getId();
1014 }
1015 }
1016
1017 // Clone fields
1018 $new_fields = [];
1019 foreach ($original->getFields() as $orig_field) {
1020 if (!$orig_field->isStandardField()) {
1021 $class_name = get_class($orig_field);
1022 $new_field = new $class_name();
1023 $new_field->setTableId($this->getId());
1024 $new_field->cloneStructure((int) $orig_field->getId());
1025 $new_fields[$orig_field->getId()] = $new_field;
1026
1027 if ($orig_field->getId() === $original->getDefaultSortField()) {
1028 $default_sort_field = $new_field->getId();
1029 }
1030 }
1031 }
1032
1034 $this->doUpdate();
1035
1036 // Clone Records with recordfields
1037 foreach ($original->getRecords() as $orig_record) {
1038 $new_record = new ilDclBaseRecordModel();
1039 $new_record->setTableId($this->getId());
1040 $new_record->cloneStructure($orig_record->getId(), $new_fields);
1041 }
1042
1043 //clone tableviews (includes pageobjects)
1044 foreach ($original->getTableViews() as $orig_tableview) {
1045 $new_tableview = new ilDclTableView();
1046 $new_tableview->setTableId($this->getId());
1047 $new_tableview->cloneStructure($orig_tableview, $new_fields);
1048 }
1049
1050 // mandatory for all cloning functions
1051 ilDclCache::setCloneOf($original->getId(), $this->getId(), ilDclCache::TYPE_TABLE);
1052 }
static setCloneOf(int $old, int $new, string $type)
setDefaultSortField(string $default_sort_field)
setEditByOwner(bool $edit_by_owner)
setDeletePerm(bool $delete_perm)
setSaveConfirmation(bool $save_confirmation)
setEditPerm(bool $edit_perm)
string $default_sort_field
setDeleteByOwner(bool $delete_by_owner)
setIsVisible(bool $is_visible)
setLimitStart(string $limit_start)
setOrder(int $table_order)
setImportEnabled(bool $import_enabled)
setTitle(string $a_title)
setDescription(string $description)
doCreate(bool $create_tablefield_setting=true, bool $create_standardview=true)
setDefaultSortFieldOrder(string $default_sort_field_order)
setPublicCommentsEnabled(bool $public_comments)
setAddPerm(bool $add_perm)
setLimited(bool $limited)
getId()
Get table id.
setLimitEnd(string $limit_end)
setExportEnabled(bool $export_enabled)
setViewOwnRecordsPerm(bool $view_own_perm)

References $default_sort_field, doCreate(), doUpdate(), getAddPerm(), getDefaultSortField(), getDefaultSortFieldOrder(), getDeleteByOwner(), getDeletePerm(), getDescription(), getEditByOwner(), getEditPerm(), getExportEnabled(), getFields(), getId(), getImportEnabled(), getIsVisible(), getLimited(), getLimitEnd(), getLimitStart(), getOrder(), getPublicCommentsEnabled(), getRecords(), getSaveConfirmation(), getTableViews(), getTitle(), getViewOwnRecordsPerm(), setAddPerm(), ilDclCache\setCloneOf(), setDefaultSortField(), setDefaultSortFieldOrder(), setDeleteByOwner(), setDeletePerm(), setDescription(), setEditByOwner(), setEditPerm(), setExportEnabled(), setImportEnabled(), setIsVisible(), setLimited(), setLimitEnd(), setLimitStart(), setOrder(), setPublicCommentsEnabled(), setSaveConfirmation(), setTitle(), setViewOwnRecordsPerm(), and ilDclCache\TYPE_TABLE.

+ Here is the call graph for this function:

◆ compareOrder()

ilDclTable::compareOrder ( ilDclBaseFieldModel  $a,
ilDclBaseFieldModel  $b 
)

Definition at line 968 of file class.ilDclTable.php.

968 : int
969 {
970 if (is_null($a->getOrder() == null) && is_null($b->getOrder() == null)) {
971 return 0;
972 }
973 if (is_null($a->getOrder())) {
974 return 1;
975 }
976 if (is_null($b->getOrder())) {
977 return -1;
978 }
979
980 return $a->getOrder() < $b->getOrder() ? -1 : 1;
981 }
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples

References Vendor\Package\$a, and Vendor\Package\$b.

◆ deleteField()

ilDclTable::deleteField ( int  $field_id)

Definition at line 326 of file class.ilDclTable.php.

326 : void
327 {
328 $field = ilDclCache::getFieldCache($field_id);
329 $records = $this->getRecords();
330
331 foreach ($records as $record) {
332 $record->deleteField($field_id);
333 }
334
335 $field->doDelete();
336 if ($this->getDefaultSortField() === $field->getId()) {
337 $this->setDefaultSortField('');
338 $this->doUpdate();
339 }
340 }
static getFieldCache(int $field_id=0)

References $records, doUpdate(), getDefaultSortField(), ilDclCache\getFieldCache(), getRecords(), and setDefaultSortField().

+ Here is the call graph for this function:

◆ doCreate()

ilDclTable::doCreate ( bool  $create_tablefield_setting = true,
bool  $create_standardview = true 
)

Definition at line 158 of file class.ilDclTable.php.

158 : void
159 {
160 $id = $this->db->nextId("il_dcl_table");
161 $this->setId($id);
162 $query = "INSERT INTO il_dcl_table (" . "id" . ", obj_id" . ", title" . ", add_perm" . ", edit_perm" . ", delete_perm" . ", edit_by_owner"
163 . ", limited" . ", limit_start" . ", limit_end" . ", is_visible" . ", export_enabled" . ", import_enabled" . ", default_sort_field_id"
164 . ", default_sort_field_order" . ", description" . ", public_comments" . ", view_own_records_perm"
165 . ", delete_by_owner, save_confirmation , table_order ) VALUES (" . $this->db->quote(
166 $this->getId(),
167 "integer"
168 ) . ","
169 . $this->db->quote($this->getObjId(), "integer") . "," . $this->db->quote($this->getTitle(), "text") . ","
170 . $this->db->quote($this->getAddPerm() ? 1 : 0, "integer") . "," . $this->db->quote(
171 $this->getEditPerm() ? 1 : 0,
172 "integer"
173 ) . ","
174 . $this->db->quote(
175 $this->getDeletePerm() ? 1 : 0,
176 "integer"
177 ) . "," . $this->db->quote($this->getEditByOwner() ? 1 : 0, "integer") . ","
178 . $this->db->quote($this->getLimited() ? 1 : 0, "integer") . "," . $this->db->quote(
179 $this->getLimitStart(),
180 "timestamp"
181 ) . ","
182 . $this->db->quote($this->getLimitEnd(), "timestamp") . "," . $this->db->quote(
183 $this->getIsVisible() ? 1 : 0,
184 "integer"
185 ) . ","
186 . $this->db->quote(
187 $this->getExportEnabled() ? 1 : 0,
188 "integer"
189 ) . "," . $this->db->quote($this->getImportEnabled() ? 1 : 0, "integer") . ","
190 . $this->db->quote($this->getDefaultSortField(), "text") . "," . $this->db->quote(
192 "text"
193 ) . ","
194 . $this->db->quote($this->getDescription(), "text") . "," . $this->db->quote(
196 "integer"
197 ) . ","
198 . $this->db->quote(
199 $this->getViewOwnRecordsPerm(),
200 "integer"
201 ) . "," . $this->db->quote($this->getDeleteByOwner() ? 1 : 0, 'integer') . ","
202 . $this->db->quote($this->getSaveConfirmation() ? 1 : 0, 'integer') . "," . $this->db->quote(
203 $this->getOrder(),
204 'integer'
205 ) . ")";
206
207 $this->db->manipulate($query);
208
209 if ($create_standardview) {
210 //standard tableview
212 }
213
214 if ($create_tablefield_setting) {
215 $this->buildOrderFields();
216 }
217 }
static createOrGetStandardView(int $table_id)
buildOrderFields()
buildOrderFields orders the fields.
setId(int $a_id)
Set table id.

References $id, buildOrderFields(), ilDclTableView\createOrGetStandardView(), getAddPerm(), getDefaultSortField(), getDefaultSortFieldOrder(), getDeleteByOwner(), getDeletePerm(), getDescription(), getEditByOwner(), getEditPerm(), getExportEnabled(), getId(), getImportEnabled(), getIsVisible(), getLimited(), getLimitEnd(), getLimitStart(), getObjId(), getOrder(), getPublicCommentsEnabled(), getSaveConfirmation(), getTitle(), getViewOwnRecordsPerm(), and setId().

Referenced by cloneStructure().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ doDelete()

ilDclTable::doDelete ( bool  $delete_only_content = false,
bool  $omit_notification = false 
)

Delete table Attention this does not delete the maintable of it's the maintable of the collection.

unlink the the maintable in the collections object to make this work.

Definition at line 142 of file class.ilDclTable.php.

142 : void
143 {
144 foreach ($this->getRecords() as $record) {
145 $record->doDelete($omit_notification);
146 }
147
148 foreach ($this->getRecordFields() as $field) {
149 $field->doDelete();
150 }
151
152 if (!$delete_only_content) {
153 $query = "DELETE FROM il_dcl_table WHERE id = " . $this->db->quote($this->getId(), "integer");
154 $this->db->manipulate($query);
155 }
156 }
getRecordFields()
Returns all fields of this table which are NOT standard fields.

References getId(), getRecordFields(), and getRecords().

+ Here is the call graph for this function:

◆ doesRecordBelongToUser()

ilDclTable::doesRecordBelongToUser ( ilDclBaseRecordModel  $record)
protected

Definition at line 686 of file class.ilDclTable.php.

686 : bool
687 {
688 return ($this->user->getId() == $record->getOwner());
689 }

References ilDclBaseRecordModel\getOwner(), and ILIAS\Repository\user().

Referenced by hasPermissionToDeleteRecord(), and hasPermissionToEditRecord().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ doRead()

ilDclTable::doRead ( )

Read table.

Definition at line 101 of file class.ilDclTable.php.

101 : void
102 {
103 $query = "SELECT * FROM il_dcl_table WHERE id = " . $this->db->quote($this->getId(), "integer");
104 $set = $this->db->query($query);
105 $rec = $this->db->fetchAssoc($set);
106
107 $this->setObjId($rec["obj_id"]);
108 if (null !== $rec["title"]) {
109 $this->setTitle($rec["title"]);
110 }
111 $this->setAddPerm((bool) $rec["add_perm"]);
112 $this->setEditPerm((bool) $rec["edit_perm"]);
113 $this->setDeletePerm((bool) $rec["delete_perm"]);
114 $this->setEditByOwner((bool) $rec["edit_by_owner"]);
115 if (null !== $rec["export_enabled"]) {
116 $this->setExportEnabled((bool) $rec["export_enabled"]);
117 }
118 $this->setImportEnabled((bool) $rec["import_enabled"]);
119 $this->setLimited((bool) $rec["limited"]);
120 $this->setLimitStart((string) $rec["limit_start"]);
121 $this->setLimitEnd((string) $rec["limit_end"]);
122 $this->setIsVisible((bool) $rec["is_visible"]);
123 if (null !== $rec['description']) {
124 $this->setDescription($rec['description']);
125 }
126 $this->setDefaultSortField((string) $rec['default_sort_field_id']);
127 $this->setDefaultSortFieldOrder($rec['default_sort_field_order']);
128 $this->setPublicCommentsEnabled((bool) $rec['public_comments']);
129 $this->setViewOwnRecordsPerm((bool) $rec['view_own_records_perm']);
130 $this->setDeleteByOwner((bool) $rec['delete_by_owner']);
131 $this->setSaveConfirmation((bool) $rec['save_confirmation']);
132 if (null !== $rec['table_order']) {
133 $this->setOrder($rec['table_order']);
134 }
135 }
setObjId(int $a_id)

References getId(), setAddPerm(), setDefaultSortField(), setDefaultSortFieldOrder(), setDeleteByOwner(), setDeletePerm(), setDescription(), setEditByOwner(), setEditPerm(), setExportEnabled(), setImportEnabled(), setIsVisible(), setLimited(), setLimitEnd(), setLimitStart(), setObjId(), setOrder(), setPublicCommentsEnabled(), setSaveConfirmation(), setTitle(), and setViewOwnRecordsPerm().

Referenced by __construct().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ doUpdate()

ilDclTable::doUpdate ( )

Definition at line 219 of file class.ilDclTable.php.

219 : void
220 {
221 $this->db->update(
222 "il_dcl_table",
223 [
224 "obj_id" => ["integer", $this->getObjId()],
225 "title" => ["text", $this->getTitle()],
226 "add_perm" => ["integer", (int) $this->getAddPerm()],
227 "edit_perm" => ["integer", (int) $this->getEditPerm()],
228 "delete_perm" => ["integer", (int) $this->getDeletePerm()],
229 "edit_by_owner" => ["integer", (int) $this->getEditByOwner()],
230 "limited" => ["integer", $this->getLimited()],
231 "limit_start" => ["timestamp", $this->getLimitStart()],
232 "limit_end" => ["timestamp", $this->getLimitEnd()],
233 "is_visible" => ["integer", $this->getIsVisible() ? 1 : 0],
234 "export_enabled" => ["integer", $this->getExportEnabled() ? 1 : 0],
235 "import_enabled" => ["integer", $this->getImportEnabled() ? 1 : 0],
236 "description" => ["text", $this->getDescription()],
237 "default_sort_field_id" => ["text", $this->getDefaultSortField()],
238 "default_sort_field_order" => ["text", $this->getDefaultSortFieldOrder()],
239 "public_comments" => ["integer", $this->getPublicCommentsEnabled() ? 1 : 0],
240 "view_own_records_perm" => ["integer", $this->getViewOwnRecordsPerm()],
241 'delete_by_owner' => ['integer', $this->getDeleteByOwner() ? 1 : 0],
242 'save_confirmation' => ['integer', $this->getSaveConfirmation() ? 1 : 0],
243 'table_order' => ['integer', $this->getOrder()],
244 ],
245 [
246 "id" => ["integer", $this->getId()],
247 ]
248 );
249 }

References getAddPerm(), getDefaultSortField(), getDefaultSortFieldOrder(), getDeleteByOwner(), getDeletePerm(), getDescription(), getEditByOwner(), getEditPerm(), getExportEnabled(), getId(), getImportEnabled(), getIsVisible(), getLimited(), getLimitEnd(), getLimitStart(), getObjId(), getOrder(), getPublicCommentsEnabled(), getSaveConfirmation(), getTitle(), and getViewOwnRecordsPerm().

Referenced by cloneStructure(), deleteField(), and ilDclTableEditGUI\setAsDefault().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAddPerm()

ilDclTable::getAddPerm ( )

Definition at line 800 of file class.ilDclTable.php.

800 : bool
801 {
802 return $this->add_perm;
803 }

References $add_perm.

Referenced by cloneStructure(), doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getCollectionObject()

ilDclTable::getCollectionObject ( )

Definition at line 287 of file class.ilDclTable.php.

288 {
289 $this->loadObj();
290
291 return $this->obj;
292 }
ilObjDataCollection $obj

References $obj, and loadObj().

Referenced by getVisibleTableViews().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getCustomFields()

ilDclTable::getCustomFields ( )
Returns
ilDclBaseFieldModel[]

Definition at line 401 of file class.ilDclTable.php.

401 : array
402 {
403 if (!$this->fields) {
404 $this->loadCustomFields();
405 }
406
407 return $this->fields;
408 }

References $fields, and loadCustomFields().

+ Here is the call graph for this function:

◆ getDefaultSortField()

ilDclTable::getDefaultSortField ( )

Definition at line 913 of file class.ilDclTable.php.

913 : string
914 {
916 }

References $default_sort_field.

Referenced by cloneStructure(), deleteField(), doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getDefaultSortFieldOrder()

ilDclTable::getDefaultSortFieldOrder ( )

Definition at line 926 of file class.ilDclTable.php.

926 : string
927 {
929 }
string $default_sort_field_order
Default sort-order (asc|desc)

References $default_sort_field_order.

Referenced by cloneStructure(), doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getDeleteByOwner()

ilDclTable::getDeleteByOwner ( )

Definition at line 831 of file class.ilDclTable.php.

831 : bool
832 {
834 }

References $delete_by_owner.

Referenced by cloneStructure(), doCreate(), doUpdate(), and hasPermissionToDeleteRecord().

+ Here is the caller graph for this function:

◆ getDeletePerm()

ilDclTable::getDeletePerm ( )

Definition at line 813 of file class.ilDclTable.php.

813 : bool
814 {
815 return $this->delete_perm;
816 }

References $delete_perm.

Referenced by cloneStructure(), doCreate(), doUpdate(), hasPermissionToDeleteRecord(), and hasPermissionToDeleteRecords().

+ Here is the caller graph for this function:

◆ getDescription()

ilDclTable::getDescription ( )

Definition at line 902 of file class.ilDclTable.php.

902 : string
903 {
904 return $this->description;
905 }
string $description
Description for this table displayed above records.

References $description.

Referenced by cloneStructure(), doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getEditableFields()

ilDclTable::getEditableFields ( bool  $creation_mode)
Parameters
bool$creation_mode
Returns
array

Definition at line 554 of file class.ilDclTable.php.

554 : array
555 {
556 $fields = $this->getRecordFields();
557 $editableFields = [];
558
559 foreach ($fields as $field) {
560 $tableview_id = $this->http->wrapper()->post()->retrieve(
561 'tableview_id',
562 $this->refinery->kindlyTo()->int()
563 );
564 if (!$field->getViewSetting($tableview_id)->isLocked($creation_mode)) {
565 $editableFields[] = $field;
566 }
567 }
568
569 return $editableFields;
570 }

References $fields, getRecordFields(), ILIAS\FileDelivery\http(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ getEditByOwner()

ilDclTable::getEditByOwner ( )

Definition at line 826 of file class.ilDclTable.php.

826 : bool
827 {
829 }

References $edit_by_owner.

Referenced by cloneStructure(), doCreate(), doUpdate(), and hasPermissionToEditRecord().

+ Here is the caller graph for this function:

◆ getEditPerm()

ilDclTable::getEditPerm ( )

Definition at line 852 of file class.ilDclTable.php.

852 : bool
853 {
854 return $this->edit_perm;
855 }

References $edit_perm.

Referenced by cloneStructure(), doCreate(), doUpdate(), and hasPermissionToEditRecord().

+ Here is the caller graph for this function:

◆ getExportableFields()

ilDclTable::getExportableFields ( )

Return all the fields that are marked as exportable.

Returns
ilDclBaseFieldModel[]

Definition at line 576 of file class.ilDclTable.php.

576 : array
577 {
578 $fields = $this->getFields();
579 $exportableFields = [];
580 foreach ($fields as $field) {
581 if ($field->getExportable()) {
582 $exportableFields[] = $field;
583 }
584 }
585
586 return $exportableFields;
587 }

References $fields, and getFields().

+ Here is the call graph for this function:

◆ getExportEnabled()

ilDclTable::getExportEnabled ( )

Definition at line 1116 of file class.ilDclTable.php.

1116 : bool
1117 {
1118 return $this->export_enabled;
1119 }

References $export_enabled.

Referenced by cloneStructure(), doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getField()

ilDclTable::getField ( string  $field_id)

Definition at line 342 of file class.ilDclTable.php.

343 {
344 $fields = $this->getFields();
345 $field = null;
346 foreach ($fields as $field_1) {
347 if ($field_1->getId() == $field_id) {
348 $field = $field_1;
349 }
350 }
351
352 return $field;
353 }

References $fields, and getFields().

+ Here is the call graph for this function:

◆ getFieldByTitle()

ilDclTable::getFieldByTitle ( string  $title)

Get a field by title.

Definition at line 782 of file class.ilDclTable.php.

783 {
784 $return = null;
785 foreach ($this->getFields() as $field) {
786 if ($field->getTitle() == $title) {
787 $return = $field;
788 break;
789 }
790 }
791
792 return $return;
793 }

References $title, and getFields().

+ Here is the call graph for this function:

◆ getFieldIds()

ilDclTable::getFieldIds ( )

Definition at line 355 of file class.ilDclTable.php.

355 : array
356 {
357 $field_ids = [];
358 foreach ($this->getFields() as $field) {
359 if ($field->getId()) {
360 $field_ids[] = $field->getId();
361 }
362 }
363
364 return $field_ids;
365 }

References getFields().

+ Here is the call graph for this function:

◆ getFields()

ilDclTable::getFields ( )

Returns all fields of this table including the standard fields.

Parameters
bool$force_include_commentsby default false, so comments will only load when enabled in tablesettings
Returns
ilDclBaseFieldModel[]

Definition at line 432 of file class.ilDclTable.php.

432 : array
433 {
434 if ($this->all_fields == null) {
435 $this->reloadFields();
436 }
437
438 return $this->all_fields;
439 }
array $all_fields
table fields and std fields combined

References $all_fields, and reloadFields().

Referenced by afterClone(), buildOrderFields(), cloneStructure(), ilDclContentExporter\fillHeaderExcel(), getExportableFields(), getField(), getFieldByTitle(), getFieldIds(), getFieldsForFormula(), getNewFieldOrder(), and updateFields().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getFieldsForFormula()

ilDclTable::getFieldsForFormula ( )

Returns all fields of this table including the standard fields, wich are supported for formulas.

Returns
ilDclBaseFieldModel[]

Definition at line 494 of file class.ilDclTable.php.

494 : array
495 {
496 $syntax_chars = array_merge(
497 array_map(static fn(Operators $function): string => $function->value, Operators::cases()),
498 array_map(static fn(Functions $function): string => $function->value, Functions::cases()),
499 ['(', ')', ',']
500 );
501 foreach ($this->getFields() as $field) {
502 if (in_array($field->getDatatypeId(), ilDclFormulaFieldModel::SUPPORTED_FIELDS)) {
503 foreach ($syntax_chars as $element) {
504 if (str_contains($field->getTitle(), $element)) {
505 continue 2;
506 }
507 }
508 $return[] = $field;
509 }
510 }
511
512 return $return;
513 }

References getFields(), and ilDclFormulaFieldModel\SUPPORTED_FIELDS.

+ Here is the call graph for this function:

◆ getFirstTableViewId()

ilDclTable::getFirstTableViewId ( int  $user_id = 0,
bool  $with_detailed_view = false 
)

Definition at line 482 of file class.ilDclTable.php.

482 : ?int
483 {
484 $array = $this->getVisibleTableViews($user_id, $with_detailed_view);
485 $tableview = array_shift($array);
486
487 return $tableview?->getId();
488 }
getVisibleTableViews(int $user_id=0, bool $with_active_detailedview=false)

References $user_id, and getVisibleTableViews().

+ Here is the call graph for this function:

◆ getId()

ilDclTable::getId ( )

Get table id.

Definition at line 262 of file class.ilDclTable.php.

262 : int
263 {
264 return $this->id;
265 }

References $id.

Referenced by cloneStructure(), doCreate(), doDelete(), doRead(), doUpdate(), ilDclTableListGUI\getActions(), getTableViews(), loadCustomFields(), ilDclTableEditGUI\save(), and ilDclTableEditGUI\setAsDefault().

+ Here is the caller graph for this function:

◆ getImportEnabled()

ilDclTable::getImportEnabled ( )

Definition at line 1153 of file class.ilDclTable.php.

1153 : bool
1154 {
1155 return $this->import_enabled;
1156 }

References $import_enabled.

Referenced by cloneStructure(), doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getIsVisible()

ilDclTable::getIsVisible ( )

Definition at line 892 of file class.ilDclTable.php.

892 : bool
893 {
894 return $this->is_visible;
895 }

References $is_visible.

Referenced by cloneStructure(), doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getLimited()

ilDclTable::getLimited ( )

Definition at line 862 of file class.ilDclTable.php.

862 : bool
863 {
864 return $this->limited;
865 }

References $limited.

Referenced by checkLimit(), cloneStructure(), doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getLimitEnd()

ilDclTable::getLimitEnd ( )

Definition at line 872 of file class.ilDclTable.php.

872 : string
873 {
874 return $this->limit_end;
875 }

References $limit_end.

Referenced by checkLimit(), cloneStructure(), doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getLimitStart()

ilDclTable::getLimitStart ( )

Definition at line 882 of file class.ilDclTable.php.

882 : string
883 {
884 return $this->limit_start;
885 }
string $limit_start

References $limit_start.

Referenced by checkLimit(), cloneStructure(), doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getNewFieldOrder()

ilDclTable::getNewFieldOrder ( )

getNewOrder

Returns
int returns the place where a new field should be placed.

Definition at line 414 of file class.ilDclTable.php.

414 : int
415 {
416 $fields = $this->getFields();
417 $place = 0;
418 foreach ($fields as $field) {
419 if (!$field->isStandardField()) {
420 $place = $field->getOrder() + 1;
421 }
422 }
423
424 return $place;
425 }

References $fields, and getFields().

+ Here is the call graph for this function:

◆ getObjId()

ilDclTable::getObjId ( )

Definition at line 272 of file class.ilDclTable.php.

272 : ?int
273 {
274 return $this->objId;
275 }

References $objId.

Referenced by doCreate(), doUpdate(), hasPermissionToDeleteRecord(), hasPermissionToDeleteRecords(), hasPermissionToEditRecord(), hasPermissionToViewRecord(), and ilObjDataCollectionAccess\isTableInDataCollection().

+ Here is the caller graph for this function:

◆ getOrder()

ilDclTable::getOrder ( )

Definition at line 1121 of file class.ilDclTable.php.

1121 : int
1122 {
1123 if (!$this->table_order) {
1124 $this->updateOrder();
1125 }
1126
1127 return $this->table_order;
1128 }

References $table_order, and updateOrder().

Referenced by cloneStructure(), doCreate(), doUpdate(), and ilDclTableListGUI\getActions().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPartialRecords()

ilDclTable::getPartialRecords ( string  $ref_id,
string  $sort,
string  $direction,
?int  $limit,
int  $offset,
array  $filter = [] 
)

Return only the needed subset of record objects for the table, according to sorting, paging and filters.

Parameters
string$sortTitle of a field where the ilTable2GUI is sorted
string$direction'desc' or 'asc'
int$limitLimit of records
int$offsetOffset from records
array$filterContaining the filter values
Returns
array Array with two keys: 'record' => Contains the record objects, 'total' => Number of total records (without slicing)

Definition at line 1184 of file class.ilDclTable.php.

1191 : array {
1192 $sort_field = $this->getFieldByTitle($sort);
1193 $direction = strtolower($direction);
1194 $direction = (in_array($direction, ['desc', 'asc'])) ? $direction : 'asc';
1195
1196 // Sorting by a status from an ILIAS Ref field. This column is added dynamically to the table, there is no field model
1197 $sort_by_status = false;
1198 if (substr($sort, 0, 8) == '_status_') {
1199 $sort_by_status = true;
1200 $sort_field = $this->getFieldByTitle(substr($sort, 8));
1201 }
1202
1203 if (is_null($sort_field)) {
1204 $sort_field = $this->getField('id');
1205 }
1206
1207 $sort_query_object = $sort_field->getRecordQuerySortObject($direction, $sort_by_status);
1208
1209 $select_str = ($sort_query_object != null) ? $sort_query_object->getSelectStatement() : '';
1210 $join_str = ($sort_query_object != null) ? $sort_query_object->getJoinStatement() : '';
1211 $where_str = ($sort_query_object != null) ? $sort_query_object->getWhereStatement() : '';
1212 $order_str = ($sort_query_object != null) ? $sort_query_object->getOrderStatement() : '';
1213 $group_str = ($sort_query_object != null) ? $sort_query_object->getGroupStatement() : '';
1214
1215 if (count($filter)) {
1216 foreach ($filter as $key => $filter_value) {
1217 $filter_field_id = substr($key, 7);
1218 $filter_field = $this->getField($filter_field_id);
1219 $filter_record_query_object = $filter_field->getRecordQueryFilterObject($filter_value, $sort_field);
1220
1221 if ($filter_record_query_object) {
1222 $select_str .= $filter_record_query_object->getSelectStatement();
1223 $join_str .= $filter_record_query_object->getJoinStatement();
1224 $where_str .= $filter_record_query_object->getWhereStatement();
1225 $group_str .= $filter_record_query_object->getGroupStatement();
1226 }
1227 }
1228 }
1229
1230 // Build the query string
1231 $sql = "SELECT DISTINCT record.id, record.owner";
1232 if ($select_str) {
1233 $sql .= ', ';
1234 }
1235
1236 $as = ' AS ';
1237
1238 $sql .= rtrim($select_str, ',') . " FROM il_dcl_record $as record ";
1239 $sql .= $join_str;
1240 $sql .= " WHERE record.table_id = " . $this->db->quote($this->getId(), 'integer');
1241
1242 if (strlen($where_str) > 0) {
1243 $sql .= $where_str;
1244 }
1245
1246 if (strlen($group_str) > 0) {
1247 $sql .= " GROUP BY " . $group_str;
1248 }
1249
1250 if (strlen($order_str) > 0) {
1251 $sql .= " ORDER BY " . $order_str;
1252 }
1253
1254 $set = $this->db->query($sql);
1255 $total_record_ids = [];
1256
1258 while ($rec = $this->db->fetchAssoc($set)) {
1259 // Quick check if the current user is allowed to view the record
1260 if (!$is_allowed_to_view && ($this->getViewOwnRecordsPerm() && $this->user->getId() != $rec['owner'])) {
1261 continue;
1262 }
1263 $total_record_ids[] = $rec['id'];
1264 }
1265 // Save record-ids in session to enable prev/next links in detail view
1266 ilSession::set('dcl_table_id', $this->getId());
1267 ilSession::set('dcl_record_ids', $total_record_ids);
1268
1269 if ($sort_query_object != null) {
1270 $total_record_ids = $sort_query_object->applyCustomSorting($sort_field, $total_record_ids, $direction);
1271 }
1272
1273 if ($sort === 'n_comments') {
1274 global $DIC;
1275 $comments_nr = [];
1276 foreach ($total_record_ids as $id) {
1277 $comments_nr[$id] = $DIC->notes()->domain()->getNrOfCommentsForContext($DIC->notes()->data()->context($this->getObjId(), $id, 'dcl'));
1278 }
1279 uasort($comments_nr, static fn($a, $b) => ($direction === 'asc' ? 1 : -1) * ($a <=> $b));
1280 $total_record_ids = array_keys($comments_nr);
1281 }
1282
1283 // Now slice the array to load only the needed records in memory
1284 $record_ids = array_slice($total_record_ids, $offset, $limit);
1285
1286 $records = [];
1287 foreach ($record_ids as $id) {
1289 }
1290
1291 return ['records' => $records, 'total' => count($total_record_ids)];
1292 }
static getRecordCache(?int $record_id)
getField(string $field_id)
getFieldByTitle(string $title)
Get a field by title.
static hasWriteAccess(int $ref, ?int $user_id=0)
static hasEditAccess(int $ref, ?int $user_id=null)
static set(string $a_var, $a_val)
Set a value.
$ref_id
Definition: ltiauth.php:66

Referenced by ilDclRecordListGUI\getRecordListTableGUI().

+ Here is the caller graph for this function:

◆ getPublicCommentsEnabled()

ilDclTable::getPublicCommentsEnabled ( )

Definition at line 936 of file class.ilDclTable.php.

936 : bool
937 {
939 }
bool $public_comments
True if users can add comments on each record of this table.

References $public_comments.

Referenced by cloneStructure(), doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getRecordFields()

ilDclTable::getRecordFields ( )

Returns all fields of this table which are NOT standard fields.

Returns
ilDclBaseFieldModel[]

Definition at line 543 of file class.ilDclTable.php.

543 : array
544 {
545 $this->loadCustomFields();
546
547 return $this->fields;
548 }

References $fields, and loadCustomFields().

Referenced by doDelete(), getEditableFields(), and ilDclContentImporter\getImportFieldsFromTitles().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRecords()

ilDclTable::getRecords ( )
Returns
ilDclBaseRecordModel[]

Definition at line 304 of file class.ilDclTable.php.

304 : array
305 {
306 if ($this->records == null) {
307 $this->loadRecords();
308 }
309
310 return $this->records;
311 }

References $records, and loadRecords().

Referenced by _hasRecords(), afterClone(), cloneStructure(), deleteField(), and doDelete().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSaveConfirmation()

ilDclTable::getSaveConfirmation ( )

Definition at line 951 of file class.ilDclTable.php.

951 : bool
952 {
954 }
bool $save_confirmation

References $save_confirmation.

Referenced by cloneStructure(), doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getTableViews()

ilDclTable::getTableViews ( )
Returns
ilDclTableView[]

Definition at line 455 of file class.ilDclTable.php.

455 : array
456 {
458 }
static getAllForTableId(int $table_id)

References ilDclTableView\getAllForTableId(), and getId().

Referenced by cloneStructure(), and getVisibleTableViews().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getTitle()

ilDclTable::getTitle ( )

Definition at line 282 of file class.ilDclTable.php.

282 : string
283 {
284 return $this->title;
285 }

References $title.

Referenced by cloneStructure(), doCreate(), doUpdate(), and ilDclTableEditGUI\save().

+ Here is the caller graph for this function:

◆ getViewOwnRecordsPerm()

ilDclTable::getViewOwnRecordsPerm ( )

Definition at line 946 of file class.ilDclTable.php.

946 : bool
947 {
948 return (bool) $this->view_own_records_perm;
949 }
int $view_own_records_perm
True if user can only view his/her own entries in the table.

References $view_own_records_perm.

Referenced by cloneStructure(), doCreate(), doUpdate(), and hasPermissionToViewRecord().

+ Here is the caller graph for this function:

◆ getVisibleTableViews()

ilDclTable::getVisibleTableViews ( int  $user_id = 0,
bool  $with_active_detailedview = false 
)
Returns
ilDclTableView[]

Definition at line 463 of file class.ilDclTable.php.

463 : array
464 {
465 if (ilObjDataCollectionAccess::hasWriteAccess($this->getCollectionObject()->getRefId(), $user_id) && !$with_active_detailedview) {
466 return $this->getTableViews();
467 }
468
469 $visible_views = [];
470 foreach ($this->getTableViews() as $tableView) {
472 $page = new ilDclDetailedViewDefinitionGUI($tableView->getId());
473 if (!$with_active_detailedview || $page->getPageObject()->isActive()) {
474 $visible_views[] = $tableView;
475 }
476 }
477 }
478
479 return $visible_views;
480 }
@ilCtrl_Calls ilDclDetailedViewDefinitionGUI: ilPageEditorGUI, ilEditClipboardGUI,...
static hasAccessToTableView(ilDclTableView $tableview, ?int $user_id=0)

References $user_id, getCollectionObject(), getTableViews(), ilObjDataCollectionAccess\hasAccessToTableView(), and ilObjDataCollectionAccess\hasWriteAccess().

Referenced by getFirstTableViewId().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hasCustomFields()

ilDclTable::hasCustomFields ( )

Definition at line 961 of file class.ilDclTable.php.

961 : bool
962 {
963 $this->loadCustomFields();
964
965 return count($this->fields) > 0;
966 }

References loadCustomFields().

+ Here is the call graph for this function:

◆ hasPermissionToDeleteRecord()

ilDclTable::hasPermissionToDeleteRecord ( int  $ref_id,
ilDclBaseRecordModel  $record 
)
Parameters
int$ref_idthe reference id of the current datacollection object
ilDclBaseRecordModel$recordthe record which will be deleted

Definition at line 625 of file class.ilDclTable.php.

625 : bool
626 {
628 return false;
629 }
631 return true;
632 }
634 return false;
635 }
636 if (!$this->checkLimit()) {
637 return false;
638 }
639 if ($this->getDeletePerm() && !$this->getDeleteByOwner()) {
640 return true;
641 }
642 if ($this->getDeleteByOwner()) {
643 return $this->doesRecordBelongToUser($record);
644 }
645
646 return false;
647 }
doesRecordBelongToUser(ilDclBaseRecordModel $record)
static hasAddRecordAccess(int $ref, ?int $user_id=0)
static _lookupObjectId(int $ref_id)

References $ref_id, ilObject\_lookupObjectId(), checkLimit(), doesRecordBelongToUser(), getDeleteByOwner(), getDeletePerm(), getObjId(), ilObjDataCollectionAccess\hasAddRecordAccess(), and ilObjDataCollectionAccess\hasWriteAccess().

+ Here is the call graph for this function:

◆ hasPermissionToDeleteRecords()

ilDclTable::hasPermissionToDeleteRecords ( int  $ref_id)
Parameters
$ref_id
Returns
bool

Definition at line 653 of file class.ilDclTable.php.

653 : bool
654 {
656 return false;
657 }
658
661 }

References $ref_id, ilObject\_lookupObjectId(), getDeletePerm(), getObjId(), ilObjDataCollectionAccess\hasAddRecordAccess(), and ilObjDataCollectionAccess\hasWriteAccess().

+ Here is the call graph for this function:

◆ hasPermissionToEditRecord()

ilDclTable::hasPermissionToEditRecord ( int  $ref_id,
ilDclBaseRecordModel  $record 
)
Parameters
$ref_idint the reference id of the current datacollection object
$recordilDclBaseRecordModel the record which will be edited
Returns
bool

Definition at line 594 of file class.ilDclTable.php.

594 : bool
595 {
597 return false;
598 }
600 return true;
601 }
603 return false;
604 }
605 if ($this->getEditByOwner()) {
606 return $this->doesRecordBelongToUser($record);
607 }
608 if (!$this->checkLimit()) {
609 return false;
610 }
612 return true;
613 }
614 if ($this->getEditPerm() && !$this->getEditByOwner()) {
615 return true;
616 }
617
618 return false;
619 }

References $ref_id, ilObject\_lookupObjectId(), checkLimit(), doesRecordBelongToUser(), getEditByOwner(), getEditPerm(), getObjId(), ilObjDataCollectionAccess\hasAddRecordAccess(), ilObjDataCollectionAccess\hasEditAccess(), and ilObjDataCollectionAccess\hasWriteAccess().

+ Here is the call graph for this function:

◆ hasPermissionToViewRecord()

ilDclTable::hasPermissionToViewRecord ( int  $ref_id,
ilDclBaseRecordModel  $record,
int  $user_id = 0 
)

Definition at line 663 of file class.ilDclTable.php.

663 : bool
664 {
666 return false;
667 }
669 $ref_id,
672 return true;
673 }
675 // Check for view only own entries setting
676 if ($this->getViewOwnRecordsPerm() && ($user_id ?: $this->user->getId()) != $record->getOwner()) {
677 return false;
678 }
679
680 return true;
681 }
682
683 return false;
684 }
static hasReadAccess(int $ref, ?int $user_id=0)

References $ref_id, $user_id, ilObject\_lookupObjectId(), getObjId(), ilDclBaseRecordModel\getOwner(), getViewOwnRecordsPerm(), ilObjDataCollectionAccess\hasEditAccess(), ilObjDataCollectionAccess\hasReadAccess(), ilObjDataCollectionAccess\hasWriteAccess(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ loadCustomFields()

ilDclTable::loadCustomFields ( )
protected

Definition at line 367 of file class.ilDclTable.php.

367 : void
368 {
369 if (!$this->fields) {
370 $query
371 = "SELECT DISTINCT il_dcl_field.*, il_dcl_tfield_set.field_order
372 FROM il_dcl_field
373 INNER JOIN il_dcl_tfield_set
374 ON ( il_dcl_tfield_set.field NOT IN ('owner',
375 'last_update',
376 'last_edit_by',
377 'id',
378 'create_date')
379 AND il_dcl_tfield_set.table_id = il_dcl_field.table_id
380 AND il_dcl_tfield_set.field = " . $this->db->cast("il_dcl_field.id", "text") . ")
381 WHERE il_dcl_field.table_id = %s
382 ORDER BY il_dcl_tfield_set.field_order ASC";
383
384 $set = $this->db->queryF($query, ['integer'], [$this->getId()]);
385 $fields = [];
386 while ($rec = $this->db->fetchAssoc($set)) {
388 if ($this->show_invalid || in_array($field->getDatatypeId(), array_keys(ilDclDatatype::getAllDatatype()))) {
389 $fields[] = $field;
390 }
391 }
392 $this->fields = $fields;
393
395 }
396 }
static buildFieldFromRecord(array $rec)
static preloadFieldProperties(array $fields)
Preloads field properties.
static getAllDatatype(bool $force=false)
Get all possible Datatypes.

References $fields, ilDclCache\buildFieldFromRecord(), ilDclDatatype\getAllDatatype(), getId(), and ilDclCache\preloadFieldProperties().

Referenced by getCustomFields(), getRecordFields(), hasCustomFields(), and reloadFields().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ loadObj()

ilDclTable::loadObj ( )
protected

Definition at line 294 of file class.ilDclTable.php.

294 : void
295 {
296 if ($this->obj == null) {
297 $this->obj = new ilObjDataCollection($this->objId, false);
298 }
299 }

Referenced by getCollectionObject().

+ Here is the caller graph for this function:

◆ loadRecords()

ilDclTable::loadRecords ( )

Definition at line 313 of file class.ilDclTable.php.

313 : void
314 {
315 $records = [];
316 $query = "SELECT id FROM il_dcl_record WHERE table_id = " . $this->db->quote($this->id, "integer");
317 $set = $this->db->query($query);
318
319 while ($rec = $this->db->fetchAssoc($set)) {
320 $records[$rec['id']] = ilDclCache::getRecordCache($rec['id']);
321 }
322
323 $this->records = $records;
324 }

References $records, and ilDclCache\getRecordCache().

Referenced by getRecords().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ reloadFields()

ilDclTable::reloadFields ( )

Definition at line 441 of file class.ilDclTable.php.

441 : void
442 {
443 $this->loadCustomFields();
444 $this->stdFields = $this->getStandardFields();
445 $fields = array_merge($this->fields, $this->stdFields);
446
447 $this->sortByOrder($fields);
448
449 $this->all_fields = $fields;
450 }

References $fields, loadCustomFields(), and sortByOrder().

Referenced by getFields().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setAddPerm()

ilDclTable::setAddPerm ( bool  $add_perm)

Definition at line 795 of file class.ilDclTable.php.

795 : void
796 {
797 $this->add_perm = $add_perm;
798 }

References $add_perm.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setDefaultSortField()

ilDclTable::setDefaultSortField ( string  $default_sort_field)

Definition at line 907 of file class.ilDclTable.php.

907 : void
908 {
909 $default_sort_field = ($default_sort_field) ?: ""; // Change null or empty strings to zero
910 $this->default_sort_field = $default_sort_field;
911 }

References $default_sort_field.

Referenced by cloneStructure(), deleteField(), and doRead().

+ Here is the caller graph for this function:

◆ setDefaultSortFieldOrder()

ilDclTable::setDefaultSortFieldOrder ( string  $default_sort_field_order)

Definition at line 918 of file class.ilDclTable.php.

918 : void
919 {
920 if (!in_array($default_sort_field_order, ['asc', 'desc'])) {
922 }
923 $this->default_sort_field_order = $default_sort_field_order;
924 }

References $default_sort_field_order.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setDeleteByOwner()

ilDclTable::setDeleteByOwner ( bool  $delete_by_owner)

Definition at line 836 of file class.ilDclTable.php.

836 : void
837 {
838 $this->delete_by_owner = $delete_by_owner;
839 if ($delete_by_owner) {
840 $this->setDeletePerm(true);
841 }
842 }

References $delete_by_owner, and setDeletePerm().

Referenced by cloneStructure(), doRead(), and setDeletePerm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setDeletePerm()

ilDclTable::setDeletePerm ( bool  $delete_perm)

Definition at line 805 of file class.ilDclTable.php.

805 : void
806 {
807 $this->delete_perm = $delete_perm;
808 if (!$delete_perm) {
809 $this->setDeleteByOwner(false);
810 }
811 }

References $delete_perm, and setDeleteByOwner().

Referenced by cloneStructure(), doRead(), and setDeleteByOwner().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setDescription()

ilDclTable::setDescription ( string  $description)

Definition at line 897 of file class.ilDclTable.php.

897 : void
898 {
899 $this->description = $description;
900 }

References $description.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setEditByOwner()

ilDclTable::setEditByOwner ( bool  $edit_by_owner)

Definition at line 818 of file class.ilDclTable.php.

818 : void
819 {
820 $this->edit_by_owner = $edit_by_owner;
821 if ($edit_by_owner) {
822 $this->setEditPerm(true);
823 }
824 }

References $edit_by_owner, and setEditPerm().

Referenced by cloneStructure(), doRead(), and setEditPerm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setEditPerm()

ilDclTable::setEditPerm ( bool  $edit_perm)

Definition at line 844 of file class.ilDclTable.php.

844 : void
845 {
846 $this->edit_perm = $edit_perm;
847 if (!$edit_perm) {
848 $this->setEditByOwner(false);
849 }
850 }

References $edit_perm, and setEditByOwner().

Referenced by cloneStructure(), doRead(), and setEditByOwner().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setExportEnabled()

ilDclTable::setExportEnabled ( bool  $export_enabled)

Definition at line 1111 of file class.ilDclTable.php.

1111 : void
1112 {
1113 $this->export_enabled = $export_enabled;
1114 }

References $export_enabled.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setId()

ilDclTable::setId ( int  $a_id)

Set table id.

Definition at line 254 of file class.ilDclTable.php.

254 : void
255 {
256 $this->id = $a_id;
257 }

Referenced by doCreate().

+ Here is the caller graph for this function:

◆ setImportEnabled()

ilDclTable::setImportEnabled ( bool  $import_enabled)

Definition at line 1148 of file class.ilDclTable.php.

1148 : void
1149 {
1150 $this->import_enabled = $import_enabled;
1151 }

References $import_enabled.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setIsVisible()

ilDclTable::setIsVisible ( bool  $is_visible)

Definition at line 887 of file class.ilDclTable.php.

887 : void
888 {
889 $this->is_visible = $is_visible;
890 }

References $is_visible.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setLimited()

ilDclTable::setLimited ( bool  $limited)

Definition at line 857 of file class.ilDclTable.php.

857 : void
858 {
859 $this->limited = $limited;
860 }

References $limited.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setLimitEnd()

ilDclTable::setLimitEnd ( string  $limit_end)

Definition at line 867 of file class.ilDclTable.php.

867 : void
868 {
869 $this->limit_end = $limit_end;
870 }

References $limit_end.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setLimitStart()

ilDclTable::setLimitStart ( string  $limit_start)

Definition at line 877 of file class.ilDclTable.php.

877 : void
878 {
879 $this->limit_start = $limit_start;
880 }

References $limit_start.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setObjId()

ilDclTable::setObjId ( int  $a_id)

Definition at line 267 of file class.ilDclTable.php.

267 : void
268 {
269 $this->objId = $a_id;
270 }

Referenced by doRead().

+ Here is the caller graph for this function:

◆ setOrder()

ilDclTable::setOrder ( int  $table_order)

Definition at line 1143 of file class.ilDclTable.php.

1143 : void
1144 {
1145 $this->table_order = $table_order;
1146 }

References $table_order.

Referenced by cloneStructure(), doRead(), and ilDclTableEditGUI\setAsDefault().

+ Here is the caller graph for this function:

◆ setPublicCommentsEnabled()

ilDclTable::setPublicCommentsEnabled ( bool  $public_comments)

Definition at line 931 of file class.ilDclTable.php.

931 : void
932 {
933 $this->public_comments = $public_comments;
934 }

References $public_comments.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setSaveConfirmation()

ilDclTable::setSaveConfirmation ( bool  $save_confirmation)

Definition at line 956 of file class.ilDclTable.php.

956 : void
957 {
958 $this->save_confirmation = $save_confirmation;
959 }

References $save_confirmation.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setTitle()

ilDclTable::setTitle ( string  $a_title)

Definition at line 277 of file class.ilDclTable.php.

277 : void
278 {
279 $this->title = $a_title;
280 }

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setViewOwnRecordsPerm()

ilDclTable::setViewOwnRecordsPerm ( bool  $view_own_perm)

Definition at line 941 of file class.ilDclTable.php.

941 : void
942 {
943 $this->view_own_records_perm = (int) $view_own_perm;
944 }

References ILIAS\Repository\int().

Referenced by cloneStructure(), and doRead().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ showInvalidFields()

ilDclTable::showInvalidFields ( bool  $value)

Definition at line 1294 of file class.ilDclTable.php.

1294 : void
1295 {
1296 $this->show_invalid = $value;
1297 }

◆ sortByOrder()

ilDclTable::sortByOrder ( array &  $array)
protected
Parameters
ilDclBaseFieldModel[]$arraythe array to sort

Definition at line 753 of file class.ilDclTable.php.

753 : void
754 {
755 // php-bug: https://bugs.php.net/bug.php?id=50688
756 // fixed in php 7 but for now we need the @ a workaround
757 usort($array, [$this, "compareOrder"]);
758 }

Referenced by buildOrderFields(), reloadFields(), and sortFields().

+ Here is the caller graph for this function:

◆ sortFields()

ilDclTable::sortFields ( array &  $fields)

sortFields

Parameters
ilDclBaseFieldModel[]$fields

Definition at line 738 of file class.ilDclTable.php.

738 : void
739 {
740 $this->sortByOrder($fields);
741 //After sorting the array loses it's keys respectivly their keys are set form $field->id to 1,2,3... so we reset the keys.
742 $named = [];
743 foreach ($fields as $field) {
744 $named[$field->getId()] = $field;
745 }
746
747 $fields = $named;
748 }

References $fields, and sortByOrder().

+ Here is the call graph for this function:

◆ updateFields()

ilDclTable::updateFields ( )

Update fields.

Definition at line 727 of file class.ilDclTable.php.

727 : void
728 {
729 foreach ($this->getFields() as $field) {
730 $field->doUpdate();
731 }
732 }

References getFields().

+ Here is the call graph for this function:

◆ updateOrder()

ilDclTable::updateOrder ( )

Definition at line 1130 of file class.ilDclTable.php.

1130 : void
1131 {
1132 $result = $this->db->query('SELECT MAX(table_order) AS table_order FROM il_dcl_table WHERE obj_id = ' . $this->db->quote(
1133 $this->getCollectionObject()->getId(),
1134 'integer'
1135 ));
1136 $this->table_order = $this->db->fetchObject($result)->table_order + 10;
1137 $this->db->query('UPDATE il_dcl_table SET table_order = ' . $this->db->quote(
1138 $this->table_order,
1139 'integer'
1140 ) . ' WHERE id = ' . $this->db->quote($this->getId(), 'integer'));
1141 }

Referenced by getOrder().

+ Here is the caller graph for this function:

Field Documentation

◆ $add_perm

bool ilDclTable::$add_perm = false
protected

Definition at line 43 of file class.ilDclTable.php.

Referenced by getAddPerm(), and setAddPerm().

◆ $all_fields

array ilDclTable::$all_fields = null
protected

table fields and std fields combined

Definition at line 76 of file class.ilDclTable.php.

Referenced by getFields().

◆ $db

ilDBInterface ilDclTable::$db
protected

Definition at line 80 of file class.ilDclTable.php.

◆ $default_sort_field

string ilDclTable::$default_sort_field = "0"
protected

Definition at line 56 of file class.ilDclTable.php.

Referenced by cloneStructure(), getDefaultSortField(), and setDefaultSortField().

◆ $default_sort_field_order

string ilDclTable::$default_sort_field_order = 'asc'
protected

Default sort-order (asc|desc)

Definition at line 60 of file class.ilDclTable.php.

Referenced by getDefaultSortFieldOrder(), and setDefaultSortFieldOrder().

◆ $delete_by_owner

bool ilDclTable::$delete_by_owner = false
protected

Definition at line 47 of file class.ilDclTable.php.

Referenced by getDeleteByOwner(), and setDeleteByOwner().

◆ $delete_perm

bool ilDclTable::$delete_perm = false
protected

Definition at line 45 of file class.ilDclTable.php.

Referenced by getDeletePerm(), and setDeletePerm().

◆ $description

string ilDclTable::$description = ''
protected

Description for this table displayed above records.

Definition at line 64 of file class.ilDclTable.php.

Referenced by getDescription(), and setDescription().

◆ $edit_by_owner

bool ilDclTable::$edit_by_owner = false
protected

Definition at line 46 of file class.ilDclTable.php.

Referenced by getEditByOwner(), and setEditByOwner().

◆ $edit_perm

bool ilDclTable::$edit_perm = false
protected

Definition at line 44 of file class.ilDclTable.php.

Referenced by getEditPerm(), and setEditPerm().

◆ $export_enabled

bool ilDclTable::$export_enabled = false
protected

Definition at line 52 of file class.ilDclTable.php.

Referenced by getExportEnabled(), and setExportEnabled().

◆ $fields

◆ $http

ILIAS HTTP Services ilDclTable::$http
protected

Definition at line 77 of file class.ilDclTable.php.

◆ $id

int ilDclTable::$id = 0
protected

Definition at line 26 of file class.ilDclTable.php.

Referenced by _getTableIdByTitle(), doCreate(), and getId().

◆ $import_enabled

bool ilDclTable::$import_enabled = false
protected

Definition at line 54 of file class.ilDclTable.php.

Referenced by getImportEnabled(), and setImportEnabled().

◆ $is_visible

bool ilDclTable::$is_visible = false
protected

Definition at line 42 of file class.ilDclTable.php.

Referenced by getIsVisible(), and setIsVisible().

◆ $limit_end

string ilDclTable::$limit_end = ""
protected

Definition at line 51 of file class.ilDclTable.php.

Referenced by getLimitEnd(), and setLimitEnd().

◆ $limit_start

string ilDclTable::$limit_start = ""
protected

Definition at line 50 of file class.ilDclTable.php.

Referenced by getLimitStart(), and setLimitStart().

◆ $limited

bool ilDclTable::$limited = false
protected

Definition at line 49 of file class.ilDclTable.php.

Referenced by getLimited(), and setLimited().

◆ $obj

ilObjDataCollection ilDclTable::$obj = null
protected

Definition at line 28 of file class.ilDclTable.php.

Referenced by getCollectionObject().

◆ $objId

int ilDclTable::$objId = null
protected

Definition at line 27 of file class.ilDclTable.php.

Referenced by getObjId().

◆ $public_comments

bool ilDclTable::$public_comments = false
protected

True if users can add comments on each record of this table.

Definition at line 68 of file class.ilDclTable.php.

Referenced by getPublicCommentsEnabled(), and setPublicCommentsEnabled().

◆ $records

array ilDclTable::$records = []
protected

Definition at line 41 of file class.ilDclTable.php.

Referenced by deleteField(), getRecords(), and loadRecords().

◆ $refinery

ILIAS Refinery Factory ilDclTable::$refinery
protected

Definition at line 78 of file class.ilDclTable.php.

◆ $save_confirmation

bool ilDclTable::$save_confirmation = false
protected

Definition at line 48 of file class.ilDclTable.php.

Referenced by getSaveConfirmation(), and setSaveConfirmation().

◆ $show_invalid

bool ilDclTable::$show_invalid = false
protected

Definition at line 81 of file class.ilDclTable.php.

◆ $stdFields

array ilDclTable::$stdFields = []
protected

Definition at line 37 of file class.ilDclTable.php.

◆ $table_order

int ilDclTable::$table_order = 0
protected

Definition at line 53 of file class.ilDclTable.php.

Referenced by getOrder(), and setOrder().

◆ $title

string ilDclTable::$title = ""
protected

◆ $user

ilObjUser ilDclTable::$user
protected

Definition at line 79 of file class.ilDclTable.php.

◆ $view_own_records_perm

int ilDclTable::$view_own_records_perm = 0
protected

True if user can only view his/her own entries in the table.

Definition at line 72 of file class.ilDclTable.php.

Referenced by getViewOwnRecordsPerm().


The documentation for this class was generated from the following file: