diff --git a/assets/php/aplication.php b/assets/php/aplication.php index 15c5adc..a21e3e4 100644 --- a/assets/php/aplication.php +++ b/assets/php/aplication.php @@ -1,3 +1,124 @@ \ No newline at end of file +/** + * Clase que mantiene el estado global de la aplicación. + */ +class Aplicacion { + private static $instancia; + + /** + * Permite obtener una instancia de Aplicacion. + * + * @return Applicacion Obtiene la única instancia de la Aplicacion + */ + public static function getSingleton() { + if ( !self::$instancia instanceof self) { + self::$instancia = new self; + } + return self::$instancia; + } + + /** + * @var array Almacena los datos de configuración de la BD + */ + private $bdDatosConexion; + + /** + * Almacena si la Aplicacion ya ha sido inicializada. + * + * @var boolean + */ + private $inicializada = false; + + /** + * @var \mysqli Conexión de BD. + */ + private $conn; + + /** + * Evita que se pueda instanciar la clase directamente. + */ + private function __construct() {} + + /** + * Evita que se pueda utilizar el operador clone. + */ + public function __clone() { + throw new \Exception('No tiene sentido el clonado.'); + } + + + /** + * Evita que se pueda utilizar serialize(). + */ + public function __sleep() { + throw new \Exception('No tiene sentido el serializar el objeto.'); + } + + /** + * Evita que se pueda utilizar unserialize(). + */ + public function __wakeup() { + throw new \Exception('No tiene sentido el deserializar el objeto.'); + } + + /** + * Inicializa la aplicación. + * + * @param array $bdDatosConexion datos de configuración de la BD + */ + public function init($bdDatosConexion) { + if ( ! $this->inicializada ) { + $this->bdDatosConexion = $bdDatosConexion; + session_start(); + $this->inicializada = true; + } + } + + /** + * Cierre de la aplicación. + */ + public function shutdown() { + $this->compruebaInstanciaInicializada(); + if ($this->conn !== null) { + $this->conn->close(); + } + } + + /** + * Comprueba si la aplicación está inicializada. Si no lo está muestra un mensaje y termina la ejecución. + */ + private function compruebaInstanciaInicializada() { + if (! $this->inicializada ) { + echo "ERROR 403: app_not_configured."; + exit(); + } + } + + /** + * Devuelve una conexión a la BD. Se encarga de que exista como mucho una conexión a la BD por petición. + * + * @return \mysqli Conexión a MySQL. + */ + public function conexionBd() { + $this->compruebaInstanciaInicializada(); + if (! $this->conn ) { + $bdHost = $this->bdDatosConexion['host']; + $bdUser = $this->bdDatosConexion['user']; + $bdPass = $this->bdDatosConexion['pass']; + $bd = $this->bdDatosConexion['bd']; + + $this->conn = new \mysqli($bdHost, $bdUser, $bdPass, $bd); + if ( $this->conn->connect_errno ) { + echo "Error de conexión a la BD: (" . $this->conn->connect_errno . ") " . utf8_encode($this->conn->connect_error); + exit(); + } + if ( ! $this->conn->set_charset("utf8mb4")) { + echo "Error al configurar la codificación de la BD: (" . $this->conn->errno . ") " . utf8_encode($this->conn->error); + exit(); + } + } + return $this->conn; + } +} \ No newline at end of file diff --git a/assets/php/config.php b/assets/php/config.php index 0311826..2d8ef8e 100644 --- a/assets/php/config.php +++ b/assets/php/config.php @@ -31,4 +31,17 @@ require_once('template.php'); $template = new Template(); $prefix = $template->get_prefix(); + + /** + * Initialize the application: + */ + require_once('aplication.php'); + $app = Aplicacion::getSingleton(); + $app->init(array('host'=>BD_HOST, 'bd'=>BD_NAME, 'user'=>BD_USER, 'pass'=>BD_PASS)); + + /** + * @see http://php.net/manual/en/function.register-shutdown-function.php + * @see http://php.net/manual/en/language.types.callable.php + */ + register_shutdown_function(array($app, 'shutdown')); ?> diff --git a/assets/php/dao.php b/assets/php/dao.php index 849ecbe..68cddeb 100644 --- a/assets/php/dao.php +++ b/assets/php/dao.php @@ -1,37 +1,24 @@ mysqli) { - $this->mysqli = new mysqli(self::_SERVERNAME, self::_USERNAME, - self::_PASSWORD, $bd_name); - } - // echo "Conexión a la BD, satisfactoria."; - } catch (Exception $e){ - echo "Error de conexión a la BD: ". mysqli_connect_error(); - exit(); + if($bd_name != BD_NAME) { + echo "Está intentando acceder a una base de datos que no existe, puede que la aplicación no funcione correctamente"; } - - /* ... */ + $app = Aplicacion::getSingleton(); + $this->mysqli = $app->conexionBd(); } - //Destructor: + //Destructor (Ya no es necesdario): + /* public function __destruct(){ $this->mysqli->close(); } + */ - //Methods: } ?> \ No newline at end of file diff --git a/assets/php/template.php b/assets/php/template.php index 956277a..88637e0 100644 --- a/assets/php/template.php +++ b/assets/php/template.php @@ -2,7 +2,7 @@ class Template { //Constants: - private const _NUMPAGES = 10; + //private const _NUMPAGES = 10; //Constant to page results. //Attributes: public $page; //Page Name. @@ -403,6 +403,7 @@ } + //Print Cinemas info: function print_cinemas(){ //List of the cinemas: require_once(__DIR__.'/common/cinema_dao.php'); @@ -423,6 +424,7 @@ $phones[$key] = $value->getPhone(); } } + switch($this->page){ case "Panel de Administrador": echo "
@@ -439,46 +441,47 @@ "; - if(is_array($cinemas)){ - for($i = 0; $i < count($cinemas); $i++){ - echo ' - '. $ids[$i] .' - '. $names[$i] .' - '. $directions[$i] .' - '. $phones[$i] .' - -
- - - - - -
- - -
- - - - - -
- - - '; - } - } - echo' - -
-
- '; + if(is_array($cinemas)){ + for($i = 0; $i < count($cinemas); $i++){ + echo ' + '. $ids[$i] .' + '. $names[$i] .' + '. $directions[$i] .' + '. $phones[$i] .' + +
+ + + + + +
+ + +
+ + + + + +
+ + + '; + } + } + echo' + + +
+ '; break; + + default: break; } } - //Print session MSG: function print_msg() { if(isset($_SESSION['message'])){ diff --git a/panel_admin/includes/formFilm.php b/panel_admin/includes/formFilm.php index aa0dd80..d66b0ab 100644 --- a/panel_admin/includes/formFilm.php +++ b/panel_admin/includes/formFilm.php @@ -113,7 +113,7 @@ class FormFilm extends Form { if(!empty($tittle)&&$duration>0&&!empty($language)&&!empty($description)){ // comprobar si existe una pelicula con el mismo titulo e idioma $exist = $bd-> GetFilm($tittle,$language); - if( mysqli_num_rows($exist) != 0){ + if(mysqli_num_rows($exist) != 0){ $this->correct =false; } else{ diff --git a/panel_admin/panelAdmin.php b/panel_admin/panelAdmin.php index d1a86c2..b0eea44 100644 --- a/panel_admin/panelAdmin.php +++ b/panel_admin/panelAdmin.php @@ -34,9 +34,6 @@ }; break; case 'mf': require_once('manage_films.php'); - //echo $_SERVER['DOCUMENT_ROOT']."/../img"; - echo TMP_DIR; - //echo $_SERVER['PHP_SELF']; if(isset($_POST['edit_film'])) { editFilm(); } diff --git a/panel_manager/index.php b/panel_manager/index.php index 1804bee..f2e217b 100644 --- a/panel_manager/index.php +++ b/panel_manager/index.php @@ -1,9 +1,7 @@ -