/**
  * getFieldValues
  */
 public function getValues()
 {
     $values = array('title' => $this->table->getTitle(), 'add_perm' => $this->table->getAddPerm(), 'edit_perm' => $this->table->getEditPerm(), 'delete_perm' => $this->table->getDeletePerm(), 'edit_by_owner' => $this->table->getEditByOwner(), 'export_enabled' => $this->table->getExportEnabled(), 'limited' => $this->table->getLimited(), 'limit_start' => array("date" => substr($this->table->getLimitStart(), 0, 10), "time" => substr($this->table->getLimitStart(), -8)), 'limit_end' => array("date" => substr($this->table->getLimitEnd(), 0, 10), "time" => substr($this->table->getLimitEnd(), -8)), 'is_visible' => $this->table->getIsVisible(), 'default_sort_field' => $this->table->getDefaultSortField(), 'default_sort_field_order' => $this->table->getDefaultSortFieldOrder(), 'description' => $this->table->getDescription(), 'public_comments' => $this->table->getPublicCommentsEnabled(), 'view_own_records_perm' => $this->table->getViewOwnRecordsPerm());
     if (!$this->table->getLimitStart()) {
         $values['limit_start'] = NULL;
     }
     if (!$this->table->getLimitEnd()) {
         $values['limit_end'] = NULL;
     }
     $this->form->setValuesByArray($values);
 }
 /**
  * @param ilDataCollectionRecordListGUI $a_parent_obj
  * @param string                        $a_parent_cmd
  * @param ilDataCollectionTable         $table
  * @param int                           $mode
  */
 public function __construct(ilDataCollectionRecordListGUI $a_parent_obj, $a_parent_cmd, ilDataCollectionTable $table, $mode = ilDataCollectionRecordListGUI::MODE_VIEW)
 {
     global $lng, $ilCtrl;
     $identifier = 'dcl_rl' . $table->getId();
     $this->setPrefix($identifier);
     $this->setFormName($identifier);
     $this->setId($identifier);
     parent::__construct($a_parent_obj, $a_parent_cmd);
     $this->table = $table;
     $this->parent_obj = $a_parent_obj;
     $this->setRowTemplate("tpl.record_list_row.html", "Modules/DataCollection");
     $this->mode = $mode;
     // Setup columns and sorting columns
     if ($this->mode == ilDataCollectionRecordListGUI::MODE_MANAGE) {
         // Add checkbox columns
         $this->addColumn("", "", "1", true);
         $this->setSelectAllCheckbox("record_ids[]");
         $this->addMultiCommand("confirmDeleteRecords", $lng->txt('dcl_delete_records'));
     }
     if (ilDataCollectionRecordViewGUI::hasTableValidViewDefinition($this->table)) {
         $this->addColumn("", "_front", '15px');
     }
     $this->numeric_fields = array();
     foreach ($this->table->getVisibleFields() as $field) {
         $title = $field->getTitle();
         $sort_field = $title;
         if ($field->getId() == 'comments') {
             $sort_field = 'n_comments';
             $this->numeric_fields[] = $title;
         }
         $this->addColumn($title, $sort_field);
         if ($field->getLearningProgress()) {
             $this->addColumn($lng->txt("dcl_status"), "_status_" . $field->getTitle());
         }
         if ($field->getDatatypeId() == ilDataCollectionDatatype::INPUTFORMAT_NUMBER) {
             $this->numeric_fields[] = $title;
         }
     }
     $this->addColumn($lng->txt("actions"), "", "30px");
     $this->setTopCommands(true);
     $this->setEnableHeader(true);
     $this->setShowRowsSelector(true);
     $this->setShowTemplates(true);
     $this->setEnableHeader(true);
     $this->setEnableTitle(true);
     $this->setDefaultOrderDirection($this->table->getDefaultSortFieldOrder());
     // Set a default sorting?
     $default_sort_title = 'id';
     if ($fieldId = $this->table->getDefaultSortField()) {
         if (ilDataCollectionStandardField::_isStandardField($fieldId)) {
             /** @var $stdField ilDataCollectionStandardField */
             foreach (ilDataCollectionStandardField::_getStandardFields($this->table->getId()) as $stdField) {
                 if ($stdField->getId() == $fieldId) {
                     $default_sort_title = $stdField->getTitle();
                     break;
                 }
             }
         } else {
             $default_sort_title = ilDataCollectionCache::getFieldCache($fieldId)->getTitle();
         }
         $this->setDefaultOrderField($default_sort_title);
     }
     $this->setFormAction($ilCtrl->getFormAction($a_parent_obj, "applyFilter"));
     $this->initFilter();
     $this->setStyle('table', $this->getStyle('table') . ' ' . 'dcl_record_list');
 }
 /**
  * @param ilDataCollectionTable $original
  */
 public function cloneStructure(ilDataCollectionTable $original)
 {
     $this->setTitle($original->getTitle());
     $this->setDescription($original->getDescription());
     $this->setIsVisible($original->getIsVisible());
     $this->setEditByOwner($original->getEditByOwner());
     $this->setAddPerm($original->getAddPerm());
     $this->setEditPerm($original->getEditPerm());
     $this->setDeletePerm($original->getDeletePerm());
     $this->setLimited($original->getLimited());
     $this->setLimitStart($original->getLimitStart());
     $this->setLimitEnd($original->getLimitEnd());
     $this->setViewOwnRecordsPerm($original->getViewOwnRecordsPerm());
     $this->setExportEnabled($original->getExportEnabled());
     $this->setPublicCommentsEnabled($original->getPublicCommentsEnabled());
     $this->setDefaultSortFieldOrder($original->getDefaultSortFieldOrder());
     $this->doCreate();
     // reset stdFields to get new for the created object
     $default_sort_field = 0;
     // Clone standard-fields
     $org_std_fields = $original->getStandardFields();
     foreach ($this->getStandardFields() as $element_key => $std_field) {
         $std_field->cloneStructure($org_std_fields[$element_key]);
         if ($std_field->getId() == $original->getDefaultSortField()) {
             $default_sort_field = $std_field->getId();
         }
     }
     // Clone fields
     $new_fields = array();
     foreach ($original->getFields() as $orig_field) {
         if (!$orig_field->isStandardField()) {
             $new_field = new ilDataCollectionField();
             $new_field->setTableId($this->getId());
             $new_field->cloneStructure($orig_field->getId());
             $new_fields[$orig_field->getId()] = $new_field;
             if ($orig_field->getId() == $original->getDefaultSortField()) {
                 $default_sort_field = $new_field->getId();
             }
         }
     }
     $this->setDefaultSortField($default_sort_field);
     $this->doUpdate();
     //TODO: Find better way to copy data (include referenced data)
     // Clone Records with recordfields
     /*foreach($original->getRecords() as $orig_record){
     			$new_record = new ilDataCollectionRecord();
     			$new_record->setTableId($this->getId());
     			$new_record->cloneStructure($orig_record->getId(), $new_fields);
     		}*/
     if ($old_view_id = ilDataCollectionRecordViewViewdefinition::getIdByTableId($original->getId())) {
         $old_view = new ilDataCollectionRecordViewViewdefinition($old_view_id);
         $old_view->setTableId($original->getId());
         $viewdef = new ilDataCollectionRecordViewViewdefinition();
         $viewdef->setTableId($this->id);
         $viewdef->setXMLContent($old_view->getXMLContent(false));
         $viewdef->create();
     }
 }