/** * Restiuisce un singleton per creare appelli * @return \AppelloFactory */ public static function instance() { if (!isset(self::$singleton)) { self::$singleton = new AppelloFactory(); } return self::$singleton; }
/** * Restituisce l'appello specificato dall'utente tramite una richiesta HTTP * @param array $request la richiesta HTTP * @param array $msg un array dove inserire eventuali messaggi d'errore * @return Appello l'appello selezionato, null se non e' stato trovato */ private function getAppello(&$request, &$msg) { if (isset($request['appello'])) { $appello_id = filter_var($request['appello'], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE); $appello = AppelloFactory::instance()->cercaAppelloPerId($appello_id); if ($appello == null) { $msg[] = "L'appello selezionato non è corretto</li>"; } return $appello; } else { return null; } }
/** * Metodo per gestire l'input dell'utente. * @param type $request la richiesta da gestire */ public function handleInput(&$request) { // creo il descrittore della vista $vd = new ViewDescriptor(); // imposto la pagina $vd->setPagina($request['page']); // imposto il token per impersonare un utente (nel lo stia facendo) $this->setImpToken($vd, $request); // gestion dei comandi // tutte le variabili che vengono create senza essere utilizzate // direttamente in questo switch, sono quelle che vengono poi lette // dalla vista, ed utilizzano le classi del modello if (!$this->loggedIn()) { // utente non autenticato, rimando alla home $this->showLoginPage($vd); } else { // utente autenticato $user = UserFactory::instance()->cercaUtentePerId($_SESSION[BaseController::user], $_SESSION[BaseController::role]); // verifico quale sia la sottopagina della categoria // Docente da servire ed imposto il descrittore // della vista per caricare i "pezzi" delle pagine corretti // tutte le variabili che vengono create senza essere utilizzate // direttamente in questo switch, sono quelle che vengono poi lette // dalla vista, ed utilizzano le classi del modello if (isset($request["subpage"])) { switch ($request["subpage"]) { // modifica dei dati anagrafici case 'anagrafica': $vd->setSottoPagina('anagrafica'); break; // visualizzazione degli esami sostenuti // visualizzazione degli esami sostenuti case 'esami': $esami = EsameFactory::instance()->esamiPerStudente($user); $vd->setSottoPagina('esami'); break; // iscrizione ad un appello // iscrizione ad un appello case 'iscrizione': // carichiamo gli appelli dal db $appelli = AppelloFactory::instance()->getAppelliPerStudente($user); $vd->setSottoPagina('iscrizione'); break; default: $vd->setSottoPagina('home'); break; } } // gestione dei comandi inviati dall'utente if (isset($request["cmd"])) { // abbiamo ricevuto un comando switch ($request["cmd"]) { // logout case 'logout': $this->logout($vd); break; // aggiornamento indirizzo // aggiornamento indirizzo case 'indirizzo': // in questo array inserisco i messaggi di // cio' che non viene validato $msg = array(); $this->aggiornaIndirizzo($user, $request, $msg); $this->creaFeedbackUtente($msg, $vd, "Indirizzo aggiornato"); $this->showHomeUtente($vd); break; // cambio email // cambio email case 'email': // in questo array inserisco i messaggi di // cio' che non viene validato $msg = array(); $this->aggiornaEmail($user, $request, $msg); $this->creaFeedbackUtente($msg, $vd, "Email aggiornata"); $this->showHomeUtente($vd); break; // cambio password // cambio password case 'password': // in questo array inserisco i messaggi di // cio' che non viene validato $msg = array(); $this->aggiornaPassword($user, $request, $msg); $this->creaFeedbackUtente($msg, $vd, "Password aggiornata"); $this->showHomeStudente($vd); break; // iscrizione ad un appello // iscrizione ad un appello case 'iscrivi': // recuperiamo l'indice $msg = array(); $a = $this->getAppelloPerIndice($appelli, $request, $msg); if (isset($a)) { $isOk = $a->iscrivi($user); $count = AppelloFactory::instance()->aggiungiIscrizione($user, $a); if (!$isOk || $count != 1) { $msg[] = "<li> Impossibile cancellarti dall'appello specificato </li>"; } } else { $msg[] = "<li> Impossibile iscriverti all'appello specificato. Verifica la capienza del corso </li>"; } $this->creaFeedbackUtente($msg, $vd, "Ti sei iscritto all'appello specificato"); $this->showHomeStudente($vd); break; // cancellazione da un appello // cancellazione da un appello case 'cancella': // recuperiamo l'indice $msg = array(); $a = $this->getAppelloPerIndice($appelli, $request, $msg); if (isset($a)) { $isOk = $a->cancella($user); $count = AppelloFactory::instance()->cancellaIscrizione($user, $a); if (!$isOk || $count != 1) { $msg[] = "<li> Impossibile cancellarti dall'appello specificato </li>"; } } else { $msg[] = "<li> Impossibile cancellarti dall'appello specificato </li>"; } $this->creaFeedbackUtente($msg, $vd, "Ti sei cancellato dall'appello specificato"); $this->showHomeUtente($vd); break; default: $this->showLoginPage($vd); } } else { // nessun comando $user = UserFactory::instance()->cercaUtentePerId($_SESSION[BaseController::user], $_SESSION[BaseController::role]); $this->showHomeUtente($vd); } } // includo la vista require basename(__DIR__) . '/../view/master.php'; }