public function session($name, $normalize = null, $default = null)
 {
     if ($this->hasSession($name)) {
         if ($normalize != null) {
             return Normalizer::normalize($this->session[$name], $normalize);
         }
         return $this->session[$name];
     }
     return $default;
 }
 /**
  * @Get
  * @Route("lecture/{id:int}/show")
  */
 public function lecture() : LectureViewModel
 {
     $id = $this->input->get(1);
     $this->db->prepare("SELECT\r\n                            c.id as id, c.name as name, c.description as description, c.start_time as startTime, c.end_time as endTime, u.username as speaker, h.name as hall, conf.name as conference\r\n                            FROM lecture c\r\n                            JOIN users u\r\n                            ON u.id = c.speaker_id\r\n                            JOIN conference conf\r\n                            ON conf.id = c.conference_id\r\n                            JOIN hall h\r\n                            ON h.id = c.hall_id\r\n                            WHERE c.id = ?", array($id));
     $response = $this->db->execute()->fetchRowAssoc();
     if (!$response) {
         throw new \Exception("No lecture with id '{$id}'!", 404);
     }
     $lecture = new LectureViewModel(Normalizer::normalize($response['id'], 'noescape|int'), $response['name'], $response['description'], $response['startTime'], $response['endTime'], $response['speaker'], $response['conference'], $response['hall']);
     $lectures[] = $lecture;
     $this->view->appendToLayout('header', 'header');
     $this->view->appendToLayout('meta', 'meta');
     $this->view->appendToLayout('body', $lecture);
     $this->view->appendToLayout('footer', 'footer');
     $this->view->displayLayout('Layouts.lecture');
     return $lecture;
 }
 public static function isAdmin() : bool
 {
     $statement = self::$database->prepare("SELECT u.id\n                                                FROM user_roles ur\n                                                JOIN users u\n                                                ON u.id = ur.user_id\n                                                WHERE (u.username = ? AND u.id = ?) AND ur.role_id = 2");
     $statement->bindParam(1, App::getInstance()->getSession()->_username);
     $statement->bindParam(2, App::getInstance()->getSession()->_login);
     $statement->execute();
     $response = $statement->fetch(\PDO::FETCH_ASSOC);
     if ($response) {
         $id = Normalizer::normalize($response['isAdmin'], 'bool');
         return true;
     }
     return false;
 }
 /**
  * @Route("users/all/{start:int}/{end:int}")
  * @Get
  */
 public function allUsers() : AllUsersViewModel
 {
     $skip = $this->input->get(2);
     $take = $this->input->get(3) - $skip;
     $this->db->prepare("SELECT\n                            username, email\n                            FROM users\n                            ORDER BY username\n                            LIMIT {$take}\n                            OFFSET {$skip}");
     $response = $this->db->execute()->fetchAllAssoc();
     $users = array();
     foreach ($response as $u) {
         $users[] = new User($u['username'], Normalizer::normalize($u['email'], 'noescape|bool'));
     }
     $allUsersViewModel = new AllUsersViewModel($users, $skip, $take + $skip);
     $this->view->appendToLayout('header', 'header');
     $this->view->appendToLayout('meta', 'meta');
     $this->view->appendToLayout('body', $allUsersViewModel);
     $this->view->appendToLayout('footer', 'footer');
     $this->view->displayLayout('Layouts.home');
     return $allUsersViewModel;
 }
 /**
  * @Post
  * @param AddAdminBindingModel $model
  * @Route("conference/addAdmin/{id:int}")
  */
 public function addAdmin(AddAdminBindingModel $model)
 {
     $confId = $this->input->get(2);
     $username = $model->getName();
     $this->db->prepare("SELECT u.id as id\r\n                            FROM users u\r\n                            WHERE u.username = ?", array($username));
     $response = $this->db->execute()->fetchRowAssoc();
     $userId = Normalizer::normalize($response['id'], 'noescape|int');
     $this->db->prepare("INSERT INTO conference_admins (conference_id, admin_id)\r\n                            VALUES (?, ?)", array($confId, $userId));
     $this->db->execute();
     $this->redirect("/conference/manageAdmins/{$confId}");
 }