From 8b4ed63f9ff7c053b7112b486c60e82b7eacb43a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fernando=20M=C3=A9ndez?=
<45081533+FerMdez@users.noreply.github.com>
Date: Sat, 8 May 2021 15:17:51 +0200
Subject: [PATCH] Add files via upload
---
assets/php/aplication.php | 123 +++++++++++++++++++++++++++++-
assets/php/config.php | 13 ++++
assets/php/dao.php | 27 ++-----
assets/php/template.php | 75 +++++++++---------
panel_admin/includes/formFilm.php | 2 +-
panel_admin/panelAdmin.php | 3 -
panel_manager/index.php | 6 +-
panel_manager/panel_manager.php | 4 +-
8 files changed, 186 insertions(+), 67 deletions(-)
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 "