コード例 #1
0
 /**
  * check access to learning progress
  * 
  * @param int $a_ref_id reference ifd of object
  * @param bool $a_allow_only_read read access is sufficient (see courses/groups)
  * @return
  * @static
  */
 public static function checkAccess($a_ref_id, $a_allow_only_read = true)
 {
     global $ilUser, $ilAccess;
     if ($ilUser->getId() == ANONYMOUS_USER_ID) {
         return false;
     }
     include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
     if (!ilObjUserTracking::_enabledLearningProgress()) {
         return false;
     }
     if ($ilAccess->checkAccess('edit_learning_progress', '', $a_ref_id)) {
         return true;
     }
     if (!ilObjUserTracking::_hasLearningProgressLearner()) {
         return false;
     }
     include_once './Services/Tracking/classes/class.ilLPObjSettings.php';
     if (ilLPObjSettings::_lookupMode(ilObject::_lookupObjId($a_ref_id)) == LP_MODE_DEACTIVATED) {
         return false;
     }
     if (!$ilAccess->checkAccess('read', '', $a_ref_id)) {
         return false;
     }
     if ($a_allow_only_read) {
         return true;
     }
     return false;
 }
コード例 #2
0
 /**
  * check access to learning progress
  * 
  * @param int $a_ref_id reference ifd of object
  * @param bool $a_allow_only_read read access is sufficient (see courses/groups)
  * @return
  * @static
  */
 public static function checkAccess($a_ref_id, $a_allow_only_read = true)
 {
     global $ilUser, $ilAccess;
     if ($ilUser->getId() == ANONYMOUS_USER_ID) {
         return false;
     }
     include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
     if (!ilObjUserTracking::_enabledLearningProgress()) {
         return false;
     }
     if ($ilAccess->checkAccess('edit_learning_progress', '', $a_ref_id)) {
         return true;
     }
     if (!ilObjUserTracking::_hasLearningProgressLearner()) {
         return false;
     }
     include_once './Services/Object/classes/class.ilObjectLP.php';
     $olp = ilObjectLP::getInstance(ilObject::_lookupObjId($a_ref_id));
     if (!$olp->isActive()) {
         return false;
     }
     if (!$ilAccess->checkAccess('read', '', $a_ref_id)) {
         return false;
     }
     if ($a_allow_only_read) {
         return true;
     }
     return false;
 }
コード例 #3
0
 /**
  * Render main menu entry
  *
  * @param
  * @return
  */
 function renderEntry($a_tpl, $a_id, $a_txt, $a_script, $a_target = "_top")
 {
     global $lng, $ilNavigationHistory, $ilSetting, $rbacsystem, $ilCtrl;
     $id = strtolower($a_id);
     $id_up = strtoupper($a_id);
     $a_tpl->setCurrentBlock("entry_" . $id);
     include_once "./Services/UIComponent/GroupedList/classes/class.ilGroupedListGUI.php";
     // repository
     if ($a_id == "repository") {
         $gl = new ilGroupedListGUI();
         $gl->setAsDropDown(true);
         include_once "./Services/Link/classes/class.ilLink.php";
         $icon = ilUtil::img(ilObject::_getIcon(ilObject::_lookupObjId(1), "tiny"));
         $gl->addEntry($icon . " " . $a_txt . " - " . $lng->txt("rep_main_page"), ilLink::_getStaticLink(1, 'root', true), "_top");
         $items = $ilNavigationHistory->getItems();
         reset($items);
         $cnt = 0;
         $first = true;
         foreach ($items as $k => $item) {
             if ($cnt >= 10) {
                 break;
             }
             if (!isset($item["ref_id"]) || !isset($_GET["ref_id"]) || ($item["ref_id"] != $_GET["ref_id"] || !$first)) {
                 if ($cnt == 0) {
                     $gl->addGroupHeader($lng->txt("last_visited"), "ilLVNavEnt");
                 }
                 $obj_id = ilObject::_lookupObjId($item["ref_id"]);
                 $cnt++;
                 $icon = ilUtil::img(ilObject::_getIcon($obj_id, "tiny"));
                 $ititle = ilUtil::shortenText(strip_tags($item["title"]), 50, true);
                 // #11023
                 $gl->addEntry($icon . " " . $ititle, $item["link"], "_top", "", "ilLVNavEnt");
             }
             $first = false;
         }
         if ($cnt > 0) {
             $gl->addEntry("» " . $lng->txt("remove_entries"), "#", "", "return il.MainMenu.removeLastVisitedItems('" . $ilCtrl->getLinkTargetByClass("ilnavigationhistorygui", "removeEntries", "", true) . "');", "ilLVNavEnt");
         }
         $a_tpl->setVariable("REP_EN_OV", $gl->getHTML());
     }
     // desktop
     if ($a_id == "desktop") {
         $gl = new ilGroupedListGUI();
         $gl->setAsDropDown(true);
         // overview
         $gl->addEntry($lng->txt("overview"), "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToSelectedItems", "_top", "", "", "mm_pd_sel_items", ilHelp::getMainMenuTooltip("mm_pd_sel_items"), "left center", "right center", false);
         // my groups and courses, if both is available
         if ($ilSetting->get('disable_my_offers') == 0 && $ilSetting->get('disable_my_memberships') == 0) {
             $gl->addEntry($lng->txt("my_courses_groups"), "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToMemberships", "_top", "", "", "mm_pd_crs_grp", ilHelp::getMainMenuTooltip("mm_pd_crs_grp"), "left center", "right center", false);
         }
         // bookmarks
         if (!$this->ilias->getSetting("disable_bookmarks")) {
             $gl->addEntry($lng->txt("bookmarks"), "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToBookmarks", "_top", "", "", "mm_pd_bookm", ilHelp::getMainMenuTooltip("mm_pd_bookm"), "left center", "right center", false);
         }
         // private notes
         if (!$this->ilias->getSetting("disable_notes")) {
             $gl->addEntry($lng->txt("notes_and_comments"), "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToNotes", "_top", "", "", "mm_pd_notes", ilHelp::getMainMenuTooltip("mm_pd_notes"), "left center", "right center", false);
         }
         // news
         if ($ilSetting->get("block_activated_news")) {
             $gl->addEntry($lng->txt("news"), "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToNews", "_top", "", "", "mm_pd_news", ilHelp::getMainMenuTooltip("mm_pd_news"), "left center", "right center", false);
         }
         // overview is always active
         $gl->addSeparator();
         $separator = false;
         if (!$ilSetting->get("disable_personal_workspace")) {
             // workspace
             $gl->addEntry($lng->txt("personal_workspace"), "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToWorkspace", "_top", "", "", "mm_pd_wsp", ilHelp::getMainMenuTooltip("mm_pd_wsp"), "left center", "right center", false);
             $separator = true;
         }
         // portfolio
         if ($ilSetting->get('user_portfolios')) {
             $gl->addEntry($lng->txt("portfolio"), "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToPortfolio", "_top", "", "", "mm_pd_port", ilHelp::getMainMenuTooltip("mm_pd_port"), "left center", "right center", false);
             $separator = true;
         }
         // skills
         $skmg_set = new ilSetting("skmg");
         if ($skmg_set->get("enable_skmg")) {
             $gl->addEntry($lng->txt("skills"), "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToSkills", "_top", "", "", "mm_pd_skill", ilHelp::getMainMenuTooltip("mm_pd_skill"), "left center", "right center", false);
             $separator = true;
         }
         // Learning Progress
         include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
         if (ilObjUserTracking::_enabledLearningProgress() && (ilObjUserTracking::_hasLearningProgressOtherUsers() || ilObjUserTracking::_hasLearningProgressLearner())) {
             //$ilTabs->addTarget("learning_progress", $this->ctrl->getLinkTargetByClass("ilLearningProgressGUI"));
             $gl->addEntry($lng->txt("learning_progress"), "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToLP", "_top", "", "", "mm_pd_lp", ilHelp::getMainMenuTooltip("mm_pd_lp"), "left center", "right center", false);
             $separator = true;
         }
         if ($separator) {
             $gl->addSeparator();
         }
         $separator = false;
         // calendar
         include_once './Services/Calendar/classes/class.ilCalendarSettings.php';
         $settings = ilCalendarSettings::_getInstance();
         if ($settings->isEnabled()) {
             $gl->addEntry($lng->txt("calendar"), "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToCalendar", "_top", "", "", "mm_pd_cal", ilHelp::getMainMenuTooltip("mm_pd_cal"), "left center", "right center", false);
             $separator = true;
         }
         // mail
         if ($this->mail) {
             $gl->addEntry($lng->txt('mail'), 'ilias.php?baseClass=ilMailGUI', '_top', "", "", "mm_pd_mail", ilHelp::getMainMenuTooltip("mm_pd_mail"), "left center", "right center", false);
             $separator = true;
         }
         // contacts
         if (!$this->ilias->getSetting('disable_contacts') && ($this->ilias->getSetting('disable_contacts_require_mail') || $rbacsystem->checkAccess('internal_mail', ilMailGlobalServices::getMailObjectRefId()))) {
             $gl->addEntry($lng->txt('mail_addressbook'), 'ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToContacts', '_top', "", "", "mm_pd_contacts", ilHelp::getMainMenuTooltip("mm_pd_contacts"), "left center", "right center", false);
             $separator = true;
         }
         if ($separator) {
             $gl->addSeparator();
         }
         // profile
         $gl->addEntry($lng->txt("personal_profile"), "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToProfile", "_top", "", "", "mm_pd_profile", ilHelp::getMainMenuTooltip("mm_pd_profile"), "left center", "right center", false);
         // settings
         $gl->addEntry($lng->txt("personal_settings"), "ilias.php?baseClass=ilPersonalDesktopGUI&cmd=jumpToSettings", "_top", "", "", "mm_pd_sett", ilHelp::getMainMenuTooltip("mm_pd_sett"), "left center", "right center", false);
         $a_tpl->setVariable("DESK_CONT_OV", $gl->getHTML());
     }
     if (IS_PAYMENT_ENABLED) {
         // shop
         if ($a_id == "shop") {
             $gl = new ilGroupedListGUI();
             $gl->setAsDropDown(true);
             // shop_content
             $gl->addEntry($lng->txt("content"), "ilias.php?baseClass=ilShopController&cmd=firstpage", "_top");
             // shoppingcart
             include_once 'Services/Payment/classes/class.ilPaymentShoppingCart.php';
             global $ilUser;
             $objShoppingCart = new ilPaymentShoppingCart($ilUser);
             $items = $objShoppingCart->getEntries();
             if (count($items) > 0) {
                 $gl->addEntry($lng->txt("shoppingcart") . ' (' . count($items) . ')', "ilias.php?baseClass=ilShopController&cmdClass=ilshopshoppingcartgui", "_top");
             }
             $a_tpl->setVariable("SHOP_CONT_OV", $gl->getHTML());
         }
     }
     $a_tpl->setVariable("TXT_" . $id_up, $a_txt);
     $a_tpl->setVariable("SCRIPT_" . $id_up, $a_script);
     $a_tpl->setVariable("TARGET_" . $id_up, $a_target);
     if ($this->active == $a_id || $this->active == "" && $a_id == "repository") {
         //$a_tpl->setVariable("MM_CLASS", "MMActive");
         $a_tpl->setVariable("SEL", '<span class="ilAccHidden">(' . $lng->txt("stat_selected") . ')</span>');
     } else {
         //$a_tpl->setVariable("MM_CLASS", "MMInactive");
     }
     if ($a_id == "repository") {
         include_once "./Services/Accessibility/classes/class.ilAccessKey.php";
         if (ilAccessKey::getKey(ilAccessKey::LAST_VISITED) != "") {
             $a_tpl->setVariable("ACC_KEY_REPOSITORY", 'accesskey="' . ilAccessKey::getKey(ilAccessKey::LAST_VISITED) . '"');
         }
     }
     if ($a_id == "desktop") {
         include_once "./Services/Accessibility/classes/class.ilAccessKey.php";
         if (ilAccessKey::getKey(ilAccessKey::PERSONAL_DESKTOP) != "") {
             $a_tpl->setVariable("ACC_KEY_DESKTOP", 'accesskey="' . ilAccessKey::getKey(ilAccessKey::PERSONAL_DESKTOP) . '"');
         }
     }
     $a_tpl->parseCurrentBlock();
 }
コード例 #4
0
 public static function preloadListGUIData($a_obj_ids)
 {
     global $ilDB, $ilUser, $lng;
     $res = array();
     include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
     if ($ilUser->getId() != ANONYMOUS_USER_ID && ilObjUserTracking::_enabledLearningProgress() && ilObjUserTracking::_hasLearningProgressLearner() && ilObjUserTracking::_hasLearningProgressListGUI()) {
         include_once "Services/Object/classes/class.ilObjectLP.php";
         // validate objects
         $valid = array();
         $existing = ilLPObjSettings::_lookupDBModeForObjects($a_obj_ids);
         foreach ($existing as $obj_id => $obj_mode) {
             if ($obj_mode != ilLPObjSettings::LP_MODE_DEACTIVATED) {
                 $valid[$obj_id] = $obj_id;
             }
         }
         if (sizeof($existing) != sizeof($a_obj_ids)) {
             // missing objects (default mode)
             foreach (array_diff($a_obj_ids, $existing) as $obj_id) {
                 $olp = ilObjectLP::getInstance($obj_id);
                 $mode = $olp->getCurrentMode();
                 if ($mode == ilLPObjSettings::LP_MODE_DEACTIVATED) {
                     // #11141
                     unset($valid[$obj_id]);
                 } else {
                     if ($mode != ilLPObjSettings::LP_MODE_UNDEFINED) {
                         $valid[$obj_id] = $obj_id;
                     }
                 }
             }
             unset($existing);
         }
         $valid = array_values($valid);
         // get user lp data
         $sql = "SELECT status, status_dirty, obj_id FROM ut_lp_marks" . " WHERE " . $ilDB->in("obj_id", $valid, "", "integer") . " AND usr_id = " . $ilDB->quote($ilUser->getId(), "integer");
         $set = $ilDB->query($sql);
         while ($row = $ilDB->fetchAssoc($set)) {
             if (!$row["status_dirty"]) {
                 $res[$row["obj_id"]] = $row["status"];
             } else {
                 $res[$row["obj_id"]] = self::_lookupStatus($row["obj_id"], $ilUser->getId());
             }
         }
         // process missing user entries (same as dirty entries, see above)
         foreach ($valid as $obj_id) {
             if (!isset($res[$obj_id])) {
                 $res[$obj_id] = self::_lookupStatus($obj_id, $ilUser->getId());
                 if ($res[$obj_id] === null) {
                     $res[$obj_id] = self::LP_STATUS_NOT_ATTEMPTED_NUM;
                 }
             }
         }
         // value to icon
         $lng->loadLanguageModule("trac");
         include_once "./Services/Tracking/classes/class.ilLearningProgressBaseGUI.php";
         foreach ($res as $obj_id => $status) {
             $path = ilLearningProgressBaseGUI::_getImagePathForStatus($status);
             $text = ilLearningProgressBaseGUI::_getStatusText($status);
             $res[$obj_id] = ilUtil::img($path, $text);
         }
     }
     self::$list_gui_cache = $res;
 }
コード例 #5
0
 function __setSubTabs($a_active)
 {
     global $rbacsystem, $ilObjDataCache;
     switch ($this->getMode()) {
         case self::LP_CONTEXT_PERSONAL_DESKTOP:
             include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
             if (ilObjUserTracking::_hasLearningProgressLearner() && ilObjUserTracking::_enabledUserRelatedData()) {
                 $this->tabs_gui->addTarget('trac_progress', $this->ctrl->getLinkTargetByClass('illplistofprogressgui', ''), "", "", "", $a_active == self::LP_ACTIVE_PROGRESS);
             }
             if (ilObjUserTracking::_hasLearningProgressOtherUsers()) {
                 $this->tabs_gui->addTarget('trac_objects', $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", ''), "", "", "", $a_active == self::LP_ACTIVE_OBJECTS);
             }
             break;
         case self::LP_CONTEXT_REPOSITORY:
             // #12771 - do not show status if learning progress is deactivated
             include_once './Services/Object/classes/class.ilObjectLP.php';
             $olp = ilObjectLP::getInstance($this->obj_id);
             if ($olp->isActive()) {
                 $has_read = $rbacsystem->checkAccess('read_learning_progress', $this->getRefId());
                 if ($this->isAnonymized() || !$has_read) {
                     $this->ctrl->setParameterByClass('illplistofprogressgui', 'user_id', $this->getUserId());
                     $this->tabs_gui->addSubTabTarget('trac_progress', $this->ctrl->getLinkTargetByClass('illplistofprogressgui', ''), "", "", "", $a_active == self::LP_ACTIVE_PROGRESS);
                 } else {
                     // Check if it is a course
                     $sub_tab = $ilObjDataCache->lookupType($ilObjDataCache->lookupObjId($this->getRefId())) == 'crs' ? 'trac_crs_objects' : 'trac_objects';
                     $this->tabs_gui->addSubTabTarget($sub_tab, $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", ''), "", "", "", $a_active == self::LP_ACTIVE_OBJECTS);
                 }
                 if ($has_read) {
                     if (!$this->isAnonymized() && !in_array($this->obj_type, array('tst', 'htlm', 'exc', 'sess')) && !$olp instanceof ilPluginLP) {
                         $this->tabs_gui->addSubTabTarget("trac_matrix", $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", 'showUserObjectMatrix'), "", "", "", $a_active == self::LP_ACTIVE_MATRIX);
                     }
                     $this->tabs_gui->addSubTabTarget("trac_summary", $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", 'showObjectSummary'), "", "", "", $a_active == self::LP_ACTIVE_SUMMARY);
                 }
             }
             if (!$olp instanceof ilPluginLP && $rbacsystem->checkAccess('edit_learning_progress', $this->getRefId())) {
                 $this->tabs_gui->addSubTabTarget('trac_settings', $this->ctrl->getLinkTargetByClass('illplistofsettingsgui', ''), "", "", "", $a_active == self::LP_ACTIVE_SETTINGS);
             }
             break;
         case self::LP_CONTEXT_ADMINISTRATION:
             /*
             $this->tabs_gui->addSubTabTarget('trac_progress',
             					 $this->ctrl->getLinkTargetByClass('illplistofprogressgui',''),
             					 "","","",$a_active == self::LP_ACTIVE_PROGRESS);
             */
             $this->tabs_gui->addSubTabTarget('trac_objects', $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", ''), "", "", "", $a_active == self::LP_ACTIVE_OBJECTS);
             break;
         case self::LP_CONTEXT_USER_FOLDER:
         case self::LP_CONTEXT_ORG_UNIT:
             // No tabs default class is lpprogressgui
             break;
         default:
             die('No valid mode given');
             break;
     }
     return true;
 }
コード例 #6
0
 function __setSubTabs($a_active)
 {
     global $rbacsystem, $ilObjDataCache, $lng, $ilUser;
     switch ($this->getMode()) {
         case LP_MODE_PERSONAL_DESKTOP:
             include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
             if (ilObjUserTracking::_hasLearningProgressLearner() && ilObjUserTracking::_enabledUserRelatedData()) {
                 $this->tabs_gui->addTarget('trac_progress', $this->ctrl->getLinkTargetByClass('illplistofprogressgui', ''), "", "", "", $a_active == LP_ACTIVE_PROGRESS);
             }
             if (ilObjUserTracking::_hasLearningProgressOtherUsers()) {
                 $this->tabs_gui->addTarget('trac_objects', $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", ''), "", "", "", $a_active == LP_ACTIVE_OBJECTS);
             }
             break;
         case LP_MODE_REPOSITORY:
             if ($rbacsystem->checkAccess('edit_learning_progress', $this->getRefId())) {
                 if ($this->isAnonymized() || $this->isObjectAnonymized()) {
                     $this->ctrl->setParameterByClass('illplistofprogressgui', 'user_id', $this->getUserId());
                     $this->tabs_gui->addSubTabTarget('trac_progress', $this->ctrl->getLinkTargetByClass('illplistofprogressgui', ''), "", "", "", $a_active == LP_ACTIVE_PROGRESS);
                 } else {
                     // Check if it is a course
                     $sub_tab = $ilObjDataCache->lookupType($ilObjDataCache->lookupObjId($this->getRefId())) == 'crs' ? 'trac_crs_objects' : 'trac_objects';
                     $this->tabs_gui->addSubTabTarget($sub_tab, $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", ''), "", "", "", $a_active == LP_ACTIVE_OBJECTS);
                 }
                 if ($this->statistics_activated) {
                     $this->tabs_gui->addSubTabTarget('trac_lm_statistics', $this->ctrl->getLinkTargetByClass('illmstatisticsgui', ''), "", "", "", $a_active == LP_ACTIVE_LM_STATISTICS);
                 }
                 if (!$this->isAnonymized() && !in_array($this->obj_type, array('tst', 'lm', 'htlm', 'exc'))) {
                     // do not show status if learning progress is deactivated
                     // matrix only consists of status...
                     $mode = ilLPObjSettings::_lookupMode($this->obj_id);
                     if ($mode != LP_MODE_DEACTIVATED && $mode != LP_MODE_LP_MODE_UNDEFINED) {
                         $this->tabs_gui->addSubTabTarget("trac_matrix", $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", 'showUserObjectMatrix'), "", "", "", $a_active == LP_ACTIVE_MATRIX);
                     }
                 }
                 $this->tabs_gui->addSubTabTarget("trac_summary", $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", 'showObjectSummary'), "", "", "", $a_active == LP_ACTIVE_SUMMARY);
                 $this->tabs_gui->addSubTabTarget('trac_settings', $this->ctrl->getLinkTargetByClass('illplistofsettingsgui', ''), "", "", "", $a_active == LP_ACTIVE_SETTINGS);
             }
             break;
         case LP_MODE_ADMINISTRATION:
             /*
             $this->tabs_gui->addSubTabTarget('trac_progress',
             					 $this->ctrl->getLinkTargetByClass('illplistofprogressgui',''),
             					 "","","",$a_active == LP_ACTIVE_PROGRESS);
             */
             $this->tabs_gui->addSubTabTarget('trac_objects', $this->ctrl->getLinkTargetByClass("illplistofobjectsgui", ''), "", "", "", $a_active == LP_ACTIVE_OBJECTS);
             break;
         case LP_MODE_USER_FOLDER:
             // No tabs default class is lpprogressgui
             break;
         default:
             die('No valid mode given');
             break;
     }
     return true;
 }
コード例 #7
0
 function __getNextClass()
 {
     global $ilAccess, $ilUser;
     // #9857
     if (!ilObjUserTracking::_enabledLearningProgress()) {
         return;
     }
     if (strlen($next_class = $this->ctrl->getNextClass())) {
         if ($this->getMode() == self::LP_CONTEXT_PERSONAL_DESKTOP) {
             $_SESSION['il_lp_history'] = $next_class;
         }
         return $next_class;
     }
     switch ($this->getMode()) {
         case self::LP_CONTEXT_ADMINISTRATION:
             return 'illplistofobjectsgui';
         case self::LP_CONTEXT_REPOSITORY:
             $cmd = $this->ctrl->getCmd();
             if (in_array($cmd, array("editmanual", "updatemanual", "showtlt"))) {
                 return "";
             }
             // #12771
             include_once './Services/Object/classes/class.ilObjectLP.php';
             $olp = ilObjectLP::getInstance(ilObject::_lookupObjId($this->getRefId()));
             if (!$olp->isActive()) {
                 if (!$olp instanceof ilPluginLP && $ilAccess->checkAccess('edit_learning_progress', '', $this->getRefId())) {
                     return 'illplistofsettingsgui';
                 } else {
                     return '';
                 }
             }
             if (!$this->anonymized && $ilAccess->checkAccess('read_learning_progress', '', $this->getRefId())) {
                 return 'illplistofobjectsgui';
             }
             if ($ilAccess->checkAccess('edit_learning_progress', '', $this->getRefId())) {
                 return 'illplistofsettingsgui';
             }
             return 'illplistofprogressgui';
         case self::LP_CONTEXT_PERSONAL_DESKTOP:
             include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
             $has_edit = ilObjUserTracking::_hasLearningProgressOtherUsers();
             $has_personal = ilObjUserTracking::_hasLearningProgressLearner();
             if ($has_edit || $has_personal) {
                 // default (#10928)
                 $tgt = null;
                 if ($has_personal) {
                     $tgt = 'illplistofprogressgui';
                 } else {
                     if ($has_edit) {
                         $tgt = 'illplistofobjectsgui';
                     }
                 }
                 // validate session
                 switch ($_SESSION['il_lp_history']) {
                     case 'illplistofobjectsgui':
                         if (!$has_edit) {
                             $_SESSION['il_lp_history'] = null;
                         }
                         break;
                     case 'illplistofprogressgui':
                         if (!$has_personal) {
                             $_SESSION['il_lp_history'] = null;
                         }
                         break;
                 }
                 if ($_SESSION['il_lp_history']) {
                     return $_SESSION['il_lp_history'];
                 } else {
                     if ($tgt) {
                         return $tgt;
                     }
                 }
             }
             // should not happen
             ilUtil::redirect("ilias.php?baseClass=ilPersonalDesktopGUI");
         case self::LP_CONTEXT_USER_FOLDER:
         case self::LP_CONTEXT_ORG_UNIT:
             if (ilObjUserTracking::_enabledUserRelatedData()) {
                 return 'illplistofprogressgui';
             }
             break;
     }
 }
コード例 #8
0
 protected function getCoursesOfUser($a_user_id)
 {
     global $tree;
     // see ilPDSelectedItemsBlockGUI
     include_once 'Modules/Course/classes/class.ilObjCourseAccess.php';
     include_once 'Services/Membership/classes/class.ilParticipants.php';
     $items = ilParticipants::_getMembershipByType($a_user_id, 'crs');
     $references = $lp_obj_refs = array();
     foreach ($items as $obj_id) {
         $ref_id = ilObject::_getAllReferences($obj_id);
         if (is_array($ref_id) && count($ref_id)) {
             $ref_id = array_pop($ref_id);
             if (!$tree->isDeleted($ref_id)) {
                 $visible = false;
                 $active = ilObjCourseAccess::_isActivated($obj_id, $visible, false);
                 if ($active && $visible) {
                     $references[$ref_id] = array('ref_id' => $ref_id, 'obj_id' => $obj_id, 'title' => ilObject::_lookupTitle($obj_id));
                     $lp_obj_refs[$obj_id] = $ref_id;
                 }
             }
         }
     }
     // get lp data for valid courses
     if (sizeof($lp_obj_refs)) {
         // lp must be active, personal and not anonymized
         include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
         if (ilObjUserTracking::_enabledLearningProgress() && ilObjUserTracking::_enabledUserRelatedData() && ilObjUserTracking::_hasLearningProgressLearner()) {
             // see ilLPProgressTableGUI
             include_once "Services/Tracking/classes/class.ilTrQuery.php";
             include_once "Services/Tracking/classes/class.ilLPStatusFactory.php";
             $lp_data = ilTrQuery::getObjectsStatusForUser($a_user_id, $lp_obj_refs);
             foreach ($lp_data as $item) {
                 $ref_id = $item["ref_ids"];
                 $references[$ref_id]["lp_status"] = $item["status"];
                 // add objectives
                 if ($item["u_mode"] == ilLPObjSettings::LP_MODE_OBJECTIVES) {
                     // we need the collection for the correct order
                     include_once "Services/Tracking/classes/collection/class.ilLPCollectionOfObjectives.php";
                     $coll_objtv = new ilLPCollectionOfObjectives($item["obj_id"], $item["u_mode"]);
                     $coll_objtv = $coll_objtv->getItems();
                     if ($coll_objtv) {
                         // #13373
                         $lo_results = $this->parseLOUserResults($item["obj_id"], $a_user_id);
                         $tmp = array();
                         include_once "Modules/Course/classes/class.ilCourseObjective.php";
                         foreach ($coll_objtv as $objective_id) {
                             $tmp[$objective_id] = array("id" => $objective_id, "title" => ilCourseObjective::lookupObjectiveTitle($objective_id));
                             if (array_key_exists($objective_id, $lo_results)) {
                                 $lo_result = $lo_results[$objective_id];
                                 $tmp[$objective_id]["result_perc"] = $lo_result["result_perc"];
                                 $tmp[$objective_id]["limit_perc"] = $lo_result["limit_perc"];
                                 $tmp[$objective_id]["status"] = $lo_result["status"];
                                 $tmp[$objective_id]["type"] = $lo_result["type"];
                             }
                         }
                         // order
                         foreach ($coll_objtv as $objtv_id) {
                             $references[$ref_id]["objectives"][] = $tmp[$objtv_id];
                         }
                     }
                 }
             }
         }
     }
     $references = ilUtil::sortArray($references, "title", "ASC");
     return $references;
 }
コード例 #9
0
 protected function getCoursesOfUser($a_user_id, $a_add_path = false)
 {
     global $tree;
     // see ilPDSelectedItemsBlockGUI
     include_once 'Modules/Course/classes/class.ilObjCourseAccess.php';
     include_once 'Services/Membership/classes/class.ilParticipants.php';
     $items = ilParticipants::_getMembershipByType($a_user_id, 'crs');
     $repo_title = $tree->getNodeData(ROOT_FOLDER_ID);
     $repo_title = $repo_title["title"];
     if ($repo_title == "ILIAS") {
         $repo_title = $this->lng->txt("repository");
     }
     $references = $lp_obj_refs = array();
     foreach ($items as $obj_id) {
         $ref_id = ilObject::_getAllReferences($obj_id);
         if (is_array($ref_id) && count($ref_id)) {
             $ref_id = array_pop($ref_id);
             if (!$tree->isDeleted($ref_id)) {
                 $visible = false;
                 $active = ilObjCourseAccess::_isActivated($obj_id, $visible, false);
                 if ($active && $visible) {
                     $references[$ref_id] = array('ref_id' => $ref_id, 'obj_id' => $obj_id, 'title' => ilObject::_lookupTitle($obj_id));
                     if ($a_add_path) {
                         $path = array();
                         foreach ($tree->getPathFull($ref_id) as $item) {
                             $path[] = $item["title"];
                         }
                         // top level comes first
                         if (sizeof($path) == 2) {
                             $path[0] = 0;
                         } else {
                             $path[0] = 1;
                         }
                         $references[$ref_id]["path_sort"] = implode("__", $path);
                         array_shift($path);
                         array_pop($path);
                         if (!sizeof($path)) {
                             array_unshift($path, $repo_title);
                         }
                         $references[$ref_id]["path"] = implode(" &rsaquo; ", $path);
                     }
                     $lp_obj_refs[$obj_id] = $ref_id;
                 }
             }
         }
     }
     // get lp data for valid courses
     if (sizeof($lp_obj_refs)) {
         // listing the objectives should NOT depend on any LP status / setting
         include_once 'Modules/Course/classes/class.ilObjCourse.php';
         foreach ($lp_obj_refs as $obj_id => $ref_id) {
             // only if set in DB (default mode is not relevant
             if (ilObjCourse::_lookupViewMode($obj_id) == IL_CRS_VIEW_OBJECTIVE) {
                 $references[$ref_id]["objectives"] = $this->parseObjectives($obj_id, $a_user_id);
             }
         }
         // LP must be active, personal and not anonymized
         include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
         if (ilObjUserTracking::_enabledLearningProgress() && ilObjUserTracking::_enabledUserRelatedData() && ilObjUserTracking::_hasLearningProgressLearner()) {
             // see ilLPProgressTableGUI
             include_once "Services/Tracking/classes/class.ilTrQuery.php";
             include_once "Services/Tracking/classes/class.ilLPStatusFactory.php";
             $lp_data = ilTrQuery::getObjectsStatusForUser($a_user_id, $lp_obj_refs);
             foreach ($lp_data as $item) {
                 $ref_id = $item["ref_ids"];
                 $references[$ref_id]["lp_status"] = $item["status"];
             }
         }
     }
     return $references;
 }
コード例 #10
0
 function __getNextClass()
 {
     global $ilAccess, $ilUser;
     // #9857
     if (!ilObjUserTracking::_enabledLearningProgress()) {
         return;
     }
     if (strlen($next_class = $this->ctrl->getNextClass())) {
         if ($this->getMode() == LP_MODE_PERSONAL_DESKTOP) {
             $_SESSION['il_lp_history'] = $next_class;
         }
         return $next_class;
     }
     switch ($this->getMode()) {
         case LP_MODE_ADMINISTRATION:
             return 'illplistofobjectsgui';
         case LP_MODE_REPOSITORY:
             if (!$this->anonymized and !$this->isObjectAnonymized() and $ilAccess->checkAccess('edit_learning_progress', '', $this->getRefId())) {
                 return 'illplistofobjectsgui';
             }
             return 'illplistofprogressgui';
         case LP_MODE_PERSONAL_DESKTOP:
             include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
             $has_edit = ilObjUserTracking::_hasLearningProgressOtherUsers();
             $has_personal = ilObjUserTracking::_hasLearningProgressLearner();
             if ($has_edit || $has_personal) {
                 // default
                 $tgt = null;
                 if ($has_edit) {
                     $tgt = 'illplistofobjectsgui';
                 } else {
                     if ($has_personal) {
                         $tgt = 'illplistofprogressgui';
                     }
                 }
                 // validate session
                 switch ($_SESSION['il_lp_history']) {
                     case 'illplistofobjectsgui':
                         if (!$has_edit) {
                             $_SESSION['il_lp_history'] = null;
                         }
                         break;
                     case 'illplistofprogressgui':
                         if (!$has_personal) {
                             $_SESSION['il_lp_history'] = null;
                         }
                         break;
                 }
                 if ($_SESSION['il_lp_history']) {
                     return $_SESSION['il_lp_history'];
                 } else {
                     if ($tgt) {
                         return $tgt;
                     }
                 }
             }
             // should not happen
             ilUtil::redirect("ilias.php?baseClass=ilPersonalDesktopGUI");
         case LP_MODE_USER_FOLDER:
             if (ilObjUserTracking::_enabledUserRelatedData()) {
                 return 'illplistofprogressgui';
             }
     }
 }