<?php


/**
 * @brief Gère l'affichage des pages en fonction de l'argument 'page' de la barre d'adresse
 * @note définit également la structure de la page (<head>)
 */
class controller
    {

    ///Instance de la classe
    private static $Ctrl;
    
    ///Code de la page courante
    private $currpage_code;
    
    ///Titre de la page courante
    private $currpage_title;
    
    ///URL de la page courante
    private $currpage_url;


    /**
     * @brief Instancie le contrôleur et charge les données de la barre d'adresse
     * @note Si le contrôleur a déja été instancié, cette methode executera uniquement route()
     */
    public static function init()
        {
        //Si l'instance de la classe est NULL
        if (!isset(self::$Ctrl))
            {
            //On instancie un nouveau controlleur
            self::$Ctrl = new controller();
            }

        //On lance le routage
        self::$Ctrl->route();
        }

    /**
     * @brief Récupère le contrôleur utilisé
     * @return controller 
     * @warning Si le contrôleur n'a pas été instancié, renverra null
     */
    public static function get()
        {
        return self::$Ctrl;
        }

    /**
     * @brief Génère le code HTML de la page désirée, enfonction du terminal
     * @note le contrôleur doit avoir été instancié et être routé
     */
    public function render()
        {
        //Chargement du fichier user.php pour la session et de la classe DAO
        require_once "metier/user.php";
        
        //Dérrage de la sessions
        session_start();
        
        
        //Detection du type de terminal (smartphone ou normal)
        $bSmartphone =
                strstr($_SERVER['HTTP_USER_AGENT'], 'Android')
                || strstr($_SERVER['HTTP_USER_AGENT'], 'BlackBerry')
                || strstr($_SERVER['HTTP_USER_AGENT'], 'Windows')
                || strstr($_SERVER['HTTP_USER_AGENT'], 'Opera Mini')
                || strstr($_SERVER['HTTP_USER_AGENT'], 'Mobile')
                || strstr($_SERVER['HTTP_USER_AGENT'], 'iPad');

        //Cette variable permettra par la suite de décider du placement de 
        //  certains menus ainsi que de la feuille de style
        ?>

        <!-- Structure globale du template -->

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
        <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                <?php 
                    echo "<link href=\"style/global.css\" rel=\"stylesheet\" type=\"text/css\" />";
                    if ($bSmartphone)
                        {
                        echo "<link href=\"style/smartphone.css\" rel=\"stylesheet\" type=\"text/css\" />";
                        }
                ?>
                <script type="text/javascript" src ="scripts/manager.js"></script>
                <?php echo " <title>BurgerQuizz - $this->currpage_title</title>"; ?>
                <link rel="icon" type="image/ico" href="favicon.ico" />
            </head>
           <body>

                <?php
                // Bandeau de haut de page
                include 'view/template/header.php';
                
                // Menu de GAUCHE
                if ($bSmartphone)
                    {
                    include 'view/template/smartphone_menu_left.php';
                    } 
                    else
                    {
                    include 'view/template/menu_left.php';
                    }


                // Menu de DROITE
                if ($bSmartphone)
                    {
                    include 'view/template/smartphone_menu_right.php';
                    } 
                    else
                    {
                    include 'view/template/menu_right.php';
                    }

                //Contenu principal de la page
                echo "<div id=\"core\">";
                echo "  <div id=\"content\">";
                include $this->currpage_url;
                echo "  </div>";
                echo "</div>";
                ?>


            </body>

        </html>
        <?php
        }

    /**
     * @brief Charge les données de la barre d'adresse
     * @brief Charge les vars $currpage_code, $currpage_title, $currpage_url correspondant à la page en cours grace au param 'page'
     */
    function route()
        {
        //Récupération de la page actuelle
        if (isset($_GET['page']))
            {//si le code est inscrit {
            if (!array_key_exists($_GET['page'], config::$pages))
                {//si le code n'est pas dans la liste des pages
                $this->currpage_code = '404';
                } else
                {
                $this->currpage_code = $_GET['page'];
                }
            } else
            {
            $this->currpage_code = 'welcome';
            }


        //Récupération du template à utiliser (smartphone/normal)
        if (isset($_GET['tmpl']) && $_GET['tmpl'] == "smartphone")
            {
            $this->currpage_template = "smartphone";
            } else
            {
            $this->currpage_template = "global";
            }

        //Titre & URL
        $this->currpage_title = config::$pages[$this->currpage_code][0];
        $this->currpage_url = config::$pages[$this->currpage_code][1];
        }

    }
?>
