public function cloneStructure($original_id) { $original = ilDataCollectionCache::getTableCache($original_id); $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->setTitle($original->getTitle()); $this->doCreate(); //clone fields. foreach ($original->getRecordFields() as $field) { $new_field = new ilDataCollectionField(); $new_field->setTableId($this->getId()); $new_field->cloneStructure($field->getId()); } if ($old_view_id = ilDataCollectionRecordViewViewdefinition::getIdByTableId($original_id)) { $old_view = new ilDataCollectionRecordViewViewdefinition($old_view_id); $old_view->setTableId($original_id); $viewdef = new ilDataCollectionRecordViewViewdefinition(); $viewdef->setTableId($this->id); $viewdef->setXMLContent($old_view->getXMLContent(false)); $viewdef->create(); } }
/** * @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(); } }