ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
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...
 
 getNewTableviewOrder ()
 
 sortTableViews (?array $tableviews=null)
 
 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 1115 of file class.ilDclTable.php.

1115 : int
1116 {
1117 global $DIC;
1118 $ilDB = $DIC['ilDB'];
1119
1120 $result = $ilDB->query(
1121 'SELECT id FROM il_dcl_table WHERE title = ' . $ilDB->quote($title, 'text') . ' AND obj_id = '
1122 . $ilDB->quote($obj_id, 'integer')
1123 );
1124 $id = 0;
1125 while ($rec = $ilDB->fetchAssoc($result)) {
1126 $id = $rec['id'];
1127 }
1128
1129 return $id;
1130 }

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 1184 of file class.ilDclTable.php.

1184 : bool
1185 {
1186 global $DIC;
1187 $ilDB = $DIC['ilDB'];
1188 $result = $ilDB->query(
1189 'SELECT * FROM il_dcl_field WHERE table_id = ' . $ilDB->quote($obj_id, 'integer') . ' AND title = '
1190 . $ilDB->quote($title, 'text')
1191 );
1192
1193 return (bool) $ilDB->numRows($result);
1194 }

References $DIC, $ilDB, and $title.

Referenced by ilDclFieldEditGUI\checkInput().

+ Here is the caller graph for this function:

◆ _hasRecords()

ilDclTable::_hasRecords ( )

_hasRecords

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

1085 : bool
1086 {
1087 return count($this->getRecords()) > 0;
1088 }

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 1101 of file class.ilDclTable.php.

1101 : bool
1102 {
1103 global $DIC;
1104 $ilDB = $DIC['ilDB'];
1105
1106 $query = "SELECT * FROM il_dcl_table WHERE id = " . $table_id;
1107 $result = $ilDB->query($query);
1108
1109 return $result->numRows() != 0;
1110 }

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 1093 of file class.ilDclTable.php.

1093 : void
1094 {
1095 $this->all_fields[$field->getId()] = $field;
1096 }

References ilDclBaseFieldModel\getId().

+ Here is the call graph for this function:

◆ afterClone()

ilDclTable::afterClone ( )

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

1075 : void
1076 {
1077 foreach ($this->getFields() as $field) {
1078 $field->afterClone($this->getRecords());
1079 }
1080 }
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 785 of file class.ilDclTable.php.

785 : void
786 {
787 $fields = $this->getFields();
788 $this->sortByOrder($fields);
789 $count = 10;
790 $offset = 10;
791 foreach ($fields as $field) {
792 if (!is_null($field->getOrder())) {
793 $field->setOrder($count);
794 $count = $count + $offset;
795 $field->doUpdate();
796 }
797 }
798 }
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 712 of file class.ilDclTable.php.

712 : bool
713 {
714 if ($this->getLimited()) {
715 $from = null;
716 $to = null;
717 $now = new ilDateTime(date("Y-m-d H:i:s"), IL_CAL_DATE);
718
719 if ($this->getLimitStart() != "") {
720 $from = new ilDateTime($this->getLimitStart(), IL_CAL_DATE);
721 }
722 if ($this->getLimitEnd() != "") {
723 $to = new ilDateTime($this->getLimitEnd(), IL_CAL_DATE);
724 }
725
726 if ($from == null && $to == null) {
727 return true;
728 }
729 if ($from <= $now && $now <= $to) {
730 return true;
731 }
732 if ($from <= $now && $to == null) {
733 return true;
734 }
735 if ($from == null && $now <= $to) {
736 return true;
737 }
738
739 return ($from <= $now && $now <= $to);
740 }
741
742 return true;
743 }
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 1004 of file class.ilDclTable.php.

1004 : void
1005 {
1006 $this->setTitle($original->getTitle());
1007 $this->setDescription($original->getDescription());
1008 $this->setIsVisible($original->getIsVisible());
1009 $this->setEditByOwner($original->getEditByOwner());
1010 $this->setAddPerm($original->getAddPerm());
1011 $this->setEditPerm($original->getEditPerm());
1012 $this->setDeleteByOwner($original->getDeleteByOwner());
1013 $this->setSaveConfirmation($original->getSaveConfirmation());
1014 $this->setDeletePerm($original->getDeletePerm());
1015 $this->setLimited($original->getLimited());
1016 $this->setLimitStart($original->getLimitStart());
1017 $this->setLimitEnd($original->getLimitEnd());
1018 $this->setViewOwnRecordsPerm($original->getViewOwnRecordsPerm());
1019 $this->setExportEnabled($original->getExportEnabled());
1020 $this->setImportEnabled($original->getImportEnabled());
1023 $this->setOrder($original->getOrder());
1024
1025 $this->doCreate(true, false);
1026 // reset stdFields to get new for the created object
1027
1029 // Clone standard-fields
1030 $org_std_fields = $original->getStandardFields();
1031 foreach ($this->getStandardFields() as $element_key => $std_field) {
1032 $std_field->clone($org_std_fields[$element_key]);
1033 if ($std_field->getId() === $original->getDefaultSortField()) {
1034 $default_sort_field = $std_field->getId();
1035 }
1036 }
1037
1038 // Clone fields
1039 $new_fields = [];
1040 foreach ($original->getFields() as $orig_field) {
1041 if (!$orig_field->isStandardField()) {
1042 $class_name = get_class($orig_field);
1043 $new_field = new $class_name();
1044 $new_field->setTableId($this->getId());
1045 $new_field->cloneStructure((int) $orig_field->getId());
1046 $new_fields[$orig_field->getId()] = $new_field;
1047
1048 if ($orig_field->getId() === $original->getDefaultSortField()) {
1049 $default_sort_field = $new_field->getId();
1050 }
1051 }
1052 }
1053
1055 $this->doUpdate();
1056
1057 // Clone Records with recordfields
1058 foreach ($original->getRecords() as $orig_record) {
1059 $new_record = new ilDclBaseRecordModel();
1060 $new_record->setTableId($this->getId());
1061 $new_record->cloneStructure($orig_record->getId(), $new_fields);
1062 }
1063
1064 //clone tableviews (includes pageobjects)
1065 foreach ($original->getTableViews() as $orig_tableview) {
1066 $new_tableview = new ilDclTableView();
1067 $new_tableview->setTableId($this->getId());
1068 $new_tableview->cloneStructure($orig_tableview, $new_fields);
1069 }
1070
1071 // mandatory for all cloning functions
1072 ilDclCache::setCloneOf($original->getId(), $this->getId(), ilDclCache::TYPE_TABLE);
1073 }
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 989 of file class.ilDclTable.php.

989 : int
990 {
991 if (is_null($a->getOrder() == null) && is_null($b->getOrder() == null)) {
992 return 0;
993 }
994 if (is_null($a->getOrder())) {
995 return 1;
996 }
997 if (is_null($b->getOrder())) {
998 return -1;
999 }
1000
1001 return $a->getOrder() < $b->getOrder() ? -1 : 1;
1002 }
$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 }
static getFieldCache(int $field_id=0)

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

+ 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 707 of file class.ilDclTable.php.

707 : bool
708 {
709 return ($this->user->getId() == $record->getOwner());
710 }

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(), 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 821 of file class.ilDclTable.php.

821 : bool
822 {
823 return $this->add_perm;
824 }

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 397 of file class.ilDclTable.php.

397 : array
398 {
399 if (!$this->fields) {
400 $this->loadCustomFields();
401 }
402
403 return $this->fields;
404 }

References $fields, and loadCustomFields().

+ Here is the call graph for this function:

◆ getDefaultSortField()

ilDclTable::getDefaultSortField ( )

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

934 : string
935 {
937 }

References $default_sort_field.

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

+ Here is the caller graph for this function:

◆ getDefaultSortFieldOrder()

ilDclTable::getDefaultSortFieldOrder ( )

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

947 : string
948 {
950 }
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 852 of file class.ilDclTable.php.

852 : bool
853 {
855 }

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 834 of file class.ilDclTable.php.

834 : bool
835 {
836 return $this->delete_perm;
837 }

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 923 of file class.ilDclTable.php.

923 : string
924 {
925 return $this->description;
926 }
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 575 of file class.ilDclTable.php.

575 : array
576 {
577 $fields = $this->getRecordFields();
578 $editableFields = [];
579
580 foreach ($fields as $field) {
581 $tableview_id = $this->http->wrapper()->post()->retrieve(
582 'tableview_id',
583 $this->refinery->kindlyTo()->int()
584 );
585 if (!$field->getViewSetting($tableview_id)->isLocked($creation_mode)) {
586 $editableFields[] = $field;
587 }
588 }
589
590 return $editableFields;
591 }

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

+ Here is the call graph for this function:

◆ getEditByOwner()

ilDclTable::getEditByOwner ( )

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

847 : bool
848 {
850 }

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 873 of file class.ilDclTable.php.

873 : bool
874 {
875 return $this->edit_perm;
876 }

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 597 of file class.ilDclTable.php.

597 : array
598 {
599 $fields = $this->getFields();
600 $exportableFields = [];
601 foreach ($fields as $field) {
602 if ($field->getExportable()) {
603 $exportableFields[] = $field;
604 }
605 }
606
607 return $exportableFields;
608 }

References $fields, and getFields().

+ Here is the call graph for this function:

◆ getExportEnabled()

ilDclTable::getExportEnabled ( )

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

1137 : bool
1138 {
1139 return $this->export_enabled;
1140 }

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 338 of file class.ilDclTable.php.

339 {
340 $fields = $this->getFields();
341 $field = null;
342 foreach ($fields as $field_1) {
343 if ($field_1->getId() == $field_id) {
344 $field = $field_1;
345 }
346 }
347
348 return $field;
349 }

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 803 of file class.ilDclTable.php.

804 {
805 $return = null;
806 foreach ($this->getFields() as $field) {
807 if ($field->getTitle() == $title) {
808 $return = $field;
809 break;
810 }
811 }
812
813 return $return;
814 }

References $title, and getFields().

+ Here is the call graph for this function:

◆ getFieldIds()

ilDclTable::getFieldIds ( )

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

351 : array
352 {
353 $field_ids = [];
354 foreach ($this->getFields() as $field) {
355 if ($field->getId()) {
356 $field_ids[] = $field->getId();
357 }
358 }
359
360 return $field_ids;
361 }

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 453 of file class.ilDclTable.php.

453 : array
454 {
455 if ($this->all_fields == null) {
456 $this->reloadFields();
457 }
458
459 return $this->all_fields;
460 }
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 515 of file class.ilDclTable.php.

515 : array
516 {
517 $syntax_chars = array_merge(
518 array_map(static fn(Operators $function): string => $function->value, Operators::cases()),
519 array_map(static fn(Functions $function): string => $function->value, Functions::cases()),
520 ['(', ')', ',']
521 );
522 foreach ($this->getFields() as $field) {
523 if (in_array($field->getDatatypeId(), ilDclFormulaFieldModel::SUPPORTED_FIELDS)) {
524 foreach ($syntax_chars as $element) {
525 if (str_contains($field->getTitle(), $element)) {
526 continue 2;
527 }
528 }
529 $return[] = $field;
530 }
531 }
532
533 return $return;
534 }

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 503 of file class.ilDclTable.php.

503 : ?int
504 {
505 $array = $this->getVisibleTableViews($user_id, $with_detailed_view);
506 $tableview = array_shift($array);
507
508 return $tableview?->getId();
509 }
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(), getNewTableviewOrder(), getTableViews(), loadCustomFields(), ilDclTableEditGUI\save(), and ilDclTableEditGUI\setAsDefault().

+ Here is the caller graph for this function:

◆ getImportEnabled()

ilDclTable::getImportEnabled ( )

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

1174 : bool
1175 {
1176 return $this->import_enabled;
1177 }

References $import_enabled.

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

+ Here is the caller graph for this function:

◆ getIsVisible()

ilDclTable::getIsVisible ( )

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

913 : bool
914 {
915 return $this->is_visible;
916 }

References $is_visible.

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

+ Here is the caller graph for this function:

◆ getLimited()

ilDclTable::getLimited ( )

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

883 : bool
884 {
885 return $this->limited;
886 }

References $limited.

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

+ Here is the caller graph for this function:

◆ getLimitEnd()

ilDclTable::getLimitEnd ( )

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

893 : string
894 {
895 return $this->limit_end;
896 }

References $limit_end.

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

+ Here is the caller graph for this function:

◆ getLimitStart()

ilDclTable::getLimitStart ( )

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

903 : string
904 {
905 return $this->limit_start;
906 }
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 410 of file class.ilDclTable.php.

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

References $fields, and getFields().

+ Here is the call graph for this function:

◆ getNewTableviewOrder()

ilDclTable::getNewTableviewOrder ( )
Returns
int

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

426 : int
427 {
428 return (ilDclTableView::getCountForTableId($this->getId()) + 1) * 10;
429 }
static getCountForTableId(int $table_id)

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

+ 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 1142 of file class.ilDclTable.php.

1142 : int
1143 {
1144 if (!$this->table_order) {
1145 $this->updateOrder();
1146 }
1147
1148 return $this->table_order;
1149 }

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 1205 of file class.ilDclTable.php.

1212 : array {
1213 $sort_field = $this->getFieldByTitle($sort);
1214 $direction = strtolower($direction);
1215 $direction = (in_array($direction, ['desc', 'asc'])) ? $direction : 'asc';
1216
1217 // Sorting by a status from an ILIAS Ref field. This column is added dynamically to the table, there is no field model
1218 $sort_by_status = false;
1219 if (substr($sort, 0, 8) == '_status_') {
1220 $sort_by_status = true;
1221 $sort_field = $this->getFieldByTitle(substr($sort, 8));
1222 }
1223
1224 if (is_null($sort_field)) {
1225 $sort_field = $this->getField('id');
1226 }
1227
1228 $sort_query_object = $sort_field->getRecordQuerySortObject($direction, $sort_by_status);
1229
1230 $select_str = ($sort_query_object != null) ? $sort_query_object->getSelectStatement() : '';
1231 $join_str = ($sort_query_object != null) ? $sort_query_object->getJoinStatement() : '';
1232 $where_str = ($sort_query_object != null) ? $sort_query_object->getWhereStatement() : '';
1233 $order_str = ($sort_query_object != null) ? $sort_query_object->getOrderStatement() : '';
1234 $group_str = ($sort_query_object != null) ? $sort_query_object->getGroupStatement() : '';
1235
1236 if (count($filter)) {
1237 foreach ($filter as $key => $filter_value) {
1238 $filter_field_id = substr($key, 7);
1239 $filter_field = $this->getField($filter_field_id);
1240 $filter_record_query_object = $filter_field->getRecordQueryFilterObject($filter_value, $sort_field);
1241
1242 if ($filter_record_query_object) {
1243 $select_str .= $filter_record_query_object->getSelectStatement();
1244 $join_str .= $filter_record_query_object->getJoinStatement();
1245 $where_str .= $filter_record_query_object->getWhereStatement();
1246 $group_str .= $filter_record_query_object->getGroupStatement();
1247 }
1248 }
1249 }
1250
1251 // Build the query string
1252 $sql = "SELECT DISTINCT record.id, record.owner";
1253 if ($select_str) {
1254 $sql .= ', ';
1255 }
1256
1257 $as = ' AS ';
1258
1259 $sql .= rtrim($select_str, ',') . " FROM il_dcl_record $as record ";
1260 $sql .= $join_str;
1261 $sql .= " WHERE record.table_id = " . $this->db->quote($this->getId(), 'integer');
1262
1263 if (strlen($where_str) > 0) {
1264 $sql .= $where_str;
1265 }
1266
1267 if (strlen($group_str) > 0) {
1268 $sql .= " GROUP BY " . $group_str;
1269 }
1270
1271 if (strlen($order_str) > 0) {
1272 $sql .= " ORDER BY " . $order_str;
1273 }
1274
1275 $set = $this->db->query($sql);
1276 $total_record_ids = [];
1277
1279 while ($rec = $this->db->fetchAssoc($set)) {
1280 // Quick check if the current user is allowed to view the record
1281 if (!$is_allowed_to_view && ($this->getViewOwnRecordsPerm() && $this->user->getId() != $rec['owner'])) {
1282 continue;
1283 }
1284 $total_record_ids[] = $rec['id'];
1285 }
1286 // Save record-ids in session to enable prev/next links in detail view
1287 ilSession::set('dcl_table_id', $this->getId());
1288 ilSession::set('dcl_record_ids', $total_record_ids);
1289
1290 if ($sort_query_object != null) {
1291 $total_record_ids = $sort_query_object->applyCustomSorting($sort_field, $total_record_ids, $direction);
1292 }
1293
1294 if ($sort === 'n_comments') {
1295 global $DIC;
1296 $comments_nr = [];
1297 foreach ($total_record_ids as $id) {
1298 $comments_nr[$id] = $DIC->notes()->domain()->getNrOfCommentsForContext($DIC->notes()->data()->context($this->getObjId(), $id, 'dcl'));
1299 }
1300 uasort($comments_nr, static fn($a, $b) => ($direction === 'asc' ? 1 : -1) * ($a <=> $b));
1301 $total_record_ids = array_keys($comments_nr);
1302 }
1303
1304 // Now slice the array to load only the needed records in memory
1305 $record_ids = array_slice($total_record_ids, $offset, $limit);
1306
1307 $records = [];
1308 foreach ($record_ids as $id) {
1310 }
1311
1312 return ['records' => $records, 'total' => count($total_record_ids)];
1313 }
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=0)
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 957 of file class.ilDclTable.php.

957 : bool
958 {
960 }
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 564 of file class.ilDclTable.php.

564 : array
565 {
566 $this->loadCustomFields();
567
568 return $this->fields;
569 }

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 972 of file class.ilDclTable.php.

972 : bool
973 {
975 }
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[] all tableviews ordered by tableview_order

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

476 : array
477 {
479 }
static getAllForTableId(int $table_id)

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

Referenced by cloneStructure(), getVisibleTableViews(), and sortTableViews().

+ 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(), ilDclTableEditGUI\initForm(), and ilDclTableEditGUI\save().

+ Here is the caller graph for this function:

◆ getViewOwnRecordsPerm()

ilDclTable::getViewOwnRecordsPerm ( )

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

967 : bool
968 {
969 return (bool) $this->view_own_records_perm;
970 }
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 484 of file class.ilDclTable.php.

484 : array
485 {
486 if (ilObjDataCollectionAccess::hasWriteAccess($this->getCollectionObject()->getRefId(), $user_id) && !$with_active_detailedview) {
487 return $this->getTableViews();
488 }
489
490 $visible_views = [];
491 foreach ($this->getTableViews() as $tableView) {
493 $page = new ilDclDetailedViewDefinitionGUI($tableView->getId());
494 if (!$with_active_detailedview || $page->getPageObject()->isActive()) {
495 $visible_views[] = $tableView;
496 }
497 }
498 }
499
500 return $visible_views;
501 }
@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 982 of file class.ilDclTable.php.

982 : bool
983 {
984 $this->loadCustomFields();
985
986 return count($this->fields) > 0;
987 }

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 646 of file class.ilDclTable.php.

646 : bool
647 {
649 return false;
650 }
652 return true;
653 }
655 return false;
656 }
657 if (!$this->checkLimit()) {
658 return false;
659 }
660 if ($this->getDeletePerm() && !$this->getDeleteByOwner()) {
661 return true;
662 }
663 if ($this->getDeleteByOwner()) {
664 return $this->doesRecordBelongToUser($record);
665 }
666
667 return false;
668 }
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 674 of file class.ilDclTable.php.

674 : bool
675 {
677 return false;
678 }
679
682 }

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 615 of file class.ilDclTable.php.

615 : bool
616 {
618 return false;
619 }
621 return true;
622 }
624 return false;
625 }
626 if ($this->getEditByOwner()) {
627 return $this->doesRecordBelongToUser($record);
628 }
629 if (!$this->checkLimit()) {
630 return false;
631 }
633 return true;
634 }
635 if ($this->getEditPerm() && !$this->getEditByOwner()) {
636 return true;
637 }
638
639 return false;
640 }

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 684 of file class.ilDclTable.php.

684 : bool
685 {
687 return false;
688 }
690 $ref_id,
693 return true;
694 }
696 // Check for view only own entries setting
697 if ($this->getViewOwnRecordsPerm() && ($user_id ?: $this->user->getId()) != $record->getOwner()) {
698 return false;
699 }
700
701 return true;
702 }
703
704 return false;
705 }
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 363 of file class.ilDclTable.php.

363 : void
364 {
365 if (!$this->fields) {
366 $query
367 = "SELECT DISTINCT il_dcl_field.*, il_dcl_tfield_set.field_order
368 FROM il_dcl_field
369 INNER JOIN il_dcl_tfield_set
370 ON ( il_dcl_tfield_set.field NOT IN ('owner',
371 'last_update',
372 'last_edit_by',
373 'id',
374 'create_date')
375 AND il_dcl_tfield_set.table_id = il_dcl_field.table_id
376 AND il_dcl_tfield_set.field = " . $this->db->cast("il_dcl_field.id", "text") . ")
377 WHERE il_dcl_field.table_id = %s
378 ORDER BY il_dcl_tfield_set.field_order ASC";
379
380 $set = $this->db->queryF($query, ['integer'], [$this->getId()]);
381 $fields = [];
382 while ($rec = $this->db->fetchAssoc($set)) {
384 if ($this->show_invalid || in_array($field->getDatatypeId(), array_keys(ilDclDatatype::getAllDatatype()))) {
385 $fields[] = $field;
386 }
387 }
388 $this->fields = $fields;
389
391 }
392 }
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 462 of file class.ilDclTable.php.

462 : void
463 {
464 $this->loadCustomFields();
465 $this->stdFields = $this->getStandardFields();
466 $fields = array_merge($this->fields, $this->stdFields);
467
468 $this->sortByOrder($fields);
469
470 $this->all_fields = $fields;
471 }

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 816 of file class.ilDclTable.php.

816 : void
817 {
818 $this->add_perm = $add_perm;
819 }

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 928 of file class.ilDclTable.php.

928 : void
929 {
930 $default_sort_field = ($default_sort_field) ?: ""; // Change null or empty strings to zero
931 $this->default_sort_field = $default_sort_field;
932 }

References $default_sort_field.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setDefaultSortFieldOrder()

ilDclTable::setDefaultSortFieldOrder ( string  $default_sort_field_order)

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

939 : void
940 {
941 if (!in_array($default_sort_field_order, ['asc', 'desc'])) {
943 }
944 $this->default_sort_field_order = $default_sort_field_order;
945 }

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 857 of file class.ilDclTable.php.

857 : void
858 {
859 $this->delete_by_owner = $delete_by_owner;
860 if ($delete_by_owner) {
861 $this->setDeletePerm(true);
862 }
863 }

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 826 of file class.ilDclTable.php.

826 : void
827 {
828 $this->delete_perm = $delete_perm;
829 if (!$delete_perm) {
830 $this->setDeleteByOwner(false);
831 }
832 }

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 918 of file class.ilDclTable.php.

918 : void
919 {
920 $this->description = $description;
921 }

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 839 of file class.ilDclTable.php.

839 : void
840 {
841 $this->edit_by_owner = $edit_by_owner;
842 if ($edit_by_owner) {
843 $this->setEditPerm(true);
844 }
845 }

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 865 of file class.ilDclTable.php.

865 : void
866 {
867 $this->edit_perm = $edit_perm;
868 if (!$edit_perm) {
869 $this->setEditByOwner(false);
870 }
871 }

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 1132 of file class.ilDclTable.php.

1132 : void
1133 {
1134 $this->export_enabled = $export_enabled;
1135 }

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 1169 of file class.ilDclTable.php.

1169 : void
1170 {
1171 $this->import_enabled = $import_enabled;
1172 }

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 908 of file class.ilDclTable.php.

908 : void
909 {
910 $this->is_visible = $is_visible;
911 }

References $is_visible.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setLimited()

ilDclTable::setLimited ( bool  $limited)

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

878 : void
879 {
880 $this->limited = $limited;
881 }

References $limited.

Referenced by cloneStructure(), and doRead().

+ Here is the caller graph for this function:

◆ setLimitEnd()

ilDclTable::setLimitEnd ( string  $limit_end)

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

888 : void
889 {
890 $this->limit_end = $limit_end;
891 }

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 898 of file class.ilDclTable.php.

898 : void
899 {
900 $this->limit_start = $limit_start;
901 }

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 1164 of file class.ilDclTable.php.

1164 : void
1165 {
1166 $this->table_order = $table_order;
1167 }

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 952 of file class.ilDclTable.php.

952 : void
953 {
954 $this->public_comments = $public_comments;
955 }

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 977 of file class.ilDclTable.php.

977 : void
978 {
979 $this->save_confirmation = $save_confirmation;
980 }

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 962 of file class.ilDclTable.php.

962 : void
963 {
964 $this->view_own_records_perm = (int) $view_own_perm;
965 }

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 1315 of file class.ilDclTable.php.

1315 : void
1316 {
1317 $this->show_invalid = $value;
1318 }

◆ sortByOrder()

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

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

774 : void
775 {
776 // php-bug: https://bugs.php.net/bug.php?id=50688
777 // fixed in php 7 but for now we need the @ a workaround
778 usort($array, [$this, "compareOrder"]);
779 }

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 759 of file class.ilDclTable.php.

759 : void
760 {
761 $this->sortByOrder($fields);
762 //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.
763 $named = [];
764 foreach ($fields as $field) {
765 $named[$field->getId()] = $field;
766 }
767
768 $fields = $named;
769 }

References $fields, and sortByOrder().

+ Here is the call graph for this function:

◆ sortTableViews()

ilDclTable::sortTableViews ( ?array  $tableviews = null)
Parameters
ilDclTableView[]$tableviews

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

434 : void
435 {
436 if ($tableviews == null) {
437 $tableviews = $this->getTableViews();
438 }
439
440 $order = 10;
441 foreach ($tableviews as $tableview) {
442 $tableview->setTableviewOrder($order);
443 $tableview->update();
444 $order += 10;
445 }
446 }

References getTableViews().

+ Here is the call graph for this function:

◆ updateFields()

ilDclTable::updateFields ( )

Update fields.

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

748 : void
749 {
750 foreach ($this->getFields() as $field) {
751 $field->doUpdate();
752 }
753 }

References getFields().

+ Here is the call graph for this function:

◆ updateOrder()

ilDclTable::updateOrder ( )

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

1151 : void
1152 {
1153 $result = $this->db->query('SELECT MAX(table_order) AS table_order FROM il_dcl_table WHERE obj_id = ' . $this->db->quote(
1154 $this->getCollectionObject()->getId(),
1155 'integer'
1156 ));
1157 $this->table_order = $this->db->fetchObject($result)->table_order + 10;
1158 $this->db->query('UPDATE il_dcl_table SET table_order = ' . $this->db->quote(
1159 $this->table_order,
1160 'integer'
1161 ) . ' WHERE id = ' . $this->db->quote($this->getId(), 'integer'));
1162 }

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: