/**
  * Create Main Menu
  */
 protected function createMainMenu()
 {
     if (Session::isAdmin()) {
         $link0 = array('title' => 'Admin Dashboard', 'url' => 'admin/');
         $link1 = array('title' => 'Add New Articles', 'url' => 'admin/pages/addarticle.php');
         $link2 = array('title' => 'Article Manager', 'url' => 'admin/pages/articlemanager.php');
         $link3 = array('title' => 'User Manager', 'url' => 'admin/pages/usermanager.php');
         $link4 = array('title' => 'Add New Challenge', 'url' => 'admin/pages/addchallenge.php');
         $link5 = array('title' => 'Challenge Manager', 'url' => 'admin/pages/challengemanager.php');
         $link6 = array('title' => 'Logout', 'url' => 'pages/logout.php');
         $menu = array($link0, $link1, $link2, $link3, $link4, $link5, $link6);
     } elseif (Session::isTeacher()) {
         $link1 = array('title' => 'Admin Dashboard', 'url' => 'admin');
         $link2 = array('title' => 'Article Manager', 'url' => 'admin/pages/articlemanager.php');
         $link3 = array('title' => 'User Manager', 'url' => 'admin/pages/usermanager.php');
         $link4 = array('title' => 'Create Class', 'url' => 'admin/pages/manageclass.php');
         $link5 = array('title' => 'Add Challenge', 'url' => 'admin/pages/addchallenge.php');
         $link6 = array('title' => 'Monitor Students', 'url' => 'pages/progress.php');
         $link7 = array('title' => 'Logout', 'url' => 'pages/logout.php');
         $menu = array($link1, $link2, $link3, $link4, $link5, $link6, $link7);
     } else {
         $link1 = array('title' => 'Progress Report', 'url' => 'pages/progress.php');
         $link2 = array('title' => 'Ranking', 'url' => 'pages/ranking.php');
         $link3 = array('title' => 'Logout', 'url' => 'pages/logout.php');
         $menu = array($link1, $link2, $link3);
     }
     return $menu;
 }
 public function go()
 {
     $this->setViewTemplate("rankings.tpl");
     if ($this->isLoggedIn()) {
         $username = $this->getLoggedInUser();
         if (Session::isAdmin() || Session::isTeacher()) {
             $classes = Classes::getAllClasses();
         } else {
             $user = User::findByUserName($username);
             $classes = ClassMemberships::getMembershipsOfUserObjects($user->id);
         }
         $this->addToView('classes', $classes);
     }
     if (!isset($_GET["class"]) || $_GET["class"] == "") {
         $rankings = ChallengeAttempts::getUniversalRankings();
     } else {
         $class_id = $_GET["class"];
         $class = Classes::getClass($class_id);
         if (!$class) {
             $this->addErrorMessage("Not a valid class");
             return $this->generateView();
         } else {
             $rankings = ChallengeAttempts::getClasswiseRankings($class_id);
         }
     }
     $final = array();
     $counter = 1;
     $rank = 1;
     $rankcount = 1;
     $prevcount = null;
     foreach ($rankings as $ranking) {
         if ($counter != 1 && $prevcount == $ranking['count']) {
             $rank = $rankcount;
             $rankcount++;
         }
         if ($counter != 1 && $prevcount != $ranking['count']) {
             $rankcount++;
             $rank = $rankcount;
         }
         $prevcount = $ranking['count'];
         $counter++;
         $temp = array('user_id' => $ranking['user_id'], 'time' => $ranking['time'], 'count' => $ranking['count'], 'username' => $ranking['username'], 'rank' => $rank);
         array_push($final, $temp);
     }
     $this->addToView('rankings', $final);
     return $this->generateView();
 }
 public function go()
 {
     $username = $this->getLoggedInUser();
     $user = User::findByUserName($username);
     if (!$user) {
         return;
     }
     if (Session::isAdmin() || Session::isTeacher()) {
         $challenges = Challenge::getChallengesFrontend();
     } else {
         $challenges = Challenge::getChallengesAssigned($user->id);
     }
     $menu = array();
     foreach ($challenges as $challenge) {
         $link = array('id' => $challenge->id, 'title' => $challenge->title, 'url' => 'challenges/' . $challenge->pkg_name . '/index.php');
         array_push($menu, $link);
     }
     return $menu;
 }
 public function update($status)
 {
     if (!Session::isAdmin() && !Session::isTeacher()) {
         $username = Session::getLoggedInUser();
         $url = $_SERVER['REQUEST_URI'];
         $url_components = explode("/", $url);
         $count_url_components = count($url_components);
         for ($i = 0; $url_components[$i] != "challenges"; $i++) {
         }
         $pkg_name = $url_components[$i + 1];
         $user = User::findByUserName($username);
         $challenge = Challenge::getChallengeByPkgName($pkg_name);
         $user_id = $user->id;
         $challenge_id = $challenge[0]->id;
         if (!ChallengeAttempts::isChallengeCleared($user_id, $challenge_id)) {
             ChallengeAttempts::addChallengeAttempt($user_id, $challenge_id, $status);
         }
     }
 }
 /**
  * Returns whether or not a logged-in Hackademic user is a teacher
  *
  * @return bool whether or not logged-in user is an admin
  */
 protected function isTeacher()
 {
     return Session::isTeacher();
 }