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 " .
 
  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 " .
 
  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']
 
An exception for terminatinating execution or to throw for unit testing.
static _getInstance($a_copy_id)
Get instance of copy wizard options.
class ilCourseObjectiveMaterials
__construct($a_objective_id)
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,...
isAssigned($a_ref_id, $a_get_id=false)
Check if material is assigned.
static _getAssignedMaterials($a_objective_id)
get assigned materials
static _getAllAssignedMaterials($a_container_id)
Get all assigned materials.
isChapterAssigned($a_ref_id, $a_obj_id)
Check if chapter is assigned.
writePosition($a_ass_id, $a_position)
write position
toXml(ilXmlWriter $writer)
static _lookupContainerIdByObjectiveId($a_objective_id)
Get container of object.
const TYPE_TEST_UNDEFINED
static getInstance($a_container_id)
Get instance by container id.
static _lookupObjId($a_id)
static _getAllReferences($a_id)
get all reference ids of object
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
xmlElement($tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
foreach($_POST as $key=> $value) $res