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;