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'); 69 #$ilLog->write(__METHOD__.': 2'); 71 if (!isset($mappings[$material[
'ref_id']]) or !$mappings[$material[
'ref_id']]) {
74 #$ilLog->write(__METHOD__.': 3'); 75 $material_ref_id = $material[
'ref_id'];
76 $material_rbac_obj_id = $ilObjDataCache->lookupObjId($material_ref_id);
77 $material_obj_id = $material[
'obj_id'];
78 $new_ref_id = $mappings[$material_ref_id];
79 $new_rbac_obj_id = $ilObjDataCache->lookupObjId($new_ref_id);
80 #$ilLog->write(__METHOD__.': 4'); 83 if ($new_rbac_obj_id == $material_rbac_obj_id) {
84 #$ilLog->write(__METHOD__.': 5'); 85 $ilLog->write(__METHOD__ .
': Material has been linked. Keeping object id.');
86 $new_obj_id = $material_obj_id;
87 } elseif ($material[
'type'] ==
'st' or $material[
'type'] ==
'pg') {
89 #$GLOBALS['ilLog']->write(__METHOD__.': '.print_r($material,TRUE)); 90 #$GLOBALS['ilLog']->write(__METHOD__.': '.print_r($mappings,TRUE)); 92 #$ilLog->write(__METHOD__.': 6'); 94 $new_material_info = isset($mappings[$material_ref_id .
'_' . $material_obj_id]) ?
95 $mappings[$material_ref_id .
'_' . $material_obj_id] :
97 $new_material_arr = explode(
'_', $new_material_info);
98 if (!isset($new_material_arr[1]) or !$new_material_arr[1]) {
99 $ilLog->write(__METHOD__ .
': No mapping found for chapter: ' . $material_obj_id);
102 $new_obj_id = $new_material_arr[1];
103 $ilLog->write(__METHOD__ .
': New material id is: ' . $new_obj_id);
105 #$ilLog->write(__METHOD__.': 7'); 107 $new_obj_id = $ilObjDataCache->lookupObjId($mappings[$material_ref_id]);
110 #$ilLog->write(__METHOD__.': 8'); 112 #$ilLog->write(__METHOD__.': 8.1'); 113 $new_material->setLMRefId($new_ref_id);
114 #$ilLog->write(__METHOD__.': 8.2'); 115 $new_material->setLMObjId($new_obj_id);
116 #$ilLog->write(__METHOD__.': 8.3'); 117 $new_material->setType($material[
'type']);
118 #$ilLog->write(__METHOD__.': 8.4'); 119 $new_material->add();
120 #$ilLog->write(__METHOD__.': 9'); 136 $query =
"SELECT DISTINCT(ref_id) ref_id FROM crs_objective_lm " .
137 "WHERE objective_id = " . $ilDB->quote($a_objective_id,
'integer');
140 $ref_ids[] =
$row->ref_id;
142 return $ref_ids ? $ref_ids :
array();
163 $all_materials = $tree->getSubTree($tree->getNodeData($a_container_id),
true);
167 foreach ($all_materials as $material) {
168 switch ($material[
'type']) {
171 include_once
'./Modules/Course/classes/class.ilCourseObjectiveMaterials.php';
176 $assignable[] = $material;
186 $assignable[] = $material;
190 return $assignable ? $assignable :
array();
205 $query =
"SELECT DISTINCT(com.ref_id) ref_id FROM crs_objectives co " .
206 "JOIN crs_objective_lm com ON co.objective_id = com.objective_id " .
207 "JOIN object_reference obr ON com.ref_id = obr.ref_id " .
208 "JOIN object_data obd ON obr.obj_id = obd.obj_id " .
209 "WHERE co.crs_id = " . $ilDB->quote($a_container_id,
'integer') .
" " .
210 "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) {
227 if ($lm_data[
'type'] ==
'st') {
228 $chapters[] = $lm_data;
230 if ($lm_data[
'type'] ==
'pg') {
231 $chapters[] = $lm_data;
234 return $chapters ? $chapters :
array();
239 return $this->lms[$lm_id] ? $this->lms[$lm_id] :
array();
249 $this->lm_ref_id = $a_ref_id;
253 return $this->lm_ref_id ? $this->lm_ref_id : 0;
257 $this->lm_obj_id = $a_obj_id;
261 return $this->lm_obj_id ? $this->lm_obj_id : 0;
284 $query =
"SELECT * FROM crs_objective_lm " .
285 "WHERE ref_id = " . $this->db->quote($a_ref_id,
'integer') .
" " .
286 "AND objective_id = " . $this->db->quote($this->
getObjectiveId(),
'integer') .
" " .
287 "AND type != 'st' AND type != 'pg' ";
292 return $res->numRows() ? true :
false;
295 return $row[
"lm_ass_id"];
312 $query =
"SELECT * FROM crs_objective_lm " .
313 "WHERE ref_id = " . $this->db->quote($a_ref_id,
'integer') .
" " .
314 "AND obj_id = " . $this->db->quote($a_obj_id,
'integer') .
" " .
315 "AND objective_id = " . $this->db->quote($this->
getObjectiveId(),
'integer') .
" " .
316 "AND (type = 'st' OR type = 'pg')";
318 return $res->numRows() ? true :
false;
325 $query =
"SELECT * FROM crs_objective_lm " .
326 "WHERE objective_id = " . $ilDB->quote($this->
getObjectiveId(),
'integer') .
" " .
327 "AND ref_id = " . $ilDB->quote($this->
getLMRefId(),
'integer') .
" " .
328 "AND obj_id = " . $ilDB->quote($this->
getLMObjId(),
'integer') .
" ";
330 $query =
"SELECT * FROM crs_objective_lm " .
331 "WHERE objective_id = " . $ilDB->quote($this->
getObjectiveId(),
'integer') .
" " .
332 "AND ref_id = " . $ilDB->quote($this->
getLMRefId(),
'integer') .
" ";
337 return $res->numRows() ? true :
false;
344 $next_id = $ilDB->nextId(
'crs_objective_lm');
345 $query =
"INSERT INTO crs_objective_lm (lm_ass_id,objective_id,ref_id,obj_id,type) " .
347 $ilDB->quote($next_id,
'integer') .
", " .
349 $ilDB->quote($this->
getLMRefId(),
'integer') .
", " .
350 $ilDB->quote($this->
getLMObjId(),
'integer') .
", " .
351 $ilDB->quote($this->
getType(),
'text') .
355 return (
int) $next_id;
357 public function delete($lm_id)
365 $query =
"DELETE FROM crs_objective_lm " .
366 "WHERE lm_ass_id = " . $ilDB->quote($lm_id,
'integer') .
" ";
376 $query =
"DELETE FROM crs_objective_lm " .
377 "WHERE objective_id = " . $ilDB->quote($this->
getObjectiveId(),
'integer') .
" ";
395 $query =
"UPDATE crs_objective_lm " .
396 "SET position = " . $this->db->quote((
string) $a_position,
'integer') .
" " .
397 "WHERE objective_id = " . $this->db->quote($this->
getObjectiveId(),
'integer') .
" " .
398 "AND lm_ass_id = " . $ilDB->quote($a_ass_id,
"integer");
409 include_once(
'Modules/Course/classes/class.ilCourseObjective.php');
411 $container_ref_id = current($container_ref_ids);
415 $this->lms =
array();
416 $query =
"SELECT position,lm_ass_id,lm.ref_id,lm.obj_id,lm.type FROM crs_objective_lm lm " .
417 "JOIN object_reference obr ON lm.ref_id = obr.ref_id " .
418 "JOIN object_data obd ON obr.obj_id = obd.obj_id " .
419 "LEFT JOIN lm_data lmd ON lmd.obj_id = lm.obj_id " .
420 "WHERE objective_id = " . $ilDB->quote($this->
getObjectiveId(),
'integer') .
" " .
421 "ORDER BY position,obd.title,lmd.title";
425 if (!$tree->isInTree(
$row->ref_id) or !$tree->isGrandChild($container_ref_id,
$row->ref_id)) {
426 $this->
delete(
$row->lm_ass_id);
429 $lm[
'ref_id'] =
$row->ref_id;
430 $lm[
'obj_id'] =
$row->obj_id;
431 $lm[
'type'] =
$row->type;
432 $lm[
'lm_ass_id'] =
$row->lm_ass_id;
433 $lm[
'position'] =
$row->position;
435 $this->lms[
$row->lm_ass_id] = $lm;
455 'refId' => $material[
'ref_id'],
456 'objId' => $material[
'obj_id'],
457 'type' => $material[
'type'],
458 'position' => $material[
'position']
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
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
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.
foreach($_POST as $key=> $value) $res
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
xmlElement($tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
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)