function gatherCourseLPData()
 {
     global $tree, $ilDB;
     // process all courses
     $all_courses = array_keys(ilObject::_getObjectsByType("crs"));
     if ($all_courses) {
         // gather objects in trash
         $trashed_objects = $tree->getSavedNodeObjIds($all_courses);
         include_once 'Services/Tracking/classes/class.ilLPObjSettings.php';
         include_once "Modules/Course/classes/class.ilCourseParticipants.php";
         include_once "Services/Tracking/classes/class.ilLPStatusWrapper.php";
         foreach ($all_courses as $crs_id) {
             // trashed objects will not change
             if (!in_array($crs_id, $trashed_objects)) {
                 // only if LP is active
                 $mode = ilLPObjSettings::_lookupMode($crs_id);
                 if ($mode == LP_MODE_DEACTIVATED || $mode == LP_MODE_UNDEFINED) {
                     continue;
                 }
                 // only save once per day
                 $ilDB->manipulate("DELETE FROM obj_lp_stat WHERE" . " obj_id = " . $ilDB->quote($crs_id, "integer") . " AND fulldate = " . $ilDB->quote(date("Ymd", $this->date), "integer"));
                 $members = new ilCourseParticipants($crs_id);
                 $members = $members->getMembers();
                 $in_progress = count(ilLPStatusWrapper::_lookupInProgressForObject($crs_id, $members));
                 $completed = count(ilLPStatusWrapper::_lookupCompletedForObject($crs_id, $members));
                 $failed = count(ilLPStatusWrapper::_lookupFailedForObject($crs_id, $members));
                 // calculate with other values - there is not direct method
                 $not_attempted = count($members) - $in_progress - $completed - $failed;
                 $set = array("type" => array("text", "crs"), "obj_id" => array("integer", $crs_id), "yyyy" => array("integer", date("Y", $this->date)), "mm" => array("integer", date("m", $this->date)), "dd" => array("integer", date("d", $this->date)), "fulldate" => array("integer", date("Ymd", $this->date)), "mem_cnt" => array("integer", count($members)), "in_progress" => array("integer", $in_progress), "completed" => array("integer", $completed), "failed" => array("integer", $failed), "not_attempted" => array("integer", $not_attempted));
                 $ilDB->insert("obj_lp_stat", $set);
             }
         }
     }
 }
 /**
  * Refresh all installed languages
  */
 static function refreshAll()
 {
     global $ilPluginAdmin;
     $languages = ilObject::_getObjectsByType("lng");
     foreach ($languages as $lang) {
         $langObj = new ilObjLanguage($lang["obj_id"], false);
         if ($langObj->isInstalled() == true) {
             if ($langObj->check()) {
                 $langObj->flush('keep_local');
                 $langObj->insert();
                 $langObj->setTitle($langObj->getKey());
                 $langObj->setDescription($langObj->getStatus());
                 $langObj->update();
                 $langObj->optimizeData();
                 if ($langObj->isLocal() == true) {
                     if ($langObj->check('local')) {
                         $langObj->insert('local');
                         $langObj->setTitle($langObj->getKey());
                         $langObj->setDescription($langObj->getStatus());
                         $langObj->update();
                         $langObj->optimizeData();
                     }
                 }
             }
         }
         unset($langObj);
     }
     // refresh languages of activated plugins
     include_once "./Services/Component/classes/class.ilPluginSlot.php";
     $slots = ilPluginSlot::getAllSlots();
     foreach ($slots as $slot) {
         $act_plugins = $ilPluginAdmin->getActivePluginsForSlot($slot["component_type"], $slot["component_name"], $slot["slot_id"]);
         foreach ($act_plugins as $plugin) {
             include_once "./Services/Component/classes/class.ilPlugin.php";
             $pl = ilPlugin::getPluginObject($slot["component_type"], $slot["component_name"], $slot["slot_id"], $plugin);
             if (is_object($pl)) {
                 $pl->updateLanguages();
             }
         }
     }
 }
 /**
  * 
  */
 public function initFilter()
 {
     /**
      * @var $tpl ilTemplate
      */
     global $tpl;
     include_once 'Services/Form/classes/class.ilTextInputGUI.php';
     $ul = new ilTextInputGUI($this->lng->txt('login') . '/' . $this->lng->txt('email') . '/' . $this->lng->txt('name'), 'query');
     $ul->setDataSource($this->ctrl->getLinkTarget($this->getParentObject(), 'addUserAutoComplete', '', true));
     $ul->setSize(20);
     $ul->setSubmitFormOnEnter(true);
     $this->addFilterItem($ul);
     $ul->readFromSession();
     $this->filter['query'] = $ul->getValue();
     include_once 'Services/Form/classes/class.ilSelectInputGUI.php';
     $options = array();
     $languages = ilObject::_getObjectsByType('lng');
     foreach ($languages as $lng) {
         $options[$lng['title']] = $this->lng->txt('meta_l_' . $lng['title']);
     }
     asort($options);
     $options = array('' => $this->lng->txt('any_language')) + $options;
     $si = new ilSelectInputGUI($this->lng->txt('language'), 'lng');
     $si->setOptions($options);
     $this->addFilterItem($si);
     $si->readFromSession();
     $this->filter['lng'] = $si->getValue();
     include_once 'Services/Form/classes/class.ilDateDurationInputGUI.php';
     $tpl->addJavaScript('./Services/Form/js/date_duration.js');
     $duration = new ilDateDurationInputGUI($this->lng->txt('tos_period'), 'period');
     $duration->setStartText($this->lng->txt('tos_period_from'));
     $duration->setEndText($this->lng->txt('tos_period_until'));
     $duration->setStart(new ilDateTime(strtotime('-1 year', time()), IL_CAL_UNIX));
     $duration->setEnd(new ilDateTime(time(), IL_CAL_UNIX));
     $duration->setShowTime(true);
     $this->addFilterItem($duration, true);
     $duration->readFromSession();
     $this->optional_filter['period'] = $duration->getValue();
 }
 static final function _getObjectsByType($a_obj_type = "", $a_owner = "")
 {
     return parent::_getObjectsByType($a_obj_type, $a_owner);
 }
 /**
  * gather all information about available languages
  *
  * This function builds an array with the following structure:
  * $languages[lang_key][long][installed][update][info]
  *
  * lang_key:		string		international language key (2 digits, i.e. de,en,dk...)
  * long:			string		full language name in the chosen user language
  * installed:	boolean		is the language installed (true) or not (false)?
  * update:		int			contains the timestamp of last db-modification
  * info:			string		optional information. valid is: 'notfound','new'
  *
  * @return	array	$languages	status information about available languages
  */
 function getLanguages()
 {
     global $lng;
     $lng->loadLanguageModule("meta");
     // set path to directory where lang-files reside
     $d = dir($this->lang_path);
     $tmpPath = getcwd();
     chdir($this->lang_path);
     // get available lang-files
     while ($entry = $d->read()) {
         if (is_file($entry) && ereg("(^ilias_.{2}\\.lang\$)", $entry)) {
             $lang_key = substr($entry, 6, 2);
             $languages[$lang_key] = "";
             // long names will be set in class Out
         }
     }
     // ensure that arrays are initiated when no lang file was found
     if (!array($languages)) {
         $language = array();
         $tmp_array = array();
     }
     $tmp_array = array_keys($languages);
     $lang_keys = array();
     // now get languages from database
     if ($lang_db = ilObject::_getObjectsByType("lng")) {
         foreach ($lang_db as $lang) {
             // set values
             $lang_key = $lang["title"];
             $languages[$lang_key] = $lang;
             $lang_keys[] = $lang_key;
             // determine default language and language of current user
             if ($lang_key == $this->lang_user) {
                 $languages[$lang_key]["status"] = "in_use";
             }
             if ($lang_key == $this->lang_default) {
                 $languages[$lang_key]["status"] = "system_language";
             }
             // check if files are missing
             if (count($tmp_array) > 0 && !in_array($lang_key, $tmp_array)) {
                 $languages[$lang_key]["info"] = "file_not_found";
             }
         }
     }
     // compute new languages
     foreach ($languages as $lang_key => $lang_data) {
         if (!in_array($lang_key, $lang_keys)) {
             $languages[$lang_key]["info"] = "new_language";
             //$languages[$lang_key]["desc"] = "not_installed";
         }
     }
     chdir($tmpPath);
     // Insert languages with files new found into table language
     $languages = $this->addNewLanguages($languages);
     // Remove from array & db languages which are not installed and no lang-files
     $languages = $this->removeLanguages($languages);
     // setting language's full names
     foreach ($languages as $lang_key => $lang_data) {
         $languages[$lang_key]["name"] = $lng->txt("meta_l_" . $lang_key);
     }
     $this->languages = $languages;
     return $this->languages;
 }
 function getInstalledLanguages()
 {
     include_once "./Services/Object/classes/class.ilObject.php";
     $langlist = ilObject::_getObjectsByType("lng");
     foreach ($langlist as $lang) {
         if (substr($lang["desc"], 0, 9) == "installed") {
             $languages[] = $lang["title"];
         }
     }
     return $languages ? $languages : array();
 }
 public static function getAvailablePortfolioTemplates($a_permission = "read")
 {
     global $ilUser, $ilAccess;
     $res = array();
     foreach (ilObject::_getObjectsByType("prtt") as $obj) {
         $has_permission = false;
         if ($obj["owner"] == $ilUser->getId() && false) {
             $has_permission = true;
         } else {
             foreach (ilObject::_getAllReferences($obj["obj_id"]) as $ref_id) {
                 if ($ilAccess->checkAccess($a_permission, "", $ref_id)) {
                     $has_permission = true;
                     break;
                 }
             }
         }
         if ($has_permission) {
             $res[$obj["obj_id"]] = $obj["title"];
         }
     }
     asort($res);
     return $res;
 }
 static function _hasLearningProgressOtherUsers()
 {
     global $rbacsystem;
     $obj_id = array_pop(array_keys(ilObject::_getObjectsByType("trac")));
     $ref_id = array_pop(ilObject::_getAllReferences($obj_id));
     return $rbacsystem->checkAccess("lp_other_users", $ref_id);
 }
 public function testSetGetLookup()
 {
     global $ilUser;
     $obj = new ilObject();
     $obj->setType("");
     // otherwise type check will fail
     $obj->setTitle("TestObject");
     $obj->setDescription("TestDescription");
     $obj->setImportId("imp_44");
     $obj->create();
     $obj->createReference();
     $id = $obj->getId();
     $ref_id = $obj->getRefId();
     $obj = new ilObject($id, false);
     if ($obj->getType() == "") {
         $value .= "sg1-";
     }
     if ($obj->getTitle() == "TestObject") {
         $value .= "sg2-";
     }
     if ($obj->getDescription() == "TestDescription") {
         $value .= "sg3-";
     }
     if ($obj->getImportId() == "imp_44") {
         $value .= "sg4-";
     }
     if ($obj->getOwner() == $ilUser->getId()) {
         $value .= "sg5-";
     }
     $obj = new ilObject($ref_id);
     if ($obj->getTitle() == "TestObject") {
         $value .= "sg6-";
     }
     if ($obj->getCreateDate() == ($lu = $obj->getLastUpdateDate())) {
         $value .= "sg7-";
     }
     $obj->setTitle("TestObject2");
     sleep(2);
     // we want a different date here...
     $obj->update();
     $obj = new ilObject($ref_id);
     if ($lu != ($lu2 = $obj->getLastUpdateDate())) {
         $value .= "up1-";
     }
     if ($obj->getTitle() == "TestObject2") {
         $value .= "up2-";
     }
     if ($id == ilObject::_lookupObjIdByImportId("imp_44")) {
         $value .= "lu1-";
     }
     if ($ilUser->getFullname() == ilObject::_lookupOwnerName(ilObject::_lookupOwner($id))) {
         $value .= "lu2-";
     }
     if (ilObject::_lookupTitle($id) == "TestObject2") {
         $value .= "lu3-";
     }
     if (ilObject::_lookupDescription($id) == "TestDescription") {
         $value .= "lu4-";
     }
     if (ilObject::_lookupLastUpdate($id) == $lu2) {
         $value .= "lu5-";
     }
     if (ilObject::_lookupObjId($ref_id) == $id) {
         $value .= "lu6-";
     }
     if (ilObject::_lookupType($id) == "") {
         $value .= "lu7-";
     }
     if (ilObject::_lookupObjectId($ref_id) == $id) {
         $value .= "lu8-";
     }
     $ar = ilObject::_getAllReferences($id);
     if (is_array($ar) && count($ar) == 1 && $ar[$ref_id] == $ref_id) {
         $value .= "lu9-";
     }
     $ids = ilObject::_getIdsForTitle("TestObject2");
     foreach ($ids as $i) {
         if ($i == $id) {
             $value .= "lu10-";
         }
     }
     $obs = ilObject::_getObjectsByType("usr");
     foreach ($obs as $ob) {
         if ($ob["obj_id"] == $ilUser->getId()) {
             $value .= "lu11-";
         }
     }
     $d1 = ilObject::_lookupDeletedDate($ref_id);
     ilObject::_setDeletedDate($ref_id);
     $d2 = ilObject::_lookupDeletedDate($ref_id);
     ilObject::_resetDeletedDate($ref_id);
     $d3 = ilObject::_lookupDeletedDate($ref_id);
     if ($d1 != $d2 && $d1 == $d3 && $d3 == null) {
         $value .= "dd1-";
     }
     $obj->delete();
     $this->assertEquals("sg1-sg2-sg3-sg4-sg5-sg6-sg7-up1-up2-" . "lu1-lu2-lu3-lu4-lu5-lu6-lu7-lu8-lu9-lu10-lu11-dd1-", $value);
 }