ILIAS  release_4-4 Revision
All Data Structures Namespaces Files Functions Variables Modules Pages
ilDataCollectionTable Class Reference

Class ilDataCollectionField. More...

+ Collaboration diagram for ilDataCollectionTable:

Public Member Functions

 __construct ($a_id=0)
 Constructor. More...
 
 doRead ()
 Read table. More...
 
 doDelete ($delete_main_table=false)
 doDelete Attention this does not delete the maintable of it's the maintabla of the collection. More...
 
 doCreate ()
 Create new table. More...
 
 doUpdate ()
 
 setId ($a_id)
 Set table id. More...
 
 getId ()
 Get table id. More...
 
 setObjId ($a_id)
 Set object id. More...
 
 getObjId ()
 Get object id. More...
 
 setTitle ($a_title)
 Set title. More...
 
 getTitle ()
 Get title. More...
 
 getCollectionObject ()
 getCollectionObject More...
 
 getRecords ()
 
 getRecordsByFilter (array $filter=array())
 getRecordsByFilter More...
 
 getAll ($a_id)
 get all tables of a Data Collection Object More...
 
 deleteField ($field_id)
 
 getField ($field_id)
 
 getFieldIds ()
 
 getNewOrder ()
 getNewOrder More...
 
 getFields ()
 Returns all fields of this table including the standard fields. More...
 
 getStandardFields ()
 Returns the fields all datacollections have by default. More...
 
 getRecordFields ()
 Returns all fields of this table which are NOT standard fields. More...
 
 getVisibleFields ()
 Returns all fields of this table who have set their visibility to true, including standard fields. More...
 
 getEditableFields ()
 
 getFilterableFields ()
 getFilterableFields Returns all fields of this table who have set their filterable to true, including standard fields. More...
 
 getExportableFields ()
 Return all the fields that are marked as exportable. More...
 
 hasPermissionToFields ($ref_id)
 
 hasPermissionToAddTable ($ref_id)
 
 hasPermissionToAddRecord ($ref)
 
 hasPermissionToEditRecord ($ref, $record)
 
 hasPermissionToDeleteRecord ($ref, $record)
 
 updateFields ()
 
 sortFields (&$fields)
 sortFields More...
 
 buildOrderFields ()
 buildOrderFields orders the fields. More...
 
 getFieldByTitle ($name)
 
 setAddPerm ($add_perm)
 
 getAddPerm ()
 
 setDeletePerm ($delete_perm)
 
 getDeletePerm ()
 
 setEditByOwner ($edit_by_owner)
 
 getEditByOwner ()
 
 setEditPerm ($edit_perm)
 
 getEditPerm ()
 
 setLimited ($limited)
 
 getLimited ()
 
 setLimitEnd ($limit_end)
 
 getLimitEnd ()
 
 setLimitStart ($limit_start)
 
 getLimitStart ()
 
 setIsVisible ($is_visible)
 
 getIsVisible ()
 
 setDescription ($description)
 
 getDescription ()
 
 hasCustomFields ()
 hasCustomFields More...
 
 compareOrder ($a, $b)
 
 cloneStructure ($original_id)
 
 _hasRecords ()
 _hasRecords More...
 
 addField ($field)
 
 buildTableAsArray ()
 
 setExportEnabled ($export_enabled)
 
 getExportEnabled ()
 
 getPartialRecords ($sort, $direction, $limit, $offset, array $filter=array())
 Return only the needed subset of record objects for the table, according to sorting, paging and filters. More...
 

Static Public Member Functions

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

Protected Attributes

 $id
 
 $objId
 
 $obj
 
 $title
 
 $export_enabled
 
 $description
 

Private Member Functions

 loadObj ()
 
 loadRecords ()
 
 loadFields ()
 
 checkEditByOwner ($record)
 
 checkLimit ()
 
 sortByOrder (&$array)
 

Private Attributes

 $fields
 
 $stdFields
 
 $records
 
 $is_visible
 
 $add_perm
 
 $edit_perm
 
 $delete_perm
 
 $edit_by_owner
 
 $limited
 
 $limit_start
 
 $limit_end
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilDataCollectionTable::__construct (   $a_id = 0)

Constructor.

public

Parameters
integerfiel_id

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

References doRead().

78  {
79  if ($a_id != 0) {
80  $this->id = $a_id;
81  $this->doRead();
82  }
83  }
+ Here is the call graph for this function:

Member Function Documentation

◆ _getTableIdByTitle()

static ilDataCollectionTable::_getTableIdByTitle (   $title,
  $obj_id 
)
static
Parameters
$titleTitle of table
$obj_idDataCollection object ID where the table belongs to
Returns
int

Definition at line 991 of file class.ilDataCollectionTable.php.

References $id, $result, and $title.

Referenced by ilObjDataCollection\cloneStructure().

991  {
992  global $ilDB;
993  $result = $ilDB->query('SELECT id FROM il_dcl_table WHERE title = ' . $ilDB->quote($title, 'text') . ' AND obj_id = '
994  . $ilDB->quote($obj_id, 'integer'));
995  $id = 0;
996  while ($rec = $ilDB->fetchAssoc($result)) {
997  $id = $rec['id'];
998  }
999 
1000  return $id;
1001  }
$result
+ Here is the caller graph for this function:

◆ _hasFieldByTitle()

static ilDataCollectionTable::_hasFieldByTitle (   $title,
  $obj_id 
)
static

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

Parameters
$titleTitle of field
$obj_idObj-ID of the table
Returns
bool

Definition at line 1038 of file class.ilDataCollectionTable.php.

References $result, and $title.

Referenced by ilDataCollectionFieldEditGUI\checkInput().

1038  {
1039  global $ilDB;
1040  $result = $ilDB->query('SELECT * FROM il_dcl_field WHERE table_id = ' . $ilDB->quote($obj_id, 'integer') . ' AND title = '
1041  . $ilDB->quote($title, 'text'));
1042 
1043  return ($ilDB->numRows($result)) ? true : false;
1044  }
$result
+ Here is the caller graph for this function:

◆ _hasRecords()

ilDataCollectionTable::_hasRecords ( )

_hasRecords

Returns
boolean

Definition at line 958 of file class.ilDataCollectionTable.php.

References getRecords().

958  {
959  return (count($this->getRecords()) > 0) ? true : false;
960  }
+ Here is the call graph for this function:

◆ _tableExists()

static ilDataCollectionTable::_tableExists (   $table_id)
static
Parameters
$table_idint
Returns
bool returns true iff there exists a table with id $table_id

Definition at line 976 of file class.ilDataCollectionTable.php.

References $query, and $result.

Referenced by ilDataCollectionRecord\doCreate(), and ilDataCollectionField\doCreate().

976  {
977  global $ilDB;
978  $query = "SELECT * FROM il_dcl_table WHERE id = " . $table_id;
979  $result = $ilDB->query($query);
980 
981  return $result->numRows() != 0;
982  }
$result
+ Here is the caller graph for this function:

◆ addField()

ilDataCollectionTable::addField (   $field)
Parameters
$fieldilDataCollectionField add an already created field for eg. ordering.

Definition at line 966 of file class.ilDataCollectionTable.php.

References fields.

966  {
967  $this->fields[$field->getId()] = $field;
968  }
$errors fields
Definition: imgupload.php:47

◆ buildOrderFields()

ilDataCollectionTable::buildOrderFields ( )

buildOrderFields orders the fields.

Definition at line 713 of file class.ilDataCollectionTable.php.

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

Referenced by doCreate().

713  {
714  $fields = $this->getFields();
715 
716  $this->sortByOrder($fields);
717 
718  $count = 10;
719  $offset = 10;
720 
721  foreach ($fields as $field) {
722  if (! is_null($field->getOrder())) {
723  $field->setOrder($count);
724  $count = $count + $offset;
725  $field->doUpdate();
726  }
727  }
728  }
getFields()
Returns all fields of this table including the standard fields.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildTableAsArray()

ilDataCollectionTable::buildTableAsArray ( )

Definition at line 1004 of file class.ilDataCollectionTable.php.

References $fields, $query, and getVisibleFields().

1004  {
1005  global $ilDB;
1006  $fields = $this->getVisibleFields();
1007  $table = array();
1008  $query = " SELECT stloc.value AS val rec_field AS FROM il_dcl_stloc1_value stloc
1009  INNER JOIN il_dcl_record_field rec_field ON rec_field.field_id = 2
1010  WHERE stloc.record_field_id = rec_field.id";
1011  }
getVisibleFields()
Returns all fields of this table who have set their visibility to true, including standard fields...
+ Here is the call graph for this function:

◆ checkEditByOwner()

ilDataCollectionTable::checkEditByOwner (   $record)
private

Definition at line 646 of file class.ilDataCollectionTable.php.

References $ilUser, and getEditByOwner().

Referenced by hasPermissionToDeleteRecord(), and hasPermissionToEditRecord().

646  {
647  global $ilUser;
648 
649  if ($this->getEditByOwner() && $ilUser->getId() != $record->getOwner()) {
650  return false;
651  }
652 
653  return true;
654  }
global $ilUser
Definition: imgupload.php:15
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkLimit()

ilDataCollectionTable::checkLimit ( )
private

Definition at line 660 of file class.ilDataCollectionTable.php.

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

Referenced by hasPermissionToAddRecord(), hasPermissionToDeleteRecord(), and hasPermissionToEditRecord().

660  {
661  if ($this->getLimited()) {
662  $now = new ilDateTime(date("Y-m-d H:i:s"), IL_CAL_DATE);
663  $from = new ilDateTime($this->getLimitStart(), IL_CAL_DATE);
664  $to = new ilDateTime($this->getLimitEnd(), IL_CAL_DATE);
665  return ($from <= $now && $now <= $to);
666  }
667 
668  return true;
669  }
Date and time handling
const IL_CAL_DATE
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cloneStructure()

ilDataCollectionTable::cloneStructure (   $original_id)

Definition at line 923 of file class.ilDataCollectionTable.php.

References doCreate(), getId(), ilDataCollectionRecordViewViewdefinition\getIdByTableId(), ilDataCollectionCache\getTableCache(), setAddPerm(), setDeletePerm(), setEditByOwner(), setEditPerm(), setLimited(), setLimitEnd(), setLimitStart(), and setTitle().

923  {
924  $original = ilDataCollectionCache::getTableCache($original_id);
925  $this->setEditByOwner($original->getEditByOwner());
926  $this->setAddPerm($original->getAddPerm());
927  $this->setEditPerm($original->getEditPerm());
928  $this->setDeletePerm($original->getDeletePerm());
929  $this->setLimited($original->getLimited());
930  $this->setLimitStart($original->getLimitStart());
931  $this->setLimitEnd($original->getLimitEnd());
932  $this->setTitle($original->getTitle());
933  $this->doCreate();
934 
935  //clone fields.
936  foreach ($original->getRecordFields() as $field) {
937  $new_field = new ilDataCollectionField();
938  $new_field->setTableId($this->getId());
939  $new_field->cloneStructure($field->getId());
940  }
941 
942  if ($old_view_id = ilDataCollectionRecordViewViewdefinition::getIdByTableId($original_id)) {
943  $old_view = new ilDataCollectionRecordViewViewdefinition($old_view_id);
944  $old_view->setTableId($original_id);
946  $viewdef->setTableId($this->id);
947  $viewdef->setXMLContent($old_view->getXMLContent(false));
948  $viewdef->create();
949  }
950  }
static getIdByTableId($a_table_id)
Get view definition id by table id.
Class ilDataCollectionField.
+ Here is the call graph for this function:

◆ compareOrder()

ilDataCollectionTable::compareOrder (   $a,
  $b 
)

Definition at line 905 of file class.ilDataCollectionTable.php.

905  {
906  if (is_null($a->getOrder() == NULL) && is_null($b->getOrder() == NULL)) {
907  return 0;
908  }
909  if (is_null($a->getOrder())) {
910  return 1;
911  }
912  if (is_null($b->getOrder())) {
913  return - 1;
914  }
915 
916  return $a->getOrder() < $b->getOrder() ? - 1 : 1;
917  }

◆ deleteField()

ilDataCollectionTable::deleteField (   $field_id)

Definition at line 400 of file class.ilDataCollectionTable.php.

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

400  {
401  $field = ilDataCollectionCache::getFieldCache($field_id);
402  $records = $this->getRecords();
403 
404  foreach ($records as $record) {
405  $record->deleteField($field_id);
406  }
407 
408  $field->doDelete();
409  }
+ Here is the call graph for this function:

◆ doCreate()

ilDataCollectionTable::doCreate ( )

Create new table.

Definition at line 160 of file class.ilDataCollectionTable.php.

References $id, $query, buildOrderFields(), ilDataCollectionField\EDIT_VIEW, ilDataCollectionField\EXPORTABLE_VIEW, ilDataCollectionField\FILTER_VIEW, getAddPerm(), getDeletePerm(), getDescription(), getEditByOwner(), getEditPerm(), getExportEnabled(), getId(), getIsVisible(), getLimited(), getLimitEnd(), getLimitStart(), getObjId(), getTitle(), setId(), and ilDataCollectionField\VIEW_VIEW.

Referenced by cloneStructure().

160  {
161  global $ilDB;
162 
163  $id = $ilDB->nextId("il_dcl_table");
164  $this->setId($id);
165  $query = "INSERT INTO il_dcl_table (" . "id" . ", obj_id" . ", title" . ", add_perm" . ", edit_perm" . ", delete_perm" . ", edit_by_owner"
166  . ", limited" . ", limit_start" . ", limit_end" . ", is_visible" . ", export_enabled" . ", description" . " ) VALUES ("
167  . $ilDB->quote($this->getId(), "integer") . "," . $ilDB->quote($this->getObjId(), "integer") . ","
168  . $ilDB->quote($this->getTitle(), "text") . "," . $ilDB->quote($this->getAddPerm() ? 1 : 0, "integer") . ","
169  . $ilDB->quote($this->getEditPerm() ? 1 : 0, "integer") . "," . $ilDB->quote($this->getDeletePerm() ? 1 : 0, "integer") . ","
170  . $ilDB->quote($this->getEditByOwner() ? 1 : 0, "integer") . "," . $ilDB->quote($this->getLimited() ? 1 : 0, "integer") . ","
171  . $ilDB->quote($this->getLimitStart(), "timestamp") . "," . $ilDB->quote($this->getLimitEnd(), "timestamp") . ","
172  . $ilDB->quote($this->getIsVisible() ? 1 : 0, "integer") . "," . $ilDB->quote($this->getExportEnabled() ? 1 : 0, "integer") . ","
173  . $ilDB->quote($this->getDescription(), "text") . ")";
174  $ilDB->manipulate($query);
175 
176  //add view definition
177  $view_id = $ilDB->nextId("il_dcl_view");
178  $query = "INSERT INTO il_dcl_view (id, table_id, type, formtype) VALUES (" . $ilDB->quote($view_id, "integer") . ", "
179  . $ilDB->quote($this->id, "integer") . ", " . $ilDB->quote(ilDataCollectionField::VIEW_VIEW, "integer") . ", "
180  . $ilDB->quote(1, "integer") . ")";
181  $ilDB->manipulate($query);
182 
183  //add edit definition
184  $view_id = $ilDB->nextId("il_dcl_view");
185  $query = "INSERT INTO il_dcl_view (id, table_id, type, formtype) VALUES (" . $ilDB->quote($view_id, "integer") . ", "
186  . $ilDB->quote($this->id, "integer") . ", " . $ilDB->quote(ilDataCollectionField::EDIT_VIEW, "integer") . ", "
187  . $ilDB->quote(1, "integer") . ")";
188  $ilDB->manipulate($query);
189 
190  //add filter definition
191  $view_id = $ilDB->nextId("il_dcl_view");
192  $query = "INSERT INTO il_dcl_view (id, table_id, type, formtype) VALUES (" . $ilDB->quote($view_id, "integer") . ", "
193  . $ilDB->quote($this->id, "integer") . ", " . $ilDB->quote(ilDataCollectionField::FILTER_VIEW, "integer") . ", "
194  . $ilDB->quote(1, "integer") . ")";
195  $ilDB->manipulate($query);
196 
197  //add filter definition
198  $view_id = $ilDB->nextId("il_dcl_view");
199  $query = "INSERT INTO il_dcl_view (id, table_id, type, formtype) VALUES (" . $ilDB->quote($view_id, "integer") . ", "
200  . $ilDB->quote($this->id, "integer") . ", " . $ilDB->quote(ilDataCollectionField::EXPORTABLE_VIEW, "integer") . ", "
201  . $ilDB->quote(1, "integer") . ")";
202  $ilDB->manipulate($query);
203 
204  $this->buildOrderFields();
205  }
buildOrderFields()
buildOrderFields orders the fields.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ doDelete()

ilDataCollectionTable::doDelete (   $delete_main_table = false)

doDelete Attention this does not delete the maintable of it's the maintabla of the collection.

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

Parameters
boolean$delete_main_tabletrue to delete table anyway

Definition at line 118 of file class.ilDataCollectionTable.php.

References $query, $row, getCollectionObject(), getId(), getRecordFields(), and getRecords().

118  {
119  global $ilDB;
120 
121  foreach ($this->getRecords() as $record) {
122  $record->doDelete();
123  }
124 
125  foreach ($this->getRecordFields() as $field) {
126  $field->doDelete();
127  }
128 
129  // SW: Fix #12794 und #11405
130  // Problem is that when the DC object gets deleted, $this::getCollectionObject() tries to load the DC but it's not in the DB anymore
131  // If $delete_main_table is true, avoid getting the collection object
132  $exec_delete = false;
133  if ($delete_main_table) {
134  $exec_delete = true;
135  }
136  if (! $exec_delete && $this->getCollectionObject()->getMainTableId() != $this->getId()) {
137  $exec_delete = true;
138  }
139  if ($exec_delete) {
140  $query = "DELETE FROM il_dcl_table WHERE id = " . $ilDB->quote($this->getId(), "integer");
141  $ilDB->manipulate($query);
142 
143  // Delete also view definitions
144  $set = $ilDB->query('SELECT * FROM il_dcl_view WHERE table_id = ' . $ilDB->quote($this->getId(), 'integer'));
145  $view_ids = array();
146  while ($row = $ilDB->fetchObject($set)) {
147  $view_ids[] = $row->id;
148  }
149  if (count($view_ids)) {
150  $ilDB->manipulate("DELETE FROM il_dcl_viewdefinition WHERE view_id IN (" . implode(',', $view_ids) . ")");
151  }
152  $ilDB->manipulate("DELETE FROM il_dcl_view WHERE table_id = " . $ilDB->quote($this->getId(), 'integer'));
153  }
154  }
getRecordFields()
Returns all fields of this table which are NOT standard fields.
getCollectionObject()
getCollectionObject
+ Here is the call graph for this function:

◆ doRead()

ilDataCollectionTable::doRead ( )

Read table.

Definition at line 89 of file class.ilDataCollectionTable.php.

References $query, getId(), setAddPerm(), setDeletePerm(), setDescription(), setEditByOwner(), setEditPerm(), setExportEnabled(), setIsVisible(), setLimited(), setLimitEnd(), setLimitStart(), setObjId(), and setTitle().

Referenced by __construct().

89  {
90  global $ilDB;
91 
92  $query = "SELECT * FROM il_dcl_table WHERE id = " . $ilDB->quote($this->getId(), "integer");
93  $set = $ilDB->query($query);
94  $rec = $ilDB->fetchAssoc($set);
95 
96  $this->setObjId($rec["obj_id"]);
97  $this->setTitle($rec["title"]);
98  $this->setAddPerm($rec["add_perm"]);
99  $this->setEditPerm($rec["edit_perm"]);
100  $this->setDeletePerm($rec["delete_perm"]);
101  $this->setEditByOwner($rec["edit_by_owner"]);
102  $this->setExportEnabled($rec["export_enabled"]);
103  $this->setLimited($rec["limited"]);
104  $this->setLimitStart($rec["limit_start"]);
105  $this->setLimitEnd($rec["limit_end"]);
106  $this->setIsVisible($rec["is_visible"]);
107  $this->setDescription($rec['description']);
108  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ doUpdate()

ilDataCollectionTable::doUpdate ( )

Definition at line 211 of file class.ilDataCollectionTable.php.

References getAddPerm(), getDeletePerm(), getDescription(), getEditByOwner(), getEditPerm(), getExportEnabled(), getId(), getIsVisible(), getLimited(), getLimitEnd(), getLimitStart(), getObjId(), and getTitle().

211  {
212  global $ilDB;
213 
214  $ilDB->update("il_dcl_table", array(
215  "obj_id" => array( "integer", $this->getObjId() ),
216  "title" => array( "text", $this->getTitle() ),
217  "add_perm" => array( "integer", $this->getAddPerm() ),
218  "edit_perm" => array( "integer", $this->getEditPerm() ),
219  "delete_perm" => array( "integer", $this->getDeletePerm() ),
220  "edit_by_owner" => array( "integer", $this->getEditByOwner() ),
221  "limited" => array( "integer", $this->getLimited() ),
222  "limit_start" => array( "timestamp", $this->getLimitStart() ),
223  "limit_end" => array( "timestamp", $this->getLimitEnd() ),
224  "is_visible" => array( "integer", $this->getIsVisible() ? 1 : 0 ),
225  "export_enabled" => array( "integer", $this->getExportEnabled() ? 1 : 0 ),
226  "description" => array( "text", $this->getDescription() ),
227  ), array(
228  "id" => array( "integer", $this->getId() )
229  ));
230  }
+ Here is the call graph for this function:

◆ getAddPerm()

ilDataCollectionTable::getAddPerm ( )
Returns
boolean

Definition at line 760 of file class.ilDataCollectionTable.php.

References $add_perm.

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

+ Here is the caller graph for this function:

◆ getAll()

ilDataCollectionTable::getAll (   $a_id)

get all tables of a Data Collection Object

Parameters
int$a_idobj_id

Definition at line 379 of file class.ilDataCollectionTable.php.

References $query.

Referenced by ilDataCollectionRecordListViewdefinitionGUI\initForm().

379  {
380  global $ilDB;
381 
382  //build query
383  $query = "SELECT *
384  FROM il_dcl_table
385  WHERE obj_id = " . $ilDB->quote($a_id, "integer");
386  $set = $ilDB->query($query);
387 
388  $all = array();
389  while ($rec = $ilDB->fetchAssoc($set)) {
390  $all[$rec['id']] = $rec;
391  }
392 
393  return $all;
394  }
+ Here is the caller graph for this function:

◆ getCollectionObject()

ilDataCollectionTable::getCollectionObject ( )

getCollectionObject

Returns
ilObjDataCollection

Definition at line 298 of file class.ilDataCollectionTable.php.

References $obj, and loadObj().

Referenced by doDelete().

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

◆ getDeletePerm()

ilDataCollectionTable::getDeletePerm ( )
Returns
boolean

Definition at line 776 of file class.ilDataCollectionTable.php.

References $delete_perm.

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

+ Here is the caller graph for this function:

◆ getDescription()

ilDataCollectionTable::getDescription ( )
Returns
string

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

References $description.

Referenced by doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getEditableFields()

ilDataCollectionTable::getEditableFields ( )

Definition at line 545 of file class.ilDataCollectionTable.php.

References $fields, and getRecordFields().

545  {
546  $fields = $this->getRecordFields();
547  $editableFields = array();
548 
549  foreach ($fields as $field) {
550  if (! $field->getLocked()) {
551  $editableFields[] = $field;
552  }
553  }
554 
555  return $editableFields;
556  }
getRecordFields()
Returns all fields of this table which are NOT standard fields.
+ Here is the call graph for this function:

◆ getEditByOwner()

ilDataCollectionTable::getEditByOwner ( )
Returns
boolean

Definition at line 792 of file class.ilDataCollectionTable.php.

References $edit_by_owner.

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

+ Here is the caller graph for this function:

◆ getEditPerm()

ilDataCollectionTable::getEditPerm ( )
Returns
boolean

Definition at line 808 of file class.ilDataCollectionTable.php.

References $edit_perm.

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

+ Here is the caller graph for this function:

◆ getExportableFields()

ilDataCollectionTable::getExportableFields ( )

Return all the fields that are marked as exportable.

Returns
array ilDataCollectionField

Definition at line 584 of file class.ilDataCollectionTable.php.

References $fields, and getFields().

584  {
585  $fields = $this->getFields();
586  $exportableFields = array();
587  foreach ($fields as $field) {
588  if ($field->getExportable()) {
589  $exportableFields[] = $field;
590  }
591  }
592 
593  return $exportableFields;
594  }
getFields()
Returns all fields of this table including the standard fields.
+ Here is the call graph for this function:

◆ getExportEnabled()

ilDataCollectionTable::getExportEnabled ( )
Returns
boolean

Definition at line 1025 of file class.ilDataCollectionTable.php.

References $export_enabled.

Referenced by doCreate(), and doUpdate().

1025  {
1026  return $this->export_enabled;
1027  }
+ Here is the caller graph for this function:

◆ getField()

ilDataCollectionTable::getField (   $field_id)

Definition at line 415 of file class.ilDataCollectionTable.php.

References $fields, and getFields().

Referenced by getPartialRecords().

415  {
416  $fields = $this->getFields();
417  $field = NULL;
418  foreach ($fields as $field_1) {
419  if ($field_1->getId() == $field_id) {
420  $field = $field_1;
421  }
422  }
423 
424  return $field;
425  }
getFields()
Returns all fields of this table including the standard fields.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getFieldByTitle()

ilDataCollectionTable::getFieldByTitle (   $name)
Parameters
$name
Returns
ilDataCollectionField

Definition at line 736 of file class.ilDataCollectionTable.php.

References getFields().

Referenced by getPartialRecords().

736  {
737  $return = NULL;
738  foreach ($this->getFields() as $field) {
739  if ($field->getTitle() == $name) {
740  $return = $field;
741  break;
742  }
743  }
744 
745  return $return;
746  }
getFields()
Returns all fields of this table including the standard fields.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getFieldIds()

ilDataCollectionTable::getFieldIds ( )

Definition at line 431 of file class.ilDataCollectionTable.php.

References getFields().

431  {
432  return array_keys($this->getFields());
433  }
getFields()
Returns all fields of this table including the standard fields.
+ Here is the call graph for this function:

◆ getFields()

ilDataCollectionTable::getFields ( )

Returns all fields of this table including the standard fields.

Returns
ilDataCollectionField[]

Definition at line 484 of file class.ilDataCollectionTable.php.

References $fields, ilDataCollectionStandardField\_getStandardFields(), fields, loadFields(), and sortByOrder().

Referenced by buildOrderFields(), getExportableFields(), getField(), getFieldByTitle(), getFieldIds(), getFilterableFields(), getNewOrder(), getVisibleFields(), and updateFields().

484  {
485  $this->loadFields();
486  if ($this->stdFields == NULL) {
487  $this->stdFields = ilDataCollectionStandardField::_getStandardFields($this->id);
488  }
489  $fields = array_merge($this->fields, $this->stdFields);
490  $this->sortByOrder($fields);
491 
492  return $fields;
493  }
$errors fields
Definition: imgupload.php:47
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getFilterableFields()

ilDataCollectionTable::getFilterableFields ( )

getFilterableFields Returns all fields of this table who have set their filterable to true, including standard fields.

Returns
ilDataCollectionField[]

Definition at line 565 of file class.ilDataCollectionTable.php.

References $fields, and getFields().

565  {
566  $fields = $this->getFields();
567  $filterableFields = array();
568 
569  foreach ($fields as $field) {
570  if ($field->isFilterable()) {
571  $filterableFields[] = $field;
572  }
573  }
574 
575  return $filterableFields;
576  }
getFields()
Returns all fields of this table including the standard fields.
+ Here is the call graph for this function:

◆ getId()

ilDataCollectionTable::getId ( )

Get table id.

Returns
int

Definition at line 248 of file class.ilDataCollectionTable.php.

References $id.

Referenced by ilDataCollectionRecordListTableGUI\__construct(), cloneStructure(), doCreate(), doDelete(), doRead(), doUpdate(), getPartialRecords(), and loadFields().

248  {
249  return $this->id;
250  }
+ Here is the caller graph for this function:

◆ getIsVisible()

ilDataCollectionTable::getIsVisible ( )
Returns
boolean

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

References $is_visible.

Referenced by doCreate(), and doUpdate().

+ Here is the caller graph for this function:

◆ getLimited()

ilDataCollectionTable::getLimited ( )
Returns
boolean

Definition at line 824 of file class.ilDataCollectionTable.php.

References $limited.

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

824  {
825  return $this->limited;
826  }
+ Here is the caller graph for this function:

◆ getLimitEnd()

ilDataCollectionTable::getLimitEnd ( )
Returns
string

Definition at line 840 of file class.ilDataCollectionTable.php.

References $limit_end.

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

+ Here is the caller graph for this function:

◆ getLimitStart()

ilDataCollectionTable::getLimitStart ( )
Returns
string

Definition at line 856 of file class.ilDataCollectionTable.php.

References $limit_start.

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

+ Here is the caller graph for this function:

◆ getNewOrder()

ilDataCollectionTable::getNewOrder ( )

getNewOrder

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

Definition at line 466 of file class.ilDataCollectionTable.php.

References $fields, and getFields().

466  {
467  $fields = $this->getFields();
468  $place = 0;
469  foreach ($fields as $field) {
470  if ($field->isVisible()) {
471  $place = $field->getOrder() + 1;
472  }
473  }
474 
475  return $place;
476  }
getFields()
Returns all fields of this table including the standard fields.
+ Here is the call graph for this function:

◆ getObjId()

ilDataCollectionTable::getObjId ( )

Get object id.

Returns
int

Definition at line 268 of file class.ilDataCollectionTable.php.

References $objId.

Referenced by doCreate(), and doUpdate().

268  {
269  return $this->objId;
270  }
+ Here is the caller graph for this function:

◆ getPartialRecords()

ilDataCollectionTable::getPartialRecords (   $sort,
  $direction,
  $limit,
  $offset,
array  $filter = array() 
)

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 1058 of file class.ilDataCollectionTable.php.

References $id, $ilUser, $records, getField(), getFieldByTitle(), ilDataCollectionCache\getFieldCache(), getId(), ilDataCollectionCache\getRecordCache(), ilDataCollectionDatatype\INPUTFORMAT_BOOLEAN, ilDataCollectionDatatype\INPUTFORMAT_DATETIME, ilDataCollectionDatatype\INPUTFORMAT_FILE, ilDataCollectionDatatype\INPUTFORMAT_ILIAS_REF, ilDataCollectionDatatype\INPUTFORMAT_MOB, ilDataCollectionDatatype\INPUTFORMAT_NUMBER, ilDataCollectionDatatype\INPUTFORMAT_RATING, ilDataCollectionDatatype\INPUTFORMAT_REFERENCE, ilDataCollectionDatatype\INPUTFORMAT_TEXT, and ilDataCollectionField\PROPERTYID_N_REFERENCE.

1058  {
1059  global $ilDB;
1060  $sortField = ($sort) ? $sortField = $this->getFieldByTitle($sort) : $sortField = $this->getField('id');
1061 
1062  $direction = strtolower($direction);
1063  $direction = (in_array($direction, array( 'desc', 'asc' ))) ? $direction : 'asc';
1064 
1065  // Sorting by a status from an ILIAS Ref field. This column is added dynamically to the table, there is no field model
1066  $sortByStatus = false;
1067  if (substr($sort, 0, 8) == '_status_') {
1068  $sortByStatus = true;
1069  $sortField = $this->getFieldByTitle(substr($sort, 8));
1070  }
1071 
1072  if (is_null($sortField)) {
1073  $sortField = $this->getField('id');
1074  }
1075 
1076  $id = $sortField->getId();
1077  $stl = $sortField->getStorageLocation();
1078  $selectStr = '';
1079  $joinStr = '';
1080  $where_additions = '';
1081  $hasNref = false;
1082 
1083  if ($sortField->isStandardField()) {
1084  if ($id == 'owner' || $id == 'last_edit_by') {
1085  $joinStr .= "LEFT JOIN usr_data AS sort_usr_data_{$id} ON (sort_usr_data_{$id}.usr_id = record.{$id})";
1086  $selectStr .= " sort_usr_data_{$id}.login AS field_{$id},";
1087  } else {
1088  $selectStr .= " record.{$id} AS field_{$id},";
1089  }
1090  } else {
1091  switch ($sortField->getDatatypeId()) {
1093  $rating_joined = true;
1094  // FSX Bugfix 0015735: The average is multiplied with 10000 and added to the amount of votes
1095  $joinStr .= "LEFT JOIN (SELECT (ROUND(AVG(rating), 1) * 10000 + COUNT(rating)) as rating, obj_id FROM il_rating GROUP BY obj_id) AS average ON average.obj_id = record.id";
1096  $selectStr .= " average.rating AS field_{$id},";
1097  break;
1099  $joinStr .=
1100  "LEFT JOIN il_dcl_record_field AS sort_record_field_{$id} ON (sort_record_field_{$id}.record_id = record.id AND sort_record_field_{$id}.field_id = "
1101  . $ilDB->quote($sortField->getId(), 'integer') . ") ";
1102  $joinStr .= "LEFT JOIN il_dcl_stloc{$stl}_value AS sort_stloc_{$id} ON (sort_stloc_{$id}.record_field_id = sort_record_field_{$id}.id) ";
1103  $joinStr .= "LEFT JOIN object_reference AS sort_object_reference_{$id} ON (sort_object_reference_{$id}.ref_id = sort_stloc_{$id}.value AND sort_object_reference_{$id}.deleted IS NULL)";
1104  $joinStr .= "LEFT JOIN object_data AS sort_object_data_{$id} ON (sort_object_data_{$id}.obj_id = sort_object_reference_{$id}.obj_id)";
1105  if ($sortByStatus) {
1106  global $ilUser;
1107  $joinStr .= "LEFT JOIN ut_lp_marks AS ut ON (ut.obj_id = sort_object_data_{$id}.obj_id AND ut.usr_id = "
1108  . $ilDB->quote($ilUser->getId(), 'integer') . ") ";
1109  }
1110  $selectStr .= (! $sortByStatus) ? " sort_object_data_{$id}.title AS field_{$id}," : " ut.status AS field_{$id}";
1111  break;
1114  $joinStr .=
1115  "LEFT JOIN il_dcl_record_field AS sort_record_field_{$id} ON (sort_record_field_{$id}.record_id = record.id AND sort_record_field_{$id}.field_id = "
1116  . $ilDB->quote($sortField->getId(), 'integer') . ") ";
1117  $joinStr .= "LEFT JOIN il_dcl_stloc{$stl}_value AS sort_stloc_{$id} ON (sort_stloc_{$id}.record_field_id = sort_record_field_{$id}.id) ";
1118  $joinStr .= "LEFT JOIN object_data AS sort_object_data_{$id} ON (sort_object_data_{$id}.obj_id = sort_stloc_{$id}.value) ";
1119  $selectStr .= " sort_object_data_{$id}.title AS field_{$id},";
1120  break;
1122  $prop = $sortField->getPropertyvalues();
1123  $refField = ilDataCollectionCache::getFieldCache($sortField->getFieldRef());
1125  if ($nRef) {
1126  $hasNref = true;
1127  }
1128  $selectStr .= ($nRef) ? " GROUP_CONCAT(stloc_{$id}_joined.value) AS field_{$id}" : "stloc_{$id}_joined.value AS field_{$id},";
1129  $joinStr .=
1130  "LEFT JOIN il_dcl_record_field AS record_field_{$id} ON (record_field_{$id}.record_id = record.id AND record_field_{$id}.field_id = "
1131  . $ilDB->quote($sortField->getId(), 'integer') . ") ";
1132  $joinStr .= "LEFT JOIN il_dcl_stloc{$stl}_value AS stloc_{$id} ON (stloc_{$id}.record_field_id = record_field_{$id}.id) ";
1133  $joinStr .=
1134  "LEFT JOIN il_dcl_record_field AS record_field_{$id}_joined ON (record_field_{$id}_joined.record_id = stloc_{$id}.value AND record_field_{$id}_joined.field_id = "
1135  . $ilDB->quote($refField->getId(), 'integer') . ") ";
1136  $joinStr .= "LEFT JOIN il_dcl_stloc{$refField->getStorageLocation()}_value AS stloc_{$id}_joined ON (stloc_{$id}_joined.record_field_id = record_field_{$id}_joined.id) ";
1137  break;
1142  $selectStr .= " sort_stloc_{$id}.value AS field_{$id},";
1143  $joinStr .=
1144  "LEFT JOIN il_dcl_record_field AS sort_record_field_{$id} ON (sort_record_field_{$id}.record_id = record.id AND sort_record_field_{$id}.field_id = "
1145  . $ilDB->quote($sortField->getId(), 'integer') . ") ";
1146  $joinStr .= "LEFT JOIN il_dcl_stloc{$stl}_value AS sort_stloc_{$id} ON (sort_stloc_{$id}.record_field_id = sort_record_field_{$id}.id) ";
1147  break;
1148  }
1149  }
1150 
1151  if (count($filter)) {
1152  foreach ($filter as $key => $filter_value) {
1153  $filter_field_id = substr($key, 7);
1154  $filterField = $this->getField($filter_field_id);
1155  switch ($filterField->getDatatypeId()) {
1157  if(!$rating_joined) {
1158  $joinStr .= "LEFT JOIN (SELECT (ROUND(AVG(rating), 1) * 10000 + COUNT(rating)) as rating, obj_id FROM il_rating GROUP BY obj_id) AS average ON average.obj_id = record.id";
1159  }
1160  // FSX Bugfix 0015735: The average is multiplied with 10000 and added to the amount of votes
1161  $where_additions .= " AND average.rating >= " . $ilDB->quote($filter_value * 10000, 'integer');
1162 
1163  break;
1165  $joinStr .=
1166  "INNER JOIN il_dcl_record_field AS filter_record_field_{$filter_field_id} ON (filter_record_field_{$filter_field_id}.record_id = record.id AND filter_record_field_{$filter_field_id}.field_id = "
1167  . $ilDB->quote($filter_field_id, 'integer') . ") ";
1168  $joinStr .= "INNER JOIN il_dcl_stloc{$filterField->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id) ";
1169  $joinStr .= "INNER JOIN object_reference AS filter_object_reference_{$filter_field_id} ON (filter_object_reference_{$filter_field_id}.ref_id = filter_stloc_{$filter_field_id}.value ) ";
1170  $joinStr .=
1171  "INNER JOIN object_data AS filter_object_data_{$filter_field_id} ON (filter_object_data_{$filter_field_id}.obj_id = filter_object_reference_{$filter_field_id}.obj_id AND filter_object_data_{$filter_field_id}.title LIKE "
1172  . $ilDB->quote("%$filter_value%", 'text') . ") ";
1173  break;
1176  $joinStr .=
1177  "INNER JOIN il_dcl_record_field AS filter_record_field_{$filter_field_id} ON (filter_record_field_{$filter_field_id}.record_id = record.id AND filter_record_field_{$filter_field_id}.field_id = "
1178  . $ilDB->quote($filter_field_id, 'integer') . ") ";
1179  $joinStr .= "INNER JOIN il_dcl_stloc{$filterField->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id) ";
1180  $joinStr .=
1181  "INNER JOIN object_data AS filter_object_data_{$filter_field_id} ON (filter_object_data_{$filter_field_id}.obj_id = filter_stloc_{$filter_field_id}.value AND filter_object_data_{$filter_field_id}.title LIKE "
1182  . $ilDB->quote("%$filter_value%", 'text') . ") ";
1183  break;
1185  $dateFrom = (isset($filter_value['from']) && is_object($filter_value['from'])) ? $filter_value['from'] : NULL;
1186  $dateTo = (isset($filter_value['to']) && is_object($filter_value['to'])) ? $filter_value['to'] : NULL;
1187  if ($filterField->isStandardField()) {
1188  if ($dateFrom) {
1189  $where_additions .= " AND (record.{$filter_field_id} >= " . $ilDB->quote($dateFrom, 'date') . ")";
1190  }
1191  if ($dateTo) {
1192  $where_additions .= " AND (record.{$filter_field_id} <= " . $ilDB->quote($dateTo, 'date') . ")";
1193  }
1194  } else {
1195  $joinStr .=
1196  "INNER JOIN il_dcl_record_field AS filter_record_field_{$filter_field_id} ON (filter_record_field_{$filter_field_id}.record_id = record.id AND filter_record_field_{$filter_field_id}.field_id = "
1197  . $ilDB->quote($filter_field_id, 'integer') . ") ";
1198  $joinStr .= "INNER JOIN il_dcl_stloc{$filterField->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id ";
1199  if ($dateFrom) {
1200  $joinStr .= "AND filter_stloc_{$filter_field_id}.value >= " . $ilDB->quote($dateFrom, 'date') . " ";
1201  }
1202  if ($dateTo) {
1203  $joinStr .= "AND filter_stloc_{$filter_field_id}.value <= " . $ilDB->quote($dateTo, 'date') . " ";
1204  }
1205  $joinStr .= ") ";
1206  }
1207  break;
1209  $from = (isset($filter_value['from'])) ? (int)$filter_value['from'] : NULL;
1210  $to = (isset($filter_value['to'])) ? (int)$filter_value['to'] : NULL;
1211  if ($filterField->isStandardField()) {
1212  if (! is_null($from)) {
1213  $where_additions .= " AND record.{$filter_field_id} >= " . $ilDB->quote($from, 'integer');
1214  }
1215  if (! is_null($to)) {
1216  $where_additions .= " AND record.{$filter_field_id} <= " . $ilDB->quote($to, 'integer');
1217  }
1218  } else {
1219  $joinStr .=
1220  "INNER JOIN il_dcl_record_field AS filter_record_field_{$filter_field_id} ON (filter_record_field_{$filter_field_id}.record_id = record.id AND filter_record_field_{$filter_field_id}.field_id = "
1221  . $ilDB->quote($filter_field_id, 'integer') . ") ";
1222  $joinStr .= "INNER JOIN il_dcl_stloc{$filterField->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id";
1223  if (! is_null($from)) {
1224  $joinStr .= " AND filter_stloc_{$filter_field_id}.value >= " . $ilDB->quote($from, 'integer');
1225  }
1226  if (! is_null($to)) {
1227  $joinStr .= " AND filter_stloc_{$filter_field_id}.value <= " . $ilDB->quote($to, 'integer');
1228  }
1229  $joinStr .= ") ";
1230  }
1231  break;
1233  if ($filter_value == "checked") {
1234  $joinStr .=
1235  "INNER JOIN il_dcl_record_field AS filter_record_field_{$filter_field_id} ON (filter_record_field_{$filter_field_id}.record_id = record.id AND filter_record_field_{$filter_field_id}.field_id = "
1236  . $ilDB->quote($filter_field_id, 'integer') . ") ";
1237  $joinStr .= "INNER JOIN il_dcl_stloc{$filterField->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id";
1238  $joinStr .= " AND filter_stloc_{$filter_field_id}.value = " . $ilDB->quote(1, 'integer');
1239  } else {
1240  $joinStr .=
1241  "INNER JOIN il_dcl_record_field AS filter_record_field_{$filter_field_id} ON (filter_record_field_{$filter_field_id}.record_id = record.id AND filter_record_field_{$filter_field_id}.field_id = "
1242  . $ilDB->quote($filter_field_id, 'integer') . ") ";
1243  $joinStr .= "LEFT JOIN il_dcl_stloc{$filterField->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id";
1244  $where_additions .= " AND (filter_stloc_{$filter_field_id}.value <> " . $ilDB->quote(1, 'integer')
1245  . " OR filter_stloc_{$filter_field_id}.value is NULL)";
1246  }
1247  $joinStr .= " ) ";
1248  break;
1250  if ($filterField->isStandardField()) {
1251  $joinStr .=
1252  "INNER JOIN usr_data AS filter_usr_data_{$filter_field_id} ON (filter_usr_data_{$filter_field_id}.usr_id = record.{$filter_field_id} AND filter_usr_data_{$filter_field_id}.login LIKE "
1253  . $ilDB->quote("%$filter_value%", 'text') . ") ";
1254  } else {
1255  $joinStr .=
1256  " INNER JOIN il_dcl_record_field AS filter_record_field_{$filter_field_id} ON (filter_record_field_{$filter_field_id}.record_id = record.id AND filter_record_field_{$filter_field_id}.field_id = "
1257  . $ilDB->quote($filter_field_id, 'integer') . ") ";
1258  $joinStr .=
1259  " INNER JOIN il_dcl_stloc{$filterField->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id AND filter_stloc_{$filter_field_id}.value LIKE "
1260  . $ilDB->quote("%$filter_value%", 'text') . ") ";
1261  }
1262  break;
1264  $joinStr .=
1265  " INNER JOIN il_dcl_record_field AS filter_record_field_{$filter_field_id} ON (filter_record_field_{$filter_field_id}.record_id = record.id AND filter_record_field_{$filter_field_id}.field_id = "
1266  . $ilDB->quote($filter_field_id, 'integer') . ") ";
1267  $prop = $filterField->getPropertyvalues();
1269  if ($nRef) {
1270  $joinStr .=
1271  " INNER JOIN il_dcl_stloc{$filterField->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id AND filter_stloc_{$filter_field_id}.value LIKE "
1272  . $ilDB->quote("%$filter_value%", 'text') . ") ";
1273  } else {
1274  $joinStr .=
1275  " INNER JOIN il_dcl_stloc{$filterField->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id AND filter_stloc_{$filter_field_id}.value = "
1276  . $ilDB->quote($filter_value, 'integer') . ") ";
1277  }
1278  break;
1279  }
1280  }
1281  }
1282 
1283  // Build the query string
1284  $sql = "SELECT DISTINCT record.id, ";
1285  $sql .= rtrim($selectStr, ',') . " FROM il_dcl_record AS record ";
1286  $sql .= $joinStr;
1287  $sql .= " WHERE record.table_id = " . $ilDB->quote($this->getId(), 'integer') . $where_additions;
1288  if ($hasNref) {
1289  $sql .= " GROUP BY record.id";
1290  }
1291  $sql .= " ORDER BY field_{$id} {$direction}";
1292  $set = $ilDB->query($sql);
1293  $totalRecordIds = array();
1294  while ($rec = $ilDB->fetchAssoc($set)) {
1295  $totalRecordIds[] = $rec['id'];
1296  }
1297  // Now slice the array to load only the needed records in memory
1298  $recordIds = array_slice($totalRecordIds, $offset, $limit);
1299  $records = array();
1300  foreach ($recordIds as $id) {
1302  }
1303 
1304  return array( 'records' => $records, 'total' => count($totalRecordIds) );
1305  }
static getRecordCache($record_id=0)
global $ilUser
Definition: imgupload.php:15
+ Here is the call graph for this function:

◆ getRecordFields()

ilDataCollectionTable::getRecordFields ( )

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

Returns
ilDataCollectionField[]

Definition at line 515 of file class.ilDataCollectionTable.php.

References $fields, and loadFields().

Referenced by doDelete(), and getEditableFields().

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

◆ getRecords()

ilDataCollectionTable::getRecords ( )
Returns
ilDataCollectionRecord[]

Definition at line 318 of file class.ilDataCollectionTable.php.

References $records, and loadRecords().

Referenced by _hasRecords(), deleteField(), doDelete(), and getRecordsByFilter().

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

◆ getRecordsByFilter()

ilDataCollectionTable::getRecordsByFilter ( array  $filter = array())

getRecordsByFilter

Parameters
$filterfilter is of the form array("filter_{field_id}" => filter); For dates and integers this filter must be of the form array("from" => from, "to" => to). In case of dates from and to have to be ilDateTime objects in case of integers they have to be integers as well.
Returns
ilDataCollectionRecord[]

Definition at line 336 of file class.ilDataCollectionTable.php.

References $records, getRecords(), and loadRecords().

336  {
337  $this->loadRecords();
338  // Only pass records trough filter if there is filtering required #performance-improvements
339  if (! count($filter)) {
340  return $this->records;
341  }
342  $filtered = array();
343  foreach ($this->getRecords() as $record) {
344  if ($record->passThroughFilter($filter)) {
345  $filtered[] = $record;
346  }
347  }
348 
349  return $filtered;
350  }
+ Here is the call graph for this function:

◆ getStandardFields()

ilDataCollectionTable::getStandardFields ( )

Returns the fields all datacollections have by default.

Returns
ilDataCollectionStandardField[]

Definition at line 501 of file class.ilDataCollectionTable.php.

References $stdFields, and ilDataCollectionStandardField\_getStandardFields().

501  {
502  if ($this->stdFields == NULL) {
503  $this->stdFields = ilDataCollectionStandardField::_getStandardFields($this->id);
504  }
505 
506  return $this->stdFields;
507  }
+ Here is the call graph for this function:

◆ getTitle()

ilDataCollectionTable::getTitle ( )

Get title.

Returns
string

Definition at line 288 of file class.ilDataCollectionTable.php.

References $title.

Referenced by doCreate(), and doUpdate().

288  {
289  return $this->title;
290  }
+ Here is the caller graph for this function:

◆ getVisibleFields()

ilDataCollectionTable::getVisibleFields ( )

Returns all fields of this table who have set their visibility to true, including standard fields.

Returns
ilDataCollectionField[]

Definition at line 527 of file class.ilDataCollectionTable.php.

References $fields, and getFields().

Referenced by buildTableAsArray().

527  {
528  $fields = $this->getFields();
529 
530  $visibleFields = array();
531 
532  foreach ($fields as $field) {
533  if ($field->isVisible()) {
534  $visibleFields[] = $field;
535  }
536  }
537 
538  return $visibleFields;
539  }
getFields()
Returns all fields of this table including the standard fields.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hasCustomFields()

ilDataCollectionTable::hasCustomFields ( )

hasCustomFields

Returns
boolean

Definition at line 898 of file class.ilDataCollectionTable.php.

References fields, and loadFields().

898  {
899  $this->loadFields();
900 
901  return (count($this->fields) > 0) ? true : false;
902  }
$errors fields
Definition: imgupload.php:47
+ Here is the call graph for this function:

◆ hasPermissionToAddRecord()

ilDataCollectionTable::hasPermissionToAddRecord (   $ref)

◆ hasPermissionToAddTable()

ilDataCollectionTable::hasPermissionToAddTable (   $ref_id)

Definition at line 608 of file class.ilDataCollectionTable.php.

References $ref_id, and ilObjDataCollection\_hasWriteAccess().

608  {
610  }
$ref_id
Definition: sahs_server.php:39
+ Here is the call graph for this function:

◆ hasPermissionToDeleteRecord()

ilDataCollectionTable::hasPermissionToDeleteRecord (   $ref,
  $record 
)
Parameters
$refint the reference id of the current datacollection object
$recordilDataCollectionRecord the record which will be deleted
Returns
bool

Definition at line 637 of file class.ilDataCollectionTable.php.

References ilObjDataCollection\_hasReadAccess(), ilObjDataCollection\_hasWriteAccess(), checkEditByOwner(), checkLimit(), and getDeletePerm().

+ Here is the call graph for this function:

◆ hasPermissionToEditRecord()

ilDataCollectionTable::hasPermissionToEditRecord (   $ref,
  $record 
)
Parameters
$refint the reference id of the current datacollection object
$recordilDataCollectionRecord the record which will be edited
Returns
bool

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

References ilObjDataCollection\_hasReadAccess(), ilObjDataCollection\_hasWriteAccess(), checkEditByOwner(), checkLimit(), and getEditPerm().

+ Here is the call graph for this function:

◆ hasPermissionToFields()

ilDataCollectionTable::hasPermissionToFields (   $ref_id)

Definition at line 600 of file class.ilDataCollectionTable.php.

References $ref_id, and ilObjDataCollection\_hasWriteAccess().

600  {
602  }
$ref_id
Definition: sahs_server.php:39
+ Here is the call graph for this function:

◆ loadFields()

ilDataCollectionTable::loadFields ( )
private

Definition at line 439 of file class.ilDataCollectionTable.php.

References $fields, $query, ilDataCollectionCache\buildFieldFromRecord(), fields, getId(), and sortByOrder().

Referenced by getFields(), getRecordFields(), and hasCustomFields().

439  {
440  if ($this->fields == NULL) {
441  global $ilDB;
442 
443  $query = "SELECT DISTINCT field.* FROM il_dcl_field AS field
444  INNER JOIN il_dcl_view AS view ON view.table_id = field.table_id
445  INNER JOIN il_dcl_viewdefinition AS def ON def.view_id = view.id
446  WHERE field.table_id =" . $ilDB->quote($this->getId(), "integer") . "
447  ORDER BY def.field_order DESC";
448  $fields = array();
449  $set = $ilDB->query($query);
450 
451  while ($rec = $ilDB->fetchAssoc($set)) {
453  $fields[$field->getId()] = $field;
454  }
455  $this->sortByOrder($fields);
456  $this->fields = $fields;
457  }
458  }
$errors fields
Definition: imgupload.php:47
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ loadObj()

ilDataCollectionTable::loadObj ( )
private

Definition at line 308 of file class.ilDataCollectionTable.php.

Referenced by getCollectionObject().

308  {
309  if ($this->obj == NULL) {
310  $this->obj = new ilObjDataCollection($this->objId, false);
311  }
312  }
Class ilObjDataCollection.
+ Here is the caller graph for this function:

◆ loadRecords()

ilDataCollectionTable::loadRecords ( )
private

Definition at line 356 of file class.ilDataCollectionTable.php.

References $query, $records, and ilDataCollectionCache\getRecordCache().

Referenced by getRecords(), and getRecordsByFilter().

356  {
357  if ($this->records == NULL) {
358  global $ilDB;
359 
360  $records = array();
361  $query = "SELECT id FROM il_dcl_record WHERE table_id = " . $ilDB->quote($this->id, "integer");
362  $set = $ilDB->query($query);
363 
364  while ($rec = $ilDB->fetchAssoc($set)) {
365  $records[$rec['id']] = ilDataCollectionCache::getRecordCache($rec['id']);
366  }
367 
368  $this->records = $records;
369  }
370  }
static getRecordCache($record_id=0)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setAddPerm()

ilDataCollectionTable::setAddPerm (   $add_perm)
Parameters
boolean$add_perm

Definition at line 752 of file class.ilDataCollectionTable.php.

References $add_perm.

Referenced by cloneStructure(), and doRead().

752  {
753  $this->add_perm = $add_perm;
754  }
+ Here is the caller graph for this function:

◆ setDeletePerm()

ilDataCollectionTable::setDeletePerm (   $delete_perm)
Parameters
boolean$delete_perm

Definition at line 768 of file class.ilDataCollectionTable.php.

References $delete_perm.

Referenced by cloneStructure(), and doRead().

768  {
769  $this->delete_perm = $delete_perm;
770  }
+ Here is the caller graph for this function:

◆ setDescription()

ilDataCollectionTable::setDescription (   $description)
Parameters
string$description

Definition at line 880 of file class.ilDataCollectionTable.php.

References $description.

Referenced by doRead().

880  {
881  $this->description = $description;
882  }
+ Here is the caller graph for this function:

◆ setEditByOwner()

ilDataCollectionTable::setEditByOwner (   $edit_by_owner)
Parameters
boolean$edit_by_owner

Definition at line 784 of file class.ilDataCollectionTable.php.

References $edit_by_owner.

Referenced by cloneStructure(), and doRead().

784  {
785  $this->edit_by_owner = $edit_by_owner;
786  }
+ Here is the caller graph for this function:

◆ setEditPerm()

ilDataCollectionTable::setEditPerm (   $edit_perm)
Parameters
boolean$edit_perm

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

References $edit_perm.

Referenced by cloneStructure(), and doRead().

800  {
801  $this->edit_perm = $edit_perm;
802  }
+ Here is the caller graph for this function:

◆ setExportEnabled()

ilDataCollectionTable::setExportEnabled (   $export_enabled)
Parameters
boolean$export_enabled

Definition at line 1017 of file class.ilDataCollectionTable.php.

References $export_enabled.

Referenced by doRead().

1017  {
1018  $this->export_enabled = $export_enabled;
1019  }
+ Here is the caller graph for this function:

◆ setId()

ilDataCollectionTable::setId (   $a_id)

Set table id.

Parameters
int$a_id

Definition at line 238 of file class.ilDataCollectionTable.php.

Referenced by doCreate().

238  {
239  $this->id = $a_id;
240  }
+ Here is the caller graph for this function:

◆ setIsVisible()

ilDataCollectionTable::setIsVisible (   $is_visible)
Parameters
boolean$is_visible

Definition at line 864 of file class.ilDataCollectionTable.php.

References $is_visible.

Referenced by doRead().

864  {
865  $this->is_visible = $is_visible;
866  }
+ Here is the caller graph for this function:

◆ setLimited()

ilDataCollectionTable::setLimited (   $limited)
Parameters
boolean$limited

Definition at line 816 of file class.ilDataCollectionTable.php.

References $limited.

Referenced by cloneStructure(), and doRead().

816  {
817  $this->limited = $limited;
818  }
+ Here is the caller graph for this function:

◆ setLimitEnd()

ilDataCollectionTable::setLimitEnd (   $limit_end)
Parameters
string$limit_end

Definition at line 832 of file class.ilDataCollectionTable.php.

References $limit_end.

Referenced by cloneStructure(), and doRead().

832  {
833  $this->limit_end = $limit_end;
834  }
+ Here is the caller graph for this function:

◆ setLimitStart()

ilDataCollectionTable::setLimitStart (   $limit_start)
Parameters
string$limit_start

Definition at line 848 of file class.ilDataCollectionTable.php.

References $limit_start.

Referenced by cloneStructure(), and doRead().

848  {
849  $this->limit_start = $limit_start;
850  }
+ Here is the caller graph for this function:

◆ setObjId()

ilDataCollectionTable::setObjId (   $a_id)

Set object id.

Parameters
int$obj_id

Definition at line 258 of file class.ilDataCollectionTable.php.

Referenced by doRead().

258  {
259  $this->objId = $a_id;
260  }
+ Here is the caller graph for this function:

◆ setTitle()

ilDataCollectionTable::setTitle (   $a_title)

Set title.

Parameters
string$a_title

Definition at line 278 of file class.ilDataCollectionTable.php.

Referenced by cloneStructure(), and doRead().

278  {
279  $this->title = $a_title;
280  }
+ Here is the caller graph for this function:

◆ sortByOrder()

ilDataCollectionTable::sortByOrder ( $array)
private
Parameters
$arrayilDataCollectionField[] the array to sort

Definition at line 704 of file class.ilDataCollectionTable.php.

Referenced by buildOrderFields(), getFields(), loadFields(), and sortFields().

704  {
705  usort($array, array( $this, "compareOrder" ));
706  }
+ Here is the caller graph for this function:

◆ sortFields()

ilDataCollectionTable::sortFields ( $fields)

sortFields

Parameters
$fieldsilDataCollectionField[]

Definition at line 687 of file class.ilDataCollectionTable.php.

References $fields, and sortByOrder().

687  {
688  $this->sortByOrder($fields);
689 
690  //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.
691  $named = array();
692  foreach ($fields as $field) {
693  $named[$field->getId()] = $field;
694  }
695 
696  $fields = $named;
697  }
+ Here is the call graph for this function:

◆ updateFields()

ilDataCollectionTable::updateFields ( )

Definition at line 675 of file class.ilDataCollectionTable.php.

References getFields().

675  {
676  foreach ($this->getFields() as $field) {
677  $field->doUpdate();
678  }
679  }
getFields()
Returns all fields of this table including the standard fields.
+ Here is the call graph for this function:

Field Documentation

◆ $add_perm

ilDataCollectionTable::$add_perm
private

Definition at line 35 of file class.ilDataCollectionTable.php.

Referenced by getAddPerm(), and setAddPerm().

◆ $delete_perm

ilDataCollectionTable::$delete_perm
private

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

Referenced by getDeletePerm(), and setDeletePerm().

◆ $description

ilDataCollectionTable::$description
protected

Definition at line 67 of file class.ilDataCollectionTable.php.

Referenced by getDescription(), and setDescription().

◆ $edit_by_owner

ilDataCollectionTable::$edit_by_owner
private

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

Referenced by getEditByOwner(), and setEditByOwner().

◆ $edit_perm

ilDataCollectionTable::$edit_perm
private

Definition at line 39 of file class.ilDataCollectionTable.php.

Referenced by getEditPerm(), and setEditPerm().

◆ $export_enabled

ilDataCollectionTable::$export_enabled
protected

Definition at line 63 of file class.ilDataCollectionTable.php.

Referenced by getExportEnabled(), and setExportEnabled().

◆ $fields

◆ $id

ilDataCollectionTable::$id
protected

◆ $is_visible

ilDataCollectionTable::$is_visible
private

Definition at line 31 of file class.ilDataCollectionTable.php.

Referenced by getIsVisible(), and setIsVisible().

◆ $limit_end

ilDataCollectionTable::$limit_end
private

Definition at line 59 of file class.ilDataCollectionTable.php.

Referenced by getLimitEnd(), and setLimitEnd().

◆ $limit_start

ilDataCollectionTable::$limit_start
private

Definition at line 55 of file class.ilDataCollectionTable.php.

Referenced by getLimitStart(), and setLimitStart().

◆ $limited

ilDataCollectionTable::$limited
private

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

Referenced by getLimited(), and setLimited().

◆ $obj

ilDataCollectionTable::$obj
protected

Definition at line 23 of file class.ilDataCollectionTable.php.

Referenced by getCollectionObject().

◆ $objId

ilDataCollectionTable::$objId
protected

Definition at line 22 of file class.ilDataCollectionTable.php.

Referenced by getObjId().

◆ $records

ilDataCollectionTable::$records
private

◆ $stdFields

ilDataCollectionTable::$stdFields
private

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

Referenced by getStandardFields().

◆ $title

ilDataCollectionTable::$title
protected

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

Referenced by _getTableIdByTitle(), _hasFieldByTitle(), and getTitle().


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