5 include_once
'./Modules/DataCollection/classes/class.ilDataCollectionStandardField.php';
6 include_once
'./Modules/DataCollection/classes/class.ilDataCollectionRecord.php';
139 $query =
"SELECT * FROM il_dcl_table WHERE id = " . $ilDB->quote($this->
getId(),
"integer");
140 $set = $ilDB->query(
$query);
141 $rec = $ilDB->fetchAssoc($set);
170 public function doDelete($delete_main_table =
false) {
185 $exec_delete =
false;
186 if ($delete_main_table) {
193 $query =
"DELETE FROM il_dcl_table WHERE id = " . $ilDB->quote($this->
getId(),
"integer");
194 $ilDB->manipulate(
$query);
197 $set = $ilDB->query(
'SELECT * FROM il_dcl_view WHERE table_id = ' . $ilDB->quote($this->getId(),
'integer'));
199 while (
$row = $ilDB->fetchObject($set)) {
200 $view_ids[] =
$row->id;
202 if (count($view_ids)) {
203 $ilDB->manipulate(
"DELETE FROM il_dcl_viewdefinition WHERE view_id IN (" . implode(
',', $view_ids) .
")");
205 $ilDB->manipulate(
"DELETE FROM il_dcl_view WHERE table_id = " . $ilDB->quote($this->getId(),
'integer'));
216 $id = $ilDB->nextId(
"il_dcl_table");
218 $query =
"INSERT INTO il_dcl_table (" .
"id" .
", obj_id" .
", title" .
", add_perm" .
", edit_perm" .
", delete_perm" .
", edit_by_owner" 219 .
", limited" .
", limit_start" .
", limit_end" .
", is_visible" .
", export_enabled" .
", default_sort_field_id" 220 .
", default_sort_field_order" .
", description" .
", public_comments" .
", view_own_records_perm" .
", delete_by_owner ) VALUES (" 221 . $ilDB->quote($this->
getId(),
"integer") .
"," . $ilDB->quote($this->
getObjId(),
"integer") .
"," 222 . $ilDB->quote($this->
getTitle(),
"text") .
"," . $ilDB->quote($this->
getAddPerm() ? 1 : 0,
"integer") .
"," 223 . $ilDB->quote($this->
getEditPerm() ? 1 : 0,
"integer") .
"," . $ilDB->quote($this->
getDeletePerm() ? 1 : 0,
"integer") .
"," 224 . $ilDB->quote($this->
getEditByOwner() ? 1 : 0,
"integer") .
"," . $ilDB->quote($this->
getLimited() ? 1 : 0,
"integer") .
"," 231 $ilDB->manipulate(
$query);
235 $view_id = $ilDB->nextId(
"il_dcl_view");
236 $query =
"INSERT INTO il_dcl_view (id, table_id, type, formtype) VALUES (" . $ilDB->quote($view_id,
"integer") .
", " 238 . $ilDB->quote(1,
"integer") .
")";
239 $ilDB->manipulate(
$query);
242 $view_id = $ilDB->nextId(
"il_dcl_view");
243 $query =
"INSERT INTO il_dcl_view (id, table_id, type, formtype) VALUES (" . $ilDB->quote($view_id,
"integer") .
", " 245 . $ilDB->quote(1,
"integer") .
")";
246 $ilDB->manipulate(
$query);
249 $view_id = $ilDB->nextId(
"il_dcl_view");
250 $query =
"INSERT INTO il_dcl_view (id, table_id, type, formtype) VALUES (" . $ilDB->quote($view_id,
"integer") .
", " 252 . $ilDB->quote(1,
"integer") .
")";
253 $ilDB->manipulate(
$query);
256 $view_id = $ilDB->nextId(
"il_dcl_view");
257 $query =
"INSERT INTO il_dcl_view (id, table_id, type, formtype) VALUES (" . $ilDB->quote($view_id,
"integer") .
", " 259 . $ilDB->quote(1,
"integer") .
")";
260 $ilDB->manipulate(
$query);
273 $ilDB->update(
"il_dcl_table", array(
274 "obj_id" => array(
"integer", $this->
getObjId() ),
275 "title" => array(
"text", $this->
getTitle() ),
276 "add_perm" => array(
"integer", (
int) $this->
getAddPerm() ),
277 "edit_perm" => array(
"integer", (
int) $this->
getEditPerm() ),
278 "delete_perm" => array(
"integer", (
int) $this->
getDeletePerm() ),
279 "edit_by_owner" => array(
"integer", (
int) $this->
getEditByOwner() ),
280 "limited" => array(
"integer", $this->
getLimited() ),
281 "limit_start" => array(
"timestamp", $this->
getLimitStart() ),
282 "limit_end" => array(
"timestamp", $this->
getLimitEnd() ),
283 "is_visible" => array(
"integer", $this->
getIsVisible() ? 1 : 0 ),
292 "id" => array(
"integer", $this->
getId() )
321 $this->objId = $a_id;
337 $this->title = $a_title;
360 if ($this->obj == NULL) {
390 if (! count($filter)) {
395 if ($record->passThroughFilter($filter)) {
396 $filtered[] = $record;
405 if ($this->records == NULL) {
409 $query =
"SELECT id FROM il_dcl_record WHERE table_id = " . $ilDB->quote($this->
id,
"integer");
410 $set = $ilDB->query(
$query);
412 while ($rec = $ilDB->fetchAssoc($set)) {
430 $query =
"SELECT * FROM il_dcl_table WHERE obj_id = " . $ilDB->quote($a_id,
"integer");
431 $set = $ilDB->query(
$query);
434 while ($rec = $ilDB->fetchAssoc($set)) {
435 $all[$rec[
'id']] = $rec;
450 $record->deleteField($field_id);
465 foreach (
$fields as $field_1) {
466 if ($field_1->getId() == $field_id) {
484 if ($this->
fields === NULL) {
487 $query =
"SELECT DISTINCT field.* FROM il_dcl_field AS field 488 INNER JOIN il_dcl_view AS view ON view.table_id = field.table_id 489 INNER JOIN il_dcl_viewdefinition AS def ON def.view_id = view.id 490 WHERE field.table_id =" . $ilDB->quote($this->
getId(),
"integer") .
" 491 ORDER BY def.field_order DESC";
493 $set = $ilDB->query(
$query);
495 while ($rec = $ilDB->fetchAssoc($set)) {
497 $fields[$field->getId()] = $field;
514 if (! $field->isStandardField()) {
515 $place = $field->getOrder() + 1;
530 $this->stdFields = $this->getStandardFields();
543 public function getFieldsForFormula() {
544 $unsupported = array(
556 $return = $this->getStandardFields();
560 foreach ($this->
fields as $field) {
561 if (! in_array($field->getDatatypeId(), $unsupported)) {
575 public function getStandardFields() {
576 if ($this->stdFields == NULL) {
581 foreach ($this->stdFields as $k => $field) {
582 if ($field->getId() ==
'comments') {
583 unset($this->stdFields[$k]);
614 $visibleFields = array();
617 if ($field->isVisible()) {
618 $visibleFields[] = $field;
622 return $visibleFields;
631 $editableFields = array();
634 if (! $field->getLocked()) {
635 $editableFields[] = $field;
639 return $editableFields;
651 $filterableFields = array();
654 if ($field->isFilterable()) {
655 $filterableFields[] = $field;
659 return $filterableFields;
670 $exportableFields = array();
672 if ($field->getExportable()) {
673 $exportableFields[] = $field;
677 return $exportableFields;
789 public function hasPermissionToViewRecord(
$ref_id, $record) {
816 return ($ilUser->getId() == $record->
getOwner());
828 return ($from <= $now && $now <= $to);
855 $named[$field->getId()] = $field;
867 usort($array, array( $this,
"compareOrder" ));
881 if (! is_null($field->getOrder())) {
882 $field->setOrder($count);
883 $count = $count + $offset;
900 if ($field->getTitle() ==
$title) {
1143 $this->view_own_records_perm = (int)$view_own_perm;
1163 return (count($this->
fields) > 0) ? true :
false;
1168 if (is_null($a->getOrder() == NULL) && is_null($b->getOrder() == NULL)) {
1171 if (is_null($a->getOrder())) {
1174 if (is_null($b->getOrder())) {
1178 return $a->getOrder() < $b->getOrder() ? - 1 : 1;
1207 $org_std_fields = $original->getStandardFields();
1208 foreach ($this->getStandardFields() as $element_key => $std_field) {
1216 $new_fields = array();
1217 foreach ($original->
getFields() as $orig_field) {
1218 if (! $orig_field->isStandardField()) {
1220 $new_field->setTableId($this->
getId());
1221 $new_field->cloneStructure($orig_field->getId());
1222 $new_fields[$orig_field->getId()] = $new_field;
1243 $old_view->setTableId($original->
getId());
1245 $viewdef->setTableId($this->
id);
1246 $viewdef->setXMLContent($old_view->getXMLContent(
false));
1258 return (count($this->
getRecords()) > 0) ? true :
false;
1266 $this->
fields[$field->getId()] = $field;
1277 $query =
"SELECT * FROM il_dcl_table WHERE id = " . $table_id;
1280 return $result->numRows() != 0;
1292 $result = $ilDB->query(
'SELECT id FROM il_dcl_table WHERE title = ' . $ilDB->quote(
$title,
'text') .
' AND obj_id = ' 1293 . $ilDB->quote($obj_id,
'integer'));
1295 while ($rec = $ilDB->fetchAssoc(
$result)) {
1329 $result = $ilDB->query(
'SELECT * FROM il_dcl_field WHERE table_id = ' . $ilDB->quote($obj_id,
'integer') .
' AND title = ' 1330 . $ilDB->quote(
$title,
'text'));
1332 return ($ilDB->numRows(
$result)) ?
true :
false;
1351 $direction = strtolower($direction);
1352 $direction = (in_array($direction, array(
'desc',
'asc' ))) ? $direction :
'asc';
1355 $sort_by_status =
false;
1356 if (substr($sort, 0, 8) ==
'_status_') {
1357 $sort_by_status =
true;
1361 if (is_null($sort_field)) {
1362 $sort_field = $this->
getField(
'id');
1365 $id = $sort_field->getId();
1366 $stl = $sort_field->getStorageLocation();
1369 $where_additions =
'';
1372 if ($sort_field->isStandardField() &&
$id !=
'comments') {
1373 if (
$id ==
'owner' ||
$id ==
'last_edit_by') {
1374 $join_str .=
"LEFT JOIN usr_data AS sort_usr_data_{$id} ON (sort_usr_data_{$id}.usr_id = record.{$id})";
1375 $select_str .=
" sort_usr_data_{$id}.login AS field_{$id},";
1377 $select_str .=
" record.{$id} AS field_{$id},";
1380 switch ($sort_field->getDatatypeId()) {
1382 $rating_joined =
true;
1384 $join_str .=
"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";
1385 $select_str .=
" average.rating AS field_{$id},";
1389 "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 = " 1390 . $ilDB->quote($sort_field->getId(),
'integer') .
") ";
1391 $join_str .=
"LEFT JOIN il_dcl_stloc{$stl}_value AS sort_stloc_{$id} ON (sort_stloc_{$id}.record_field_id = sort_record_field_{$id}.id) ";
1392 $join_str .=
"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)";
1393 $join_str .=
"LEFT JOIN object_data AS sort_object_data_{$id} ON (sort_object_data_{$id}.obj_id = sort_object_reference_{$id}.obj_id)";
1394 if ($sort_by_status) {
1396 $join_str .=
"LEFT JOIN ut_lp_marks AS ut ON (ut.obj_id = sort_object_data_{$id}.obj_id AND ut.usr_id = " 1397 . $ilDB->quote($ilUser->getId(),
'integer') .
") ";
1399 $select_str .= (! $sort_by_status) ?
" sort_object_data_{$id}.title AS field_{$id}," :
" ut.status AS field_{$id}";
1404 "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 = " 1405 . $ilDB->quote($sort_field->getId(),
'integer') .
") ";
1406 $join_str .=
"LEFT JOIN il_dcl_stloc{$stl}_value AS sort_stloc_{$id} ON (sort_stloc_{$id}.record_field_id = sort_record_field_{$id}.id) ";
1407 $join_str .=
"LEFT JOIN object_data AS sort_object_data_{$id} ON (sort_object_data_{$id}.obj_id = sort_stloc_{$id}.value) ";
1408 $select_str .=
" sort_object_data_{$id}.title AS field_{$id},";
1411 $prop = $sort_field->getPropertyvalues();
1417 $select_str .= ($n_ref) ?
" GROUP_CONCAT(stloc_{$id}_joined.value) AS field_{$id}" :
"stloc_{$id}_joined.value AS field_{$id},";
1419 "LEFT JOIN il_dcl_record_field AS record_field_{$id} ON (record_field_{$id}.record_id = record.id AND record_field_{$id}.field_id = " 1420 . $ilDB->quote($sort_field->getId(),
'integer') .
") ";
1421 $join_str .=
"LEFT JOIN il_dcl_stloc{$stl}_value AS stloc_{$id} ON (stloc_{$id}.record_field_id = record_field_{$id}.id) ";
1423 "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 = " 1424 . $ilDB->quote($ref_field->getId(),
'integer') .
") ";
1425 $join_str .=
"LEFT JOIN il_dcl_stloc{$ref_field->getStorageLocation()}_value AS stloc_{$id}_joined ON (stloc_{$id}_joined.record_field_id = record_field_{$id}_joined.id) ";
1431 $select_str .=
" sort_stloc_{$id}.value AS field_{$id},";
1433 "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 = " 1434 . $ilDB->quote($sort_field->getId(),
'integer') .
") ";
1435 $join_str .=
"LEFT JOIN il_dcl_stloc{$stl}_value AS sort_stloc_{$id} ON (sort_stloc_{$id}.record_field_id = sort_record_field_{$id}.id) ";
1440 if (count($filter)) {
1441 foreach ($filter as $key => $filter_value) {
1442 $filter_field_id = substr($key, 7);
1443 $filter_field = $this->
getField($filter_field_id);
1444 switch ($filter_field->getDatatypeId()) {
1446 if(!$rating_joined) {
1447 $join_str .=
"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";
1450 $where_additions .=
" AND average.rating >= " . $ilDB->quote($filter_value * 10000,
'integer');
1454 " 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 = " 1455 . $ilDB->quote($filter_field_id,
'integer') .
") ";
1456 $join_str .=
" INNER JOIN il_dcl_stloc{$filter_field->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id) ";
1457 $join_str .=
" 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 ) ";
1459 " 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 " 1460 . $ilDB->quote(
"%$filter_value%",
'text') .
") ";
1465 " 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 = " 1466 . $ilDB->quote($filter_field_id,
'integer') .
") ";
1467 $join_str .=
" INNER JOIN il_dcl_stloc{$filter_field->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id) ";
1469 " 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 " 1470 . $ilDB->quote(
"%$filter_value%",
'text') .
") ";
1473 $date_from = (isset($filter_value[
'from']) && is_object($filter_value[
'from'])) ? $filter_value[
'from'] : NULL;
1474 $date_to = (isset($filter_value[
'to']) && is_object($filter_value[
'to'])) ? $filter_value[
'to'] : NULL;
1475 if ($filter_field->isStandardField()) {
1477 $where_additions .=
" AND (record.{$filter_field_id} >= " . $ilDB->quote($date_from,
'date') .
")";
1480 $where_additions .=
" AND (record.{$filter_field_id} <= " . $ilDB->quote($date_to,
'date') .
")";
1484 " 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 = " 1485 . $ilDB->quote($filter_field_id,
'integer') .
") ";
1486 $join_str .=
" INNER JOIN il_dcl_stloc{$filter_field->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id ";
1488 $join_str .=
"AND filter_stloc_{$filter_field_id}.value >= " . $ilDB->quote($date_from,
'date') .
" ";
1491 $join_str .=
"AND filter_stloc_{$filter_field_id}.value <= " . $ilDB->quote($date_to,
'date') .
" ";
1497 $from = (isset($filter_value[
'from'])) ? (
int)$filter_value[
'from'] : NULL;
1498 $to = (isset($filter_value[
'to'])) ? (
int)$filter_value[
'to'] : NULL;
1499 if ($filter_field->isStandardField()) {
1500 if (! is_null($from)) {
1501 $where_additions .=
" AND record.{$filter_field_id} >= " . $ilDB->quote($from,
'integer');
1503 if (! is_null($to)) {
1504 $where_additions .=
" AND record.{$filter_field_id} <= " . $ilDB->quote($to,
'integer');
1508 " 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 = " 1509 . $ilDB->quote($filter_field_id,
'integer') .
") ";
1510 $join_str .=
" INNER JOIN il_dcl_stloc{$filter_field->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id";
1511 if (! is_null($from)) {
1512 $join_str .=
" AND filter_stloc_{$filter_field_id}.value >= " . $ilDB->quote($from,
'integer');
1514 if (! is_null($to)) {
1515 $join_str .=
" AND filter_stloc_{$filter_field_id}.value <= " . $ilDB->quote($to,
'integer');
1521 if ($filter_value ==
"checked") {
1523 " 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 = " 1524 . $ilDB->quote($filter_field_id,
'integer') .
") ";
1525 $join_str .=
" INNER JOIN il_dcl_stloc{$filter_field->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id";
1526 $join_str .=
" AND filter_stloc_{$filter_field_id}.value = " . $ilDB->quote(1,
'integer');
1529 " 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 = " 1530 . $ilDB->quote($filter_field_id,
'integer') .
") ";
1531 $join_str .=
"LEFT JOIN il_dcl_stloc{$filter_field->getStorageLocation()}_value AS filter_stloc_{$filter_field_id} ON (filter_stloc_{$filter_field_id}.record_field_id = filter_record_field_{$filter_field_id}.id";
1532 $where_additions .=
" AND (filter_stloc_{$filter_field_id}.value <> " . $ilDB->quote(1,
'integer')
1533 .
" OR filter_stloc_{$filter_field_id}.value is NULL)";
1538 if ($filter_field->isStandardField()) {
1540 " 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 " 1541 . $ilDB->quote(
"%$filter_value%",
'text') .
") ";
1544 " 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 = " 1545 . $ilDB->quote($filter_field_id,
'integer') .
") ";
1547 " INNER JOIN il_dcl_stloc{$filter_field->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 " 1548 . $ilDB->quote(
"%$filter_value%",
'text') .
") ";
1553 " 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 = " 1554 . $ilDB->quote($filter_field_id,
'integer') .
") ";
1555 $prop = $filter_field->getPropertyvalues();
1559 " INNER JOIN il_dcl_stloc{$filter_field->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 " 1560 . $ilDB->quote(
"%$filter_value%",
'text') .
") ";
1563 " INNER JOIN il_dcl_stloc{$filter_field->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 = " 1564 . $ilDB->quote($filter_value,
'integer') .
") ";
1572 $sql =
"SELECT DISTINCT record.id, record.owner";
1575 } $sql .= rtrim($select_str,
',') .
" FROM il_dcl_record AS record ";
1577 $sql .=
" WHERE record.table_id = " . $ilDB->quote($this->
getId(),
'integer') . $where_additions;
1579 $sql .=
" GROUP BY record.id, record.owner";
1581 $props = $sort_field->getProperties();
1583 $sql .=
" ORDER BY field_{$id} {$direction}";
1585 $set = $ilDB->query($sql);
1586 $total_record_ids = array();
1591 while ($rec = $ilDB->fetchAssoc($set)) {
1593 if (!$is_allowed_to_view && ($this->
getViewOwnRecordsPerm() && $ilUser->getId() != $rec[
'owner'])) {
1596 $total_record_ids[] = $rec[
'id'];
1597 $_SESSION[
'dcl_record_ids'][] = $rec[
'id'];
1601 $sort_array = array();
1602 foreach ($total_record_ids as
$id) {
1604 $sort_array[
$id] = $formula_field->getValue();
1606 switch ($direction) {
1613 arsort($sort_array);
1616 $total_record_ids = array_keys($sort_array);
1620 $sort_array = array();
1621 foreach ($total_record_ids as
$id) {
1623 $sort_array[
$id] = $url_field->getSortingValue();
1625 switch ($direction) {
1632 arsort($sort_array);
1635 $total_record_ids = array_keys($sort_array);
1638 $record_ids = array_slice($total_record_ids, $offset, $limit);
1640 foreach ($record_ids as
$id) {
1644 return array(
'records' =>
$records,
'total' => count($total_record_ids) );
hasPermissionToAddTable($ref_id)
static getRecordCache($record_id=0)
Class ilDataCollectionField.
const PROPERTYID_N_REFERENCE
const INPUTFORMAT_DATETIME
setExportEnabled($export_enabled)
static getIdByTableId($a_table_id)
Get view definition id by table id.
setLimitStart($limit_start)
static _tableExists($table_id)
static hasWriteAccess($ref)
Class ilDataCollectionField.
cloneStructure(ilDataCollectionTable $original)
buildOrderFields()
buildOrderFields orders the fields.
getExportableFields()
Return all the fields that are marked as exportable.
static hasReadAccess($ref)
hasPermissionToAddRecord($ref_id)
hasPermissionToFields($ref_id)
getRecordsByFilter(array $filter=array())
getRecordsByFilter
static _getStandardFields($table_id)
getFilterableFields()
getFilterableFields Returns all fields of this table who have set their filterable to true...
setIsVisible($is_visible)
static buildFieldFromRecord($rec)
static _getAllReferences($a_id)
get all reference ids of object
doesRecordBelongToUser(ilDataCollectionRecord $record)
setDefaultSortField($default_sort_field)
/**
const INPUTFORMAT_FORMULA
const PROPERTYID_URL
LINK OR EMAIL!
setDeleteByOwner($delete_by_owner)
const INPUTFORMAT_REFERENCELIST
Class ilDataCollectionRecord.
static getRecordFieldCache($record, $field)
static getFieldCache($field_id=0)
getFields()
Returns all fields of this table including the standard fields.
setViewOwnRecordsPerm($view_own_perm)
const INPUTFORMAT_ILIAS_REF
const INPUTFORMAT_BOOLEAN
sortFields(&$fields)
sortFields
updateFields()
Update fields.
Class ilDataCollectionField.
setDescription($description)
hasCustomFields()
hasCustomFields
setDeletePerm($delete_perm)
getVisibleFields()
Returns all fields of this table who have set their visibility to true, including standard fields...
getRecordFields()
Returns all fields of this table which are NOT standard fields.
hasPermissionToEditRecord($ref_id, ilDataCollectionRecord $record)
setDefaultSortFieldOrder($default_sort_field_order)
setEditByOwner($edit_by_owner)
getPublicCommentsEnabled()
setPublicCommentsEnabled($public_comments)
getDefaultSortFieldOrder()
hasPermissionToDeleteRecord($ref_id, ilDataCollectionRecord $record)
getFieldByTitle($title)
Get a field by title.
static _getTableIdByTitle($title, $obj_id)
hasPermissionToDeleteRecords($ref_id)
doCreate($create_views=true)
Class ilObjDataCollection.
$default_sort_field_order
const INPUTFORMAT_REFERENCE
setId($a_id)
Set table id.
static _hasFieldByTitle($title, $obj_id)
Checks if a table has a field with the given title.
static hasAddRecordAccess($ref)
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.