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'])
185 $assignable[] = $material;
189 return $assignable ? $assignable : array();
204 $query =
"SELECT DISTINCT(com.ref_id) ref_id FROM crs_objectives co ".
205 "JOIN crs_objective_lm com ON co.objective_id = com.objective_id ".
206 "JOIN object_reference obr ON com.ref_id = obr.ref_id ".
207 "JOIN object_data obd ON obr.obj_id = obd.obj_id ".
208 "WHERE co.crs_id = ".$ilDB->quote($a_container_id,
'integer').
" ".
209 "ORDER BY obd.title ";
214 $ref_ids[] =
$row->ref_id;
216 return $ref_ids ? $ref_ids : array();
221 return $this->lms ? $this->lms : array();
226 foreach($this->lms as $lm_data)
228 if($lm_data[
'type'] ==
'st')
230 $chapters[] = $lm_data;
232 if($lm_data[
'type'] ==
'pg')
234 $chapters[] = $lm_data;
237 return $chapters ? $chapters : array();
242 return $this->lms[$lm_id] ? $this->lms[$lm_id] : array();
252 $this->lm_ref_id = $a_ref_id;
256 return $this->lm_ref_id ? $this->lm_ref_id : 0;
260 $this->lm_obj_id = $a_obj_id;
264 return $this->lm_obj_id ? $this->lm_obj_id : 0;
268 $this->type = $a_type;
287 $query =
"SELECT * FROM crs_objective_lm ".
288 "WHERE ref_id = ".$this->db->quote($a_ref_id ,
'integer').
" ".
289 "AND objective_id = ".$this->db->quote($this->
getObjectiveId() ,
'integer').
" ".
290 "AND type != 'st' AND type != 'pg' ";
292 return $res->numRows() ?
true :
false;
307 $query =
"SELECT * FROM crs_objective_lm ".
308 "WHERE ref_id = ".$this->db->quote($a_ref_id ,
'integer').
" ".
309 "AND obj_id = ".$this->db->quote($a_obj_id ,
'integer').
" ".
310 "AND objective_id = ".$this->db->quote($this->
getObjectiveId() ,
'integer').
" ".
311 "AND (type = 'st' OR type = 'pg')";
313 return $res->numRows() ?
true :
false;
321 $query =
"SELECT * FROM crs_objective_lm ".
322 "WHERE objective_id = ".$ilDB->quote($this->
getObjectiveId() ,
'integer').
" ".
323 "AND ref_id = ".$ilDB->quote($this->
getLMRefId() ,
'integer').
" ".
324 "AND obj_id = ".$ilDB->quote($this->
getLMObjId() ,
'integer').
" ";
328 $query =
"SELECT * FROM crs_objective_lm ".
329 "WHERE objective_id = ".$ilDB->quote($this->
getObjectiveId() ,
'integer').
" ".
330 "AND ref_id = ".$ilDB->quote($this->
getLMRefId() ,
'integer').
" ";
335 return $res->numRows() ?
true :
false;
342 $next_id = $ilDB->nextId(
'crs_objective_lm');
343 $query =
"INSERT INTO crs_objective_lm (lm_ass_id,objective_id,ref_id,obj_id,type) ".
345 $ilDB->quote($next_id,
'integer').
", ".
347 $ilDB->quote($this->
getLMRefId() ,
'integer').
", ".
348 $ilDB->quote($this->
getLMObjId() ,
'integer').
", ".
349 $ilDB->quote($this->
getType() ,
'text').
355 function delete($lm_id)
364 $query =
"DELETE FROM crs_objective_lm ".
365 "WHERE lm_ass_id = ".$ilDB->quote($lm_id ,
'integer').
" ";
375 $query =
"DELETE FROM crs_objective_lm ".
376 "WHERE objective_id = ".$ilDB->quote($this->
getObjectiveId() ,
'integer').
" ";
386 include_once(
'Modules/Course/classes/class.ilCourseObjective.php');
388 $container_ref_id = current($container_ref_ids);
390 $this->lms = array();
391 $query =
"SELECT lm_ass_id,lm.ref_id,lm.obj_id,lm.type FROM crs_objective_lm lm ".
392 "JOIN object_reference obr ON lm.ref_id = obr.ref_id ".
393 "JOIN object_data obd ON obr.obj_id = obd.obj_id ".
394 "LEFT JOIN lm_data lmd ON lmd.obj_id = lm.obj_id ".
395 "WHERE objective_id = ".$ilDB->quote($this->
getObjectiveId(),
'integer').
" ".
396 "ORDER BY obd.title,lmd.title";
401 if(!$tree->isInTree(
$row->ref_id) or !$tree->isGrandChild($container_ref_id,
$row->ref_id))
403 $this->
delete(
$row->lm_ass_id);
406 $lm[
'ref_id'] =
$row->ref_id;
407 $lm[
'obj_id'] =
$row->obj_id;
408 $lm[
'type'] =
$row->type;
409 $lm[
'lm_ass_id'] =
$row->lm_ass_id;
411 $this->lms[
$row->lm_ass_id] = $lm;