function updateTimings() { include_once 'Services/Object/classes/class.ilObjectActivation.php'; global $ilAccess, $ilErr; if (!$ilAccess->checkAccess('write', '', $this->container_obj->getRefId())) { $ilErr->raiseError($this->lng->txt('msg_no_perm_write'), $ilErr->WARNING); } $this->failed = array(); // Validate $_POST['item'] = is_array($_POST['item']) ? $_POST['item'] : array(); $all_items = array(); foreach ($_POST['item'] as $ref_id => $data) { $item_obj = new ilObjectActivation(); $old_data = ilObjectActivation::getItem($ref_id); $item_obj->setTimingType($_POST['item_active'][$ref_id]['active'] ? ilObjectActivation::TIMINGS_PRESETTING : ilObjectActivation::TIMINGS_DEACTIVATED); $item_obj->setTimingStart($old_data['timing_start']); $item_obj->setTimingEnd($old_data['timing_end']); $item_obj->setSuggestionStart($this->__toUnix($data["sug_start"])); // add duration $data['sug_start']['d'] += abs($data['duration_a']); $item_obj->setSuggestionEnd($this->__toUnix($data['sug_start'], array('h' => 23, 'm' => 55))); $item_obj->setEarliestStart(time()); $item_obj->setLatestEnd($this->__toUnix($data['lim_end'], array('h' => 23, 'm' => 55))); $item_obj->toggleVisible($old_data['visible']); $item_obj->toggleChangeable($_POST['item_change'][$ref_id]['change']); if (!$item_obj->validateActivation()) { $this->failed[$ref_id] = $old_data['title']; } $all_items[$ref_id] =& $item_obj; unset($item_obj); } if (count($this->failed)) { $message = $this->lng->txt('crs_timings_update_error'); $message .= "<br />" . $this->lng->txt('crs_materials') . ': '; $message .= implode(',', $this->failed); ilUtil::sendFailure($message); $this->editTimings(); return false; } // No do update foreach ($all_items as $ref_id => $item_obj_new) { $item_obj_new->update($ref_id); } ilUtil::sendSuccess($this->lng->txt('settings_saved')); $this->editTimings(); return false; }
private function addReferences($source, $a_object_data) { global $tree, $ilLog; if (!isset($a_object_data['references']) or !count($a_object_data['references'])) { return true; } $original_id = $source->getRefId(); foreach ($a_object_data['references'] as $ref_data) { $new_ref_id = $ref_id = $original_id; if ($tree->getParentId($original_id) != $ref_data['parent_id']) { // New reference requested => create it $new_ref_id = $source->createReference(); $source->putInTree($ref_data['parent_id']); $source->setPermissions($ref_data['parent_id']); } if (isset($ref_data['time_target'])) { include_once './webservice/soap/classes/class.ilObjectXMLWriter.php'; include_once './Services/Object/classes/class.ilObjectActivation.php'; if (!isset($ref_data['time_target']['starting_time'])) { $ref_data['time_target']['starting_time'] = time(); } if (!isset($ref_data['time_target']['ending_time'])) { $ref_data['time_target']['ending_time'] = time(); } $items = new ilObjectActivation(); $items->toggleChangeable($ref_data['time_target']['changeable']); $items->setTimingStart($ref_data['time_target']['starting_time']); $items->setTimingEnd($ref_data['time_target']['ending_time']); $items->toggleVisible($ref_data['time_target']['timing_visibility']); $items->setSuggestionStart($ref_data['time_target']['suggestion_start']); $items->setSuggestionEnd($ref_data['time_target']['suggestion_end']); $items->setEarliestStart($ref_data['time_target']['earliest_start']); $items->setLatestEnd($ref_data['time_target']['latest_end']); switch ($ref_data['time_target']['timing_type']) { case ilObjectXMLWriter::TIMING_DEACTIVATED: $ilLog->write(__METHOD__ . ilObjectActivation::TIMINGS_DEACTIVATED . ' ' . $ref_data['time_target']['timing_type']); $items->setTimingType(ilObjectActivation::TIMINGS_DEACTIVATED); break; case ilObjectXMLWriter::TIMING_TEMPORARILY_AVAILABLE: $ilLog->write(__METHOD__ . ilObjectActivation::TIMINGS_ACTIVATION . ' ' . $ref_data['time_target']['timing_type']); $items->setTimingType(ilObjectActivation::TIMINGS_ACTIVATION); break; case ilObjectXMLWriter::TIMING_PRESETTING: $ilLog->write(__METHOD__ . ilObjectActivation::TIMINGS_PRESETTING . ' ' . $ref_data['time_target']['timing_type']); $items->setTimingType(ilObjectActivation::TIMINGS_PRESETTING); break; } $items->update($new_ref_id); } } }
/** * update * * @access public * @return */ public function update() { global $ilErr, $ilAccess, $tpl, $ilUser; // #19997 - see ilObjectListGUI::insertTimingsCommand() if (!$ilAccess->checkAccess('write', '', $this->parent_ref_id) && !$ilAccess->checkAccess('write', '', $this->getItemId())) { $ilErr->raiseError($this->lng->txt('permission_denied'), $ilErr->MESSAGE); } $this->initFormEdit(); if ($this->form->checkInput()) { include_once "Services/Object/classes/class.ilObjectActivation.php"; $activation = new ilObjectActivation(); $activation->setTimingType($this->form->getInput('timing_type')); $date = $this->form->getInput('timing_start'); $date = new ilDateTime($date['date'] . ' ' . $date['time'], IL_CAL_DATETIME, $ilUser->getTimeZone()); $activation->setTimingStart($date->get(IL_CAL_UNIX)); $date = $this->form->getInput('timing_end'); $date = new ilDateTime($date['date'] . ' ' . $date['time'], IL_CAL_DATETIME, $ilUser->getTimeZone()); $activation->setTimingEnd($date->get(IL_CAL_UNIX)); $date = $this->form->getInput('sug_start'); $date = new ilDate($date['date'], IL_CAL_DATE); $activation->setSuggestionStart($date->get(IL_CAL_UNIX)); $date = $this->form->getInput('sug_end'); $date = new ilDate($date['date'], IL_CAL_DATE); $activation->setSuggestionEnd($date->get(IL_CAL_UNIX)); $date = $this->form->getInput('early_start'); $date = new ilDate($date['date'], IL_CAL_DATE); $activation->setEarliestStart($date->get(IL_CAL_UNIX)); $date = $this->form->getInput('late_end'); $date = new ilDate($date['date'], IL_CAL_DATE); $activation->setLatestEnd($date->get(IL_CAL_UNIX)); $activation->toggleVisible((bool) $this->form->getInput('visible')); $activation->toggleChangeable((bool) $this->form->getInput('changeable')); if (!$activation->validateActivation()) { ilUtil::sendFailure($ilErr->getMessage()); $this->form->setValuesByPost(); $tpl->setContent($this->form->getHTML()); return false; } else { $activation->update($this->getItemId()); ilUtil::sendSuccess($this->lng->txt('settings_saved'), true); $this->ctrl->redirect($this, "edit"); } } else { $this->form->setValuesByPost(); $tpl->setContent($this->form->getHTML()); } }
/** * Parse timing info * @param object $a_ref_id * @param object $a_parent_id * @param object $timing * @return */ protected function parseTiming($a_ref_id, $a_parent_id, $timing) { $type = (string) $timing['Type']; $visible = (string) $timing['Visible']; $changeable = (string) $timing['Changeable']; include_once './Services/Object/classes/class.ilObjectActivation.php'; $crs_item = new ilObjectActivation(); $crs_item->setTimingType($type); $crs_item->toggleVisible((bool) $visible); $crs_item->toggleChangeable((bool) $changeable); foreach ($timing->children() as $sub) { switch ((string) $sub->getName()) { case 'Start': $dt = new ilDateTime((string) $sub, IL_CAL_DATETIME, ilTimeZone::UTC); $crs_item->setTimingStart($dt->get(IL_CAL_UNIX)); break; case 'End': $dt = new ilDateTime((string) $sub, IL_CAL_DATETIME, ilTimeZone::UTC); $crs_item->setTimingEnd($dt->get(IL_CAL_UNIX)); break; case 'SuggestionStart': $dt = new ilDateTime((string) $sub, IL_CAL_DATETIME, ilTimeZone::UTC); $crs_item->setSuggestionStart($dt->get(IL_CAL_UNIX)); break; case 'SuggestionEnd': $dt = new ilDateTime((string) $sub, IL_CAL_DATETIME, ilTimeZone::UTC); $crs_item->setSuggestionEnd($dt->get(IL_CAL_UNIX)); break; case 'EarliestStart': $dt = new ilDateTime((string) $sub, IL_CAL_DATETIME, ilTimeZone::UTC); $crs_item->setEarliestStart($dt->get(IL_CAL_UNIX)); break; case 'LatestEnd': $dt = new ilDateTime((string) $sub, IL_CAL_DATETIME, ilTimeZone::UTC); $crs_item->setLatestEnd($dt->get(IL_CAL_UNIX)); break; } } if ($crs_item->getTimingStart()) { $crs_item->update($a_ref_id, $a_parent_id); } }