public function handle_input(&$request)
 {
     $vd = new ViewDescriptor();
     $vd->setPagina($request['page']);
     //        $this->setImpToken($vd, $request);
     //utente non autentificato
     if (!$this->loggedIn()) {
         $this->showLoginPage($vd);
     } else {
         $user = UserFactory::instance()->cercaUtentePerId($_SESSION[BaseController::user], $_SESSION[BaseController::role]);
         if (isset($request["subpage"])) {
             switch ($request["subpage"]) {
                 case 'gestione_ordini':
                     $ordini = OrdineFactory::instance()->getListaOrdiniAttivi();
                     $vd->setSottoPagina('gestione_ordini');
                     break;
                 default:
                     $vd->setSottoPagina('home');
                     break;
             }
         }
         if (isset($request["cmd"])) {
             switch ($request["cmd"]) {
                 case 'logout':
                     $this->logout($vd);
                     break;
                 case 'invia':
                     $msg = array();
                     $ordini = OrdineFactory::instance()->getListaOrdiniAttivi();
                     if (isset($request['id'])) {
                         if (OrdineFactory::instance()->chiudiOrdinePerId($request['id']) != 1) {
                             $msg[] = '<li>L\'ordine #' . $request['id'] . ' non &egrave; valido</li>';
                         }
                     }
                     $this->creaFeedbackUtente($msg, $vd, 'Ordine #' . $request['id'] . ' inviato');
                     $vd->setSottoPagina('gestione_ordini');
                     $this->showHomeAdmin($vd);
                     /* Non mostra il msg di errore/conferma */
                     header('Location: ' . Settings::getApplicationPath() . 'php/admin/gestione_ordini');
                     exit;
                     /* ************************************ */
                     break;
                 default:
                     $this->showHomeAdmin($vd);
             }
         } else {
             // nessun comando
             $user = UserFactory::instance()->cercaUtentePerId($_SESSION[BaseController::user], $_SESSION[BaseController::role]);
             $this->showHomeUser($vd);
         }
     }
     require basename(__DIR__) . '/../view/master.php';
 }
 public function handle_input(&$request)
 {
     $vd = new ViewDescriptor();
     $vd->setPagina($request['page']);
     //        $this->setImpToken($vd, $request);
     if (isset($request["cmd"])) {
         switch ($request["cmd"]) {
             case 'login':
                 $username = isset($request['username']) ? $request['username'] : '';
                 $password = isset($request['password']) ? $request['password'] : '';
                 $this->login($vd, $username, $password);
                 if ($this->loggedIn()) {
                     $user = UserFactory::instance()->cercaUtentePerId($_SESSION[self::user], $_SESSION[self::role]);
                     // nel caso si sia loggato il cliente
                     if ($_SESSION[self::role] == Cliente::Cliente) {
                         header('Location: ' . Settings::getApplicationPath() . 'php/cliente/home');
                     } else {
                         // ... altrimenti
                         header('Location: ' . Settings::getApplicationPath() . 'php/admin/home');
                     }
                 }
                 break;
             default:
                 //autentificazione fallita: mostra messaggio di errore nella pagina di login
                 $this->showLoginPage($vd);
                 //                    break;
         }
     } else {
         //utente autentificato: aggiorna la vista in base al ruolo
         if ($this->loggedIn()) {
             $user = UserFactory::instance()->cercaUtentePerId($_SESSION[self::user], $_SESSION[self::role]);
             $this->showHomeUser($vd);
         } else {
             $this->showLoginPage($vd);
         }
     }
     require basename(__DIR__) . '/../view/master.php';
 }
Example #3
0
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <base href="<?php 
echo 'http://' . $_SERVER['HTTP_HOST'] . '/PizzaClick/';
?>
"/>
        <title>Errore</title>
    </head>
    <body>
        <h1><?php 
echo $titolo;
?>
</h1>
        <p>
            <?php 
echo $messaggio;
?>
        </p>
        <?php 
if (isset($login)) {
    ?>
        <p>Puoi autenticarti alla pagina di <a href="<?php 
    echo Settings::getApplicationPath();
    ?>
php/login">login</a></p>
        <?php 
}
?>
    </body>
</html>
 public function handle_input(&$request)
 {
     $vd = new ViewDescriptor();
     $vd->setPagina($request['page']);
     $this->setImpToken($vd, $request);
     //untente non autentificato
     if (!$this->loggedIn()) {
         $this->showLoginPage($vd);
     } else {
         $user = UserFactory::instance()->cercaUtentePerId($_SESSION[BaseController::user], $_SESSION[BaseController::role]);
         //carica le pizze da visualizzare sulla galleria
         $listaPizzeConImg = PizzaFactory::instance()->getListaPizze(true);
         reset($listaPizzeConImg);
         $pizza = current($listaPizzeConImg);
         $index = 0;
         //        var_dump($listaPizzeConImg);
         $vd->setAjaxFile(basename(__DIR__) . '/../view/ajax.php');
         if (isset($request["subpage"])) {
             switch ($request["subpage"]) {
                 case 'base':
                     $vd->setSottoPagina('base');
                     $vd->setBreadcrumb("Modifica username o e-mail");
                     break;
                 case 'password':
                     $vd->setSottoPagina('password');
                     $vd->setBreadcrumb("Modifica password");
                     break;
                 case 'pagamento':
                     $pagamenti = PagamentoFactory::instance()->getListaPagamentiPerCliente($user);
                     $vd->setSottoPagina('pagamento');
                     $vd->setBreadcrumb("Visualizza i tuoi metodi di pagamento");
                     break;
                 case 'visualizza_pagamento':
                     $pagamenti = PagamentoFactory::instance()->getListaPagamentiPerCliente($user);
                     $vd->setSottoPagina('visualizza_pagamento');
                     $vd->setBreadcrumb("Visualizza i tuoi metodi di pagamento");
                     break;
                 case 'indirizzo':
                     $vd->setSottoPagina('indirizzo');
                     $vd->setBreadcrumb("Modifica indirizzo di consegna");
                     break;
                 case 'account':
                     $msg = array();
                     if (!isset($_SESSION[self::elenco_articoli])) {
                         $_SESSION[self::elenco_articoli] = array();
                     }
                     $vd->setSottoPagina('account');
                     break;
                 case 'conferma_ordine_step1':
                     $vd->setSottoPagina('conferma_ordine_step1');
                     $vd->setTitoloStep('Passo 1: seleziona indirizzo di consegna');
                     break;
                 case 'conferma_ordine_step2':
                     $vd->setSottoPagina('conferma_ordine_step2');
                     $vd->setTitoloStep('Passo 2: riepilogo articoli');
                     break;
                 case 'conferma_ordine_step3':
                     $vd->setSottoPagina('conferma_ordine_step3');
                     $vd->setTitoloStep('Passo 3: seleziona metodo di pagamento');
                     $pagamenti = PagamentoFactory::instance()->getListaPagamentiPerCliente($user);
                     break;
                 case 'cronologia_ordini':
                     $ordini = OrdineFactory::instance()->getListaOrdiniPerCliente($user);
                     $vd->setSottoPagina('cronologia_ordini');
                     $vd->setBreadcrumb("Visualizza cronologia ordini");
                     break;
                 case 'ordini_attivi':
                     $ordini = OrdineFactory::instance()->getListaOrdiniPerCliente($user, true);
                     $vd->setSottoPagina('cronologia_ordini');
                     $vd->setBreadcrumb("Visualizza ordini in corso");
                     break;
                 default:
                     if (!isset($_SESSION[self::elenco_articoli])) {
                         $_SESSION[self::elenco_articoli] = array();
                     }
                     $vd->setSottoPagina('home');
                     break;
             }
         }
         if (isset($request["cmd"])) {
             switch ($request["cmd"]) {
                 //salvataggio permanente elenco articoli
                 case 'ordina':
                     $msg = array();
                     if (!empty($_SESSION[self::elenco_articoli])) {
                         if (isset($request['carta'])) {
                             $carta = intval($request['carta']);
                             $pagamento = PagamentoFactory::instance()->cercaPagamentoPerId($carta);
                             if (!isset($pagamento)) {
                                 $msg[] = 'Il metodo di pagamento inserito non &egrave; valido';
                                 $vd->setTitoloStep('Passo 3: seleziona metodo di pagamento');
                                 $vd->setSottoPagina('conferma_ordine_step3');
                             } else {
                                 if (!OrdineFactory::instance()->salvaOrdine($_SESSION[self::elenco_articoli], $user->getId(), $pagamento, $this->getSubTotale(true))) {
                                     $msg[] = '<li>Spiacente. Impossibile terminare la transazione</li>';
                                     $vd->setTitoloStep('Passo 3: seleziona metodo di pagamento');
                                     $vd->setSottoPagina('conferma_ordine_step3');
                                 } else {
                                     $_SESSION[self::elenco_articoli] = array();
                                     $vd->setSottoPagina('home');
                                 }
                             }
                         }
                         $this->creaFeedbackUtente($msg, $vd, 'Ordine inviato');
                     }
                     $this->showHomeCliente($vd);
                     $pagamenti = PagamentoFactory::instance()->getListaPagamentiPerCliente($user);
                     break;
                     //rimuove un articolo dal carrello
                 //rimuove un articolo dal carrello
                 case 'remove':
                     if (isset($request['key'])) {
                         $key = intval($request['key']);
                         if (array_key_exists($key, $_SESSION[self::elenco_articoli])) {
                             $this->rimuoviArticolo($_SESSION[self::elenco_articoli][$key]);
                         }
                     }
                     $subpage = $_REQUEST['subpage'];
                     if (empty($_SESSION[self::elenco_articoli])) {
                         $subpage = 'home';
                         $vd->setSottoPagina('home');
                     }
                     $this->showHomeCliente($vd);
                     header('Location: ' . Settings::getApplicationPath() . "php/cliente/{$subpage}");
                     exit;
                     break;
                     /**
                      * è stato aggiunto un "articolo" al carrello, 
                      * ovvero una quantità di pizze di un determinato tipo e di una certa dimensione
                      */
                 /**
                  * è stato aggiunto un "articolo" al carrello, 
                  * ovvero una quantità di pizze di un determinato tipo e di una certa dimensione
                  */
                 case 'add':
                     //controlla la provenienza della richiesta: selectmenu form ...
                     if (isset($request['pizza-selection']) && isset($request['size']) && isset($request['quantity'])) {
                         if (PizzaFactory::instance()->cercaPizzaPerId(intval($request['pizza-selection']))) {
                             $articolo = new ArticoloSession(PizzaFactory::instance()->cercaPizzaPerId(intval($request['pizza-selection'])), $request['size'], intval($request['quantity']));
                             $this->aggiungiArticolo($articolo);
                         }
                     }
                     //... altrimenti gallery form
                     if (isset($request['pizza-gallery']) && isset($request['size']) && isset($request['quantity'])) {
                         $key = intval($request['pizza-gallery']);
                         if (array_key_exists($key, $listaPizzeConImg)) {
                             $articolo = new ArticoloSession(PizzaFactory::instance()->cercaPizzaPerId($listaPizzeConImg[$key]->getId()), $request['size'], intval($request['quantity']));
                             $this->aggiungiArticolo($articolo);
                         }
                     }
                     //                        file_put_contents('php/text.txt', $_SERVER['REQUEST_URI'], FILE_APPEND);
                     $vd->setSottoPagina('home');
                     $this->showHomeCliente($vd);
                     /**
                      * Evita l'auto-submit del form in seguito alla ricarica della pagina nel browser.
                      * Problema presente anche nel progetto d'esempio:
                      * http://spano.sc.unica.it/amm2014/davide/esami14/php/docente/reg_esami_step1?cmd=r_nuovo
                      */
                     header('Location: ' . Settings::getApplicationPath() . 'php/cliente/home');
                     exit;
                     break;
                     //visualizza i dettagli di un metodo di pagamento selezionato
                 //visualizza i dettagli di un metodo di pagamento selezionato
                 case 'v_pagamento':
                     $msg = array();
                     //                        var_dump($request);
                     $p = 0;
                     if (isset($request['carta'])) {
                         $p = filter_var($request['carta'], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
                         if (!array_key_exists($p, $pagamenti)) {
                             $msg[] = '<li>Il metodo di pagamento specificato non &egrave; valido</li>';
                             $vd->setSottoPagina('pagamento');
                             $this->creaFeedbackUtente($msg, $vd, '');
                         } else {
                             $carta = $pagamenti[$p];
                             $vd->setSottoPagina('visualizza_pagamento');
                         }
                     } else {
                         $vd->setSottoPagina('pagamento');
                     }
                     $this->showHomeUser($vd);
                     break;
                 case 'aggiorna_indirizzo':
                     $msg = array();
                     $this->aggiornaIndirizzo($user, $request, $msg);
                     $this->creaFeedbackUtente($msg, $vd, "Indirizzo di consegna aggiornato");
                     $this->showHomeUser($vd);
                     break;
                 case 'aggiorna_password':
                     $msg = array();
                     $this->aggiornaPassword($user, $request, $msg);
                     $this->creaFeedbackUtente($msg, $vd, 'Password aggiornata');
                     $vd->setSottoPagina('password');
                     $vd->setBreadcrumb("Modifica password");
                     $this->showHomeUser($vd);
                     break;
                     // aggiorna username, e-mail
                 // aggiorna username, e-mail
                 case 'aggiorna_info_base':
                     $msg = array();
                     $vd->setSottoPagina('base');
                     $vd->setBreadcrumb("Modifica username o e-mail");
                     $this->aggiornaInfoBase($user, $request, $msg);
                     $this->creaFeedbackUtente($msg, $vd, 'Username/e-mail sono stati aggiornati');
                     $this->showHomeUser($vd);
                     break;
                 case 'logout':
                     $this->logout($vd);
                     break;
                     // ajax: click di un bullet: cambia pizza visualizzata sulla gallery
                 // ajax: click di un bullet: cambia pizza visualizzata sulla gallery
                 case 'go':
                     $vd->toggleJson();
                     $index = filter_var($request["id"], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
                     if (!array_key_exists($index, $listaPizzeConImg)) {
                         $index = 0;
                     }
                     $pizza = $listaPizzeConImg[$index];
                     break;
                     // ajax: click next arrow: visualizza la pizza successiva
                 // ajax: click next arrow: visualizza la pizza successiva
                 case 'next':
                     $vd->toggleJson();
                     $index = filter_var($request["id"], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
                     if (!isset($index)) {
                         $intVal = 0;
                     }
                     $index++;
                     if ($index > count($listaPizzeConImg) - 1) {
                         $index = 0;
                     }
                     $pizza = $listaPizzeConImg[$index];
                     break;
                     // ajax: click previous arrow: visualizza la pizza precedente
                 // ajax: click previous arrow: visualizza la pizza precedente
                 case 'prev':
                     $vd->toggleJson();
                     $index = filter_var($request["id"], FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
                     if (!isset($index)) {
                         $index = 0;
                     }
                     $index--;
                     if ($index < 0) {
                         $index = count($listaPizzeConImg) - 1;
                     }
                     $pizza = $listaPizzeConImg[$index];
                     break;
                 default:
                     $this->showHomeCliente($vd);
             }
         } else {
             // nessun comando
             $user = UserFactory::instance()->cercaUtentePerId($_SESSION[BaseController::user], $_SESSION[BaseController::role]);
             $this->showHomeUser($vd);
         }
     }
     require basename(__DIR__) . '/../view/master.php';
 }