/** * Import relevant properties from given exercise * * @param ilObjExercise $a_test * @return object */ public static function createFromExercise(ilObjExercise $a_exercise, $a_user_id) { global $lng; $lng->loadLanguageModule("exercise"); $newObj = new self(); $newObj->setTitle($a_exercise->getTitle()); $newObj->setDescription($a_exercise->getDescription()); include_once "Services/Tracking/classes/class.ilLPMarks.php"; $lp_marks = new ilLPMarks($a_exercise->getId(), $a_user_id); $newObj->setProperty("issued_on", new ilDate($lp_marks->getStatusChanged(), IL_CAL_DATETIME)); // create certificate include_once "Services/Certificate/classes/class.ilCertificate.php"; include_once "Modules/Exercise/classes/class.ilExerciseCertificateAdapter.php"; $certificate = new ilCertificate(new ilExerciseCertificateAdapter($a_exercise)); $certificate = $certificate->outCertificate(array("user_id" => $a_user_id), false); // save pdf file if ($certificate) { // we need the object id for storing the certificate file $newObj->create(); $path = self::initStorage($newObj->getId(), "certificate"); $file_name = "exc_" . $a_exercise->getId() . "_" . $a_user_id . ".pdf"; if (file_put_contents($path . $file_name, $certificate)) { $newObj->setProperty("file", $file_name); $newObj->update(); return $newObj; } // file creation failed, so remove to object, too $newObj->delete(); } // remove if certificate works $newObj->create(); return $newObj; }
function start() { $this->__buildHeader(); $attribs = array("obj_id" => "il_" . IL_INST_ID . "_exc_" . $this->exercise->getId()); if ($this->exercise->getOwner()) { $attribs["owner"] = "il_" . IL_INST_ID . "_usr_" . $this->exercise->getOwner(); } $this->xmlStartTag("Exercise", $attribs); //todo: create new dtd for new assignment structure $this->xmlElement("Title", null, $this->exercise->getTitle()); $this->xmlElement("Description", null, $this->exercise->getDescription()); //$this->xmlElement("Instruction", null,$this->exercise->getInstruction()); //$this->xmlElement("DueDate", null,$this->exercise->getTimestamp()); //todo: as a workaround use first assignment for compatibility with old exercise dtd $assignments = ilExAssignment::getAssignmentDataOfExercise($this->exercise->getId()); if (count($assignments) > 0) { foreach ($assignments as $assignment) { $this->xmlStartTag("Assignment"); $this->xmlElement("Instruction", null, $assignment["instruction"]); $this->xmlElement("DueDate", null, $assignment["deadline"]); $this->handleAssignmentFiles($this->exercise->getId(), $assignment["id"]); if ($this->attachMembers) { $this->handleAssignmentMembers($this->exercise->getId(), $assignment["id"]); } $this->xmlEndTag("Assignment"); } } $this->xmlEndTag("Exercise"); $this->__buildFooter(); return true; }
/** * Constructor * * @param ilExercise $exercise existing exercise object * @param string $a_xml_file xml data * @param int $obj_id obj id of exercise which is to be updated * @access public */ function ilExerciseXMLParser(&$exercise, $a_xml_data, $obj_id = -1) { // @todo: needs to be revised for multiple assignments per exercise parent::ilSaxParser(); $this->exercise = $exercise; // get all assignments and choose first one if exists, otherwise create $assignments = ilExAssignment::getAssignmentDataOfExercise($exercise->getId()); if (count($assignments) > 0) { $this->assignment = new ilExAssignment($assignments[0]["id"]); } else { $this->assignment = new ilExAssignment(); $this->assignment->setExerciseId($exercise->getId()); $this->assignment->save(); } include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $this->storage = new ilFSStorageExercise($this->exercise->getId(), $this->assignment->getId()); $this->storage->create(); $this->storage->init(); $this->setXMLContent($a_xml_data); $this->obj_id = $obj_id; $this->result = false; }
/** * Import record * * @param * @return */ function importRecord($a_entity, $a_types, $a_rec, $a_mapping, $a_schema_version) { //echo $a_entity; //var_dump($a_rec); switch ($a_entity) { case "exc": include_once "./Modules/Exercise/classes/class.ilObjExercise.php"; if ($new_id = $a_mapping->getMapping('Services/Container', 'objs', $a_rec['Id'])) { $newObj = ilObjectFactory::getInstanceByObjId($new_id, false); } else { $newObj = new ilObjExercise(); $newObj->setType("exc"); $newObj->create(true); } $newObj->setTitle($a_rec["Title"]); $newObj->setDescription($a_rec["Description"]); $newObj->setPassMode($a_rec["PassMode"]); $newObj->setPassNr($a_rec["PassNr"]); $newObj->setShowSubmissions($a_rec["ShowSubmissions"]); $newObj->update(); $newObj->saveData(); //var_dump($a_rec); $this->current_exc = $newObj; $a_mapping->addMapping("Modules/Exercise", "exc", $a_rec["Id"], $newObj->getId()); //var_dump($a_mapping->mappings["Services/News"]["news_context"]); break; case "exc_assignment": $exc_id = $a_mapping->getMapping("Modules/Exercise", "exc", $a_rec["ExerciseId"]); if ($exc_id > 0) { if (is_object($this->current_exc) && $this->current_exc->getId() == $exc_id) { $exc = $this->current_exc; } else { include_once "./Modules/Exercise/classes/class.ilObjExercise.php"; $exc = new ilObjExercise($exc_id, false); } include_once "./Modules/Exercise/classes/class.ilExAssignment.php"; $ass = new ilExAssignment(); $ass->setExerciseId($exc_id); if ($a_rec["StartTime"] != "") { $start = new ilDateTime($a_rec["StartTime"], IL_CAL_DATETIME, "UTC"); $ass->setStartTime($start->get(IL_CAL_UNIX)); } if ($a_rec["Deadline"] != "") { $deadline = new ilDateTime($a_rec["Deadline"], IL_CAL_DATETIME, "UTC"); $ass->setDeadline($deadline->get(IL_CAL_UNIX)); } //var_dump($a_rec); $ass->setInstruction($a_rec["Instruction"]); $ass->setTitle($a_rec["Title"]); $ass->setMandatory($a_rec["Mandatory"]); $ass->setOrderNr($a_rec["OrderNr"]); // 4.2 $ass->setType($a_rec["Type"]); // 4.4 $ass->setPeerReview($a_rec["Peer"]); $ass->setPeerReviewMin($a_rec["PeerMin"]); $ass->setPeerReviewDeadline($a_rec["PeerDeadline"]); $ass->setFeedbackFile($a_rec["FeedbackFile"]); $ass->setFeedbackCron($a_rec["FeedbackCron"]); $ass->setFeedbackDate($a_rec["FeedbackDate"]); // 5.0 $ass->setPeerReviewFileUpload($a_rec["PeerFile"]); $ass->setPeerReviewPersonalized($a_rec["PeerPersonal"]); $ass->save(); include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $fstorage = new ilFSStorageExercise($exc_id, $ass->getId()); $fstorage->create(); // assignment files $dir = str_replace("..", "", $a_rec["Dir"]); if ($dir != "" && $this->getImportDirectory() != "") { $source_dir = $this->getImportDirectory() . "/" . $dir; $target_dir = $fstorage->getPath(); ilUtil::rCopy($source_dir, $target_dir); } // (4.4) global feedback file $dir = str_replace("..", "", $a_rec["FeedbackDir"]); if ($dir != "" && $this->getImportDirectory() != "") { $source_dir = $this->getImportDirectory() . "/" . $dir; $target_dir = $fstorage->getGlobalFeedbackPath(); ilUtil::rCopy($source_dir, $target_dir); } $a_mapping->addMapping("Modules/Exercise", "exc_assignment", $a_rec["Id"], $ass->getId()); } break; } }
/** * Handle calendar entries for deadline(s) * * @param string $a_event */ protected function handleCalendarEntries($a_event) { global $ilAppEventHandler; $dl_id = $this->getId() . "0"; $fbdl_id = $this->getId() . "1"; $context_ids = array($dl_id, $fbdl_id); $apps = array(); if ($a_event != "delete") { include_once "Services/Calendar/classes/class.ilCalendarAppointmentTemplate.php"; if ($this->getDeadline()) { $app = new ilCalendarAppointmentTemplate($dl_id); $app->setTranslationType(IL_CAL_TRANSLATION_SYSTEM); $app->setSubtitle("cal_exc_deadline"); $app->setTitle($this->getTitle()); $app->setFullday(false); $app->setStart(new ilDateTime($this->getDeadline(), IL_CAL_UNIX)); $apps[] = $app; } if ($this->getPeerReview() && $this->getPeerReviewDeadline()) { $app = new ilCalendarAppointmentTemplate($fbdl_id); $app->setTranslationType(IL_CAL_TRANSLATION_SYSTEM); $app->setSubtitle("cal_exc_peer_review_deadline"); $app->setTitle($this->getTitle()); $app->setFullday(false); $app->setStart(new ilDateTime($this->getPeerReviewDeadline(), IL_CAL_UNIX)); $apps[] = $app; } } include_once "Modules/Exercise/classes/class.ilObjExercise.php"; $exc = new ilObjExercise($this->getExerciseId(), false); $ilAppEventHandler->raise('Modules/Exercise', $a_event . 'Assignment', array('object' => $exc, 'obj_id' => $exc->getId(), 'context_ids' => $context_ids, 'appointments' => $apps)); }
protected function createPortfolioFromTemplateProcess($a_process_form = true) { global $ilSetting, $ilUser, $ilAccess; $title = trim($_REQUEST["pt"]); $prtt_id = (int) $_REQUEST["prtt"]; // valid template? include_once "Modules/Portfolio/classes/class.ilObjPortfolioTemplate.php"; $templates = array_keys(ilObjPortfolioTemplate::getAvailablePortfolioTemplates()); if (!sizeof($templates) || !in_array($prtt_id, $templates)) { $this->toRepository(); } unset($templates); // build page recipe (aka import form values) $recipe = null; if ($a_process_form) { $this->ctrl->setParameter($this, "prtt", $prtt_id); $form = $this->initCreatePortfolioFromTemplateForm($prtt_id, $title); if ($form->checkInput()) { include_once "Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; foreach (ilPortfolioTemplatePage::getAllPages($prtt_id) as $page) { switch ($page["type"]) { case ilPortfolioTemplatePage::TYPE_BLOG_TEMPLATE: if (!$ilSetting->get('disable_wsp_blogs')) { $field_id = "blog_" . $page["id"]; switch ($form->getInput($field_id)) { case "blog_create": $recipe[$page["id"]] = array("blog", "create", trim($form->getInput($field_id . "_create_title"))); break; case "blog_resuse": $recipe[$page["id"]] = array("blog", "reuse", (int) $form->getInput($field_id . "_reuse_blog")); break; case "blog_ignore": $recipe[$page["id"]] = array("blog", "ignore"); break; } } break; } } $recipe["skills"] = (array) $form->getInput("skill_ids"); } else { $form->setValuesByPost(); return $this->createPortfolioFromTemplate($form); } } $source = new ilObjPortfolioTemplate($prtt_id, false); // create portfolio include_once "Modules/Portfolio/classes/class.ilObjPortfolio.php"; $target = new ilObjPortfolio(); $target->setTitle($title); $target->create(); $target_id = $target->getId(); $source->clonePagesAndSettings($source, $target, $recipe); // link portfolio to exercise assignment $exc_ref_id = (int) $_REQUEST["exc_id"]; $ass_id = (int) $_REQUEST["ass_id"]; if ($exc_ref_id && $ass_id && $ilAccess->checkAccess("read", "", $exc_ref_id)) { include_once "Modules/Exercise/classes/class.ilObjExercise.php"; include_once "Modules/Exercise/classes/class.ilExAssignment.php"; $exc = new ilObjExercise($exc_ref_id); $ass = new ilExAssignment($ass_id); if ($ass->getExerciseId() == $exc->getId() && $ass->getType() == ilExAssignment::TYPE_PORTFOLIO) { $exc->addResourceObject($target_id, $ass_id, $ilUser->getId()); } } ilUtil::sendSuccess($this->lng->txt("prtf_portfolio_created"), true); $this->ctrl->setParameter($this, "prt_id", $target_id); $this->ctrl->redirect($this, "view"); }