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;