/** * This function Caches the local Usernames (and First/Last names) * from the designated Authentication source (eg. LDAP) */ public function syncusernamesAction() { $vGroups = array(); $vCounter = 0; //Get all the quizzes $vQuizzes = Model_Quiz_Quiz::getAll(); foreach ($vQuizzes as $vQuiz) { if (!in_array($vQuiz->getPermissions_group(), $vGroups)) { $vGroups[] = $vQuiz->getPermissions_group(); } } //So we have all groups now in the system foreach ($vGroups as $vGroup) { //Get the members of this group $vMembers = Model_Auth_ActiveDirectory::getUsersFromGroup($vGroup); if (is_array($vMembers) && sizeof($vMembers) > 0) { foreach ($vMembers as $vMember) { Model_Auth_ActiveDirectory::updateUser($vMember); $vCounter++; } } } $this->view->counter = $vCounter; }
/** * Shows Pass/Fail for a given class [Group] */ public function passfailAction() { $group = $this->_getParam("group"); $this->view->group = $group; // Pass ALL the groups to the view (to select) $all_groups = array(); $all_quizzes = Model_Quiz_Quiz::getAll(); foreach ($all_quizzes as $quiz) { $all_groups[] = $quiz->getPermissions_group(); } $all_groups = array_unique($all_groups); sort($all_groups); $this->view->all_groups = $all_groups; // If we've SELECTED a group... if (!is_null($group)) { $group = strtolower($group); // Group Members $members = Model_Auth_ActiveDirectory::getUsersFromGroup($group); $keyed_members = array(); foreach ($members as $member) { $username = $member; $member = Model_Auth_ActiveDirectory::getUserDetails($username); $member['username'] = strtolower($username); $keyed_members[$username] = $member; } // Find all Quizzes that are part of this group $all_quizzes = Model_Quiz_Quiz::getAll(); $valid_quizzes = array(); foreach ($all_quizzes as $quiz) { if (strtolower($quiz->getPermissions_group()) == $group) { $valid_quizzes[] = $quiz; } } // Now go and find all the results for each quiz $quiz_results = array(); // Key is the quiz ID foreach ($valid_quizzes as $quiz) { $set_result = array(); foreach ($keyed_members as $member) { //Did they pass? $highest_result = Model_Quiz_QuizAttempt::getHighestMarkQuiz($member['username'], $quiz); if (is_null($highest_result)) { $set_result[$member['username']] = "NA"; } else { if ($highest_result->getTotal_score() / $quiz->getTotalQuestions() * 100 >= $quiz->getPercentage_pass()) { $set_result[$member['username']] = "<span class='green'>P</span>"; } else { $set_result[$member['username']] = "<span class='red'>F</span>"; } } } $quiz_results[$quiz->getID()] = $set_result; } // Pass all info to the view $this->view->members = $keyed_members; $this->view->quizzes = $valid_quizzes; $this->view->quiz_results = $quiz_results; } }
/** * Shows the Hall of Fame for the Logged in User * * @return void * @author Ben Evans */ public function halloffameAction() { $this->view->title = "Hall of Fame"; $this->view->headTitle("Hall of Fame"); $identity = Zend_Auth::getInstance()->getIdentity(); $auth_model = Model_Auth_General::getAuthModel(); //Firstly, we have to get the quizzes that we have access to $vQuizzes = Model_Quiz_Quiz::getAll(true); $vAvailable = array(); /* Make sure you have permission */ foreach ($vQuizzes as $vQuiz) { if ($this->view->is_admin) { $vAvailable[] = $vQuiz; } else { if ($auth_model->userInGroup($identity->username, $vQuiz->getPermissions_group()) && $vQuiz->getOpen_date() <= strtotime("now")) { $vAvailable[] = $vQuiz; } } } /* Any Quizzes available? */ $quiz_rows = array(); if (sizeof($vAvailable) != 0) { foreach ($vAvailable as $vQuiz) { $quiz_row = array(); $quiz_row['name'] = $vQuiz->getName(); $vAttempts = $vQuiz->getQuizAttempts(); $vPassed = array(); if (sizeof($vAttempts) > 0) { foreach ($vAttempts as $vAttempt) { //Make sure we're only looking at people who've passed $vTotalScore = $vAttempt->getTotal_score(); //echo "Comparing " . $vTotalScore . "/". $vQuiz->getTotalQuestions() ." with " . $vQuiz->getPercentage_pass() . "% (".$vAttempt->getID().")<br/>"; if ($vTotalScore / $vQuiz->getTotalQuestions() * 100 >= $vQuiz->getPercentage_pass() && $vAttempt->getDate_finished() != null) { //echo "Added.<br/>"; $vPassed[] = $vAttempt; } } } //Did anyone pass? if (sizeof($vPassed) > 0) { //Sort results first usort($vPassed, "sort_by_score"); //Truncate the array if necessary if (sizeof($vPassed) > MAX_HALLOFFAME) { array_splice($vPassed, 0, MAX_HALLOFFAME); } // And now record the scores $quiz_row['scores'] = array(); //Now output the scores foreach ($vPassed as $vp) { $score_row = array("name" => $vp->getAd_user_cachesamaccountname(), "score" => $vp->getTotal_score(), "time" => $vp->getDate_finished() - $vp->getDate_started()); $quiz_row['scores'][] = $score_row; } } $quiz_rows[] = $quiz_row; } //End_foreach_quiz } $this->view->quiz_rows = $quiz_rows; }