44                $this->timing_type = $a_type;
 
   65                $this->timing_start = $a_start;
 
   85                $this->timing_end = $a_end;
 
  105                $this->suggestion_start = $a_start;
 
  115                return $this->suggestion_start ? $this->suggestion_start : mktime(0,0,1,date(
'n',time()),date(
'j',time()),date(
'Y',time()));
 
  125                $this->suggestion_end = $a_end;
 
  135                return $this->suggestion_end ? $this->suggestion_end : mktime(23,55,00,date(
'n',time()),date(
'j',time()),date(
'Y',time()));
 
  145                $this->earliest_start = $a_start;
 
  155                return $this->earliest_start ? $this->earliest_start : mktime(0,0,1,date(
'n',time()),date(
'j',time()),date(
'Y',time()));
 
  165                $this->latest_end = $a_end;
 
  175                return $this->latest_end ? $this->latest_end : mktime(23,55,00,date(
'n',time()),date(
'j',time()),date(
'Y',time()));
 
  185                $this->visible = (int) $a_status;
 
  205                $this->changeable = (int) $a_status;
 
  233                                $ilErr->appendMessage(
$lng->txt(
"crs_activation_start_invalid"));
 
  240                                $ilErr->appendMessage(
$lng->txt(
'crs_latest_end_not_valid'));
 
  257        function update($a_ref_id, $a_parent_id = 
null)
 
  262                $query = 
"UPDATE crs_items SET ".
 
  263                        "timing_type = ".$ilDB->quote($this->
getTimingType(),
'integer').
", ".
 
  264                        "timing_start = ".$ilDB->quote((
int)$this->
getTimingStart(),
'integer').
", ".
 
  265                        "timing_end = ".$ilDB->quote((
int)$this->
getTimingEnd(),
'integer').
", ".
 
  270                        "latest_end = ".$ilDB->quote($this->
getLatestEnd(),
'integer').
", ";
 
  274                        $query .= 
"parent_id = ".$ilDB->quote($a_parent_id,
'integer').
", ";
 
  278                        "WHERE obj_id = ".$ilDB->quote($a_ref_id,
'integer');
 
  281                unset(self::$preloaded_data[$a_ref_id]);
 
  295                $sql = 
"SELECT * FROM crs_items".
 
  296                        " WHERE ".$ilDB->in(
"obj_id", $a_ref_ids, 
"", 
"integer");               
 
  297                $set = 
$ilDB->query($sql);
 
  300                        self::$preloaded_data[
$row[
"obj_id"]] = 
$row;                                           
 
  314                if(isset(self::$preloaded_data[$a_ref_id]))
 
  316                        return self::$preloaded_data[$a_ref_id];
 
  319                $sql = 
"SELECT * FROM crs_items".
 
  320                        " WHERE obj_id = ".$ilDB->quote($a_ref_id, 
"integer");  
 
  321                $set = 
$ilDB->query($sql);
 
  324                if(!isset(
$row[
"obj_id"]))
 
  330                        self::$preloaded_data[
$row[
"obj_id"]] = 
$row;
 
  346                $a_item[
'obj_id'] = ($a_item[
'obj_id'] > 0)
 
  349                $a_item[
'type'] = ($a_item[
'type'] != 
'')
 
  353                $a_item[
'timing_type'] = $item[
'timing_type'];
 
  355                if($item[
'changeable'] &&  
 
  356                        $item[
'timing_type'] == self::TIMINGS_PRESETTING)
 
  358                        include_once 
'Modules/Course/classes/Timings/class.ilTimingPlaned.php';
 
  360                        if($user_data[
'planed_start'])
 
  362                                $a_item[
'start'] = $user_data[
'planed_start'];
 
  363                                $a_item[
'end'] = $user_data[
'planed_end'];
 
  364                                $a_item[
'activation_info'] = 
'crs_timings_planed_info';
 
  368                                $a_item[
'start'] = $item[
'suggestion_start'];
 
  369                                $a_item[
'end'] = $item[
'suggestion_end'];
 
  370                                $a_item[
'activation_info'] = 
'crs_timings_suggested_info';
 
  373                elseif($item[
'timing_type'] == self::TIMINGS_PRESETTING)
 
  375                        $a_item[
'start'] = $item[
'suggestion_start'];
 
  376                        $a_item[
'end'] = $item[
'suggestion_end'];
 
  377                        $a_item[
'activation_info'] = 
'crs_timings_suggested_info';
 
  379                elseif($item[
'timing_type'] == self::TIMINGS_ACTIVATION)
 
  381                        $a_item[
'start'] = $item[
'timing_start'];
 
  382                        $a_item[
'end'] = $item[
'timing_end'];
 
  383                        $a_item[
'activation_info'] = 
'obj_activation_list_gui';
 
  387                        $a_item[
'start'] = 
'abc';
 
  391                if($a_item[
'type'] == 
'sess')
 
  393                        include_once(
'./Modules/Session/classes/class.ilSessionAppointment.php');
 
  397                        $a_item[
'masked_start'] = $a_item[
'start'];
 
  398                        $a_item[
'masked_end'] = $a_item[
'end'];
 
  399                        $a_item[
'start'] = 
$info[
'start'];
 
  400                        $a_item[
'end'] = 
$info[
'end'];                  
 
  416                if(isset($a_item[
'timing_type']))
 
  418                        if(!isset($a_item[
'masked_start']))
 
  420                                $start = $a_item[
'start'];
 
  421                                $end = $a_item[
'end'];
 
  425                                $start = $a_item[
'masked_start'];
 
  426                                $end = $a_item[
'masked_end'];
 
  429                        switch($a_item[
'timing_type'])
 
  443                        if ($activation != 
"")
 
  446                                $lng->loadLanguageModule(
'crs');
 
  449                                        $activation, 
false, 
true);              
 
  464                $parent_id = $tree->getParentId($a_ref_id);
 
  471                $ilDB->lockTables(array(
 
  472                        array(
"name" => 
"crs_items", 
 
  477                $sql = 
"SELECT * FROM crs_items".
 
  478                        " WHERE obj_id = ".$ilDB->quote($a_ref_id, 
"integer");  
 
  479                $set = 
$ilDB->query($sql);
 
  480                if(!
$ilDB->numRows($set))
 
  483                        $now_parts = getdate($now);
 
  487                        $a_item[
"timing_start"]         = $now;
 
  488                        $a_item[
"timing_end"]           = $now;
 
  489                        $a_item[
"suggestion_start"]     = $now;
 
  490                        $a_item[
"suggestion_end"]       = $now;
 
  491                        $a_item[
'visible']                      = 0;
 
  492                        $a_item[
'changeable']           = 0;
 
  493                        $a_item[
'earliest_start']       = $now;
 
  494                        $a_item[
'latest_end']       = mktime(23,55,00,$now_parts[
"mon"],$now_parts[
"mday"],$now_parts[
"year"]);
 
  495                        $a_item[
'visible']                      = 0;
 
  496                        $a_item[
'changeable']           = 0;
 
  498                        $query = 
"INSERT INTO crs_items (parent_id,obj_id,timing_type,timing_start,timing_end," .
 
  499                                "suggestion_start,suggestion_end, ".
 
  500                                "changeable,earliest_start,latest_end,visible,position) ".
 
  502                                $ilDB->quote($parent_id,
'integer').
",".
 
  503                                $ilDB->quote($a_ref_id,
'integer').
",".
 
  504                                $ilDB->quote($a_item[
"timing_type"],
'integer').
",".
 
  505                                $ilDB->quote($a_item[
"timing_start"],
'integer').
",".
 
  506                                $ilDB->quote($a_item[
"timing_end"],
'integer').
",".
 
  507                                $ilDB->quote($a_item[
"suggestion_start"],
'integer').
",".
 
  508                                $ilDB->quote($a_item[
"suggestion_end"],
'integer').
",".
 
  509                                $ilDB->quote($a_item[
"changeable"],
'integer').
",".
 
  510                                $ilDB->quote($a_item[
'earliest_start'],
'integer').
", ".
 
  511                                $ilDB->quote($a_item[
'latest_end'],
'integer').
", ".
 
  512                                $ilDB->quote($a_item[
"visible"],
'integer').
", ".
 
  513                                $ilDB->quote(0,
'integer').
")";
 
  517                $ilDB->unlockTables();
 
  520                $a_item[
"obj_id"] = $a_ref_id;
 
  521                $a_item[
"parent_id"] = $parent_id;
 
  540                $query = 
"DELETE FROM crs_items ".
 
  541                        "WHERE obj_id = ".$ilDB->quote($a_ref_id,
'integer');
 
  544                $query = 
"DELETE FROM crs_items ".
 
  545                        "WHERE parent_id = ".$ilDB->quote($a_ref_id,
'integer');
 
  562                $ilLog->write(__METHOD__.
': Begin course items...');
 
  567                        $ilLog->write(__METHOD__.
': No course items found.');
 
  574                        $ilLog->write(__METHOD__.
': Cannot create target object.');
 
  578                include_once(
'Services/CopyWizard/classes/class.ilCopyWizardOptions.php');
 
  580                $mappings = $cp_options->getMappings();                         
 
  582                foreach($items as $item)
 
  584                        if(!isset($mappings[$item[
'parent_id']]) or !$mappings[$item[
'parent_id']])
 
  586                                $ilLog->write(__METHOD__.
': No mapping for parent nr. '.$item[
'parent_id']);
 
  589                        if(!isset($mappings[$item[
'obj_id']]) or !$mappings[$item[
'obj_id']])
 
  591                                $ilLog->write(__METHOD__.
': No mapping for item nr. '.$item[
'obj_id']);
 
  594                        $new_item_id = $mappings[$item[
'obj_id']];
 
  595                        $new_parent = $mappings[$item[
'parent_id']];
 
  597                        $new_item = 
new self();
 
  598                        $new_item->setTimingType($item[
'timing_type']);
 
  599                        $new_item->setTimingStart($item[
'timing_start']);
 
  600                        $new_item->setTimingEnd($item[
'timing_end']);
 
  601                        $new_item->setSuggestionStart($item[
'suggestion_start']);
 
  602                        $new_item->setSuggestionEnd($item[
'suggestion_end']);
 
  603                        $new_item->toggleChangeable($item[
'changeable']);
 
  604                        $new_item->setEarliestStart($item[
'earliest_start']);
 
  605                        $new_item->setLatestEnd($item[
'latest_end']);
 
  606                        $new_item->toggleVisible($item[
'visible']);
 
  607                        $new_item->update($new_item_id, $new_parent);
 
  609                        $ilLog->write(__METHOD__.
': Added new entry for item nr. '.$item[
'obj_id']);
 
  611                $ilLog->write(__METHOD__.
': Finished course items.');
 
  629                $subtree = $tree->getSubTree($tree->getNodeData($a_ref_id));
 
  631                foreach($subtree as $node)
 
  633                        $ref_ids[] = $node[
'ref_id'];
 
  636                $query = 
"SELECT * FROM crs_items ".
 
  637                        "WHERE timing_type = ".$ilDB->quote(self::TIMINGS_PRESETTING,
'integer').
" ".
 
  638                        "AND ".$ilDB->in(
'obj_id',$ref_ids,
false,
'integer');
 
  640                return $res->numRows() ? true :
false;
 
  653                $subtree = $tree->getSubTree($tree->getNodeData($a_ref_id));
 
  655                foreach($subtree as $node)
 
  657                        $ref_ids[] = $node[
'ref_id'];
 
  660                $query = 
"SELECT * FROM crs_items ".
 
  661                        "WHERE timing_type = ".$ilDB->quote(self::TIMINGS_PRESETTING,
'integer').
" ".
 
  662                        "AND changeable = ".$ilDB->quote(1,
'integer').
" ".
 
  663                        "AND ".$ilDB->in(
'obj_id',$ref_ids,
false,
'integer');
 
  665                return $res->numRows() ? true : 
false;
 
  680                foreach($a_ref_ids as $item_ref_id)
 
  682                        if($tree->isDeleted($item_ref_id))
 
  687                        $node = $tree->getNodeData($item_ref_id);
 
  688                        if($node[
"ref_id"] != $item_ref_id)
 
  692                        $res[$item_ref_id] = $node;
 
  698                        foreach(
$res as $idx => $item)
 
  705                return array_values(
$res);
 
  716                include_once 
'Modules/Session/classes/class.ilEventItems.php';
 
  729                include_once 
'Modules/ItemGroup/classes/class.ilItemGroupItems.php';
 
  731                $items = $ig_items->getValidItems();
 
  743                include_once(
'./Modules/Course/classes/class.ilCourseObjectiveMaterials.php');
 
  755        public static function getItems($a_parent_id, $a_with_list_data = 
true)
 
  762                foreach($tree->getChilds($a_parent_id) as $item)
 
  764                        if($item[
'type'] != 
'rolf')
 
  767                                $ref_ids[] = $item[
'ref_id'];
 
  775                        foreach($items as $idx => $item)
 
  777                                if(!$a_with_list_data)
 
  779                                        $items[$idx] = array_merge($item, self::getItem($item[
'ref_id']));
 
  784                                        $items[$idx] = $item;
 
  804                        $active = $inactive = array();
 
  805                        foreach($items as $item)
 
  808                                if($item[
'timing_type'] == self::TIMINGS_DEACTIVATED)
 
  820                        $items = array_merge($active,$inactive);
 
  834                global $objDefinition;
 
  838                include_once 
'Modules/Session/classes/class.ilEventItems.php';
 
  840                foreach(self::getTimingsAdministrationItems($a_container_ref_id) as $item)
 
  842                        if(!in_array($item[
'ref_id'],$event_items) &&
 
  843                                !$objDefinition->isSideBlock($item[
'type']))
 
static _getInstance($a_copy_id)
Get instance of copy wizard options.
static _getAssignedMaterials($a_objective_id)
get assigned materials
static formatPeriod(ilDateTime $start, ilDateTime $end)
Format a period of two date Shows: 14.
@classDescription Date and time handling
_getItemsOfContainer($a_ref_id)
Class ilObjectActivation.
getTimingStart()
Get timing start.
setTimingStart($a_start)
Set timing start.
const TIMINGS_DEACTIVATED
setEarliestStart($a_start)
Set earliest start.
validateActivation()
Validate current properties.
getLatestEnd()
Get latest end.
setLatestEnd($a_end)
Set latest end.
enabledVisible()
Get visible status.
static getTimingsAdministrationItems($a_parent_id)
Get (sub) item data for timings administration view (active/inactive)
getEarliestStart()
Get earliest start.
getTimingType()
get timing type
static createDefaultEntry($a_ref_id)
Create db entry with default values.
setTimingType($a_type)
Set timing type.
update($a_ref_id, $a_parent_id=null)
Update db entry.
setSuggestionStart($a_start)
Set suggestion start.
static addListGUIActivationProperty(ilObjectListGUI $a_list_gui, array &$a_item)
Get timing details for list gui.
static getItemsByObjective($a_objective_id)
Get objective items.
static deleteAllEntries($a_ref_id)
Delete all db entries for ref id.
getTimingEnd()
Get timing end.
static cloneDependencies($a_ref_id, $a_target_id, $a_copy_id)
Clone dependencies.
enabledChangeable()
Get changeable status.
static hasChangeableTimings($a_ref_id)
Check if there is any active changeable timing (in subtree)
static getItemsByEvent($a_event_id)
Get session material / event items.
setTimingEnd($a_end)
Set timing end.
toggleChangeable($a_status)
Set changeable status.
static hasTimings($a_ref_id)
Check if there is any active timing (in subtree)
static preloadData(array $a_ref_ids)
Preload data to internal cache.
static processListItems(array $a_ref_ids)
Validate ref ids and add list data.
static getItemsByItemGroup($a_item_group_ref_id)
Get materials of item group.
static addAdditionalSubItemInformation(array &$a_item)
Parse item data for list entries.
getSuggestionStart()
Get suggestion start.
static getTimingsItems($a_container_ref_id)
Get (sub) item data for timings view (no session material, no side blocks)
getSuggestionEnd()
Get suggestion end.
static getItem($a_ref_id)
Get item data.
toggleVisible($a_status)
Set visible status.
setSuggestionEnd($a_end)
Set suggestion end.
static getItems($a_parent_id, $a_with_list_data=true)
Get sub item data.
getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
addCustomProperty($a_property="", $a_value="", $a_alert=false, $a_newline=false)
add custom property
static _lookupObjId($a_id)
static _lookupType($a_id, $a_reference=false)
lookup object type
static _lookupAppointment($a_obj_id)
lookup appointment
_getPlanedTimings($a_usr_id, $a_item_id)
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray