/** * Render content * * @param bool $a_return * @param string $a_url */ public function render($a_return = false, $a_url = false) { global $ilUser, $lng; if (!$a_return) { $this->deliver(); } else { $tree = new ilWorkspaceTree($ilUser->getId()); $wsp_id = $tree->lookupNodeId($this->object->getId()); $caption = $lng->txt("wsp_type_crsv") . ' "' . $this->object->getTitle() . '"'; $valid = true; if (!file_exists($this->object->getFilePath())) { $valid = false; $message = $lng->txt("url_not_found"); } else { if (!$a_url) { include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php"; $access_handler = new ilWorkspaceAccessHandler($tree); if (!$access_handler->checkAccess("read", "", $wsp_id)) { $valid = false; $message = $lng->txt("permission_denied"); } } } if ($valid) { if (!$a_url) { $a_url = $this->getAccessHandler()->getGotoLink($wsp_id, $this->object->getId()); } return '<div><a href="' . $a_url . '">' . $caption . '</a></div>'; } else { return '<div>' . $caption . ' (' . $message . ')</div>'; } } }
/** * execute command */ function &executeCommand() { global $ilCtrl, $ilUser; $next_class = $this->ctrl->getNextClass($this); $cmd = $this->ctrl->getCmd(); switch ($next_class) { case "ilobjbloggui": // #12879 - we need the wsp-id for the keywords include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $wsp_tree = new ilWorkspaceTree($ilUser->getId()); $blog_obj_id = (int) $this->getPageObject()->getTitle(); $blog_node_id = $wsp_tree->lookupNodeId($blog_obj_id); include_once "Modules/Blog/classes/class.ilObjBlogGUI.php"; $blog_gui = new ilObjBlogGUI($blog_node_id, ilObjBlogGUI::WORKSPACE_NODE_ID); $blog_gui->disableNotes(!$this->enable_comments); return $ilCtrl->forwardCommand($blog_gui); case "ilcalendarmonthgui": // booking action if ($cmd && $cmd != "preview") { include_once './Services/Calendar/classes/class.ilCalendarMonthGUI.php'; $month_gui = new ilCalendarMonthGUI(new ilDate()); return $ilCtrl->forwardCommand($month_gui); } else { $ilCtrl->setParameter($this, "cmd", "preview"); return self::EMBEDDED_NO_OUTPUT; } case "ilpageobjectgui": die("Deprecated. ilPortfolioPage gui forwarding to ilpageobject"); return; default: $this->setPresentationTitle($this->getPageObject()->getTitle()); return parent::executeCommand(); } }
protected function getItems() { global $ilUser; include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree($ilUser->getId()); $nodes = $tree->getChilds($this->node_id, "title"); $this->shared_objects = $this->access_handler->getObjectsIShare(); $this->setData($nodes); }
/** * Render content * * @param bool $a_return */ public function render($a_return = false) { global $ilUser; if (!$a_return) { $this->deliver(); } else { $tree = new ilWorkspaceTree($ilUser->getId()); $wsp_id = $tree->lookupNodeId($this->object->getId()); $caption = $this->object->getTitle(); $link = $this->getAccessHandler()->getGotoLink($wsp_id, $this->object->getId()); return "<a href=\"" . $link . "\">" . $caption . "</a>"; } }
protected function getItems() { global $ilUser; include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree($ilUser->getId()); $nodes = $tree->getChilds($this->node_id, "title"); if (sizeof($nodes)) { include_once "./Services/Object/classes/class.ilObjectListGUIPreloader.php"; $preloader = new ilObjectListGUIPreloader(ilObjectListGUI::CONTEXT_WORKSPACE); foreach ($nodes as $node) { $preloader->addItem($node["obj_id"], $node["type"]); } $preloader->preload(); unset($preloader); } $this->shared_objects = $this->access_handler->getObjectsIShare(); $this->setData($nodes); }
function getItems() { global $ilUser; include_once "./Services/Portfolio/classes/class.ilPortfolioPage.php"; $data = ilPortfolioPage::getAllPages($this->portfolio->getId()); $this->setData($data); $this->blogs = array(); include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree($ilUser->getId()); $root = $tree->readRootId(); if ($root) { $root = $tree->getNodeData($root); foreach ($tree->getSubTree($root) as $node) { if ($node["type"] == "blog") { $this->blogs[$node["obj_id"]] = $node["wsp_id"]; } } } include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php"; }
/** * Constructor * @access public * @param string $a_target scriptname * @param string $a_session_variable session_variable * @param ilWorkspaceTree $a_tree workspace tree * @param ilWorkspaceAccessHandler $a_access_handler workspace access handler */ public function __construct($a_type, $a_target, $a_session_variable, ilWorkspaceTree $a_tree, ilWorkspaceAccessHandler $a_access_handler) { global $ilCtrl; $this->ctrl = $ilCtrl; $this->type = $a_type; $this->access = $a_access_handler; parent::__construct($a_target); // #11173 if (!$a_tree->readRootId()) { // create (workspace) root folder $root = ilObjectFactory::getClassByType("wsrt"); $root = new $root(null); $root->create(); $root_id = $a_tree->createReference($root->getId()); $a_tree->addTree($a_tree->getTreeId(), $root_id); $a_tree->setRootId($root_id); } $this->tree = $a_tree; $this->root_id = $this->tree->readRootId(); $this->order_column = 'title'; $this->setSessionExpandVariable($a_session_variable); // reset filter $this->filter = array(); $this->addFilter('wsrt'); $this->addFilter('wfld'); $this->addFormItemForType('wsrt'); $this->addFormItemForType('wfld'); $this->setFiltered(true); $this->setFilterMode(IL_FM_POSITIVE); }
/** * get all related objects for user */ function _getRelatedObjectsOfUser($a_mode) { global $ilDB, $ilUser, $tree; if ($a_mode == ilPDNotesGUI::PRIVATE_NOTES) { $q = "SELECT DISTINCT rep_obj_id FROM note WHERE " . " type = " . $ilDB->quote((int) IL_NOTE_PRIVATE, "integer") . " AND author = " . $ilDB->quote($ilUser->getId(), "integer") . " AND (no_repository IS NULL OR no_repository < " . $ilDB->quote(1, "integer") . ")" . " ORDER BY rep_obj_id"; $ilDB->quote($q); $set = $ilDB->query($q); $reps = array(); while ($rep_rec = $ilDB->fetchAssoc($set)) { // #9343: deleted objects if (ilObject::_lookupType($rep_rec["rep_obj_id"])) { $reps[] = array("rep_obj_id" => $rep_rec["rep_obj_id"]); } } } else { // all objects where the user wrote at least one comment $q = "SELECT DISTINCT rep_obj_id FROM note WHERE " . " type = " . $ilDB->quote((int) IL_NOTE_PUBLIC, "integer") . " AND author = " . $ilDB->quote($ilUser->getId(), "integer") . " AND (no_repository IS NULL OR no_repository < " . $ilDB->quote(1, "integer") . ")" . " ORDER BY rep_obj_id"; $set = $ilDB->query($q); $reps = array(); while ($rep_rec = $ilDB->fetchAssoc($set)) { // #9343: deleted objects if ($type = ilObject::_lookupType($rep_rec["rep_obj_id"])) { if (ilNote::commentsActivated($rep_rec["rep_obj_id"], "", $type)) { $reps[] = array("rep_obj_id" => $rep_rec["rep_obj_id"]); } } } // additionally all objects on the personal desktop of the user // that have at least on comment $dis = ilObjUser::_lookupDesktopItems($ilUser->getId()); $obj_ids = array(); foreach ($dis as $di) { $obj_ids[] = $di["obj_id"]; } if (count($obj_ids) > 0) { $q = "SELECT DISTINCT rep_obj_id FROM note WHERE " . $ilDB->in("rep_obj_id", $obj_ids, false, "integer") . " AND (no_repository IS NULL OR no_repository < " . $ilDB->quote(1, "integer") . ")"; $set = $ilDB->query($q); while ($rec = $ilDB->fetchAssoc($set)) { $add = true; reset($reps); foreach ($reps as $r) { if ($r["rep_obj_id"] == $rec["rep_obj_id"]) { $add = false; } } if ($add) { $type = ilObject::_lookupType($rec["rep_obj_id"]); if (ilNote::commentsActivated($rec["rep_obj_id"], "", $type)) { $reps[] = array("rep_obj_id" => $rec["rep_obj_id"]); } } } } } if (sizeof($reps)) { // check if notes/comments belong to objects in trash // see ilNoteGUI::showTargets() foreach ($reps as $idx => $rep) { $has_active_ref = false; // repository? $ref_ids = ilObject::_getAllReferences($rep["rep_obj_id"]); if ($ref_ids) { $reps[$idx]["ref_ids"] = array_values($ref_ids); foreach ($ref_ids as $ref_id) { if (!$tree->isDeleted($ref_id)) { $has_active_ref = true; break; } } } else { // personal workspace? include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php"; $wsp_tree = new ilWorkspaceTree($ilUser->getId()); $node_id = $wsp_tree->lookupNodeId($rep["rep_obj_id"]); if ($node_id) { $reps[$idx]["wsp_id"] = $node_id; $has_active_ref = true; } } if (!$has_active_ref) { unset($reps[$idx]); } } } return $reps; }
/** * Deliver blog as rss feed * * @param int $a_wsp_id */ static function deliverRSS($a_wsp_id) { global $tpl, $ilSetting; if (!$ilSetting->get('enable_global_profiles')) { return; } // #10827 if (substr($a_wsp_id, -4) != "_cll") { include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $wsp_id = new ilWorkspaceTree(0); $obj_id = $wsp_id->lookupObjectId($a_wsp_id); $is_wsp = "_wsp"; } else { $a_wsp_id = substr($a_wsp_id, 0, -4); $obj_id = ilObject::_lookupObjId($a_wsp_id); $is_wsp = null; } if (!$obj_id) { return; } $blog = new self($obj_id, false); if (!$blog->hasRSS()) { return; } include_once "Services/Feeds/classes/class.ilFeedWriter.php"; $feed = new ilFeedWriter(); include_once "Services/Link/classes/class.ilLink.php"; $url = ilLink::_getStaticLink($a_wsp_id, "blog", true, $is_wsp); $url = str_replace("&", "&", $url); $feed->setChannelTitle($blog->getTitle()); $feed->setChannelDescription($blog->getDescription()); $feed->setChannelLink($url); // needed for blogpostinggui / pagegui $tpl = new ilTemplate("tpl.main.html", true, true); include_once "./Modules/Blog/classes/class.ilBlogPosting.php"; include_once "./Modules/Blog/classes/class.ilBlogPostingGUI.php"; foreach (ilBlogPosting::getAllPostings($obj_id) as $item) { $id = $item["id"]; // only published items $is_active = ilBlogPosting::_lookupActive($id, "blp"); if (!$is_active) { continue; } $snippet = strip_tags(ilBlogPostingGUI::getSnippet($id)); $snippet = str_replace("&", "&", $snippet); $url = ilLink::_getStaticLink($a_wsp_id, "blog", true, "_" . $id . $is_wsp); $url = str_replace("&", "&", $url); $feed_item = new ilFeedItem(); $feed_item->setTitle($item["title"]); $feed_item->setDate($item["created"]->get(IL_CAL_DATETIME)); $feed_item->setDescription($snippet); $feed_item->setLink($url); $feed_item->setAbout($url); $feed->addItem($feed_item); } $feed->showFeed(); exit; }
/** * Init verification form * * @param bool $a_insert * @return ilPropertyFormGUI */ protected function initForm($a_insert = false) { global $ilCtrl, $ilUser, $lng; include_once "./Services/Form/classes/class.ilPropertyFormGUI.php"; $form = new ilPropertyFormGUI(); $form->setFormAction($ilCtrl->getFormAction($this)); if ($a_insert) { $form->setTitle($this->lng->txt("cont_insert_verification")); } else { $form->setTitle($this->lng->txt("cont_update_verification")); } $lng->loadLanguageModule("wsp"); $options = array(); include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree($ilUser->getId()); $root = $tree->getRootId(); if ($root) { $root = $tree->getNodeData($root); foreach ($tree->getSubTree($root) as $node) { if (in_array($node["type"], array("excv", "tstv"))) { $options[$node["obj_id"]] = $node["title"] . " (" . $lng->txt("wsp_type_" . $node["type"]) . ")"; } } asort($options); } $obj = new ilSelectInputGUI($this->lng->txt("cont_verification_object"), "object"); $obj->setRequired(true); $obj->setOptions($options); $form->addItem($obj); if ($a_insert) { $form->addCommandButton("create_verification", $this->lng->txt("save")); $form->addCommandButton("cancelCreate", $this->lng->txt("cancel")); } else { $data = $this->content_obj->getData(); $obj->setValue($data["id"]); $form->addCommandButton("update", $this->lng->txt("save")); $form->addCommandButton("cancelUpdate", $this->lng->txt("cancel")); } return $form; }
/** * Add current object (repository/workspace) as target for login url * * @return string */ public static function buildLoginTarget() { global $tree, $ilUser; $target_str = ""; // repository if ($_GET["ref_id"] != "") { if ($tree->isInTree($_GET["ref_id"]) && $_GET["ref_id"] != $tree->getRootId()) { $obj_id = ilObject::_lookupObjId($_GET["ref_id"]); $type = ilObject::_lookupType($obj_id); $target_str = $type . "_" . $_GET["ref_id"]; } } else { if ($_GET["wsp_id"] != "") { include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree($ilUser->getId()); $obj_id = $tree->lookupObjectId((int) $_GET["wsp_id"]); if ($obj_id) { $type = ilObject::_lookupType($obj_id); $target_str = $type . "_" . (int) $_GET["wsp_id"] . "_wsp"; } } else { if ($_GET["prt_id"] != "") { $target_str = "prtf_" . (int) $_GET["prt_id"]; } } } return $target_str; }
protected function renderWorkspaceExplorer($a_cmd) { global $ilUser; include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php"; require_once 'Services/PersonalWorkspace/classes/class.ilWorkspaceExplorer.php'; $tree = new ilWorkspaceTree($ilUser->getId()); $access_handler = new ilWorkspaceAccessHandler($tree); $exp = new ilWorkspaceExplorer(ilWorkspaceExplorer::SEL_TYPE_RADIO, '', 'exc_wspexpand', $tree, $access_handler); $exp->setTargetGet('wsp_id'); if ($a_cmd == "selectBlog") { $exp->removeAllFormItemTypes(); $exp->addFilter('blog'); $exp->addFormItemForType('blog'); } if ($_GET['exc_wspexpand'] == '') { // not really used as session is already set [see above] $expanded = $tree->readRootId(); } else { $expanded = $_GET['exc_wspexpand']; } $exp->setExpandTarget($this->ctrl->getLinkTarget($this, $a_cmd)); $exp->setPostVar('node'); $exp->setExpand($expanded); $exp->setOutput(0); return $exp->getOutput(); }
protected static function createBlogInPersonalWorkspace($a_title) { global $ilUser; static $ws_access = null; include_once "Modules/Blog/classes/class.ilObjBlog.php"; $blog = new ilObjBlog(); $blog->setType("blog"); $blog->setTitle($a_title); $blog->create(); if (!$ws_access) { include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php"; $tree = new ilWorkspaceTree($ilUser->getId()); // #13235 if (!$tree->getRootId()) { $tree->createTreeForUser($ilUser->getId()); } $ws_access = new ilWorkspaceAccessHandler($tree); } $tree = $ws_access->getTree(); $node_id = $tree->insertObject($tree->getRootId(), $blog->getId()); $ws_access->setPermissions($tree->getRootId(), $node_id); return $blog->getId(); }
/** * Collect page elements (that need to be exported separately) * * @param string $a_pg_type page type * @param int $a_pg_id page id */ function collectPageElements($a_type, $a_id) { // collect media objects $pg_mobs = ilObjMediaObject::_getMobsOfObject($a_type, $a_id); foreach ($pg_mobs as $pg_mob) { $this->mobs[$pg_mob] = $pg_mob; } // collect all files include_once "./Modules/File/classes/class.ilObjFile.php"; $files = ilObjFile::_getFilesOfObject($a_type, $a_id); foreach ($files as $f) { $this->files[$f] = $f; } $skill_tree = $ws_tree = null; $pcs = ilPageContentUsage::getUsagesOfPage($a_id, $a_type); foreach ($pcs as $pc) { // skils if ($pc["type"] == "skmg") { $skill_id = $pc["id"]; // get user id from portfolio page include_once "Services/Portfolio/classes/class.ilPortfolioPage.php"; $page = new ilPortfolioPage(0, $a_id); $user_id = $page->create_user; // we only need 1 instance each if (!$skill_tree) { include_once "Services/Skill/classes/class.ilSkillTree.php"; $skill_tree = new ilSkillTree(); include_once "Services/Skill/classes/class.ilPersonalSkill.php"; include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $ws_tree = new ilWorkspaceTree($user_id); } // walk skill tree $b_skills = ilSkillTreeNode::getSkillTreeNodes($skill_id, true); foreach ($b_skills as $bs) { $skill = ilSkillTreeNodeFactory::getInstance($bs["id"]); $level_data = $skill->getLevelData(); foreach ($level_data as $k => $v) { // get assigned materials from personal skill $mat = ilPersonalSkill::getAssignedMaterial($user_id, $bs["tref"], $v["id"]); if (sizeof($mat)) { foreach ($mat as $item) { $wsp_id = $item["wsp_id"]; $obj_id = $ws_tree->lookupObjectId($wsp_id); // all possible material types for now switch (ilObject::_lookupType($obj_id)) { case "file": $this->files[$obj_id] = $obj_id; break; case "tstv": include_once "Modules/Test/classes/class.ilObjTestVerification.php"; $obj = new ilObjTestVerification($obj_id, false); $this->files_direct[$obj_id] = array($obj->getFilePath(), $obj->getOfflineFilename()); break; case "excv": include_once "Modules/Exercise/classes/class.ilObjExerciseVerification.php"; $obj = new ilObjExerciseVerification($obj_id, false); $this->files_direct[$obj_id] = array($obj->getFilePath(), $obj->getOfflineFilename()); break; } } } } } } } }
/** * insert new file item after another item */ function insertNewFileItem($a_file_ref_id = 0) { global $ilUser; // from personal workspace if (isset($_GET["fl_wsp_id"])) { // we need the object id for the instance include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree($ilUser->getId()); $node = $tree->getNodeData($_GET["fl_wsp_id"]); include_once "./Modules/File/classes/class.ilObjFile.php"; $file_obj = new ilObjFile($node["obj_id"], false); } else { if ($a_file_ref_id == 0) { $file_obj = $this->createFileItem(); } else { include_once "./Modules/File/classes/class.ilObjFile.php"; $file_obj = new ilObjFile($a_file_ref_id); } } if (is_object($file_obj)) { $this->content_obj->appendItem($file_obj->getId(), $file_obj->getTitle(), $file_obj->getFileType()); $this->updated = $this->pg_obj->update(); if ($this->updated === true) { //$this->ctrl->returnToParent($this, "jump".$this->hier_id); $this->ctrl->redirect($this, "editFiles"); } } $_GET["subCmd"] = "-"; $this->newFileItem(); }
protected function initCreatePortfolioFromTemplateForm($a_prtt_id, $a_title) { global $ilSetting; include_once "Services/Form/classes/class.ilPropertyFormGUI.php"; $form = new ilPropertyFormGUI(); $form->setFormAction($this->ctrl->getFormAction($this)); $tmpl = new ilNonEditableValueGUI($this->lng->txt("obj_prtt")); $tmpl->setValue(ilObject::_lookupTitle($a_prtt_id)); $form->addItem($tmpl); $title = new ilNonEditableValueGUI($this->lng->txt("title"), "pt"); $title->setValue($a_title); $form->addItem($title); // gather user blogs if (!$ilSetting->get('disable_wsp_blogs')) { $blog_options = array(); include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree($this->user_id); $root = $tree->readRootId(); if ($root) { $root = $tree->getNodeData($root); foreach ($tree->getSubTree($root) as $node) { if ($node["type"] == "blog") { $blog_options[$node["obj_id"]] = $node["title"]; } } asort($blog_options); } } $has_form_content = false; include_once "Services/WebDAV/classes/class.ilDiskQuotaActivationChecker.php"; $check_quota = ilDiskQuotaActivationChecker::_isPersonalWorkspaceActive(); $quota_sum = 0; include_once "Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; foreach (ilPortfolioTemplatePage::getAllPages($a_prtt_id) as $page) { switch ($page["type"]) { case ilPortfolioTemplatePage::TYPE_PAGE: if ($check_quota) { $source_page = new ilPortfolioTemplatePage($page["id"]); $quota_sum += $source_page->getPageDiskSize(); } break; case ilPortfolioTemplatePage::TYPE_BLOG_TEMPLATE: if (!$ilSetting->get('disable_wsp_blogs')) { $has_form_content = true; $field_id = "blog_" . $page["id"]; $blog = new ilRadioGroupInputGUI($this->lng->txt("obj_blog") . ": " . $page["title"], $field_id); $blog->setRequired(true); $blog->setValue("blog_create"); $form->addItem($blog); $new_blog = new ilRadioOption($this->lng->txt("prtf_template_import_blog_create"), "blog_create"); $blog->addOption($new_blog); $title = new ilTextInputGUI($this->lng->txt("title"), $field_id . "_create_title"); $title->setRequired(true); $new_blog->addSubItem($title); if (sizeof($blog_options)) { $reuse_blog = new ilRadioOption($this->lng->txt("prtf_template_import_blog_reuse"), "blog_resuse"); $blog->addOption($reuse_blog); $obj = new ilSelectInputGUI($this->lng->txt("obj_blog"), $field_id . "_reuse_blog"); $obj->setRequired(true); $obj->setOptions(array("" => $this->lng->txt("please_select")) + $blog_options); $reuse_blog->addSubItem($obj); } $blog->addOption(new ilRadioOption($this->lng->txt("prtf_template_import_blog_ignore"), "blog_ignore")); } break; } } if ($quota_sum) { include_once "Services/DiskQuota/classes/class.ilDiskQuotaHandler.php"; if (!ilDiskQuotaHandler::isUploadPossible($quota_sum)) { ilUtil::sendFailure($this->lng->txt("prtf_template_import_quota_failure"), true); $this->ctrl->redirect($this, "create"); } } // no dialog needed, go ahead if (!$has_form_content) { return; } $form->setTitle($this->lng->txt("prtf_creation_mode") . ": " . $this->lng->txt("prtf_creation_mode_template")); $form->addCommandButton("createPortfolioFromTemplateProcess", $this->lng->txt("continue")); $form->addCommandButton("toRepository", $this->lng->txt("cancel")); return $form; }
/** * Get assignment body for overview */ function getOverviewBody($a_data) { global $lng, $ilCtrl, $ilUser; $tpl = new ilTemplate("tpl.assignment_body.html", true, true, "Modules/Exercise"); include_once "./Services/InfoScreen/classes/class.ilInfoScreenGUI.php"; if (IS_PAYMENT_ENABLED) { include_once './Services/Payment/classes/class.ilPaymentObject.php'; } $info = new ilInfoScreenGUI(null); $info->setTableClass(""); $not_started_yet = false; if ($a_data["start_time"] > 0 && time() - $a_data["start_time"] <= 0) { $not_started_yet = true; } if (!$not_started_yet) { // instructions $info->addSection($lng->txt("exc_instruction")); $info->addProperty("", nl2br(ilUtil::makeClickable($a_data["instruction"], true))); } // schedule $info->addSection($lng->txt("exc_schedule")); if ($a_data["start_time"] > 0) { $info->addProperty($lng->txt("exc_start_time"), ilDatePresentation::formatDate(new ilDateTime($a_data["start_time"], IL_CAL_UNIX))); } if ($a_data["deadline"] > 0) { $info->addProperty($lng->txt("exc_edit_until"), ilDatePresentation::formatDate(new ilDateTime($a_data["deadline"], IL_CAL_UNIX))); } $time_str = $this->getTimeString($a_data["deadline"]); if (!$not_started_yet) { $info->addProperty($lng->txt("exc_time_to_send"), "<b>" . $time_str . "</b>"); } // public submissions if ($this->exc->getShowSubmissions()) { $ilCtrl->setParameterByClass("ilobjexercisegui", "ass_id", $a_data["id"]); if ($a_data["deadline"] - time() <= 0) { $link = '<a class="submit" href="' . $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "listPublicSubmissions") . '">' . $lng->txt("exc_list_submission") . '</a>'; $info->addProperty($lng->txt("exc_public_submission"), $link); } else { $info->addProperty($lng->txt("exc_public_submission"), $lng->txt("exc_msg_public_submission")); } $ilCtrl->setParameterByClass("ilobjexercisegui", "ass_id", $_GET["ass_id"]); } $ilCtrl->setParameterByClass("ilobjexercisegui", "ass_id", $a_data["id"]); if (!$not_started_yet) { // download files $files = ilExAssignment::getFiles($a_data["exc_id"], $a_data["id"]); if (count($files) > 0) { $info->addSection($lng->txt("exc_files")); foreach ($files as $file) { // if download must be purchased first show a "buy"-button if (IS_PAYMENT_ENABLED && (ilPaymentObject::_isBuyable($_GET['ref_id'], 'download') && !ilPaymentObject::_hasAccess($_GET['ref_id'], '', 'download'))) { $info->addProperty($file["name"], $lng->txt("buy"), $ilCtrl->getLinkTargetByClass("ilShopPurchaseGUI", "showDetails")); } else { $ilCtrl->setParameterByClass("ilobjexercisegui", "file", urlencode($file["name"])); $info->addProperty($file["name"], $lng->txt("download"), $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "downloadFile")); $ilCtrl->setParameterByClass("ilobjexercisegui", "file", ""); } } } // submission // if submission must be purchased first if (IS_PAYMENT_ENABLED && (ilPaymentObject::_isBuyable($_GET['ref_id'], 'upload') && !ilPaymentObject::_hasAccess($_GET['ref_id'], '', 'upload'))) { $info->addSection($lng->txt("exc_your_submission")); $ilCtrl->clearParameters($this); $ilCtrl->setParameter($this, "ref_id", $_GET['ref_id']); $ilCtrl->setParameter($this, 'subtype', 'upload'); $info->addProperty($lng->txt('exc_hand_in'), $lng->txt("buy"), $ilCtrl->getLinkTargetByClass("ilShopPurchaseGUI", "showDetails")); } else { $info->addSection($lng->txt("exc_your_submission")); $delivered_files = ilExAssignment::getDeliveredFiles($a_data["exc_id"], $a_data["id"], $ilUser->getId()); $times_up = false; if ($a_data["deadline"] > 0 && $a_data["deadline"] - time() < 0) { $times_up = true; } $team_members = null; switch ($a_data["type"]) { case ilExAssignment::TYPE_UPLOAD_TEAM: $team_members = ilExAssignment::getTeamMembersByAssignmentId($a_data["id"], $ilUser->getId()); if (sizeof($team_members) > 1) { $team = array(); foreach ($team_members as $member_id) { $team[] = ilObjUser::_lookupFullname($member_id); } $info->addProperty($lng->txt("exc_team_members"), implode(", ", $team)); } // fallthrough // fallthrough case ilExAssignment::TYPE_UPLOAD: $titles = array(); foreach ($delivered_files as $file) { $titles[] = $file["filetitle"]; } $files_str = implode($titles, ", "); if ($files_str == "") { $files_str = $lng->txt("message_no_delivered_files"); } $ilCtrl->setParameterByClass("ilobjexercisegui", "ass_id", $a_data["id"]); if (!$times_up) { $files_str .= ' <a class="submit" href="' . $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "submissionScreen") . '">' . (count($titles) == 0 ? $lng->txt("exc_hand_in") : $lng->txt("exc_edit_submission")) . '</a>'; } else { if (count($titles) > 0) { $files_str .= ' <a class="submit" href="' . $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "submissionScreen") . '">' . $lng->txt("already_delivered_files") . '</a>'; } } $info->addProperty($lng->txt("exc_files_returned"), $files_str); break; case ilExAssignment::TYPE_BLOG: $files_str = ""; $valid_blog = false; if (sizeof($delivered_files)) { $delivered_files = array_pop($delivered_files); $blog_id = (int) $delivered_files["filetitle"]; include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php"; $wsp_tree = new ilWorkspaceTree($ilUser->getId()); $node = $wsp_tree->getNodeData($blog_id); if ($node["title"]) { // #10116 // $blog_link = ilWorkspaceAccessHandler::getGotoLink($blog_id, $node["obj_id"]); $ilCtrl->setParameterByClass("ilobjbloggui", "wsp_id", $blog_id); $blog_link = $ilCtrl->getLinkTargetByClass(array("ilpersonaldesktopgui", "ilpersonalworkspacegui", "ilobjbloggui"), ""); $ilCtrl->setParameterByClass("ilobjbloggui", "wsp_id", ""); $files_str = '<a href="' . $blog_link . '">' . $node["title"] . '</a>'; $valid_blog = true; } } if (!$times_up) { if (!$valid_blog) { $files_str .= '<a class="submit" href="' . $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "createBlog") . '">' . $lng->txt("exc_create_blog") . '</a>'; } $files_str .= ' <a class="submit" href="' . $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "selectBlog") . '">' . $lng->txt("exc_select_blog" . ($valid_blog ? "_change" : "")) . '</a>'; } if ($files_str) { $info->addProperty($lng->txt("exc_blog_returned"), $files_str); } if ($delivered_files && substr($delivered_files["filename"], -1) != "/") { $ilCtrl->setParameterByClass("ilobjexercisegui", "delivered", $delivered_files["returned_id"]); $dl_link = $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "download"); $ilCtrl->setParameterByClass("ilobjexercisegui", "delivered", ""); $info->addProperty($lng->txt("exc_files_returned"), "<a href=\"" . $dl_link . "\">" . $lng->txt("download") . "</a>"); } break; case ilExAssignment::TYPE_PORTFOLIO: $files_str = ""; $valid_prtf = false; if (sizeof($delivered_files)) { $delivered_files = array_pop($delivered_files); $portfolio_id = (int) $delivered_files["filetitle"]; include_once "Services/Portfolio/classes/class.ilObjPortfolio.php"; include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php"; $portfolio = new ilObjPortfolio($portfolio_id, false); if ($portfolio->getTitle()) { // #10116 // $prtf_link = ilWorkspaceAccessHandler::getGotoLink($portfolio_id, $portfolio_id) $ilCtrl->setParameterByClass("ilobjportfoliogui", "prt_id", $portfolio_id); $prtf_link = $ilCtrl->getLinkTargetByClass(array("ilpersonaldesktopgui", "ilobjportfoliogui"), "pages"); $ilCtrl->setParameterByClass("ilobjportfoliogui", "prt_id", ""); $files_str = '<a href="' . $prtf_link . '">' . $portfolio->getTitle() . '</a>'; $valid_prtf = true; } } if (!$times_up) { if (!$valid_prtf) { $files_str .= '<a class="submit" href="' . $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "createPortfolio") . '">' . $lng->txt("exc_create_portfolio") . '</a>'; } $files_str .= ' <a class="submit" href="' . $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "selectPortfolio") . '">' . $lng->txt("exc_select_portfolio" . ($valid_prtf ? "_change" : "")) . '</a>'; } if ($files_str) { $info->addProperty($lng->txt("exc_portfolio_returned"), $files_str); } if ($delivered_files && substr($delivered_files["filename"], -1) != "/") { $ilCtrl->setParameterByClass("ilobjexercisegui", "delivered", $delivered_files["returned_id"]); $dl_link = $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "download"); $ilCtrl->setParameterByClass("ilobjexercisegui", "delivered", ""); $info->addProperty($lng->txt("exc_files_returned"), "<a href=\"" . $dl_link . "\">" . $lng->txt("download") . "</a>"); } break; } $last_sub = ilExAssignment::getLastSubmission($a_data["id"], $ilUser->getId()); if ($last_sub) { $last_sub = ilDatePresentation::formatDate(new ilDateTime($last_sub, IL_CAL_DATETIME)); } else { $last_sub = "---"; } if ($last_sub != "---") { $info->addProperty($lng->txt("exc_last_submission"), $last_sub); } // feedback from tutor if ($a_data["type"] == ilExAssignment::TYPE_UPLOAD_TEAM) { $feedback_id = "t" . ilExAssignment::getTeamIdByAssignment($a_data["id"], $ilUser->getId()); } else { $feedback_id = $ilUser->getId(); } $storage = new ilFSStorageExercise($a_data["exc_id"], $a_data["id"]); $cnt_files = $storage->countFeedbackFiles($feedback_id); $lpcomment = ilExAssignment::lookupCommentForUser($a_data["id"], $ilUser->getId()); $mark = ilExAssignment::lookupMarkOfUser($a_data["id"], $ilUser->getId()); $status = ilExAssignment::lookupStatusOfUser($a_data["id"], $ilUser->getId()); if ($lpcomment != "" || $mark != "" || $status != "notgraded" || $cnt_files > 0) { $info->addSection($lng->txt("exc_feedback_from_tutor")); if ($lpcomment != "") { $info->addProperty($lng->txt("exc_comment"), $lpcomment); } if ($mark != "") { $info->addProperty($lng->txt("exc_mark"), $mark); } if ($status == "") { // $info->addProperty($lng->txt("status"), // $lng->txt("message_no_delivered_files")); } else { if ($status != "notgraded") { $img = '<img border="0" src="' . ilUtil::getImagePath("scorm/" . $status . ".png") . '" ' . ' alt="' . $lng->txt("exc_" . $status) . '" title="' . $lng->txt("exc_" . $status) . '" style="vertical-align:middle;"/>'; $info->addProperty($lng->txt("status"), $img . " " . $lng->txt("exc_" . $status)); } } if ($cnt_files > 0) { $info->addSection($lng->txt("exc_fb_files")); $files = $storage->getFeedbackFiles($feedback_id); foreach ($files as $file) { $ilCtrl->setParameterByClass("ilobjexercisegui", "file", urlencode($file)); $info->addProperty($file, $lng->txt("download"), $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "downloadFeedbackFile")); $ilCtrl->setParameter($this, "file", ""); } } } } } $tpl->setVariable("CONTENT", $info->getHTML()); return $tpl->get(); }
/** * Check access rights for blog pages * * @param int object id (glossary) * @param int page id (definition) * @return boolean access given (true/false) */ private function checkAccessBlogPage($obj_id, $page_id) { include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree(0); $node_id = $tree->lookupNodeId($obj_id); // repository if (!$node_id) { return $this->checkAccessObject($obj_id); } else { include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php"; foreach ($this->check_users as $user_id) { $access_handler = new ilWorkspaceAccessHandler($tree); if ($access_handler->checkAccessOfUser($tree, $user_id, "read", "view", $node_id, "blog")) { return true; } } } return false; }
/** * Assign materials to skill level * * @param * @return */ function assignMaterial() { global $tpl, $ilUser, $ilCtrl, $ilTabs, $lng, $ilSetting; if (!$ilSetting->get("disable_personal_workspace")) { ilUtil::sendInfo($lng->txt("skmg_ass_materials_from_workspace") . " » <a href='ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToWorkspace'>" . $lng->txt("personal_workspace") . "</a>"); } $ilCtrl->saveParameter($this, "skill_id"); $ilCtrl->saveParameter($this, "level_id"); $ilCtrl->saveParameter($this, "tref_id"); $ilCtrl->saveParameter($this, "basic_skill_id"); $ilTabs->setBackTarget($lng->txt("back"), $ilCtrl->getLinkTarget($this, "assignMaterials")); // get ws tree include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree($ilUser->getId()); // get access handler include_once "./Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php"; $acc_handler = new ilWorkspaceAccessHandler($tree); // get es explorer include_once "./Services/PersonalWorkspace/classes/class.ilWorkspaceExplorer.php"; $exp = new ilWorkspaceExplorer(ilWorkspaceExplorer::SEL_TYPE_CHECK, '', 'skill_wspexpand', $tree, $acc_handler); $exp->setTargetGet('wsp_id'); $exp->setFiltered(false); $exp->removeAllFormItemTypes(); $exp->addFormItemForType("file"); $exp->addFormItemForType("tstv"); $exp->addFormItemForType("excv"); if ($_GET['skill_wspexpand'] == '') { // not really used as session is already set [see above] $expanded = $tree->readRootId(); } else { $expanded = $_GET['skill_wspexpand']; } $exp->setCheckedItems(array((int) $_POST['wsp_id'])); $exp->setExpandTarget($ilCtrl->getLinkTarget($this, 'assignMaterial')); $exp->setPostVar('wsp_id[]'); $exp->setExpand($expanded); $exp->setOutput(0); // fill template $mtpl = new ilTemplate("tpl.materials_selection.html", true, true, "Services/Skill"); $mtpl->setVariable("EXP", $exp->getOutput()); // toolbars $tb = new ilToolbarGUI(); $tb->addFormButton($lng->txt("select"), "selectMaterial"); $tb->setFormAction($ilCtrl->getFormAction($this)); $tb->setOpenFormTag(true); $tb->setCloseFormTag(false); $mtpl->setVariable("TOOLBAR1", $tb->getHTML()); $tb->setOpenFormTag(false); $tb->setCloseFormTag(true); $mtpl->setVariable("TOOLBAR2", $tb->getHTML()); $tpl->setContent($mtpl->get()); }
/** * Get assignment body for overview */ function getOverviewBody($a_data) { global $lng, $ilCtrl, $ilUser; $tpl = new ilTemplate("tpl.assignment_body.html", true, true, "Modules/Exercise"); include_once "./Services/InfoScreen/classes/class.ilInfoScreenGUI.php"; include_once "./Services/UIComponent/Button/classes/class.ilLinkButton.php"; if (IS_PAYMENT_ENABLED) { include_once './Services/Payment/classes/class.ilPaymentObject.php'; } $info = new ilInfoScreenGUI(null); $info->setTableClass(""); $not_started_yet = false; if ($a_data["start_time"] > 0 && time() - $a_data["start_time"] <= 0) { $not_started_yet = true; } if (!$not_started_yet) { // instructions $info->addSection($lng->txt("exc_instruction")); $is_html = strlen($a_data["instruction"]) != strlen(strip_tags($a_data["instruction"])); if (!$is_html) { $a_data["instruction"] = nl2br(ilUtil::makeClickable($a_data["instruction"], true)); } $info->addProperty("", $a_data["instruction"]); } // schedule $info->addSection($lng->txt("exc_schedule")); if ($a_data["start_time"] > 0) { $info->addProperty($lng->txt("exc_start_time"), ilDatePresentation::formatDate(new ilDateTime($a_data["start_time"], IL_CAL_UNIX))); } if ($a_data["deadline"] > 0) { $info->addProperty($lng->txt("exc_edit_until"), ilDatePresentation::formatDate(new ilDateTime($a_data["deadline"], IL_CAL_UNIX))); } $time_str = $this->getTimeString($a_data["deadline"]); if (!$not_started_yet) { $info->addProperty($lng->txt("exc_time_to_send"), "<b>" . $time_str . "</b>"); } // public submissions if ($this->exc->getShowSubmissions()) { $ilCtrl->setParameterByClass("ilobjexercisegui", "ass_id", $a_data["id"]); if ($a_data["deadline"] - time() <= 0) { $button = ilLinkButton::getInstance(); $button->setCaption("exc_list_submission"); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "listPublicSubmissions")); $info->addProperty($lng->txt("exc_public_submission"), $button->render()); } else { $info->addProperty($lng->txt("exc_public_submission"), $lng->txt("exc_msg_public_submission")); } $ilCtrl->setParameterByClass("ilobjexercisegui", "ass_id", $_GET["ass_id"]); } $ilCtrl->setParameterByClass("ilobjexercisegui", "ass_id", $a_data["id"]); if (!$not_started_yet) { // download files $files = ilExAssignment::getFiles($a_data["exc_id"], $a_data["id"]); if (count($files) > 0) { $info->addSection($lng->txt("exc_files")); foreach ($files as $file) { // if download must be purchased first show a "buy"-button if (IS_PAYMENT_ENABLED && (ilPaymentObject::_isBuyable($_GET['ref_id'], 'download') && !ilPaymentObject::_hasAccess($_GET['ref_id'], '', 'download'))) { $info->addProperty($file["name"], $lng->txt("buy"), $ilCtrl->getLinkTargetByClass("ilShopPurchaseGUI", "showDetails")); } else { $ilCtrl->setParameterByClass("ilobjexercisegui", "file", urlencode($file["name"])); $info->addProperty($file["name"], $lng->txt("download"), $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "downloadFile")); $ilCtrl->setParameterByClass("ilobjexercisegui", "file", ""); } } } // submission // if submission must be purchased first if (IS_PAYMENT_ENABLED && (ilPaymentObject::_isBuyable($_GET['ref_id'], 'upload') && !ilPaymentObject::_hasAccess($_GET['ref_id'], '', 'upload'))) { $info->addSection($lng->txt("exc_your_submission")); $ilCtrl->clearParameters($this); $ilCtrl->setParameter($this, "ref_id", $_GET['ref_id']); $ilCtrl->setParameter($this, 'subtype', 'upload'); $info->addProperty($lng->txt('exc_hand_in'), $lng->txt("buy"), $ilCtrl->getLinkTargetByClass("ilShopPurchaseGUI", "showDetails")); } else { $info->addSection($lng->txt("exc_your_submission")); $delivered_files = ilExAssignment::getDeliveredFiles($a_data["exc_id"], $a_data["id"], $ilUser->getId()); $times_up = false; if ($a_data["deadline"] > 0 && $a_data["deadline"] - time() < 0) { $times_up = true; } $team_members = null; switch ($a_data["type"]) { case ilExAssignment::TYPE_UPLOAD_TEAM: $no_team_yet = false; $team_members = ilExAssignment::getTeamMembersByAssignmentId($a_data["id"], $ilUser->getId()); if (sizeof($team_members)) { $team = array(); foreach ($team_members as $member_id) { $team[] = ilObjUser::_lookupFullname($member_id); } $team = implode(", ", $team); $button = ilLinkButton::getInstance(); $button->setCaption("exc_manage_team"); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "submissionScreenTeam")); $team .= " " . $button->render(); $info->addProperty($lng->txt("exc_team_members"), $team); } else { $no_team_yet = true; if (!$times_up) { if (!sizeof($delivered_files)) { $team_info = $lng->txt("exc_no_team_yet_notice"); } else { $team_info = '<span class="warning">' . $lng->txt("exc_no_team_yet_notice") . '</span>'; } $button = ilLinkButton::getInstance(); $button->setPrimary(true); $button->setCaption("exc_create_team"); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "createTeam")); $team_info .= " " . $button->render(); $team_info .= '<div class="ilFormInfo">' . $lng->txt("exc_no_team_yet_info") . '</div>'; } else { $team_info = '<span class="warning">' . $lng->txt("exc_create_team_times_up_warning") . '</span>'; } $info->addProperty($lng->txt("exc_team_members"), $team_info); } // fallthrough // fallthrough case ilExAssignment::TYPE_UPLOAD: $titles = array(); foreach ($delivered_files as $file) { $titles[] = $file["filetitle"]; } $files_str = implode($titles, ", "); if ($files_str == "") { $files_str = $lng->txt("message_no_delivered_files"); } // no team == no submission if (!$no_team_yet) { $ilCtrl->setParameterByClass("ilobjexercisegui", "ass_id", $a_data["id"]); if (!$times_up) { $title = count($titles) == 0 ? $lng->txt("exc_hand_in") : $lng->txt("exc_edit_submission"); $button = ilLinkButton::getInstance(); $button->setPrimary(true); $button->setCaption($title, false); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "submissionScreen")); $files_str .= " " . $button->render(); } else { if (count($titles) > 0) { $button = ilLinkButton::getInstance(); $button->setCaption("already_delivered_files"); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "submissionScreen")); $files_str .= " " . $button->render(); } } } $info->addProperty($lng->txt("exc_files_returned"), $files_str); break; case ilExAssignment::TYPE_BLOG: include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $wsp_tree = new ilWorkspaceTree($ilUser->getId()); // #12939 if (!$wsp_tree->getRootId()) { $wsp_tree->createTreeForUser($ilUser->getId()); } $files_str = ""; $valid_blog = false; if (sizeof($delivered_files)) { $delivered_files = array_pop($delivered_files); $blog_id = (int) $delivered_files["filetitle"]; $node = $wsp_tree->getNodeData($blog_id); if ($node["title"]) { // #10116 $ilCtrl->setParameterByClass("ilobjbloggui", "wsp_id", $blog_id); $blog_link = $ilCtrl->getLinkTargetByClass(array("ilpersonaldesktopgui", "ilpersonalworkspacegui", "ilobjbloggui"), ""); $ilCtrl->setParameterByClass("ilobjbloggui", "wsp_id", ""); $files_str = '<a href="' . $blog_link . '">' . $node["title"] . '</a>'; $valid_blog = true; } else { if (substr($delivered_files["filename"], -1) == "/") { $this->exc->deleteResourceObject($delivered_files["ass_id"], $ilUser->getId(), $delivered_files["returned_id"]); } } } if (!$times_up) { if (!$valid_blog) { $button = ilLinkButton::getInstance(); $button->setCaption("exc_create_blog"); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "createBlog")); $files_str .= $button->render(); } // #10462 $blogs = sizeof($wsp_tree->getObjectsFromType("blog")); if (!$valid_blog && $blogs || $valid_blog && $blogs > 1) { $button = ilLinkButton::getInstance(); $button->setCaption("exc_select_blog" . ($valid_blog ? "_change" : "")); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "selectBlog")); $files_str .= " " . $button->render(); } } if ($files_str) { $info->addProperty($lng->txt("exc_blog_returned"), $files_str); } if ($delivered_files && substr($delivered_files["filename"], -1) != "/") { $ilCtrl->setParameterByClass("ilobjexercisegui", "delivered", $delivered_files["returned_id"]); $dl_link = $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "download"); $ilCtrl->setParameterByClass("ilobjexercisegui", "delivered", ""); $button = ilLinkButton::getInstance(); $button->setCaption("download"); $button->setUrl($dl_link); $info->addProperty($lng->txt("exc_files_returned"), $button->render()); } break; case ilExAssignment::TYPE_PORTFOLIO: include_once "Modules/Portfolio/classes/class.ilObjPortfolio.php"; $files_str = ""; $valid_prtf = false; if (sizeof($delivered_files)) { $delivered_files = array_pop($delivered_files); $portfolio_id = (int) $delivered_files["filetitle"]; // #11746 if (ilObject::_exists($portfolio_id, false, "prtf")) { $portfolio = new ilObjPortfolio($portfolio_id, false); if ($portfolio->getTitle()) { // #10116 / #12791 $ilCtrl->setParameterByClass("ilobjportfoliogui", "prt_id", $portfolio_id); $prtf_link = $ilCtrl->getLinkTargetByClass(array("ilpersonaldesktopgui", "ilportfoliorepositorygui", "ilobjportfoliogui"), "view"); $ilCtrl->setParameterByClass("ilobjportfoliogui", "prt_id", ""); $files_str = '<a href="' . $prtf_link . '">' . $portfolio->getTitle() . '</a>'; $valid_prtf = true; } } else { if (substr($delivered_files["filename"], -1) == "/") { $this->exc->deleteResourceObject($delivered_files["ass_id"], $ilUser->getId(), $delivered_files["returned_id"]); } } } if (!$times_up) { if (!$valid_prtf) { // if there are portfolio templates available show form first include_once "Modules/Portfolio/classes/class.ilObjPortfolioTemplate.php"; $has_prtt = sizeof(ilObjPortfolioTemplate::getAvailablePortfolioTemplates()) ? "Template" : ""; $button = ilLinkButton::getInstance(); $button->setCaption("exc_create_portfolio"); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "createPortfolio" . $has_prtt)); $files_str .= $button->render(); } // #10462 $prtfs = sizeof(ilObjPortfolio::getPortfoliosOfUser($ilUser->getId())); if (!$valid_prtf && $prtfs || $valid_prtf && $prtfs > 1) { $button = ilLinkButton::getInstance(); $button->setCaption("exc_select_portfolio" . ($valid_prtf ? "_change" : "")); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "selectPortfolio")); $files_str .= " " . $button->render(); } } if ($files_str) { $info->addProperty($lng->txt("exc_portfolio_returned"), $files_str); } if ($delivered_files && substr($delivered_files["filename"], -1) != "/") { $ilCtrl->setParameterByClass("ilobjexercisegui", "delivered", $delivered_files["returned_id"]); $dl_link = $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "download"); $ilCtrl->setParameterByClass("ilobjexercisegui", "delivered", ""); $button = ilLinkButton::getInstance(); $button->setCaption("download"); $button->setUrl($dl_link); $info->addProperty($lng->txt("exc_files_returned"), $button->render()); } break; case ilExAssignment::TYPE_TEXT: $ilCtrl->setParameterByClass("ilobjexercisegui", "ass_id", $a_data["id"]); if (!$times_up) { $button = ilLinkButton::getInstance(); $button->setPrimary(true); $button->setCaption("exc_text_assignment_edit"); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "editAssignmentText")); $files_str = $button->render(); } else { $button = ilLinkButton::getInstance(); $button->setCaption("exc_text_assignment_show"); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "showAssignmentText")); $files_str = $button->render(); } $info->addProperty($lng->txt("exc_files_returned_text"), $files_str); break; } $last_sub = ilExAssignment::getLastSubmission($a_data["id"], $ilUser->getId()); if ($last_sub) { $last_sub = ilDatePresentation::formatDate(new ilDateTime($last_sub, IL_CAL_DATETIME)); } else { $last_sub = "---"; } if ($last_sub != "---") { $info->addProperty($lng->txt("exc_last_submission"), $last_sub); } // peer feedback if ($times_up && $a_data["peer"]) { $nr_missing_fb = ilExAssignment::getNumberOfMissingFeedbacks($a_data["id"], $a_data["peer_min"]); if (!$a_data["peer_dl"] || $a_data["peer_dl"] > time()) { $dl_info = ""; if ($a_data["peer_dl"]) { $dl_info = " (" . sprintf($lng->txt("exc_peer_review_deadline_info_button"), ilDatePresentation::formatDate(new ilDateTime($a_data["peer_dl"], IL_CAL_UNIX))) . ")"; } $button = ilLinkButton::getInstance(); $button->setPrimary($nr_missing_fb); $button->setCaption($lng->txt("exc_peer_review_give") . $dl_info, false); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "editPeerReview")); $edit_pc = $button->render(); } else { if ($a_data["peer_dl"]) { $edit_pc = $lng->txt("exc_peer_review_deadline_reached"); } } if ((!$a_data["peer_dl"] || $a_data["peer_dl"] < time()) && !$nr_missing_fb) { $button = ilLinkButton::getInstance(); $button->setCaption("exc_peer_review_show"); $button->setUrl($ilCtrl->getLinkTargetByClass("ilobjexercisegui", "showPersonalPeerReview")); $view_pc = $button->render(); } /* else { $view_pc = $lng->txt("exc_peer_review_show_not_rated_yet"); } */ $info->addProperty($lng->txt("exc_peer_review"), $edit_pc . " " . $view_pc); } // feedback from tutor if ($a_data["type"] == ilExAssignment::TYPE_UPLOAD_TEAM) { $feedback_id = "t" . ilExAssignment::getTeamIdByAssignment($a_data["id"], $ilUser->getId()); } else { $feedback_id = $ilUser->getId(); } // global feedback / sample solution if ($a_data["fb_date"] == ilExAssignment::FEEDBACK_DATE_DEADLINE) { $show_global_feedback = $times_up && $a_data["fb_file"]; } else { $show_global_feedback = $last_sub != "---" && $a_data["fb_file"]; } $storage = new ilFSStorageExercise($a_data["exc_id"], $a_data["id"]); $cnt_files = $storage->countFeedbackFiles($feedback_id); $lpcomment = ilExAssignment::lookupCommentForUser($a_data["id"], $ilUser->getId()); $mark = ilExAssignment::lookupMarkOfUser($a_data["id"], $ilUser->getId()); $status = ilExAssignment::lookupStatusOfUser($a_data["id"], $ilUser->getId()); if ($lpcomment != "" || $mark != "" || $status != "notgraded" || $cnt_files > 0 || $show_global_feedback) { $info->addSection($lng->txt("exc_feedback_from_tutor")); if ($lpcomment != "") { $info->addProperty($lng->txt("exc_comment"), $lpcomment); } if ($mark != "") { $info->addProperty($lng->txt("exc_mark"), $mark); } if ($status == "") { // $info->addProperty($lng->txt("status"), // $lng->txt("message_no_delivered_files")); } else { if ($status != "notgraded") { $img = '<img src="' . ilUtil::getImagePath("scorm/" . $status . ".svg") . '" ' . ' alt="' . $lng->txt("exc_" . $status) . '" title="' . $lng->txt("exc_" . $status) . '" />'; $info->addProperty($lng->txt("status"), $img . " " . $lng->txt("exc_" . $status)); } } if ($cnt_files > 0) { $info->addSection($lng->txt("exc_fb_files") . '<a name="fb' . $a_data["id"] . '"></a>'); if ($cnt_files > 0) { $files = $storage->getFeedbackFiles($feedback_id); foreach ($files as $file) { $ilCtrl->setParameterByClass("ilobjexercisegui", "file", urlencode($file)); $info->addProperty($file, $lng->txt("download"), $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "downloadFeedbackFile")); $ilCtrl->setParameterByClass("ilobjexercisegui", "file", ""); } } } // #15002 - global feedback if ($show_global_feedback) { $info->addSection($lng->txt("exc_global_feedback_file")); $info->addProperty($a_data["fb_file"], $lng->txt("download"), $ilCtrl->getLinkTargetByClass("ilobjexercisegui", "downloadGlobalFeedbackFile")); } } } } $tpl->setVariable("CONTENT", $info->getHTML()); return $tpl->get(); }
/** * deletes a user * @access public * @param integer user_id */ function delete() { global $rbacadmin, $ilDB; // deassign from ldap groups include_once 'Services/LDAP/classes/class.ilLDAPRoleGroupMapping.php'; $mapping = ilLDAPRoleGroupMapping::_getInstance(); $mapping->deleteUser($this->getId()); // remove mailbox / update sent mails include_once "Services/Mail/classes/class.ilMailbox.php"; $mailbox = new ilMailbox($this->getId()); $mailbox->delete(); $mailbox->updateMailsOfDeletedUser($this->getLogin()); // delete feed blocks on personal desktop include_once "./Services/Block/classes/class.ilCustomBlock.php"; $costum_block = new ilCustomBlock(); $costum_block->setContextObjId($this->getId()); $costum_block->setContextObjType("user"); $c_blocks = $costum_block->queryBlocksForContext(); include_once "./Services/Feeds/classes/class.ilPDExternalFeedBlock.php"; foreach ($c_blocks as $c_block) { if ($c_block["type"] == "pdfeed") { $fb = new ilPDExternalFeedBlock($c_block["id"]); $fb->delete(); } } // delete block settings include_once "./Services/Block/classes/class.ilBlockSetting.php"; ilBlockSetting::_deleteSettingsOfUser($this->getId()); // delete user_account $ilDB->manipulateF("DELETE FROM usr_data WHERE usr_id = %s", array("integer"), array($this->getId())); // delete user_prefs ilObjUser::_deleteAllPref($this->getId()); // delete user_session include_once "./Services/Authentication/classes/class.ilSession.php"; ilSession::_destroyByUserId($this->getId()); // remove user from rbac $rbacadmin->removeUser($this->getId()); // remove bookmarks // TODO: move this to class.ilBookmarkFolder $q = "DELETE FROM bookmark_tree WHERE tree = " . $ilDB->quote($this->getId(), "integer"); $ilDB->manipulate($q); $q = "DELETE FROM bookmark_data WHERE user_id = " . $ilDB->quote($this->getId(), "integer"); $ilDB->manipulate($q); // DELETE FORUM ENTRIES (not complete in the moment) include_once './Modules/Forum/classes/class.ilObjForum.php'; ilObjForum::_deleteUser($this->getId()); // Delete link check notify entries include_once './Services/LinkChecker/classes/class.ilLinkCheckNotify.php'; ilLinkCheckNotify::_deleteUser($this->getId()); // Delete crs entries include_once './Modules/Course/classes/class.ilObjCourse.php'; ilObjCourse::_deleteUser($this->getId()); // Delete user tracking include_once './Services/Tracking/classes/class.ilObjUserTracking.php'; ilObjUserTracking::_deleteUser($this->getId()); include_once 'Modules/Session/classes/class.ilEventParticipants.php'; ilEventParticipants::_deleteByUser($this->getId()); // Delete Tracking data SCORM 2004 RTE include_once 'Modules/Scorm2004/classes/ilSCORM13Package.php'; ilSCORM13Package::_removeTrackingDataForUser($this->getId()); // Delete Tracking data SCORM 1.2 RTE include_once 'Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php'; ilObjSCORMLearningModule::_removeTrackingDataForUser($this->getId()); // remove all notifications include_once "./Services/Notification/classes/class.ilNotification.php"; ilNotification::removeForUser($this->getId()); // remove portfolios include_once "./Modules/Portfolio/classes/class.ilObjPortfolio.php"; ilObjPortfolio::deleteUserPortfolios($this->getId()); // remove workspace include_once "./Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree($this->getId()); $tree->cascadingDelete(); // remove disk quota entries include_once "./Services/DiskQuota/classes/class.ilDiskQuotaHandler.php"; ilDiskQuotaHandler::deleteByOwner($this->getId()); // Delete user defined field entries $this->deleteUserDefinedFieldEntries(); // Delete clipboard entries $this->clipboardDeleteAll(); // Reset owner $this->resetOwner(); // Trigger deleteUser Event global $ilAppEventHandler; $ilAppEventHandler->raise('Services/User', 'deleteUser', array('usr_id' => $this->getId())); // delete object data parent::delete(); return true; }
protected function initCreatePortfolioFromTemplateForm($a_prtt_id, $a_title) { global $ilSetting, $ilUser; if ((int) $_REQUEST["exc_id"]) { $this->ctrl->setParameter($this, "exc_id", (int) $_REQUEST["exc_id"]); $this->ctrl->setParameter($this, "ass_id", (int) $_REQUEST["ass_id"]); } include_once "Services/Form/classes/class.ilPropertyFormGUI.php"; $form = new ilPropertyFormGUI(); $form->setFormAction($this->ctrl->getFormAction($this)); $tmpl = new ilNonEditableValueGUI($this->lng->txt("obj_prtt")); $tmpl->setValue(ilObject::_lookupTitle($a_prtt_id)); $form->addItem($tmpl); $title = new ilNonEditableValueGUI($this->lng->txt("title"), "pt"); $title->setValue($a_title); $form->addItem($title); // gather user blogs if (!$ilSetting->get('disable_wsp_blogs')) { $blog_options = array(); include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree($this->user_id); $root = $tree->readRootId(); if ($root) { $root = $tree->getNodeData($root); foreach ($tree->getSubTree($root, true, "blog") as $node) { $blog_options[$node["obj_id"]] = $node["title"]; } asort($blog_options); } } $has_form_content = false; include_once "Services/WebDAV/classes/class.ilDiskQuotaActivationChecker.php"; $check_quota = ilDiskQuotaActivationChecker::_isPersonalWorkspaceActive(); $quota_sum = 0; include_once "Services/Skill/classes/class.ilPersonalSkill.php"; $pskills = array_keys(ilPersonalSkill::getSelectedUserSkills($ilUser->getId())); $skill_ids = array(); include_once "Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; foreach (ilPortfolioTemplatePage::getAllPages($a_prtt_id) as $page) { switch ($page["type"]) { case ilPortfolioTemplatePage::TYPE_PAGE: // skills $source_page = new ilPortfolioTemplatePage($page["id"]); $source_page->buildDom(true); $dom = $source_page->getDom(); if ($dom instanceof php4DOMDocument) { $dom = $dom->myDOMDocument; } $xpath = new DOMXPath($dom); $nodes = $xpath->query("//PageContent/Skills"); foreach ($nodes as $node) { $skill_id = $node->getAttribute("Id"); if (!in_array($skill_id, $pskills)) { $skill_ids[] = $skill_id; } } unset($nodes); unset($xpath); unset($dom); if ($check_quota) { $quota_sum += $source_page->getPageDiskSize(); } if (sizeof($skill_ids)) { $has_form_content = true; } break; case ilPortfolioTemplatePage::TYPE_BLOG_TEMPLATE: if (!$ilSetting->get('disable_wsp_blogs')) { $has_form_content = true; $field_id = "blog_" . $page["id"]; $blog = new ilRadioGroupInputGUI($this->lng->txt("obj_blog") . ": " . $page["title"], $field_id); $blog->setRequired(true); $blog->setValue("blog_create"); $form->addItem($blog); $new_blog = new ilRadioOption($this->lng->txt("prtf_template_import_blog_create"), "blog_create"); $blog->addOption($new_blog); $title = new ilTextInputGUI($this->lng->txt("title"), $field_id . "_create_title"); $title->setRequired(true); $new_blog->addSubItem($title); if (sizeof($blog_options)) { $reuse_blog = new ilRadioOption($this->lng->txt("prtf_template_import_blog_reuse"), "blog_resuse"); $blog->addOption($reuse_blog); $obj = new ilSelectInputGUI($this->lng->txt("obj_blog"), $field_id . "_reuse_blog"); $obj->setRequired(true); $obj->setOptions(array("" => $this->lng->txt("please_select")) + $blog_options); $reuse_blog->addSubItem($obj); } $blog->addOption(new ilRadioOption($this->lng->txt("prtf_template_import_blog_ignore"), "blog_ignore")); } break; } } if ($skill_ids) { include_once "Services/Skill/classes/class.ilSkillTreeNode.php"; $skills = new ilCheckboxGroupInputGUI($this->lng->txt("skills"), "skill_ids"); $skills->setInfo($this->lng->txt("prtf_template_import_new_skills")); $skills->setValue($skill_ids); foreach ($skill_ids as $skill_id) { $skills->addOption(new ilCheckboxOption(ilSkillTreeNode::_lookupTitle($skill_id), $skill_id)); } $form->addItem($skills); } if ($quota_sum) { include_once "Services/DiskQuota/classes/class.ilDiskQuotaHandler.php"; if (!ilDiskQuotaHandler::isUploadPossible($quota_sum)) { ilUtil::sendFailure($this->lng->txt("prtf_template_import_quota_failure"), true); $this->ctrl->redirect($this, "create"); } } // no dialog needed, go ahead if (!$has_form_content) { return; } $form->setTitle($this->lng->txt("prtf_creation_mode") . ": " . $this->lng->txt("prtf_creation_mode_template")); $form->addCommandButton("createPortfolioFromTemplateProcess", $this->lng->txt("continue")); $form->addCommandButton("toRepository", $this->lng->txt("cancel")); return $form; }
protected function cancelPassword() { global $ilUser; if ($ilUser->getId() && $ilUser->getId() != ANONYMOUS_USER_ID) { if ($this->node_id) { include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php"; include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree($ilUser->getId()); $owner = $tree->lookupOwner($this->node_id); ilUtil::redirect("ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToWorkspace&dsh=" . $owner); } else { include_once "Services/Portfolio/classes/class.ilObjPortfolio.php"; $prtf = new ilObjPortfolio($this->portfolio_id, false); $owner = $prtf->getOwner(); ilUtil::redirect("ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToPortfolio&dsh=" . $owner); } } }
/** * Init portfolio page form * * @param string $a_mode * @return ilPropertyFormGUI */ public function initBlogForm($a_mode = "create") { global $lng, $ilCtrl, $ilUser; include_once "Services/Form/classes/class.ilPropertyFormGUI.php"; $form = new ilPropertyFormGUI(); $form->setFormAction($ilCtrl->getFormAction($this)); $options = array(); include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php"; $tree = new ilWorkspaceTree($ilUser->getId()); $root = $tree->readRootId(); if ($root) { $root = $tree->getNodeData($root); foreach ($tree->getSubTree($root) as $node) { if ($node["type"] == "blog") { $options[$node["obj_id"]] = $node["title"]; } } asort($options); } // no blogs to add? if (!sizeof($options)) { ilUtil::sendInfo($lng->txt("prtf_no_blogs_info"), true); $ilCtrl->redirect($this, "pages"); } $obj = new ilSelectInputGUI($lng->txt("obj_blog"), "blog"); $obj->setRequired(true); $obj->setOptions($options); $form->addItem($obj); // save and cancel commands if ($a_mode == "create") { $form->setTitle($lng->txt("prtf_add_blog") . ": " . $this->portfolio->getTitle()); $form->addCommandButton("saveBlog", $lng->txt("save")); $form->addCommandButton("pages", $lng->txt("cancel")); } else { /* edit is done directly in table gui $form->setTitle($lng->txt("prtf_edit_page")); $form->addCommandButton("updatePage", $lng->txt("save")); $form->addCommandButton("pages", $lng->txt("cancel")); */ } return $form; }