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 è 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'; }
<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 è 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 è 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'; }