コード例 #1
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;
 }