function userDataArrayForExport($user, $b_allowExportPrivacy = false) { $userArray = array(); if ($b_allowExportPrivacy == false) { $userArray["user"] = $user; } else { global $ilUser; $userArray["login"] = ""; $userArray["user"] = ""; $userArray["email"] = ""; $userArray["department"] = ""; if (ilObject::_exists($user) && ilObject::_lookUpType($user) == 'usr') { $e_user = new ilObjUser($user); $userArray["login"] = $e_user->getLogin(); $userArray["user"] = $e_user->getLastname() . ', ' . $e_user->getFirstname(); $userArray["email"] = "" . $e_user->getEmail(); $userArray["department"] = "" . $e_user->getDepartment(); } } return $userArray; }
public function parse($userSelected, $report, $reports) { global $ilCtrl, $lng; $lng->loadLanguageModule("scormtrac"); $this->form = new ilPropertyFormGUI(); $this->form->setFormAction($ilCtrl->getFormAction($this->parent_obj)); $options = array("all" => $lng->txt("all")); include_once "Services/Tracking/classes/class.ilTrQuery.php"; $users = ilTrQuery::getParticipantsForObject($this->parent_obj->object->ref_id); include_once './Services/PrivacySecurity/classes/class.ilPrivacySettings.php'; $privacy = ilPrivacySettings::_getInstance(); $allowExportPrivacy = $privacy->enabledExportSCORM(); //$users = $this->parent_obj->object->getTrackedUsers(""); foreach ($users as $user) { if (ilObject::_exists($user) && ilObject::_lookUpType($user) == 'usr') { if ($allowExportPrivacy == true) { $e_user = new ilObjUser($user); $options[$user] = $e_user->getLastname() . ", " . $e_user->getFirstname(); } else { $options[$user] = 'User Id: ' . $user; } } } $si = new ilSelectInputGUI($lng->txt("user"), "userSelected"); $si->setOptions($options); $si->setValue($userSelected); $this->form->addItem($si); $options = array("choose" => $lng->txt("please_choose")); for ($i = 0; $i < count($reports); $i++) { $options[$reports[$i]] = $lng->txt(strtolower($reports[$i])); } $si = new ilSelectInputGUI($lng->txt("report"), "report"); $si->setOptions($options); $si->setValue($report); $this->form->addItem($si); $this->form->addCommandButton($this->parent_cmd, $lng->txt("apply_filter")); }
/** * display deletion confirmation screen */ function deleteTrackingForUser() { if (!isset($_POST["user"])) { $this->ilias->raiseError($this->lng->txt("no_checkbox"), $this->ilias->error_obj->MESSAGE); } // display confirmation message include_once "./Services/Utilities/classes/class.ilConfirmationGUI.php"; $cgui = new ilConfirmationGUI(); $cgui->setFormAction($this->ctrl->getFormAction($this)); $cgui->setHeaderText($this->lng->txt("info_delete_sure")); $cgui->setCancel($this->lng->txt("cancel"), "cancelDeleteTracking"); $cgui->setConfirm($this->lng->txt("confirm"), "confirmedDeleteTracking"); foreach ($_POST["user"] as $id) { if (ilObject::_exists($id) && ilObject::_lookUpType($id) == "usr") { $user = new ilObjUser($id); $caption = ilUtil::getImageTagByType("sahs", $this->tpl->tplPath) . " " . $this->lng->txt("cont_tracking_data") . ": " . $user->getLastname() . ", " . $user->getFirstname(); $cgui->addItem("user[]", $id, $caption); } } $this->tpl->setContent($cgui->getHTML()); }
function exportSelected($a_exportall = 0, $a_user = array()) { global $ilDB, $ilUser; $scos = array(); //get all SCO's of this object $query = 'SELECT cp_node.cp_node_id ' . 'FROM cp_node, cp_resource, cp_item ' . 'WHERE cp_item.cp_node_id = cp_node.cp_node_id ' . 'AND cp_item.resourceid = cp_resource.id AND scormtype = %s ' . 'AND nodename = %s AND cp_node.slm_id = %s'; $res = $ilDB->queryF($query, array('text', 'text', 'integer'), array('sco', 'item', $this->getId())); while ($row = $ilDB->fetchAssoc($res)) { $scos[] = $row['cp_node_id']; } $csv = null; //a module is completed when all SCO's are completed $user_array = array(); if ($a_exportall == 1) { $query = 'SELECT user_id ' . 'FROM cmi_node, cp_node ' . 'WHERE cmi_node.cp_node_id = cp_node.cp_node_id AND cp_node.slm_id = %s ' . 'GROUP BY user_id'; $res = $ilDB->queryF($query, array('integer'), array($this->getId())); while ($row = $ilDB->fetchAssoc($res)) { $user_array[] = $row['user_id']; } } else { $user_array = $a_user; } foreach ($user_array as $user) { $scos_c = $scos; //copy SCO_array //check if all SCO's are completed for ($i = 0; $i < count($scos); $i++) { $query = 'SELECT * FROM cmi_node ' . 'WHERE user_id = %s AND cp_node_id = %s ' . 'AND completion_status = %s OR success_status = %s'; $res = $ilDB->queryF($query, array('integer', 'integer', 'text', 'text'), array($user, $scos[$i], 'completed', 'passed')); $data = $ilDB->fetchAssoc($res); if (is_array($data) && count($data)) { //delete from array $key = array_search($scos[$i], $scos_c); unset($scos_c[$key]); } } //check for completion if (count($scos_c) == 0) { $completion = 1; } else { $completion = 0; } //write export entry if (ilObject::_exists($user) && ilObject::_lookUpType($user) == 'usr') { $e_user = new ilObjUser($user); $login = $e_user->getLogin(); $firstname = $e_user->getFirstname(); $lastname = $e_user->getLastname(); $email = $e_user->getEmail(); $department = $e_user->getDepartment(); $query = 'SELECT user_id, MAX(c_timestamp) exp_date ' . 'FROM cmi_node, cp_node ' . 'WHERE cmi_node.cp_node_id = cp_node.cp_node_id ' . 'AND cp_node.slm_id = %s ' . 'GROUP BY user_id'; $res = $ilDB->queryF($query, array('integer'), array($this->getId())); $data = $ilDB->fetchAssoc($res); if (is_array($data) && count($data)) { $validDate = false; $datetime = explode(' ', $data['exp_date']); if (count($datetime) == 2) { $date = explode('-', $datetime[0]); if (count($date) == 3 && checkdate($date[1], $date[2], $date[0])) { $validDate = true; } } if ($validDate) { $date = date('d.m.Y', strtotime($data['exp_date'])); } else { $date = ''; } } else { $date = ''; } $csv = $csv . "{$department};{$login};{$lastname};{$firstname};{$email};{$date};{$completion}\n"; } } $header = "Department;Login;Lastname;Firstname;Email;Date;Status\n"; $this->sendExportFile($header, $csv); }
/** * Stop offline mode for selected users */ protected function stopUserOfflineMode() { if (!count((array) $_POST['user'])) { ilUtil::sendFailure($this->lng->txt('select_one'), true); $this->ctrl->redirect($this, 'offlineModeManager'); } // display confirmation message include_once "./Services/Utilities/classes/class.ilConfirmationGUI.php"; $cgui = new ilConfirmationGUI(); $cgui->setFormAction($this->ctrl->getFormAction($this)); $cgui->setHeaderText($this->lng->txt("info_stop_offline_mode_sure")); $cgui->setCancel($this->lng->txt("cancel"), "cancelStopUserOfflineMode"); $cgui->setConfirm($this->lng->txt("confirm"), "confirmedStopUserOfflineMode"); foreach ($_POST["user"] as $id) { if (ilObject::_exists($id) && ilObject::_lookUpType($id) == "usr") { $user = new ilObjUser($id); $caption = ilUtil::getImageTagByType("sahs_offline", $this->tpl->tplPath) . " " . $this->lng->txt("stop_user_offline_mode_for_user") . ": " . $user->getLastname() . ", " . $user->getFirstname(); $cgui->addItem("user[]", $id, $caption); } } $this->tpl->setContent($cgui->getHTML()); }
function showTrackingItems() { global $ilTabs; ilObjSCORMLearningModuleGUI::setSubTabs(); $ilTabs->setTabActive('cont_tracking_data'); $ilTabs->setSubTabActive('cont_tracking_byuser'); $reports = array('exportSelectedSuccess', 'exportSelectedCore', 'exportSelectedInteractions', 'exportSelectedObjectives', 'exportObjGlobalToSystem'); $userSelected = "all"; if (isset($_GET["userSelected"])) { $userSelected = ilUtil::stripSlashes($_GET["userSelected"]); } if (isset($_POST["userSelected"])) { $userSelected = ilUtil::stripSlashes($_POST["userSelected"]); } $this->ctrl->setParameter($this, 'userSelected', $userSelected); $report = "choose"; if (isset($_GET["report"])) { $report = ilUtil::stripSlashes($_GET["report"]); } if (isset($_POST["report"])) { $report = ilUtil::stripSlashes($_POST["report"]); } $this->ctrl->setParameter($this, 'report', $report); include_once './Modules/Scorm2004/classes/class.ilSCORM2004TrackingItemsPerUserFilterGUI.php'; $filter = new ilSCORM2004TrackingItemsPerUserFilterGUI($this, 'showTrackingItems'); $filter->parse($userSelected, $report, $reports); if ($report == "choose") { $this->tpl->setContent($filter->form->getHTML()); } else { $usersSelected = array(); if ($userSelected != "all") { $usersSelected[] = $userSelected; } else { include_once "Services/Tracking/classes/class.ilTrQuery.php"; $users = ilTrQuery::getParticipantsForObject($this->ref_id); foreach ($users as $user) { if (ilObject::_exists($user) && ilObject::_lookUpType($user) == 'usr') { $usersSelected[] = $user; } } } $scosSelected = array(); $tmpscos = $this->object->getTrackedItems(); for ($i = 0; $i < count($tmpscos); $i++) { $scosSelected[] = $tmpscos[$i]["id"]; } //with check for course ... // include_once "Services/Tracking/classes/class.ilTrQuery.php"; // $a_users=ilTrQuery::getParticipantsForObject($this->ref_id); // var_dump($this->object->getTrackedUsers("")); include_once './Modules/Scorm2004/classes/class.ilSCORM2004TrackingItemsTableGUI.php'; $tbl = new ilSCORM2004TrackingItemsTableGUI($this->object->getId(), $this, 'showTrackingItems', $usersSelected, $scosSelected, $report); $this->tpl->setContent($filter->form->getHTML() . $tbl->getHTML()); } return true; }