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')
93 #$ilLog->write(__METHOD__.': 6');
95 $new_material_info = isset($mappings[$material_ref_id.
'_'.$material_obj_id]) ?
96 $mappings[$material_ref_id.
'_'.$material_obj_id] :
98 $new_material_arr = explode(
'_',$new_material_info);
99 if(!isset($new_material_arr[1]) or !$new_material_arr[1])
101 $ilLog->write(__METHOD__.
': No mapping found for chapter: '.$material_obj_id);
104 $new_obj_id = $new_material_arr[1];
105 $ilLog->write(__METHOD__.
': New material id is: '.$new_obj_id);
109 #$ilLog->write(__METHOD__.': 7');
111 $new_obj_id = $ilObjDataCache->lookupObjId($mappings[$material_ref_id]);
114 #$ilLog->write(__METHOD__.': 8');
116 #$ilLog->write(__METHOD__.': 8.1');
117 $new_material->setLMRefId($new_ref_id);
118 #$ilLog->write(__METHOD__.': 8.2');
119 $new_material->setLMObjId($new_obj_id);
120 #$ilLog->write(__METHOD__.': 8.3');
121 $new_material->setType($material[
'type']);
122 #$ilLog->write(__METHOD__.': 8.4');
123 $new_material->add();
124 #$ilLog->write(__METHOD__.': 9');
141 $query =
"SELECT DISTINCT(ref_id) ref_id FROM crs_objective_lm ".
142 "WHERE objective_id = ".$ilDB->quote($a_objective_id ,
'integer').
" ";
146 $ref_ids[] =
$row->ref_id;
148 return $ref_ids ? $ref_ids : array();
167 $all_materials = $tree->getSubTree($tree->getNodeData($a_container_id),
true);
171 foreach($all_materials as $material)
173 switch($material[
'type'])
184 $assignable[] = $material;
188 return $assignable ? $assignable : array();
203 $query =
"SELECT DISTINCT(com.ref_id) ref_id FROM crs_objectives co ".
204 "JOIN crs_objective_lm com ON co.objective_id = com.objective_id ".
205 "JOIN object_reference obr ON com.ref_id = obr.ref_id ".
206 "JOIN object_data obd ON obr.obj_id = obd.obj_id ".
207 "WHERE co.crs_id = ".$ilDB->quote($a_container_id,
'integer').
" ".
208 "ORDER BY obd.title ";
213 $ref_ids[] =
$row->ref_id;
215 return $ref_ids ? $ref_ids : array();
220 return $this->lms ? $this->lms : array();
225 foreach($this->lms as $lm_data)
227 if($lm_data[
'type'] ==
'st')
229 $chapters[] = $lm_data;
231 if($lm_data[
'type'] ==
'pg')
233 $chapters[] = $lm_data;
236 return $chapters ? $chapters : array();
241 return $this->lms[$lm_id] ? $this->lms[$lm_id] : array();
251 $this->lm_ref_id = $a_ref_id;
255 return $this->lm_ref_id ? $this->lm_ref_id : 0;
259 $this->lm_obj_id = $a_obj_id;
263 return $this->lm_obj_id ? $this->lm_obj_id : 0;
267 $this->type = $a_type;
286 $query =
"SELECT * FROM crs_objective_lm ".
287 "WHERE ref_id = ".$this->db->quote($a_ref_id ,
'integer').
" ".
288 "AND objective_id = ".$this->db->quote($this->
getObjectiveId() ,
'integer').
" ".
289 "AND type != 'st' AND type != 'pg' ";
291 return $res->numRows() ?
true :
false;
306 $query =
"SELECT * FROM crs_objective_lm ".
307 "WHERE ref_id = ".$this->db->quote($a_ref_id ,
'integer').
" ".
308 "AND obj_id = ".$this->db->quote($a_obj_id ,
'integer').
" ".
309 "AND objective_id = ".$this->db->quote($this->
getObjectiveId() ,
'integer').
" ".
310 "AND (type = 'st' OR type = 'pg')";
312 return $res->numRows() ?
true :
false;
320 $query =
"SELECT * FROM crs_objective_lm ".
321 "WHERE objective_id = ".$ilDB->quote($this->
getObjectiveId() ,
'integer').
" ".
322 "AND ref_id = ".$ilDB->quote($this->
getLMRefId() ,
'integer').
" ".
323 "AND obj_id = ".$ilDB->quote($this->
getLMObjId() ,
'integer').
" ";
327 $query =
"SELECT * FROM crs_objective_lm ".
328 "WHERE objective_id = ".$ilDB->quote($this->
getObjectiveId() ,
'integer').
" ".
329 "AND ref_id = ".$ilDB->quote($this->
getLMRefId() ,
'integer').
" ";
334 return $res->numRows() ?
true :
false;
341 $next_id = $ilDB->nextId(
'crs_objective_lm');
342 $query =
"INSERT INTO crs_objective_lm (lm_ass_id,objective_id,ref_id,obj_id,type) ".
344 $ilDB->quote($next_id,
'integer').
", ".
346 $ilDB->quote($this->
getLMRefId() ,
'integer').
", ".
347 $ilDB->quote($this->
getLMObjId() ,
'integer').
", ".
348 $ilDB->quote($this->
getType() ,
'text').
354 function delete($lm_id)
363 $query =
"DELETE FROM crs_objective_lm ".
364 "WHERE lm_ass_id = ".$ilDB->quote($lm_id ,
'integer').
" ";
374 $query =
"DELETE FROM crs_objective_lm ".
375 "WHERE objective_id = ".$ilDB->quote($this->
getObjectiveId() ,
'integer').
" ";
385 include_once(
'Modules/Course/classes/class.ilCourseObjective.php');
387 $container_ref_id = current($container_ref_ids);
389 $this->lms = array();
390 $query =
"SELECT lm_ass_id,lm.ref_id,lm.obj_id,lm.type FROM crs_objective_lm lm ".
391 "JOIN object_reference obr ON lm.ref_id = obr.ref_id ".
392 "JOIN object_data obd ON obr.obj_id = obd.obj_id ".
393 "LEFT JOIN lm_data lmd ON lmd.obj_id = lm.obj_id ".
394 "WHERE objective_id = ".$ilDB->quote($this->
getObjectiveId(),
'integer').
" ".
395 "ORDER BY obd.title,lmd.title";
400 if(!$tree->isInTree(
$row->ref_id) or !$tree->isGrandChild($container_ref_id,
$row->ref_id))
402 $this->
delete(
$row->lm_ass_id);
405 $lm[
'ref_id'] =
$row->ref_id;
406 $lm[
'obj_id'] =
$row->obj_id;
407 $lm[
'type'] =
$row->type;
408 $lm[
'lm_ass_id'] =
$row->lm_ass_id;
410 $this->lms[
$row->lm_ass_id] = $lm;