46 $this->objective_id = $a_objective_id;
62 global $ilObjDataCache,
$ilLog;
64 include_once(
'Services/CopyWizard/classes/class.ilCopyWizardOptions.php');
66 $mappings = $cwo->getMappings();
67 #$ilLog->write(__METHOD__.': 1'); 70 #$ilLog->write(__METHOD__.': 2'); 72 if(!isset($mappings[$material[
'ref_id']])
or !$mappings[$material[
'ref_id']])
76 #$ilLog->write(__METHOD__.': 3'); 77 $material_ref_id = $material[
'ref_id'];
78 $material_rbac_obj_id = $ilObjDataCache->lookupObjId($material_ref_id);
79 $material_obj_id = $material[
'obj_id'];
80 $new_ref_id = $mappings[$material_ref_id];
81 $new_rbac_obj_id = $ilObjDataCache->lookupObjId($new_ref_id);
82 #$ilLog->write(__METHOD__.': 4'); 85 if($new_rbac_obj_id == $material_rbac_obj_id)
87 #$ilLog->write(__METHOD__.': 5'); 88 $ilLog->write(__METHOD__.
': Material has been linked. Keeping object id.');
89 $new_obj_id = $material_obj_id;
91 elseif($material[
'type'] ==
'st' or $material[
'type'] ==
'pg')
94 #$GLOBALS['ilLog']->write(__METHOD__.': '.print_r($material,TRUE)); 95 #$GLOBALS['ilLog']->write(__METHOD__.': '.print_r($mappings,TRUE)); 97 #$ilLog->write(__METHOD__.': 6'); 99 $new_material_info = isset($mappings[$material_ref_id.
'_'.$material_obj_id]) ?
100 $mappings[$material_ref_id.
'_'.$material_obj_id] :
102 $new_material_arr = explode(
'_',$new_material_info);
103 if(!isset($new_material_arr[1])
or !$new_material_arr[1])
105 $ilLog->write(__METHOD__.
': No mapping found for chapter: '.$material_obj_id);
108 $new_obj_id = $new_material_arr[1];
109 $ilLog->write(__METHOD__.
': New material id is: '.$new_obj_id);
113 #$ilLog->write(__METHOD__.': 7'); 115 $new_obj_id = $ilObjDataCache->lookupObjId($mappings[$material_ref_id]);
118 #$ilLog->write(__METHOD__.': 8'); 120 #$ilLog->write(__METHOD__.': 8.1'); 121 $new_material->setLMRefId($new_ref_id);
122 #$ilLog->write(__METHOD__.': 8.2'); 123 $new_material->setLMObjId($new_obj_id);
124 #$ilLog->write(__METHOD__.': 8.3'); 125 $new_material->setType($material[
'type']);
126 #$ilLog->write(__METHOD__.': 8.4'); 127 $new_material->add();
128 #$ilLog->write(__METHOD__.': 9'); 145 $query =
"SELECT DISTINCT(ref_id) ref_id FROM crs_objective_lm ".
146 "WHERE objective_id = ".$ilDB->quote($a_objective_id ,
'integer');
150 $ref_ids[] =
$row->ref_id;
152 return $ref_ids ? $ref_ids :
array();
173 $all_materials = $tree->getSubTree($tree->getNodeData($a_container_id),
true);
177 foreach($all_materials as $material)
179 switch($material[
'type'])
183 include_once
'./Modules/Course/classes/class.ilCourseObjectiveMaterials.php';
191 $assignable[] = $material;
201 $assignable[] = $material;
205 return $assignable ? $assignable :
array();
220 $query =
"SELECT DISTINCT(com.ref_id) ref_id FROM crs_objectives co ".
221 "JOIN crs_objective_lm com ON co.objective_id = com.objective_id ".
222 "JOIN object_reference obr ON com.ref_id = obr.ref_id ".
223 "JOIN object_data obd ON obr.obj_id = obd.obj_id ".
224 "WHERE co.crs_id = ".$ilDB->quote($a_container_id,
'integer').
" ".
225 "ORDER BY obd.title ";
230 $ref_ids[] =
$row->ref_id;
232 return $ref_ids ? $ref_ids :
array();
237 return $this->lms ? $this->lms :
array();
242 foreach($this->lms as $lm_data)
244 if($lm_data[
'type'] ==
'st')
246 $chapters[] = $lm_data;
248 if($lm_data[
'type'] ==
'pg')
250 $chapters[] = $lm_data;
253 return $chapters ? $chapters :
array();
258 return $this->lms[$lm_id] ? $this->lms[$lm_id] :
array();
268 $this->lm_ref_id = $a_ref_id;
272 return $this->lm_ref_id ? $this->lm_ref_id : 0;
276 $this->lm_obj_id = $a_obj_id;
280 return $this->lm_obj_id ? $this->lm_obj_id : 0;
303 $query =
"SELECT * FROM crs_objective_lm ".
304 "WHERE ref_id = ".$this->db->quote($a_ref_id ,
'integer').
" ".
305 "AND objective_id = ".$this->db->quote($this->
getObjectiveId() ,
'integer').
" ".
306 "AND type != 'st' AND type != 'pg' ";
312 return $res->numRows() ? true :
false;
317 return $row[
"lm_ass_id"];
334 $query =
"SELECT * FROM crs_objective_lm ".
335 "WHERE ref_id = ".$this->db->quote($a_ref_id ,
'integer').
" ".
336 "AND obj_id = ".$this->db->quote($a_obj_id ,
'integer').
" ".
337 "AND objective_id = ".$this->db->quote($this->
getObjectiveId() ,
'integer').
" ".
338 "AND (type = 'st' OR type = 'pg')";
340 return $res->numRows() ? true :
false;
348 $query =
"SELECT * FROM crs_objective_lm ".
349 "WHERE objective_id = ".$ilDB->quote($this->
getObjectiveId() ,
'integer').
" ".
350 "AND ref_id = ".$ilDB->quote($this->
getLMRefId() ,
'integer').
" ".
351 "AND obj_id = ".$ilDB->quote($this->
getLMObjId() ,
'integer').
" ";
355 $query =
"SELECT * FROM crs_objective_lm ".
356 "WHERE objective_id = ".$ilDB->quote($this->
getObjectiveId() ,
'integer').
" ".
357 "AND ref_id = ".$ilDB->quote($this->
getLMRefId() ,
'integer').
" ";
362 return $res->numRows() ? true :
false;
369 $next_id = $ilDB->nextId(
'crs_objective_lm');
370 $query =
"INSERT INTO crs_objective_lm (lm_ass_id,objective_id,ref_id,obj_id,type) ".
372 $ilDB->quote($next_id,
'integer').
", ".
374 $ilDB->quote($this->
getLMRefId() ,
'integer').
", ".
375 $ilDB->quote($this->
getLMObjId() ,
'integer').
", ".
376 $ilDB->quote($this->
getType() ,
'text').
380 return (
int) $next_id;
382 function delete($lm_id)
391 $query =
"DELETE FROM crs_objective_lm ".
392 "WHERE lm_ass_id = ".$ilDB->quote($lm_id ,
'integer').
" ";
402 $query =
"DELETE FROM crs_objective_lm ".
403 "WHERE objective_id = ".$ilDB->quote($this->
getObjectiveId() ,
'integer').
" ";
421 $query =
"UPDATE crs_objective_lm ".
422 "SET position = ".$this->db->quote((
string) $a_position ,
'integer').
" ".
423 "WHERE objective_id = ".$this->db->quote($this->
getObjectiveId() ,
'integer').
" ".
424 "AND lm_ass_id = ".$ilDB->quote($a_ass_id,
"integer");
435 include_once(
'Modules/Course/classes/class.ilCourseObjective.php');
437 $container_ref_id = current($container_ref_ids);
441 $this->lms =
array();
442 $query =
"SELECT position,lm_ass_id,lm.ref_id,lm.obj_id,lm.type FROM crs_objective_lm lm ".
443 "JOIN object_reference obr ON lm.ref_id = obr.ref_id ".
444 "JOIN object_data obd ON obr.obj_id = obd.obj_id ".
445 "LEFT JOIN lm_data lmd ON lmd.obj_id = lm.obj_id ".
446 "WHERE objective_id = ".$ilDB->quote($this->
getObjectiveId(),
'integer').
" ".
447 "ORDER BY position,obd.title,lmd.title";
452 if(!$tree->isInTree(
$row->ref_id)
or !$tree->isGrandChild($container_ref_id,
$row->ref_id))
454 $this->
delete(
$row->lm_ass_id);
457 $lm[
'ref_id'] =
$row->ref_id;
458 $lm[
'obj_id'] =
$row->obj_id;
459 $lm[
'type'] =
$row->type;
460 $lm[
'lm_ass_id'] =
$row->lm_ass_id;
461 $lm[
'position'] =
$row->position;
463 $this->lms[
$row->lm_ass_id] = $lm;
484 'refId' => $material[
'ref_id'],
485 'objId' => $material[
'obj_id'],
486 'type' => $material[
'type'],
487 'position' => $material[
'position']
static getInstance($a_container_id)
Get instance by container id.
static _lookupContainerIdByObjectiveId($a_objective_id)
Get container of object.
writePosition($a_ass_id, $a_position)
write position
xmlElement($tag, $attrs=NULL, $data=Null, $encode=TRUE, $escape=TRUE)
Writes a basic element (no children, just textual content)
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
isAssigned($a_ref_id, $a_get_id=false)
Check if material is assigned.
static _getAllReferences($a_id)
get all reference ids of object
class ilCourseObjectiveMaterials
static _getInstance($a_copy_id)
Get instance of copy wizard options.
static _getAllAssignedMaterials($a_container_id)
Get all assigned materials.
static _lookupObjId($a_id)
isChapterAssigned($a_ref_id, $a_obj_id)
Check if chapter is assigned.
Create styles array
The data for the language used.
static _getAssignedMaterials($a_objective_id)
get assigned materials
cloneDependencies($a_new_objective, $a_copy_id)
clone objective materials
static _getAssignableMaterials($a_container_id)
Get an array of course material ids that can be assigned to learning objectives No tst...
const TYPE_TEST_UNDEFINED
__construct($a_objective_id)
toXml(ilXmlWriter $writer)