public function execute($action)
 {
     $msgs = Localization::getInstance();
     $forwards = $action->getForwards();
     // Recebe os valores enviados
     $roomCourse = $_POST["group"];
     $roomManager = $_POST['manager'];
     $userName = utf8_decode($_POST["name"]);
     $userEmail = $_POST["email"];
     $userPasswordPlataform = "mude";
     if (!empty($roomCourse) && !empty($roomManager) && !empty($userName) && !empty($userEmail)) {
         /**
          * Routine that checks which the browser used
          * If an error occurs during the login, the system should return to the previous page
          * If the browser used is Firefox, the system must go back two pages
          * If is Chrome should back 1 page
          * TODO Test with Internet Explorer
          */
         $useragent = $_SERVER['HTTP_USER_AGENT'];
         if (preg_match('|Firefox/([0-9\\.]+)|', $useragent, $matched)) {
             $browser_version = $matched[1];
             $browser = 'Firefox';
             $numReturnPages = 2;
         } else {
             $numReturnPages = 1;
         }
         /**
          * Via rest, it checks if this tool (in this case the Whiteboard)
          * have permission to use information from the Core
          */
         $host = $_SERVER["HTTP_HOST"] . $_SERVER["SCRIPT_NAME"];
         $pass = md5(date("d/m/Y") . $host);
         $server = "http://code.inf.poa.ifrs.edu.br/core/index.php/rest";
         $action = str_replace("%40", "@", $userEmail);
         $rest = new RESTClient();
         $rest->initialize(array('server' => $server, 'http_user' => $host, 'http_pass' => $pass));
         $granted = $rest->get($action);
         if ($granted == 1) {
             // Caso o usuário esteja cadastrado na Plataform
             // CHECKING USER IN WHITEBOARD
             $user = $this->dao->login($userEmail, $userPasswordPlataform);
             if (count($user) <= 0) {
                 // Not in database, create new user
                 if (!empty($userEmail) && !empty($userName)) {
                     // Instantiates a new user;
                     $user = new User();
                     $user->setName($userName);
                     $user->setEmail($userEmail);
                     $user->setPassword($userPasswordPlataform);
                     $user->setRoomcreator(0);
                     $resultUser = $this->dao->saveNewUser($user);
                     $user = $this->dao->login($userEmail, $userPasswordPlataform);
                 }
             }
             if ($user->getName() != $userName) {
                 // Upadate user;
                 $resultUser = $this->dao->updateUserName($user->getUserId(), $userName);
             }
             // User contained in the database, loggin
             $_SESSION['id'] = $user->getUserId();
             $_SESSION['name'] = $user->getName();
             $_SESSION['roomCreator'] = $user->getRoomcreator();
             $_SESSION['email'] = $user->getEmail();
             $_SESSION['user'] = $user;
             // Verifies and creates, if necessary, the room of course
             $roomPlataform = $this->dao->getRoomByCourse($roomCourse);
             if (count($roomPlataform) <= 0) {
                 $roomName = "Turma: " . $roomCourse;
                 if ($user->getEmail() == $roomManager) {
                     $managerId = $user->getUserId();
                 } else {
                     $manager = $this->dao->login($roomManager, $userPasswordPlataform);
                     if (count($manager) <= 0) {
                         // Not in database, create new user coordinator
                         $manager = new User();
                         $manager->setName("Professor " . $roomCourse);
                         $manager->setEmail($roomManager);
                         $manager->setPassword($userPasswordPlataform);
                         $manager->setRoomcreator(1);
                         $resultManager = $this->dao->saveNewUser($manager);
                         $manager = $this->dao->login($manager->getEmail(), $userPasswordPlataform);
                     }
                     $managerId = $manager->getUserId();
                 }
                 // Instantiates a new room;
                 $roomPlataform = new Room();
                 $roomPlataform->setName($roomName);
                 $roomPlataform->setUserId($managerId);
                 $roomPlataform->setActive(0);
                 $roomPlataform->setActiveProduction(0);
                 $roomPlataform->setCourse($roomCourse);
                 $resultRoom = $this->dao->saveNewRoom($roomPlataform);
                 $roomPlataform = $this->dao->getRoomByCourse($roomCourse);
                 // Set manager permission of room
                 $permission = new Permission();
                 $permission->setUserId($managerId);
                 $permission->setRoomId($roomPlataform->getRoomId());
                 $resultPermission = $this->dao->savePermission($permission);
             }
             // Checks permissions
             $permissions = $this->dao->listPermissions($roomPlataform->getRoomId());
             $havePermission = false;
             foreach ($permissions as $permission) {
                 if ($permission->getUserId() == $user->getUserId()) {
                     $havePermission = true;
                 }
             }
             if (!$havePermission) {
                 $permission = new Permission();
                 $permission->setUserId($user->getUserId());
                 $permission->setRoomId($roomPlataform->getRoomId());
                 $resultPermission = $this->dao->savePermission($permission);
             }
             $roomPlataform = $this->dao->getRoomByCourse($roomCourse);
             $_SESSION['plataform'] = true;
             unset($_POST["group"]);
             unset($_POST['manager']);
             unset($_POST["name"]);
             unset($_POST["email"]);
             // If the room is active, will be given a join
             if ($roomPlataform->getActive() == 1) {
                 $_SESSION["idRoom"] = $roomPlataform->getRoomId();
                 $room = $this->dao->getRoom($roomPlataform->getRoomId());
                 // put the production in the session
                 $idProduction = $room->getActiveProduction();
                 $_SESSION['idProduction'] = $idProduction;
                 $history = new History();
                 $history->setUserId($_SESSION["id"]);
                 $history->setProductionId($idProduction);
                 $history->setDate(date('Y-m-d'));
                 $resultHistory = $this->dao->saveHistory($history);
                 // Retrieving the users in the room
                 $_REQUEST["users"] = $this->dao->getRoomUsers($_SESSION['idProduction']);
                 // Showing the page
                 $this->pageController->run($forwards['success']);
             } else {
                 if ($user->getUserId() == $roomPlataform->getUserId()) {
                     // If it is not active and the user is the owner of the room, will be given a start in the room
                     $production = new Production();
                     $production->setCreationDate(date('Y-m-d'));
                     $production->setUpdateDate(date('Y-m-d'));
                     $production->setRoomId($roomPlataform->getRoomId());
                     $resultProduction = $this->dao->createProduction($production);
                     if ($resultProduction) {
                         $_SESSION['idProduction'] = $production->getProductionId();
                     }
                     $resultUpdateRoom = $this->dao->updateRoomState($roomPlataform->getRoomId(), true, $_SESSION['idProduction']);
                     if ($resultUpdateRoom) {
                         $_SESSION["idRoom"] = $roomPlataform->getRoomId();
                     }
                     $resultRoom = $this->dao->getRoom($roomPlataform->getRoomId());
                     if ($resultRoom) {
                         $_SESSION["currentRoomManager"] = $resultRoom->getUserId();
                     }
                     $history = new History();
                     $history->setUserId($_SESSION["id"]);
                     $history->setProductionId($_SESSION['idProduction']);
                     $history->setDate(date('Y-m-d'));
                     $resultHistory = $this->dao->saveHistory($history);
                     // Retrieving the users in the room
                     $_REQUEST["users"] = $this->dao->getRoomUsers($_SESSION['idProduction']);
                     $this->pageController->run($forwards['success']);
                 } else {
                     // Otherwise, the room is closed and the user must wait until she opens
                     unset($_SESSION['id']);
                     unset($_SESSION['name']);
                     unset($_SESSION['roomCreator']);
                     unset($_SESSION['email']);
                     unset($_SESSION['user']);
                     // Closed room
                     echo "<script type='text/javascript'>";
                     echo "alert('" . $msgs->getText('error.plataform.closeRoom') . "');";
                     // Without permission			echo "history.go(-{$numReturnPages});";
                     echo "</script>";
                 }
             }
         } else {
             // Without permission
             echo "<script type='text/javascript'>";
             echo "alert('" . $msgs->getText('error.plataform.withoutPermission') . "');";
             echo "history.go(-{$numReturnPages});";
             echo "</script>";
         }
     } else {
         // Insufficient data
         echo "<script type='text/javascript'>";
         echo "alert('" . $msgs->getText('error.plataform.insufficientData') . "');";
         echo "history.go(-{$numReturnPages});";
         echo "</script>";
     }
 }
 public function execute($action)
 {
     $msgs = Localization::getInstance();
     $forwards = $action->getForwards();
     //$_POST["course"] = "1";
     //$_POST['manager'] = "*****@*****.**";
     //$_POST["name"] = "Coordenador do Curso";
     //$_POST["email"] ="*****@*****.**";
     $roomCourse = $_POST["course"];
     $roomManager = $_POST['manager'];
     $userName = utf8_decode($_POST["name"]);
     $userEmail = $_POST["email"];
     $userPasswordEduquito = "mude";
     if (!empty($roomCourse) && !empty($roomManager) && !empty($userName) && !empty($userEmail)) {
         // CHECKING USER IN EDUQUITO
         $bdHost = "143.54.193.37";
         $bdUser = "******";
         $bdPassword = "******";
         $bdDataBase = "EduquitoCurso" . $roomCourse;
         // Connect to database
         $mysqli = mysqli_init();
         mysqli_options($mysqli, MYSQLI_OPT_CONNECT_TIMEOUT, 3);
         mysqli_real_connect($mysqli, $bdHost, $bdUser, $bdPassword, $bdDataBase);
         $eduquitoConnected = true;
         // Checks whether any errors occurred
         if (mysqli_connect_errno()) {
             $eduquitoConnected = false;
         }
         if ($eduquitoConnected) {
             $nameLoginEduquito = $userName;
             $emailLoginEduquito = $userEmail;
             // Prepares a SQL query
             if ($sql = $mysqli->prepare("SELECT `cod_usuario` FROM `Usuario` WHERE `email` = ? AND `nome` = ?")) {
                 $sql->bind_param('ss', $emailLoginEduquito, $nameLoginEduquito);
                 // Run the query
                 $sql->execute();
                 $i = 0;
                 $sql->bind_result($id);
                 while ($sql->fetch()) {
                     $i++;
                 }
                 if ($i >= 1) {
                     $permissionEduquito = true;
                 } else {
                     $permissionEduquito = false;
                 }
                 // Close query
                 $sql->close();
             }
             // Closes the connection to the database
             $mysqli->close();
         }
         if (!$eduquitoConnected || $permissionEduquito) {
             // CHECKING USER IN WHITEBOARD
             $user = $this->dao->login($userEmail, $userPasswordEduquito);
             if (count($user) <= 0) {
                 // Not in database, create new user
                 if (!empty($userEmail) && !empty($userName)) {
                     // Instantiates a new user;
                     $user = new User();
                     $user->setName($userName);
                     $user->setEmail($userEmail);
                     $user->setPassword($userPasswordEduquito);
                     $user->setRoomcreator(0);
                     $resultUser = $this->dao->saveNewUser($user);
                     $user = $this->dao->login($userEmail, $userPasswordEduquito);
                 }
             }
             if ($user->getName() != $userName) {
                 // Upadate user;
                 $resultUser = $this->dao->updateUserName($user->getUserId(), $userName);
             }
             // User contained in the database, loggin
             $_SESSION['id'] = $user->getUserId();
             $_SESSION['name'] = $user->getName();
             $_SESSION['roomCreator'] = $user->getRoomcreator();
             $_SESSION['email'] = $user->getEmail();
             $_SESSION['user'] = $user;
             // Verifies and creates, if necessary, the room of course
             $roomEduquito = $this->dao->getRoomByCourse($roomCourse);
             if (count($roomEduquito) <= 0) {
                 $roomName = "Sala do curso " . $roomCourse;
                 $_POST["name"] = $roomName;
                 $_POST["course"] = $roomCourse;
                 $_POST['idsSelecteds'] = $user->getUserId();
                 if ($user->getEmail() == $roomManager) {
                     $_SESSION['id'] = $user->getUserId();
                 } else {
                     $manager = $this->dao->login($roomManager, $userPasswordEduquito);
                     if (count($manager) <= 0) {
                         // Not in database, create new user coordinator
                         $manager = new User();
                         $manager->setName("Coordenador do curso");
                         $manager->setEmail($roomManager);
                         $manager->setPassword($userPasswordEduquito);
                         $manager->setRoomcreator(0);
                         $resultManager = $this->dao->saveNewUser($manager);
                         $manager = $this->dao->login($manager->getEmail(), $userPasswordEduquito);
                     }
                     $_SESSION['id'] = $manager->getUserId();
                 }
                 $createRoomAction = new CreateRoomAction();
                 $createRoomAction->execute($action);
                 $roomEduquito = $this->dao->getRoomByCourse($roomCourse);
                 $_SESSION['id'] = $user->getUserId();
             }
             // Checks permissions
             $permissions = $this->dao->listPermissions($roomEduquito->getRoomId());
             $havePermission = false;
             foreach ($permissions as $permission) {
                 if ($permission->getUserId() == $user->getUserId()) {
                     $havePermission = true;
                 }
             }
             if (!$havePermission) {
                 $permission = new Permission();
                 $permission->setUserId($user->getUserId());
                 $permission->setRoomId($roomEduquito->getRoomId());
                 $resultPermission = $this->dao->savePermission($permission);
             }
             $roomEduquito = $this->dao->getRoomByCourse($roomCourse);
             $_GET["idRoom"] = $roomEduquito->getRoomId();
             $_SESSION['eduquito'] = true;
             if ($roomEduquito->getActive() == 1) {
                 $joinRoomAction = new JoinRoomAction();
                 $joinRoomAction->execute($action);
             } else {
                 if ($user->getUserId() == $roomEduquito->getUserId()) {
                     $startRoomAction = new StartRoomAction();
                     $startRoomAction->execute($action);
                 } else {
                     unset($_SESSION['id']);
                     unset($_SESSION['name']);
                     unset($_SESSION['roomCreator']);
                     unset($_SESSION['email']);
                     unset($_SESSION['user']);
                     session_destroy();
                     // Closed room
                     echo "<script type='text/javascript'>";
                     echo "alert('" . $msgs->getText('error.eduquitoCloseRoom') . "');";
                     echo "history.go(-1);";
                     echo "</script>";
                 }
             }
         } else {
             // Without permission
             echo "<script type='text/javascript'>";
             echo "alert('" . $msgs->getText('error.eduquitoWithoutPermission') . "');";
             echo "history.go(-1);";
             echo "</script>";
         }
     } else {
         // Without permission
         echo "<script type='text/javascript'>";
         echo "alert('" . $msgs->getText('error.eduquitoInsufficientData') . "');";
         echo "history.go(-1);";
         echo "</script>";
     }
 }
 public function execute($action)
 {
     $forwards = $action->getForwards();
     // Checks if all fields were provided
     if (!empty($_POST['roomId']) && !empty($_POST['roomName']) && !empty($_POST['idsSelecteds'])) {
         $idRoom = $_POST['roomId'];
         $roomName = $_POST['roomName'];
         $listUsers = explode("-", $_POST['idsSelecteds']);
         $listUsers[] = $_SESSION['id'];
         $_POST['currentRoom'] = $idRoom;
         // Upadate user;
         $resultRoom = $this->dao->updateRoomData($idRoom, $roomName);
         // Delete old permissions
         $listPermissions = new ListPermissionsAction();
         $listPermissions->execute($action);
         $permissions = $_REQUEST["permissions"];
         foreach ($permissions as $permission) {
             $resultDeletePermissions = $this->dao->deletePermission($permission);
         }
         // Instantiates a new room permission;
         foreach ($listUsers as $allowedUserId) {
             if ($allowedUserId != 0) {
                 $permission = new Permission();
                 $permission->setUserId($allowedUserId);
                 $permission->setRoomId($idRoom);
                 $resultPermission = $this->dao->savePermission($permission);
             }
         }
         // Showing the page
         $this->pageController->run($forwards['success']);
     } else {
         // It will set a variable with the id of the button
         // that opens the modal window that was active
         $_SESSION['openModalWindow'] = "#btnUptRoom";
         // Error if there are blank fields
         $_REQUEST["errorMsg"] = $this->message->getText("error.blankField");
         $this->pageController->run($forwards['error']);
     }
 }