File "index.php"

Full Path: /srv/www/www.cadoro.it/src/index.php
File size: 47.37 KB
MIME-type: text/x-php
Charset: utf-8

<?php
// test
  require("includes/loader.inc.php");

  # language
  $lang = 'it';

  require("includes/smarty.inc.php");

 /**************************************************************************
  * CONTROLLERS
  **************************************************************************/

  $request_uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
  $request_parts = explode("/", trim($request_uri, "/"));
  $request_uri = "/" . implode("/", $request_parts);

 /**************************************************************************
  * API v1
  **************************************************************************/

  # /api/1
  if (count($request_parts) >= 2 && $request_parts[0] == 'api' && $request_parts[1] == '1') {
    $request_parts = array_slice($request_parts, 2);

    # preflight
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
      if (_a($_SERVER, 'HTTP_ORIGIN')) {
        header("Access-Control-Allow-Origin: " . $_SERVER['HTTP_ORIGIN']);
        header("Access-Control-Allow-Methods: HEAD, GET, POST, PUT, DELETE, OPTIONS");
        header("Access-Control-Allow-Headers: Authorization, Content-Type");
      }
      echo "Allow: HEAD, GET, POST, PUT, DELETE, OPTIONS";
      exit;
    }
    # /login
    else if (count($request_parts) == 1 && $request_parts[0] == 'login') {
      require("controllers/api-login.inc.php"); exit;
    }
    # /registrazione
    else if (count($request_parts) == 1 && $request_parts[0] == 'registrazione') {
      require("controllers/api-registrazione.inc.php"); exit;
    }
    # /auth
    else if (count($request_parts) == 1 && $request_parts[0] == 'auth') {
      require("controllers/api-auth.inc.php"); exit;
    }
    # /auth/token
    else if (count($request_parts) == 2 && $request_parts[0] == 'auth' && $request_parts[1] == 'token') {
      require("controllers/api-auth-token.inc.php"); exit;
    }
    # /password
    else if (count($request_parts) == 1 && $request_parts[0] == 'password') {
      require("controllers/api-password.inc.php"); exit;
    }
    # authentication
    else {
      $user = _a($_SERVER, 'PHP_AUTH_USER');
      $card = _a($_SERVER, 'PHP_AUTH_PW');
      $user = $user ? models\User::get_by_id($user) : null;
      $user = $user && $user['card'] == $card ? $user : null;

      # not authenticated
      if (!$user) {
        not_found_json();
      }
      # /state
      else if (count($request_parts) == 1 && $request_parts[0] == 'state') {
        require("controllers/api-state.inc.php"); exit;
      }
      # /profilo
      else if (count($request_parts) == 1 && $request_parts[0] == 'profilo') {
        require("controllers/api-profilo.inc.php"); exit;
      }
      # /punti-vendita
      else if (count($request_parts) == 1 && $request_parts[0] == 'punti-vendita') {
        require("controllers/api-punti-vendita.inc.php"); exit;
      }
      # /punti-vendita/:id
      else if (count($request_parts) == 2 && $request_parts[0] == 'punti-vendita') {
        $id = $request_parts[1];
        require("controllers/api-punti-vendita-dettaglio.inc.php"); exit;
      }
      # /token
      else if (count($request_parts) == 1 && $request_parts[0] == 'token') {
        require("controllers/api-token.inc.php"); exit;
      }
      # /assistenza
      else if (count($request_parts) == 1 && $request_parts[0] == 'assistenza') {
        require("controllers/api-assistenza.inc.php"); exit;
      }
      # /offerte
      else if (count($request_parts) == 1 && $request_parts[0] == 'offerte') {
        require("controllers/api-offerte.inc.php"); exit;
      }
      # /lista-spesa
      else if (count($request_parts) == 1 && $request_parts[0] == 'lista-spesa') {
        $id = null;
        require("controllers/api-lista-spesa.inc.php"); exit;
      }
      # /lista-spesa/:id
      else if (count($request_parts) == 2 && $request_parts[0] == 'lista-spesa' && ctype_digit($request_parts[1])) {
        $id = $request_parts[1]*1;
        require("controllers/api-lista-spesa-dettaglio.inc.php"); exit;
      }
      # /preferiti
      else if (count($request_parts) == 1 && $request_parts[0] == 'preferiti') {
        require("controllers/api-preferiti.inc.php"); exit;
      }
      # /notifiche
      else if (count($request_parts) == 1 && $request_parts[0] == 'notifiche') {
        require("controllers/api-notifiche.inc.php"); exit;
      }
      # /landing/
      else if (count($request_parts) == 1 && $request_parts[0] == 'landing') {
        require("controllers/api-landing.inc.php"); exit;
      }
      # /landing/{:slug}
      else if (count($request_parts) == 2 && $request_parts[0] == 'landing') {
        $slug = $request_parts[1];
        require("controllers/api-landing.inc.php"); exit;
      }
    }

    # default (not found)
    not_found_json();
  }

  # user identification
  $principal = models\User::identify();
  $smarty->assign("principal", $principal);
  $smarty->assign("request_uri", $request_uri);
  $smarty->assign("pcookie", !isset($_COOKIE['pcookie']));

  # redirect
  $redirect = models\Redirect::get_by_request_uri($request_uri);
  if ($redirect) {
    if (substr($redirect['redirect_uri'], 0, 4) === "http") {
      header("Location: " . $redirect['redirect_uri']);
      exit;
    } else {
      header("Location: " . BASE_URL . $redirect['redirect_uri']);
      exit;
    }
  }

  # richiamo prodotto
  $smarty->assign("richiamo_prodotto", models\Page::get_by_slug("/richiamo-prodotto"));

  # loyalty, permanenza sito
  if ($principal) {
    /*
    if (!_a($principal['data'], 'session') ||  substr($principal['data']['session'], 0, 10) != date('Y-m-d')) {
      $principal['data']['session'] = date('Y-m-d H:i:s');
      $principal['data']['session_points'] = 0;
      $principal->update_data($principal['data']);
    } else {
      $delta =  time() - strtotime($principal['data']['session']);
      if ($delta > 0 && $delta <= 3600) {
        $points = min(floor($delta / 600), 5);
        if ($points && _a($principal['data'], 'session_points', 0) < $points) {
          $done = 0;
          $done_real = 0;
          $error_tessera = 0;
          for ($i = _a($principal['data'], 'session_points', 0); $i < $points; $i++) {
            $res = classes\Fidelity::SetPunti($principal['card'], '03');
            if (!_a($res, 'Errore')) {
              $done++;
              $done_real++;
            } else if ($res['Errore'] == 13) {
              $done++;
            } else if (in_array($res['Errore'], [1,4,5,99])) {
              $error_tessera = $res['Errore'];
              break;
            }
          }
          $principal['data']['session_points'] += $done;
          $principal->update_data($principal['data']);

          if($error_tessera != 0) {
            $principal->forget();
            $smarty->assign("error_tessera", $error_tessera);
          }

          $smarty->assign("points_loyalty", $done_real);
        }
      } else if ($delta > 3600) {
        $principal['data']['session'] = date('Y-m-d H:i:s');
        $principal->update_data($principal['data']);
      }
    }
    if (_request('debug') == 'Jisomm6quel2') {
      header("Content-Type: text/plain;");
      if (isset($delta)) {
       $principal['data']['session_delta'] = $delta;
      }
      $principal['data']['now'] = date('Y-m-d H:i:s');
      print_r($principal['data']);
      exit;
    }
    */
    //$smarty->assign("points_loyalty_count", _a(_a($principal, 'data'), 'session_points'));
    $smarty->assign("points_loyalty_count", 0);
  }

  # CMS (slug-based)
  if ($page = models\Page::get_by_slug($request_uri)) {
    require("controllers/cms.inc.php"); exit;
  }
  # /cerca
  else if (count($request_parts) == 1 && $request_parts[0] == 'cerca') {
    require("controllers/cerca.inc.php"); exit;
  }
  # /newsletter
  else if (count($request_parts) == 1 && $request_parts[0] == 'newsletter') {
    require("controllers/newsletter.inc.php"); exit;
  }
  # /punti-vendita
  else if (count($request_parts) == 1 && $request_parts[0] == 'punti-vendita') {
    require("controllers/punti-vendita.inc.php"); exit;
  }
  # /punti-vendita/popup
  else if (count($request_parts) == 2 && $request_parts[0] == 'punti-vendita' && $request_parts[1] == 'popup') {
    require("controllers/punti-vendita-popup.inc.php"); exit;
  }
  # /punti-vendita/{:slug}
  else if (count($request_parts) == 2 && $request_parts[0] == 'punti-vendita') {
    $slug = $request_parts[1];
    require("controllers/punti-vendita-dettaglio.inc.php"); exit;
  }
  # /punti-vendita/{:slug}/volantini/{:volantino}
  else if (count($request_parts) == 4 && $request_parts[0] == 'punti-vendita' && $request_parts[2] == 'volantini' && ctype_digit(_unslug($request_parts[3]))) {
    $slug = $request_parts[1];
    $flyer = _unslug($request_parts[3]);
    require("controllers/punti-vendita-volantino.inc.php"); exit;
  }
  # /punti-vendita/{:slug}/volantini/{:volantino}/sfoglia
  else if (count($request_parts) == 5 && $request_parts[0] == 'punti-vendita' && $request_parts[2] == 'volantini' && ctype_digit(_unslug($request_parts[3])) && $request_parts[4] == 'sfoglia') {
    $slug = $request_parts[1];
    $flyer = _unslug($request_parts[3]);
    require("controllers/punti-vendita-volantino-pdf.inc.php"); exit;
  }
  # /cardoro/richiedi
  else if (count($request_parts) == 2 && $request_parts[0] == 'cardoro' && $request_parts[1] == 'richiedi') {
    require("controllers/cardoro-richiedi.inc.php"); exit;
  }
  # /registrazione
  else if (count($request_parts) == 1 && $request_parts[0] == 'registrazione') {
    require("controllers/registrazione.inc.php"); exit;
  }
  # /registrazione/:id/:hash
  else if (count($request_parts) == 3 && $request_parts[0] == 'registrazione' && ctype_digit($request_parts[1])) {
    $id = $request_parts[1];
    $hash = $request_parts[2];
    require("controllers/registrazione-conferma.inc.php"); exit;
  }
  # /password
  else if (count($request_parts) == 1 && $request_parts[0] == 'password') {
    require("controllers/password.inc.php"); exit;
  }
  # /password/:id/:hash
  else if (count($request_parts) == 3 && $request_parts[0] == 'password' && ctype_digit($request_parts[1])) {
    $id = $request_parts[1];
    $hash = $request_parts[2];
    require("controllers/password-conferma.inc.php"); exit;
  }
  # /login
  else if (count($request_parts) == 1 && $request_parts[0] == 'login') {
    require("controllers/login.inc.php"); exit;
  }
  # /logout
  else if (count($request_parts) == 1 && $request_parts[0] == 'logout') {
    require("controllers/logout.inc.php"); exit;
  }
  # /profilo
  else if (count($request_parts) == 1 && $request_parts[0] == 'profilo') {
    require("controllers/profilo.inc.php"); exit;
  }
  # /profilo/modifica
  else if (count($request_parts) == 2 && $request_parts[0] == 'profilo' && $request_parts[1] == 'modifica') {
    require("controllers/profilo-modifica.inc.php"); exit;
  }
  # /profilo/preferiti
  else if (count($request_parts) == 2 && $request_parts[0] == 'profilo' && $request_parts[1] == 'preferiti') {
    require("controllers/profilo-preferiti.inc.php"); exit;
  }
  # /profilo/lista-spesa
  else if (count($request_parts) == 2 && $request_parts[0] == 'profilo' && $request_parts[1] == 'lista-spesa') {
    require("controllers/profilo-lista-spesa.inc.php"); exit;
  }
  # /profilo/punti
  else if (count($request_parts) == 2 && $request_parts[0] == 'profilo' && $request_parts[1] == 'punti') {
    require("controllers/profilo-punti.inc.php"); exit;
  }
  # /filodiretto
  else if (count($request_parts) == 1 && $request_parts[0] == 'filodiretto') {
    require("controllers/filodiretto.inc.php"); exit;
  }
  # /filodiretto/lavora-con-noi
  else if (count($request_parts) == 2 && $request_parts[0] == 'filodiretto' && $request_parts[1] == 'lavora-con-noi' ||
           count($request_parts) == 3 && $request_parts[0] == 'filodiretto' && $request_parts[1] == 'lavora-con-noi' && $request_parts[2] == 'invia-curriculum') {
    $tab = count($request_parts) == 2 ? 1 : 2;
    require("controllers/filodiretto-lavora-con-noi.inc.php"); exit;
  }
  # /filodiretto/faq
  else if (count($request_parts) == 2 && $request_parts[0] == 'filodiretto' && $request_parts[1] == 'faq') {
    require("controllers/filodiretto-faq.inc.php"); exit;
  }
  # /filodiretto/newsletter
  else if (count($request_parts) == 2 && $request_parts[0] == 'filodiretto' && $request_parts[1] == 'newsletter') {
    require("controllers/filodiretto-newsletter.inc.php"); exit;
  }
  # /news
  else if (count($request_parts) == 1 && $request_parts[0] == 'news') {
    $category = null;
    $year = null;
    $month = null;
    require("controllers/news.inc.php"); exit;
  }
  # /news/{:year}
  else if (count($request_parts) == 2 && $request_parts[0] == 'news' && ctype_digit($request_parts[1])) {
    $category = null;
    $year = $request_parts[1]*1;
    $month = null;
    require("controllers/news.inc.php"); exit;
  }
  # /news/{:year}/{:month}
  else if (count($request_parts) == 3 && $request_parts[0] == 'news' && ctype_digit($request_parts[1]) && ctype_digit($request_parts[2])) {
    $category = null;
    $year = $request_parts[1]*1;
    $month = $request_parts[2]*1;
    require("controllers/news.inc.php"); exit;
  }
  # /news/{:category}
  else if (count($request_parts) == 2 && $request_parts[0] == 'news') {
    $category = $request_parts[1];
    $year = null;
    $month = null;
    require("controllers/news.inc.php"); exit;
  }
  # /news/{:category}/{:slug}
  else if (count($request_parts) == 3 && $request_parts[0] == 'news' && ctype_digit(_unslug($request_parts[2]))) {
    $article_id = _unslug($request_parts[2]);
    require("controllers/news-dettaglio.inc.php"); exit;
  }
  # /magazine
  else if (count($request_parts) == 1 && $request_parts[0] == 'magazine') {
    $category = null;
    $year = null;
    $month = null;
    require("controllers/magazine.inc.php"); exit;
  }
  # /magazine/{:year}
  else if (count($request_parts) == 2 && $request_parts[0] == 'magazine' && ctype_digit($request_parts[1])) {
    $category = null;
    $year = $request_parts[1]*1;
    $month = null;
    require("controllers/magazine.inc.php"); exit;
  }
  # /magazine/{:year}/{:month}
  else if (count($request_parts) == 3 && $request_parts[0] == 'magazine' && ctype_digit($request_parts[1]) && ctype_digit($request_parts[2])) {
    $category = null;
    $year = $request_parts[1]*1;
    $month = $request_parts[2]*1;
    require("controllers/magazine.inc.php"); exit;
  }
  # /magazine/{:category}
  else if (count($request_parts) == 2 && $request_parts[0] == 'magazine') {
    $category = $request_parts[1];
    $year = null;
    $month = null;
    require("controllers/magazine.inc.php"); exit;
  }
  # /magazine/{:category}/{:slug}
  else if (count($request_parts) == 3 && $request_parts[0] == 'magazine' && ctype_digit(_unslug($request_parts[2]))) {
    $article_id = _unslug($request_parts[2]);
    require("controllers/magazine-dettaglio.inc.php"); exit;
  }
  # /app
  else if (count($request_parts) == 1 && $request_parts[0] == 'app') {
    require_once("controllers/app.inc.php"); exit;
  }
  # /push
  else if (count($request_parts) == 1 && $request_parts[0] == 'push') {
    require("controllers/push.inc.php"); exit;
  }
  # /qrcode/{:uniqid}
  else if (count($request_parts) == 2 && $request_parts[0] == 'qrcode') {
    $uniqid = $request_parts[1];
    require("controllers/qrcode.inc.php"); exit;
  }
  # /landing/{:slug}
  else if (count($request_parts) == 2 && $request_parts[0] == 'landing') {
    $slug = $request_parts[1];
    require("controllers/landing.inc.php"); exit;
  }
  # /admin/...
  else if (count($request_parts) >= 1 && $request_parts[0] == 'admin') {
    $request_parts = array_slice($request_parts, 1);

    $principal = models\UserBE::identify();
    $smarty->assign("principal", $principal);

    # /
    if (count($request_parts) == 0 ||
        count($request_parts) == 1 && $request_parts[0] == '' ||
        count($request_parts) == 1 && $request_parts[0] == 'login') {
      require("controllers/admin-login.inc.php"); exit;
    }
    # /logout
    else if (count($request_parts) == 1 && $request_parts[0] == 'logout' || !$principal) {
      require("controllers/admin-logout.inc.php"); exit;
    }
    # /upload
    else if (count($request_parts) == 1 && $request_parts[0] == 'upload' || !$principal) {
      require("controllers/admin-upload.inc.php"); exit;
    }
    # /blog-categories
    else if (count($request_parts) == 1 && $request_parts[0] == 'blog-categories') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-blog-categories.inc.php"); exit;
    }
    # /blog-categories/{:category_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'blog-categories' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'blog-categories' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $category_id = $request_parts[1];
      require("controllers/admin-blog-categories-edit.inc.php"); exit;
    }
    # /blog-categories/{:category_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'blog-categories' && ctype_digit($request_parts[1]) && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $category_id = $request_parts[1];
      require("controllers/admin-blog-categories-delete.inc.php"); exit;
    }
    # /blog-categories/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'blog-categories' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-blog-categories-add.inc.php"); exit;
    }
    # /blog-articles
    else if (count($request_parts) == 1 && $request_parts[0] == 'blog-articles') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-blog-articles.inc.php"); exit;
    }
    # /blog-articles/{:blog-article_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'blog-articles' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'blog-articles' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $article_id = $request_parts[1];
      require("controllers/admin-blog-articles-edit.inc.php"); exit;
    }
    # /blog-articles/{:blog-article_id}/add
    else if (count($request_parts) == 3 && $request_parts[0] == 'blog-articles' && ctype_digit($request_parts[1]) && $request_parts[2] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $article_id = $request_parts[1];
      $content_id = null;
      require("controllers/admin-blog-articles-edit-content.inc.php"); exit;
    }
    # /blog-articles/{:blog-article_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'blog-articles' && ctype_digit($request_parts[1]) && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $article_id = $request_parts[1];
      require("controllers/admin-blog-articles-delete.inc.php"); exit;
    }
    # /blog-articles/{:blog-article_id}/{:content_id}
    else if (count($request_parts) == 3 && $request_parts[0] == 'blog-articles' && ctype_digit($request_parts[1]) && $request_parts[2]) {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $article_id = $request_parts[1];
      $content_id = $request_parts[2];
      require("controllers/admin-blog-articles-edit-content.inc.php"); exit;
    }
    # /blog-articles/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'blog-articles' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-blog-articles-add.inc.php"); exit;
    }
    # /blog-articles/upload
    else if (count($request_parts) == 2 && $request_parts[0] == 'blog-articles' && $request_parts[1] == 'upload') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-blog-articles-upload.inc.php"); exit;
    }
    # /pages
    else if (count($request_parts) == 1 && $request_parts[0] == 'pages') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-pages.inc.php"); exit;
    }
    # /pages/{:page_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'pages' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'pages' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $page_id = $request_parts[1];
      require("controllers/admin-pages-edit.inc.php"); exit;
    }
    # /pages/{:page_id}/add
    else if (count($request_parts) == 3 && $request_parts[0] == 'pages' && ctype_digit($request_parts[1]) && $request_parts[2] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $page_id = $request_parts[1];
      $content_id = null;
      require("controllers/admin-pages-edit-content.inc.php"); exit;
    }
    # /pages/{:page_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'pages' && ctype_digit($request_parts[1]) && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $page_id = $request_parts[1];
      require("controllers/admin-pages-delete.inc.php"); exit;
    }
    # /pages/{:page_id}/{:content_id}
    else if (count($request_parts) == 3 && $request_parts[0] == 'pages' && ctype_digit($request_parts[1]) && $request_parts[2]) {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $page_id = $request_parts[1];
      $content_id = $request_parts[2];
      require("controllers/admin-pages-edit-content.inc.php"); exit;
    }
    # /pages/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'pages' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-pages-add.inc.php"); exit;
    }
    # /pages/upload
    else if (count($request_parts) == 2 && $request_parts[0] == 'pages' && $request_parts[1] == 'upload') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-pages-upload.inc.php"); exit;
    }
    # /stores
    else if (count($request_parts) == 1 && $request_parts[0] == 'stores') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-stores.inc.php"); exit;
    }
    # /stores/{:store_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'stores' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'stores' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $store_id = $request_parts[1];
      require("controllers/admin-stores-edit.inc.php"); exit;
    }
    # /stores/{:store_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'stores' && ctype_digit($request_parts[1]) && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $store_id = $request_parts[1];
      require("controllers/admin-stores-delete.inc.php"); exit;
    }
    # /stores/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'stores' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-stores-add.inc.php"); exit;
    }
    # /events
    else if (count($request_parts) == 1 && $request_parts[0] == 'events') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-events.inc.php"); exit;
    }
    # /events/{:event_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'events' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'events' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $event_id = $request_parts[1];
      require("controllers/admin-events-edit.inc.php"); exit;
    }
    # /events/{:event_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'events' && ctype_digit($request_parts[1]) && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $event_id = $request_parts[1];
      require("controllers/admin-events-delete.inc.php"); exit;
    }
    # /events/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'events' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-events-add.inc.php"); exit;
    }
    # /promotions
    else if (count($request_parts) == 1 && $request_parts[0] == 'promotions') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-promotions.inc.php"); exit;
    }
    # /promotions/{:promotion_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'promotions' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'promotions' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $promotion_id = $request_parts[1];
      require("controllers/admin-promotions-edit.inc.php"); exit;
    }
    # /promotions/{:promotion_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'promotions' && ctype_digit($request_parts[1]) && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $promotion_id = $request_parts[1];
      require("controllers/admin-promotions-delete.inc.php"); exit;
    }
    # /promotions/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'promotions' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-promotions-add.inc.php"); exit;
    }
    # /products-categories
    else if (count($request_parts) == 1 && $request_parts[0] == 'products-categories') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-products-categories.inc.php"); exit;
    }
    # /products-categories/{:category_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'products-categories' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'products-categories' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $category_id = $request_parts[1];
      require("controllers/admin-products-categories-edit.inc.php"); exit;
    }
    # /products-categories/{:category_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'products-categories' && ctype_digit($request_parts[1]) && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $category_id = $request_parts[1];
      require("controllers/admin-products-categories-delete.inc.php"); exit;
    }
    # /products-categories/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'products-categories' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-products-categories-add.inc.php"); exit;
    }
    # /products
    else if (count($request_parts) == 1 && $request_parts[0] == 'products') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-products.inc.php"); exit;
    }
    # /products/{:product_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'products' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'products' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $product_id = $request_parts[1];
      require("controllers/admin-products-edit.inc.php"); exit;
    }
    # /products/{:product_id}/add
    else if (count($request_parts) == 3 && $request_parts[0] == 'products' && ctype_digit($request_parts[1]) && $request_parts[2] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $product_id = $request_parts[1];
      $content_id = null;
      require("controllers/admin-products-edit-content.inc.php"); exit;
    }
    # /products/{:product_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'products' && ctype_digit($request_parts[1]) && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $product_id = $request_parts[1];
      require("controllers/admin-products-delete.inc.php"); exit;
    }
    # /products/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'products' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-products-add.inc.php"); exit;
    }
    # /products/upload
    else if (count($request_parts) == 2 && $request_parts[0] == 'products' && $request_parts[1] == 'upload') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-products-upload.inc.php"); exit;
    }
    # /menus
    else if (count($request_parts) == 1 && $request_parts[0] == 'menus') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-menus.inc.php"); exit;
    }
    # /menus/{:menu_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'menus' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'menus' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $menu_id = $request_parts[1];
      require("controllers/admin-menus-edit.inc.php"); exit;
    }
    # /menus/{:menu_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'menus' && ctype_digit($request_parts[1]) && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $menu_id = $request_parts[1];
      require("controllers/admin-menus-delete.inc.php"); exit;
    }
    # /menus/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'menus' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-menus-add.inc.php"); exit;
    }
    # /redirects
    else if (count($request_parts) == 1 && $request_parts[0] == 'redirects') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-redirects.inc.php"); exit;
    }
    # /redirects/{:redirect_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'redirects' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'redirects' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $redirect_id = $request_parts[1];
      require("controllers/admin-redirects-edit.inc.php"); exit;
    }
    # /redirects/{:redirect_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'redirects' && ctype_digit($request_parts[1]) && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $redirect_id = $request_parts[1];
      require("controllers/admin-redirects-delete.inc.php"); exit;
    }
    # /redirects/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'redirects' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-redirects-add.inc.php"); exit;
    }
    # /flyers
    else if (count($request_parts) == 1 && $request_parts[0] == 'flyers') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-flyers.inc.php"); exit;
    }
    # /flyers/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'flyers' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-flyers-add.inc.php"); exit;
    }
    # /flyers/{:flyer_id}/products
    else if (count($request_parts) == 2 && $request_parts[0] == 'flyers' ||
             count($request_parts) == 3 && $request_parts[0] == 'flyers' && $request_parts[2] == 'products') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $id = $request_parts[1];
      require("controllers/admin-flyers-products.inc.php"); exit;
    }
    # /flyers/{:flyer_id}/products/{:product_id}/edit
    else if (count($request_parts) == 4 && $request_parts[0] == 'flyers' && ctype_digit($request_parts[1]) && $request_parts[2] == 'products' && ctype_digit($request_parts[3]) ||
             count($request_parts) == 5 && $request_parts[0] == 'flyers' && ctype_digit($request_parts[1]) && $request_parts[2] == 'products' && ctype_digit($request_parts[3]) && $request_parts[4] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $flyer_id = $request_parts[1];
      $product_id = $request_parts[3];
      require("controllers/admin-flyers-products-edit.inc.php"); exit;
    }
    # /flyers/{:flyer_id}/products/{:product_id}/delete
    else if (count($request_parts) == 5 && $request_parts[0] == 'flyers' && ctype_digit($request_parts[1]) && $request_parts[2] == 'products' && ctype_digit($request_parts[3]) && $request_parts[4] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $flyer_id = $request_parts[1];
      $product_id = $request_parts[3];
      require("controllers/admin-flyers-products-delete.inc.php"); exit;
    }
    # /flyers/{:flyer_id}/edit
    else if (count($request_parts) == 3 && $request_parts[0] == 'flyers' && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $id = $request_parts[1];
      require("controllers/admin-flyers-edit.inc.php"); exit;
    }
    # /flyers/{:flyer_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'flyers' && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $id = $request_parts[1];
      require("controllers/admin-flyers-delete.inc.php"); exit;
    }
    # /users-be
    else if (count($request_parts) == 1 && $request_parts[0] == 'users-be') {
      if (!in_array($principal['role'], array(1))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-users-be.inc.php"); exit;
    }
    # /users-be/{:user_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'users-be' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'users-be' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $user_id = $request_parts[1];
      require("controllers/admin-users-be-edit.inc.php"); exit;
    }
    # /users-be/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'users-be' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-users-be-add.inc.php"); exit;
    }
    # /users
    else if (count($request_parts) == 1 && $request_parts[0] == 'users') {
      if (!in_array($principal['role'], array(1, 2))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-users.inc.php"); exit;
    }
    # /users/{:user_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'users' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'users' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1, 2))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $user_id = $request_parts[1];
      require("controllers/admin-users-edit.inc.php"); exit;
    }
    # /users/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'users' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1, 2))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-users-add.inc.php"); exit;
    }
    # /banners
    else if (count($request_parts) == 1 && $request_parts[0] == 'banners') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-banners.inc.php"); exit;
    }
    # /banners/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'banners' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-banners-add.inc.php"); exit;
    }
    # /banners/{:banner_id}/edit
    else if (count($request_parts) == 2 && $request_parts[0] == 'banners' ||
             count($request_parts) == 3 && $request_parts[0] == 'banners' && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $id = $request_parts[1];
      require("controllers/admin-banners-edit.inc.php"); exit;
    }
    # /banners/{:banner_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'banners' && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $id = $request_parts[1];
      require("controllers/admin-banners-delete.inc.php"); exit;
    }
    # /setting
    else if (count($request_parts) == 1 && $request_parts[0] == 'setting') {
        if (!in_array($principal['role'], array(1,3))) {
            header("Location: " . BASE_URL . "/admin/login"); exit;
        }
        require("controllers/admin-setting.inc.php"); exit;
    }
    # /wslog
    else if (count($request_parts) == 1 && $request_parts[0] == 'wslog') {
      if (!in_array($principal['role'], array(1))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-wslog.inc.php"); exit;
    }
    # /wslog/{:log_id}/edit
    else if (count($request_parts) == 2 && $request_parts[0] == 'wslog' ||
             count($request_parts) == 3 && $request_parts[0] == 'wslog' && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $id = $request_parts[1];
      require("controllers/admin-wslog-edit.inc.php"); exit;
    }
    # /beacons
    else if (count($request_parts) == 1 && $request_parts[0] == 'beacons') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-beacons.inc.php"); exit;
    }
    # /beacons/{:beacon_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'beacons' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'beacons' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $beacon_id = $request_parts[1];
      require("controllers/admin-beacons-edit.inc.php"); exit;
    }
    # /beacons/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'beacons' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-beacons-add.inc.php"); exit;
    }
    # /beacons/{:beacon_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'beacons' && ctype_digit($request_parts[1]) && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $beacon_id = $request_parts[1];
      require("controllers/admin-beacons-delete.inc.php"); exit;
    }
    # /notifications
    else if (count($request_parts) == 1 && $request_parts[0] == 'notifications') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-notifications.inc.php"); exit;
    }
    # /notifications/{:notification_id}
    else if (count($request_parts) == 2 && $request_parts[0] == 'notifications' && ctype_digit($request_parts[1]) ||
             count($request_parts) == 3 && $request_parts[0] == 'notifications' && ctype_digit($request_parts[1]) && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $notification_id = $request_parts[1];
      require("controllers/admin-notifications-edit.inc.php"); exit;
    }
    # /notifications/{:notification_id}/push
    else if (count($request_parts) == 3 && $request_parts[0] == 'notifications' && ctype_digit($request_parts[1]) && $request_parts[2] == 'push') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $notification_id = $request_parts[1];
      require("controllers/admin-notifications-push.inc.php"); exit;
    }
    # /notifications/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'notifications' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-notifications-add.inc.php"); exit;
    }
    # /notifications/{:notification_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'notifications' && ctype_digit($request_parts[1]) && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $notification_id = $request_parts[1];
      require("controllers/admin-notifications-delete.inc.php"); exit;
    }
    # /qrcode
    else if (count($request_parts) == 1 && $request_parts[0] == 'qrcode') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-qrcode.inc.php"); exit;
    }
    # /qrcode/add
    else if (count($request_parts) == 2 && $request_parts[0] == 'qrcode' && $request_parts[1] == 'add') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      require("controllers/admin-qrcode-add.inc.php"); exit;
    }
    # /qrcode/{:qrcode_id}/edit
    else if (count($request_parts) == 2 && $request_parts[0] == 'qrcode' ||
             count($request_parts) == 3 && $request_parts[0] == 'qrcode' && $request_parts[2] == 'edit') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $id = $request_parts[1];
      require("controllers/admin-qrcode-edit.inc.php"); exit;
    }
    # /qrcode/{:qrcode_id}/view
    else if (count($request_parts) == 3 && $request_parts[0] == 'qrcode' && $request_parts[2] == 'view') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $id = $request_parts[1];
      require("controllers/admin-qrcode-view.inc.php"); exit;
    }
    # /qrcode/{:banner_id}/delete
    else if (count($request_parts) == 3 && $request_parts[0] == 'qrcode' && $request_parts[2] == 'delete') {
      if (!in_array($principal['role'], array(1,3))) {
        header("Location: " . BASE_URL . "/admin/login"); exit;
      }
      $id = $request_parts[1];
      require("controllers/admin-qrcode-delete.inc.php"); exit;
    }
  }

  # default (not found)
  not_found();