/** * clone objective materials * * @access public * * @param int source objective * @param int target objective * @param int copy id */ public function cloneDependencies($a_new_objective, $a_copy_id) { global $ilObjDataCache, $ilLog; include_once 'Services/CopyWizard/classes/class.ilCopyWizardOptions.php'; $cwo = ilCopyWizardOptions::_getInstance($a_copy_id); $mappings = $cwo->getMappings(); #$ilLog->write(__METHOD__.': 1'); foreach ($this->getMaterials() as $material) { #$ilLog->write(__METHOD__.': 2'); // Copy action omit ? if (!isset($mappings[$material['ref_id']]) or !$mappings[$material['ref_id']]) { continue; } #$ilLog->write(__METHOD__.': 3'); $material_ref_id = $material['ref_id']; $material_rbac_obj_id = $ilObjDataCache->lookupObjId($material_ref_id); $material_obj_id = $material['obj_id']; $new_ref_id = $mappings[$material_ref_id]; $new_rbac_obj_id = $ilObjDataCache->lookupObjId($new_ref_id); #$ilLog->write(__METHOD__.': 4'); // Link if ($new_rbac_obj_id == $material_rbac_obj_id) { #$ilLog->write(__METHOD__.': 5'); $ilLog->write(__METHOD__ . ': Material has been linked. Keeping object id.'); $new_obj_id = $material_obj_id; } elseif ($material['type'] == 'st' or $material['type'] == 'pg') { #$GLOBALS['ilLog']->write(__METHOD__.': '.print_r($material,TRUE)); #$GLOBALS['ilLog']->write(__METHOD__.': '.print_r($mappings,TRUE)); #$ilLog->write(__METHOD__.': 6'); // Chapter assignment $new_material_info = isset($mappings[$material_ref_id . '_' . $material_obj_id]) ? $mappings[$material_ref_id . '_' . $material_obj_id] : ''; $new_material_arr = explode('_', $new_material_info); if (!isset($new_material_arr[1]) or !$new_material_arr[1]) { $ilLog->write(__METHOD__ . ': No mapping found for chapter: ' . $material_obj_id); continue; } $new_obj_id = $new_material_arr[1]; $ilLog->write(__METHOD__ . ': New material id is: ' . $new_obj_id); } else { #$ilLog->write(__METHOD__.': 7'); // Any type $new_obj_id = $ilObjDataCache->lookupObjId($mappings[$material_ref_id]); } #$ilLog->write(__METHOD__.': 8'); $new_material = new ilCourseObjectiveMaterials($a_new_objective); #$ilLog->write(__METHOD__.': 8.1'); $new_material->setLMRefId($new_ref_id); #$ilLog->write(__METHOD__.': 8.2'); $new_material->setLMObjId($new_obj_id); #$ilLog->write(__METHOD__.': 8.3'); $new_material->setType($material['type']); #$ilLog->write(__METHOD__.': 8.4'); $new_material->add(); #$ilLog->write(__METHOD__.': 9'); } }