<?php class Template { //Constants: //private const _NUMPAGES = 10; //Constant to page results. //Attributes: private $page; //Page Name. private $prefix; //Page prefix. private $session; //"Iniciar Sesión" (if user isn´t logged in), "Cerrar Sesión" (otherwise). private $session_route; //"login/" (if user isn´t logged in), "logout/" (otherwise). private $panel; //Button to access the user's dashboard (only displayed if logged in). private $user_route; //Route of the panel (depends on the type of user). private $sessionButtonClass; //Type of button to login or logout. //Constructor: function __construct(){ $this->page = $_SERVER['PHP_SELF']; //Page that instantiates the template. $this->prefix = '../'; //Default prefix. $this->set_page_prefix(); //Assigns the name and prefix of the page. $this->session = 'Iniciar Sesión'; //Default, the session has not started. $this->session_route = 'login/'; //Default, the session has not started. $this->panel = ''; //Default, the session has not started. $this->user_route = 'panel_user/'; //Default, the type of client is user. $this->sessionButtonClass = ''; //Default, normal button. } //Methods: //Assigns the name and prefix of the page: private function set_page_prefix() { switch(true){ case strpos($this->page, 'panel_user'): $this->page = 'Panel de Usuario'; break; case strpos($this->page, 'panel_manager'): $this->page = 'Panel de Gerente'; break; case strpos($this->page, 'panel_admin'): $this->page = 'Panel de Administrador'; break; case strpos($this->page, 'login'): $this->page = 'Acceso'; break; case strpos($this->page, 'logout'): $this->page = 'Cerrar Sesión'; break; case strpos($this->page, 'register'): $this->page = 'Registro de Usuario'; break; case strpos($this->page, 'showtimes'): $this->page = 'Cartelera'; break; case strpos($this->page, 'promotions'): $this->page = 'Promociones'; break; case strpos($this->page, 'cinemas'): $this->page = 'Nuestros Cines'; break; case strpos($this->page, 'about_us'): $this->page = 'Sobre FDI-Cines'; $this->prefix = '../../'; break; case strpos($this->page, 'terms'): $this->page = 'Términos y Condiciones'; $this->prefix = '../../'; break; case strpos($this->page, 'detalles'): $this->page = 'Detalles'; $this->prefix = '../../'; break; case strpos($this->page, 'bocetos'): $this->page = 'Bocetos'; $this->prefix = '../../'; break; case strpos($this->page, 'miembros'): $this->page = 'Miembros'; $this->prefix = '../../'; break; case strpos($this->page, 'planificacion'): $this->page = 'Planificación'; $this->prefix = '../../'; break; case strpos($this->page, 'contacto'): $this->page = 'Contacto'; break; case strpos($this->page, 'assets'): $this->prefix = '../../../'; break; default: $this->page = 'FDI-Cines'; $this->prefix = './'; break; } } //Returns page name: function get_page(){ return $this->page; } //Returns page prefix: function get_prefix(){ return $this->prefix; } //Print generic Head: function print_head(){ $page = $this->page; $prefix = $this->prefix; echo"<head> <title>CompluCine | {$page}</title> <meta charset='utf-8' /> <link id='estilo' rel='stylesheet' type='text/css' href='{$prefix}assets/css/main.css'> <noscript><h1>Esta página requiere JavaScript para su correcto funcionamiento. Compruebe si JavaScript está deshabilitado en su navegador.</h1></noscript> <meta name='viewport' content='width=device-width, initial-scale=1'> <link rel='icon' href='{$prefix}img/favicon.png' /> </head>\n"; } //Print generic Header: function print_header(){ $page = $this->page; $prefix = $this->prefix; $session = $this->session; $sessionButtonClass = $this->sessionButtonClass; $session_route = $this->session_route; $user_route = $this->user_route; $panel =$this->panel; if(isset($_SESSION["rol"])){ if($_SESSION["rol"] === "admin") $user_route = 'panel_admin/'; else if($_SESSION["rol"] === "manager") $user_route = 'panel_manager/'; $panel = "<a href='{$prefix}{$user_route}'><li>Mi Panel</li></a>"; $session = 'Cerrar Sesión'; $sessionButtonClass = 'danger'; $session_route = 'logout/'; } if(isset($_SESSION["lastRol"]) && ($_SESSION["lastRol"] === "admin" || $_SESSION["lastRol"] === "manager" )){ $changeRol = "<a href='{$prefix}assets/php/common/resetRol.php'><li class='danger'>Volver a {$_SESSION["lastRol"]}</li></a>"; } else { $changeRol = null; } echo"<div class='header'> <a href='{$prefix}'><img src='{$prefix}img/favicon2.png' alt='favicon' /> CompluCine</a> | {$page} <div class='menu'> <nav>{$changeRol} <a href='{$prefix}{$session_route}'><li class={$sessionButtonClass}>{$session}</li></a> {$panel} <li>Menú <ul> <a href='{$prefix}'><li>Inicio</li></a> <a href='{$prefix}showtimes/'><li>Cartelera</li></a> <a href='{$prefix}promotions/'><li>Promociones</li></a> <a href='{$prefix}cinemas/'><li>Nuestros Cines</li></a> <a href='{$prefix}fdicines/miembros/'><li>Quiénes somos</li></a> <a href='{$prefix}contacto/'><li>Contacto</li></a> </ul> </li> </nav> </div> </div>\n"; } //Print generic subHeader: function print_subheader(){ //$page = $this->page; $prefix = $this->prefix; echo"<div class='header sub'> <div class='menu'> <nav> <a href='{$prefix}fdicines/about_us/'><li>Sobre FDI-Cines</li></a> <a href='{$prefix}fdicines/detalles/'><li>Detalles</li></a> <a href='{$prefix}fdicines/bocetos/'><li>Bocetos</li></a> <a href='{$prefix}fdicines/miembros/'><li>Miembros</li></a> <a href='{$prefix}fdicines/planificacion/'><li>Planificación</li></a> </nav> </div> </div>\n"; } //Print generic Main: function print_main($content = ""){ $page = $this->page; $prefix = $this->prefix; /* SubHeader on Main */ $sub_header = ''; if(strpos($_SERVER['PHP_SELF'], 'fdicines')){ $sub_header = "<!-- Sub Header --> <div class='header sub'> <div class='menu'> <nav> <a href='{$prefix}fdicines/about_us/'><li>Sobre FDI-Cines</li></a> <a href='{$prefix}fdicines/detalles/'><li>Detalles</li></a> <a href='{$prefix}fdicines/bocetos/'><li>Bocetos</li></a> <a href='{$prefix}fdicines/miembros/'><li>Miembros</li></a> <a href='{$prefix}fdicines/planificacion/'><li>Planificación</li></a> </nav> </div> </div>\n"; } /* MAIN */ if($prefix === "./"){ if(isset($_SESSION["nombre"])){ $tittle = "<h1>Bienvenido {$_SESSION["nombre"]}</h1>\n"; } else { $tittle = "<h1>Bienvenido a CompluCine</h1>\n"; } } else { $tittle = "<h1>{$page}</h1>\n"; } echo"<main> <div class='image'><a href='{$prefix}'><img src='{$prefix}img/logo_trasparente.png' alt='logo_FDI-Cines' /></a></div> {$sub_header} {$tittle}{$content} <hr /> </main>\n"; } //Print panel menu: function print_panelMenu($panel){ if($_SESSION["login"]){ $prefix = $this->prefix; $menus = array("<a href='./'><li>Panel Principal</li></a>"); switch($panel){ case "admin": array_push($menus, "<li>Ver como... <ul> <a href='./?state=un'><li>Usuario</li></a> <a href='./?state=ur'><li>Usuario registrado</li></a> <a href='./?state=ag'><li>Gerente</li></a> </ul> </li>"); array_push($menus, "<li>Modificar <ul> <a href='./?state=mc'><li>Cines</li></a> <a href='./?state=mf'><li>Películas</li></a> <a href='./?state=mp'><li>Promociones</li></a> <a href='./?state=mg'><li>Gerentes</li></a> </ul> </li>"); break; case "manager": array_push($menus, "<li>Ver como... <ul> <a href='./?state=view_user'><li>Usuario</li></a> <a href='./?state=view_ruser'><li>Usuario registrado</li></a> </ul> </li>"); array_push($menus, "<li>Modificar <ul> <a href='./?state=manage_halls'><li>Salas</li></a> <a href='./?state=manage_sessions'><li>Sesiones</li></a> </ul> </li>"); break; case "user": array_push($menus, "<a href='./?option=manage_profile'><li>Cuenta de usuario</li></a>"); array_push($menus, "<a href='./?option=purchases'><li>Historial Compras</li></a>"); array_push($menus, "<a href='./?option=payment'><li>Datos Pago</li></a>"); array_push($menus, "<a href='./?option=delete_user'><li>Eliminar Usuario</li></a>"); break; default: $menus = array(); break; } if($_SESSION["rol"] === $panel){ echo"<div class='header sub'> <div class='menu'> <nav>"; foreach($menus as $value){ echo $value; } echo"</nav> </div> </div> "; } } } //Print specific page content: function print_section($section){ /* Panel menu */ $sub_header = ''; if(strpos($_SERVER['PHP_SELF'], 'panel')){ echo "<!-- Panel Menu --> "; $this->print_panelMenu($_SESSION["rol"]); $this->print_msg(); } echo $section; } //Print Films Cards: function print_fimls(){ $reply = ""; //List of the movies: require_once(__DIR__.'/includes/film_dao.php'); $prefix= $this->get_prefix(); $films = new Film_DAO("complucine"); $films_array = $films->allFilmData(); $ids = array(); $tittles = array(); $descriptions = array(); $times = array(); $languages = array(); foreach($films_array as $key => $value){ $ids[$key] = $value->getId(); $tittles[$key] = $value->getTittle(); $descriptions[$key] = $value->getDescription(); $times[$key] = $value->getDuration(); $languages[$key] = $value->getLanguage(); } switch($this->page){ case "Cartelera": for($i = 0; $i < count($films_array); $i++){ $tittle = str_replace('_', ' ', $tittles[$i]); if($i%2 === 0){ if($i != 0) $reply .= "</div> "; $reply .= "<div class='column side'> "; } else{ if($i != 0) $reply .= "</div> "; $reply .= "<div class='column middle'> "; } $reply .= "<section id='".$tittles[$i]."'> <div class='zoom'> <div class='code showtimes'> <div class='image'><img src='".$prefix."img/films/".$tittles[$i].".jpg' alt='".$tittles[$i]."' /></div> <h2>".$tittle."</h2> <hr /> <div class='blockquote'> <p>".$descriptions[$i]."</p> </div> <li>Duración: ".$times[$i]." minutos</li> <li>Lenguaje: ".$languages[$i]."</li> </div> </div> </section> "; } $reply .= "</div>\n"; break; case "Panel de Administrador": $reply .= "<div class='column'>"; for($i = 0; $i < count($films_array); $i++){ $tittle = str_replace('_', ' ', $tittles[$i]); if($i%2 === 0){ if($i != 0) $reply .= "</div> "; $reply .= "<div class='column side'> "; } else{ if($i != 0) $reply .= "</div> "; $reply .= "<div class='column middle'> "; } $reply .= "<section id='".$tittles[$i]."'> <div class='zoom'> <div class='code showtimes'> <div class='image'><img src='".$prefix."img/films/".$tittles[$i].".jpg' alt='".$tittles[$i]."' /></div> <h2>".$tittle."</h2> <hr /> <form method='post' action='./index.php?state=mf'> <input name='id' type='hidden' value='".$ids[$i]."'> <input name='tittle' type='hidden' value='".$tittles[$i]."'> <input name='duration' type='hidden' value='".$times[$i]."'> <input name='language' type='hidden' value='".$languages[$i]."'> <input name='description' type='hidden' value='".$descriptions[$i]."'> <input type='submit' id='submit' value='Editar' name='edit_film' class='primary' /> </form> <form method='post' action='./index.php?state=mf'> <input name='id' type='hidden' value='".$ids[$i]."'> <input name='tittle' type='hidden' value='".$tittles[$i]."'> <input name='duration' type='hidden' value='".$times[$i]."'> <input name='language' type='hidden' value='".$languages[$i]."'> <input name='description' type='hidden' value='".$descriptions[$i]."'> <input type='submit' id='submit' value='Eliminar' name='delete_film' class='primary' /> </form> </div> </div> </section> "; } $reply .= "</div>\n"; break; case "Panel de Gerente": $reply .= "<div class='column'>"; for($i = 0; $i < count($films_array); $i++){ $tittle = str_replace('_', ' ', $tittles[$i]); if($i%2 === 0){ if($i != 0) $reply .= "</div> "; $reply .= "<div class='column side'> "; } else{ if($i != 0) $reply .= "</div> "; $reply .= "<div class='column middle'> "; } $reply .= "<section id='".$tittles[$i]."'> <div class='zoom'> <div class='code showtimes'> <div class='image'><img src='".$prefix."img/films/".$tittles[$i].".jpg' alt='".$tittles[$i]."' /></div> <h2>".$tittle."</h2> <hr /> <li>Duración: ".$times[$i]." minutos</li> <li>Lenguaje: ".$languages[$i]."</li> <form method='post' action='./?state=".$_SESSION["option"]."'> <input name='film' type='hidden' value='".$ids[$i]."'> <input name='tittle' type='hidden' value='".$tittles[$i]."'> <input name='duration' type='hidden' value='".$times[$i]."'> <input name='language' type='hidden' value='".$languages[$i]."'> <input name='description' type='hidden' value='".$descriptions[$i]."'> <input name='hall' type='hidden' value='".$_POST["hall"]."'> <input name='date' type='hidden' value='".$_POST["date"]."'> <input name='start' type='hidden' value='".$_POST["start"]."'> <input name='price' type='hidden' value='".$_POST["price"]."'> <input name='format' type='hidden' value='".$_POST["format"]."'> <input name='or_hall' type='hidden' value='".$_POST["or_hall"]."'> <input name='or_date' type='hidden' value='".$_POST["or_date"]."'> <input name='or_start' type='hidden' value='".$_POST["or_start"]."'> <input type='submit' id='submit' value='Seleccionar' name='select_film' class='primary' /> </form> </div> </div> </section> "; } $reply .= "</div>\n"; break; default: $reply .='<div class="column left"> <div class="galery"> <h1>Últimos Estrenos</h1><hr />'; $count = 0; for($i = count($tittles)-4; $i < count($tittles); $i++){ if($count%2===0){ if($count != 0) $reply .= " </div>"; $reply .= " <div class='fila'>"; } $reply .= " <div class='zoom'> <div class='columna'> <a href='".$prefix."showtimes/#".$tittles[$i]."'><div class='image'><img src='img/films/".$tittles[$i].".jpg' alt='".$tittles[$i]."' /></div></a> </div> </div>"; $count++; } $reply .= " </div> </div> </div> <div class='column right'> <div class='galery'>"; $count = rand(0, count($tittles)-1); $title = str_replace('_', ' ', $tittles[$count]); $reply .= " <h1>{$title}</h1><hr /> <div class='zoom'> <a href='".$prefix."showtimes/#".$tittles[$count]."'><div class='image main'><img src='img/films/".$tittles[$count].".jpg' alt='".$tittles[$count]."' /></div></a> </div> </div> </div>\n"; break; } return $reply; } //Print Cinemas info: function print_cinemas(){ $reply = ""; //List of the cinemas: require_once(__DIR__.'/includes/cinema_dao.php'); $cine = new Cinema_DAO("complucine"); $cinemas = $cine->allCinemaData(); $ids = array(); $names = array(); $directions = array(); $phones = array(); if(is_array($cinemas)){ foreach($cinemas as $key => $value){ $ids[$key] = $value->getId(); $names[$key] = $value->getName(); $directions[$key] = $value->getDirection(); $phones[$key] = $value->getPhone(); } } switch($this->page){ case "Panel de Administrador": $reply .= "<div class='row'> <div class='column side'></div> <div class='column middle'> <table class='alt'> <thead> <tr> <th>Id</th> <th>Nombre</th> <th>Direccion</th> <th>Telefono</th> </tr> </thead> <tbody> "; if(is_array($cinemas)){ for($i = 0; $i < count($cinemas); $i++){ $reply .= '<tr> <td>'. $ids[$i] .'</td> <td>'. $names[$i] .'</td> <td>'. $directions[$i] .'</td> <td>'. $phones[$i] .'</td> <td> <form method="post" action="index.php?state=mc"> <input name="id" type="hidden" value="'.$ids[$i].'"> <input name="name" type="hidden" value="'.$names[$i].'"> <input name="direction" type="hidden" value="'.$directions[$i].'"> <input name="phone" type="hidden" value="'.$phones[$i].'"> <input type="submit" id="submit" value="Editar" name="edit_cinema" class="primary" /> </form> </td> <td> <form method="post" action="index.php?state=mc"> <input name="id" type="hidden" value="'.$ids[$i].'"> <input name="name" type="hidden" value="'.$names[$i].'"> <input name="direction" type="hidden" value="'.$directions[$i].'"> <input name="phone" type="hidden" value="'.$phones[$i].'"> <input type="submit" id="submit" value="Eliminar" name="delete_cinema" class="primary" /> </form> </td> </tr> '; } } $reply .='</tbody> </table> </div> <div class="column side"></div> '; break; default: break; } return $reply; } //Print session MSG: function print_msg() { if(isset($_SESSION['message'])){ echo "<div>".$_SESSION['message']."</div>"; unset($_SESSION['message']); } } //Print generic Footer: function print_footer(){ $prefix = $this->prefix; $page = $this->page; /* TODO */ if(!isset($_SESSION["css"]) || $_SESSION["css"] === "assets/css/main.css"){ $css = "{$prefix}assets/css/highContrast.css"; $nameCSS = "Alto Contraste"; } else { $css = "{$prefix}assets/css/main.css"; $nameCSS = "Contraste Normal"; } /****/ echo"<footer> <div class='footer'> <p>© Práctica Final | Sistemas Web 2021 </p> </div> <a href='#'>▲Subir</a> | <a href='{$prefix}fdicines/about_us/'>Sobre FDI-Cines</a> | <a href='{$prefix}fdicines/terms_conditions/'>Términos de uso</a> | <a href='{$prefix}cinemas/'>Nuestros cines</a> | <a href='{$prefix}contacto/'>Contacto</a> | <button id='css' onclick=\"cambiarCSS('$css');\">$nameCSS</button> </footer>\n"; echo" <!-- Scripts --> <script type='text/javascript' src='{$prefix}assets/js/jquery-3.2.1.min.js'></script> <script src='{$prefix}assets/js/cambiarCSS.js'></script> <script src='{$prefix}assets/js/checkForms.js'></script> "; if($page === "FDI-Cines") echo"<script src='{$prefix}assets/js/promotions.js'></script>\n"; } } ?>