Versión inicial funcional de MyDiary

This commit is contained in:
2026-09-17 23:47:51 +02:00
commit adde97c654
148 changed files with 44990 additions and 0 deletions
+418
View File
@@ -0,0 +1,418 @@
<?php
if(session_status() === PHP_SESSION_NONE){
session_start();
}
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
class ApiJuego{
private $clientId;
private $clientSecret;
private $accessToken;
public function __construct(){
$this->clientId = $_ENV['clientIdIGDB'];
$this->clientSecret = $_ENV['clientSecretIGDB'];
$this->accessToken = null;
} // Fin __construct()
private function obtenerToken(){
// Comprobamos si tenemos un token guardado en sesión y si todavía no ha caducado.
if(isset($_SESSION['igdb_access_token']) && isset($_SESSION['igdb_token_expira']) && time() < $_SESSION['igdb_token_expira']){
$this->accessToken = $_SESSION['igdb_access_token'];
return true;
}
// No tenemos token o ha caducado. Pedimos uno nuevo a Twitch.
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://id.twitch.tv/oauth2/token');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POSTFIELDS,
[
'client_id' => $this->clientId,
'client_secret' => $this->clientSecret,
'grant_type' => 'client_credentials'
]
);
$respuesta = curl_exec($curl);
if(curl_errno($curl)){
$error = curl_error($curl);
curl_close($curl);
return [
'error' => 'No se pudo obtener el token de IGDB.',
'error_tecnico' => $error
];
}
$codigoHTTP = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
$resultado = json_decode(
$respuesta,
true
);
if($codigoHTTP < 200 || $codigoHTTP >= 300 || isset($resultado['error'])){
return [
'error' => 'No se pudo obtener el token de IGDB.',
'error_tecnico' => $resultado
];
}
// Guardamos el token en la sesión.
$this->accessToken = $resultado['access_token'];
$_SESSION['igdb_access_token'] = $resultado['access_token'];
// Dejamos un margen de 60 segundos antes de considerar que el token ha caducado.
$_SESSION['igdb_token_expira'] = time() + $resultado['expires_in'] - 60;
return true;
} // Fin obtenerToken()
private function peticion($endpoint, $consulta){
// Si no tenemos token, lo obtenemos
if($this->accessToken === null){
$resultado = $this->obtenerToken();
if(is_array($resultado)){
return $resultado;
}
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://api.igdb.com/v4/'.$endpoint);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $consulta);
curl_setopt($curl, CURLOPT_HTTPHEADER,
[
'Client-ID: '.$this->clientId,
'Authorization: Bearer '.$this->accessToken,
'Content-Type: text/plain'
]
);
$respuesta = curl_exec($curl);
$codigoHTTP = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if(curl_errno($curl)){
$error = curl_error($curl);
curl_close($curl);
return [
'error' => $error
];
}
curl_close($curl);
// Si el token ha caducado o ha quedado invalidado, obtenemos otro
if($codigoHTTP == 401){
// Eliminamos el token almacenado.
unset($_SESSION['igdb_access_token']);
unset($_SESSION['igdb_token_expira']);
$this->accessToken = null;
// Obtenemos uno nuevo.
$resultado = $this->obtenerToken();
if(is_array($resultado)){
return $resultado;
}
// Reintentamos la misma petición.
return $this->peticion(
$endpoint,
$consulta
);
}
$resultado = json_decode($respuesta, true);
if($codigoHTTP < 200 || $codigoHTTP >= 300){
return [
'error' => 'IGDB devolvió un error.',
'error_tecnico' => $resultado
];
}
return $resultado;
} // Fin peticion()
public function buscar($nombre){
$nombre = addslashes($nombre);
$consulta = '
fields id,name,first_release_date,cover.image_id;
search "'.$nombre.'";
limit 16;
';
$respuesta = $this->peticion('games', $consulta);
return $respuesta;
} // Fin buscar()
public function detalles($idApi){
$consulta = '
fields
id,
name,
summary,
first_release_date,
cover.image_id,
rating,
genres.name,
platforms.name,
franchises.name,
expansions.name,
dlcs.name,
involved_companies.company.name,
involved_companies.developer,
involved_companies.publisher;
where id = '.$idApi.';
';
$respuesta = $this->peticion('games', $consulta);
if(isset($respuesta['error'])){
return $respuesta;
}
if(empty($respuesta)){
return [
'error' => 'No se encontró el videojuego solicitado.'
];
}
$juego = $respuesta[0];
// Duración estimada
$consultaDuracion = 'fields normally,hastily,completely; where game_id = '.$idApi.';';
$duracion = $this->peticion('game_time_to_beats', $consultaDuracion);
if(!isset($duracion['error']) && !empty($duracion)){
$juego['time_to_beat'] = $duracion[0];
}
return $juego;
} // Fin detalles()
public function transformarDatos($resultado){
$juego = [];
$juego['idApi'] = $resultado['id'];
$juego['nombreJuego'] = $resultado['name'];
if(isset($resultado['first_release_date'])){
$juego['anoJuego'] = date('Y', $resultado['first_release_date']);
}else{
$juego['anoJuego'] = '';
}
if(isset($resultado['rating'])){
$juego['ratingAvgJuego'] = number_format($resultado['rating'] / 20, 2);
}else{
$juego['ratingAvgJuego'] = null;
}
$juego['sinopsisJuego'] = $resultado['summary'] ?? '';
// Poster
if(isset($resultado['cover']['image_id']) && !empty($resultado['cover']['image_id'])
){
$imageId = $resultado['cover']['image_id'];
$juego['posterJuego'] = 'https://images.igdb.com/igdb/image/upload/t_cover_big_2x/'.$imageId.'.jpg';
}else{
$juego['posterJuego'] = '';
}
// Géneros
$generos = [];
if(isset($resultado['genres'])){
foreach($resultado['genres'] as $genero){
if(isset($genero['name'])){
$generos[] = $genero['name'];
}
}
}
$juego['generoJuego'] = implode(', ', $generos);
// Plataformas
$plataformas = [];
if(isset($resultado['platforms'])){
foreach($resultado['platforms'] as $plataforma){
if(isset($plataforma['name'])){
$nombrePlataforma = $plataforma['name'];
if($nombrePlataforma === 'PC (Microsoft Windows)'){
$nombrePlataforma = 'PC';
}
$plataformas[] = $nombrePlataforma;
}
}
}
$juego['plataformasJuego'] = implode(', ', $plataformas);
// Metemos las plataformas como array, para usarlas en el select
$juego['opcionesPlataformasJuego'] = $plataformas;
// Desarrolladores y editores
$desarrolladores = [];
$editores = [];
if(isset($resultado['involved_companies'])){
foreach($resultado['involved_companies'] as $empresa){
if(
!isset($empresa['company']) ||
!isset($empresa['company']['name'])
){
continue;
}
$nombreEmpresa = $empresa['company']['name'];
if(
isset($empresa['developer']) &&
$empresa['developer'] === true
){
$desarrolladores[] = $nombreEmpresa;
}
if(
isset($empresa['publisher']) &&
$empresa['publisher'] === true
){
$editores[] = $nombreEmpresa;
}
}
}
$juego['desarrolladorJuego'] = implode(', ', array_unique($desarrolladores));
$juego['editorJuego'] = implode(', ', array_unique($editores));
// Franquicias
$franquicias = [];
if(isset($resultado['franchises'])){
foreach($resultado['franchises'] as $franquicia){
if(isset($franquicia['name'])){
$franquicias[] = $franquicia['name'];
}
}
}
$juego['franquiciaJuego'] = implode(', ', array_unique($franquicias));
// Expansiones
$expansiones = [];
if(isset($resultado['expansions'])){
foreach($resultado['expansions'] as $expansion){
if(isset($expansion['name'])){
$expansiones[] = $expansion['name'];
}
}
}
$juego['expansionJuego'] = implode(', ', array_unique($expansiones));
// DLCs
$dlcs = [];
if(isset($resultado['dlcs'])){
foreach($resultado['dlcs'] as $dlc){
if(isset($dlc['name'])){
$dlcs[] = $dlc['name'];
}
}
}
$juego['dlcJuego'] = implode(', ', array_unique($dlcs));
// Duración estimada
if(
isset($resultado['time_to_beat']) &&
isset($resultado['time_to_beat']['normally'])
){
$horas = $resultado['time_to_beat']['normally'] / 3600;
$juego['duracionJuego'] = round($horas, 1).' h';
}else{
$juego['duracionJuego'] = '';
}
return $juego;
} // Fin transformarDatos()
} // Fin clase ApiJuego
?>
+592
View File
@@ -0,0 +1,592 @@
<?php
if(session_status() === PHP_SESSION_NONE){
session_start();
}
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
class ApiLibro{
private function peticion($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, ['User-Agent: MyDiary ('.$_ENV['emailOpenLibrary'].')', 'Accept: application/json']);
$respuesta = curl_exec($curl);
$codigoHTTP = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if(curl_errno($curl)){
$error = curl_error($curl);
curl_close($curl);
return [
'error' => 'No se pudo realizar la petición a Open Library.',
'error_tecnico' => $error
];
}
curl_close($curl);
$resultado = json_decode($respuesta, true);
if($codigoHTTP < 200 || $codigoHTTP >= 300){
return [
'error' => 'Open Library devolvió un error.',
'error_tecnico' => $resultado
];
}
return $resultado;
} // Fin peticion()
public function buscar($nombre){
$nombre = urlencode($nombre);
$url = 'https://openlibrary.org/search.json'
. '?title='.$nombre
. '&fields='
. 'key,'
. 'title,'
. 'author_name,'
. 'first_publish_year,'
. 'cover_i'
. '&limit=10';
$resultado = $this->peticion($url);
if(isset($resultado['error'])){
return $resultado;
}
return $resultado['docs'];
} // Fin buscar()
public function detalles($idApi){
if(strpos($idApi, '/works/') !== 0){
$idApi = '/works/'.$idApi;
}
/// Obtenemos la work
$urlWork = 'https://openlibrary.org'.$idApi.'.json';
$resultado = $this->peticion($urlWork);
if(isset($resultado['error'])){
return $resultado;
}
// Recuperamos datos básicos que la Work no siempre tiene
$urlExtra =
'https://openlibrary.org/search.json'
. '?q=key:'.urlencode($idApi)
. '&fields='
. 'first_publish_year,'
. 'cover_i,'
. 'ratings_average,'
. 'number_of_pages_median,'
. 'language,'
. 'edition_count'
. '&limit=1';
$extra = $this->peticion($urlExtra);
if(!isset($extra['error']) && !empty($extra['docs'][0])){
$resultado['first_publish_year'] = $extra['docs'][0]['first_publish_year'] ?? null;
$resultado['cover_i'] = $extra['docs'][0]['cover_i'] ?? null;
$resultado['ratings_average'] = $extra['docs'][0]['ratings_average'] ?? null;
$resultado['number_of_pages_median'] = $extra['docs'][0]['number_of_pages_median'] ?? null;
$resultado['language'] = $extra['docs'][0]['language'] ?? [];
$resultado['edition_count'] = $extra['docs'][0]['edition_count'] ?? null;
}
// Edición representativa
$urlEdiciones = 'https://openlibrary.org'.$idApi.'/editions.json?limit=1';
$ediciones = $this->peticion($urlEdiciones);
if(!isset($ediciones['error']) && !empty($ediciones['entries'])){
$resultado['edicionesLibro'] = $ediciones['entries'];
$resultado['edicionPrincipal'] = $ediciones['entries'][0];
foreach($ediciones['entries'] as $edicion){
if(isset($edicion['number_of_pages']) || isset($edicion['publishers']) || isset($edicion['languages'])){
$resultado['edicionPrincipal'] = $edicion;
break;
}
}
}
return $resultado;
} // Fin detalles()
public function transformarDatos($resultado){
$libro = [];
// Id
$libro['idApi'] = $resultado['key'] ?? '';
// Nombre
$libro['nombreLibro'] = $resultado['title'] ?? '';
// Autor
$autorLibro='';
if(!empty($resultado['author_name'])){
$autorLibro = $resultado['author_name'][0];
}elseif(isset($resultado['authors'][0]['author']['key'])){
$autor = $this->peticion('https://openlibrary.org'.$resultado['authors'][0]['author']['key'].'.json');
if(!isset($autor['error']) && isset($autor['name'])){
$autorLibro=$autor['name'];
}
}
$libro['autorLibro']=$autorLibro;
// Géneros
$generosPermitidos = [
'fantasy',
'fantasy fiction',
'science fiction',
'fiction',
'romance',
'mystery',
'thriller',
'horror',
'adventure',
'historical fiction',
'historical',
'crime',
'drama',
'comedy',
'poetry',
'biography',
'autobiography',
'memoir',
'philosophy',
'psychology',
'self-help',
'children',
'young adult',
'dystopian',
'literary fiction',
'graphic novel',
'comics',
'novel',
'novels',
'fiction novels',
'literature',
'classic literature',
'classics',
'modern fiction',
'contemporary fiction',
'suspense',
'detective fiction',
'police fiction',
'espionage',
'spy fiction',
'war fiction',
'political fiction',
'satire',
'humor',
'tragedy',
'romantic fiction',
'erotic fiction',
'gothic fiction',
'dark fantasy',
'urban fantasy',
'epic fantasy',
'high fantasy',
'magical realism',
'steampunk',
'cyberpunk',
'space opera',
'alternate history',
'apocalyptic fiction',
'post apocalyptic fiction',
'history',
'world history',
'art',
'music',
'travel',
'travel writing',
'cooking',
'cookbooks',
'food',
'crafts',
'business',
'finance',
'economics',
'education',
'textbooks',
'science',
'popular science',
'nature',
'environment',
'health',
'fitness',
'sports',
'religion',
'spirituality',
'politics',
'sociology',
'anthropology',
'picture books',
'fairy tales',
'folk tales',
'juvenile fiction',
'juvenile literature',
'middle grade',
'school stories',
'essays',
'short stories',
'plays',
'drama',
'screenplays'
];
$generos = [];
if(isset($resultado['subjects'])){
foreach($resultado['subjects'] as $subject){
$subjectNormalizado = strtolower(trim($subject));
if(in_array($subjectNormalizado, $generosPermitidos, true)){
$generos[] = $subject;
}
}
}
$libro['generoLibro'] = implode(', ',array_unique($generos));
// Temas
$temasPermitidos = [
'marriage',
'husbands',
'wives',
'siblings',
'children',
'parent and child',
'friendship',
'companionship',
'rivalry',
'conflict',
'betrayal',
'revenge',
'love',
'romance',
'jealousy',
'family',
'community',
'magic',
'sorcery',
'witchcraft',
'wizardry',
'dragons',
'elves',
'dwarves',
'vampires',
'werewolves',
'ghosts',
'spirits',
'monsters',
'supernatural',
'mythical creatures',
'mythology',
'legends',
'prophecy',
'quests',
'enchanted places',
'murder',
'crime',
'criminals',
'investigation',
'mystery',
'detectives',
'police',
'espionage',
'secrets',
'conspiracy',
'kidnapping',
'racism',
'prejudice',
'social issues',
'poverty',
'wealth',
'class differences',
'political systems',
'government',
'revolution',
'rebellion',
'colonialism',
'immigration',
'journeys',
'travel',
'exploration',
'adventure',
'survival',
'wilderness',
'expeditions',
'islands',
'oceans',
'space',
'planets',
'mental health',
'trauma',
'anxiety',
'depression',
'identity',
'self discovery',
'personal growth',
'dreams',
'nightmares',
'memories',
'artificial intelligence',
'robots',
'computers',
'technology',
'space exploration',
'astronomy',
'genetics',
'medicine',
'ancient history',
'medieval history',
'world war',
'warfare',
'military',
'historical figures',
'biographical subjects',
'storytelling',
'writers',
'authors',
'books',
'reading',
'literary criticism',
'fiction writing'
];
$temas = [];
if(isset($resultado['subjects'])){
foreach($resultado['subjects'] as $subject){
$subjectNormalizado = strtolower(trim($subject));
if(in_array($subjectNormalizado, $temasPermitidos, true)){
$temas[] = $subject;
}
}
}
$libro['temaLibro'] =implode(', ',array_unique($temas));
// Año
$libro['anoLibro'] = '';
if(!empty($resultado['first_publish_year'])){
$libro['anoLibro'] =$resultado['first_publish_year'];
}else{
$edicion = $resultado['edicionPrincipal'] ?? [];
if(!empty($edicion['publish_date'])){
$fecha = date_create($edicion['publish_date']);
if($fecha){
$libro['anoLibro'] =$fecha->format('Y');
}
}
}
// Sinopsis
$descripcion = $resultado['description'] ?? '';
$libro['sinopsisLibro'] = $this->limpiarSinopsis($descripcion);
// Portada
$coverId = null;
if(!empty($resultado['covers']) && isset($resultado['covers'][0])){
$coverId = $resultado['covers'][0];
}elseif(!empty($edicion['covers']) && isset($edicion['covers'][0])){
$coverId = $edicion['covers'][0];
}elseif(!empty($resultado['cover_i'])){
$coverId = $resultado['cover_i'];
}
if($coverId){
$libro['posterLibro'] ='https://covers.openlibrary.org/b/id/'.$coverId.'-L.jpg';
}else{
$libro['posterLibro']='images/noPoster.jpeg';
}
// Rating medio
$libro['ratingAvgLibro'] = isset($resultado['ratings_average']) ? number_format($resultado['ratings_average'], 2) : null;
// Paginas
$libro['paginasLibro'] = $resultado['number_of_pages_median'] ?? null;
// Idioma
$idiomas = [];
if(!empty($resultado['language'])){
foreach($resultado['language'] as $idioma){
$idiomas[] = basename($idioma);
}
}
$libro['idiomaLibro'] = implode(', ', array_unique($idiomas));
// Ediciones
$libro['edicionesLibro'] = $resultado['edition_count'] ?? null;
return $libro;
} // Fin transformarDatos()
private function limpiarSinopsis($descripcion){
if(is_array($descripcion)){
$descripcion = $descripcion['value'] ?? '';
}
if(empty($descripcion)){
return '';
}
// Eliminar definiciones de enlaces:
// [1]: https://...
$descripcion = preg_replace('/\n?\s*\[\d+\]:\s*\S+/i','', $descripcion);
// Convertir [texto][1] -> texto
$descripcion = preg_replace('/\[([^\]]+)\]\[\d+\]/','$1', $descripcion
);
// Eliminar secciones no deseadas:
$seccionesNoDeseadas = [
'Key characters',
'Awards and recognition',
'Awards & recognition'
];
foreach($seccionesNoDeseadas as $seccion){
$posicion = stripos($descripcion, $seccion);
if($posicion !== false){
$descripcion = substr($descripcion, 0, $posicion);
}
}
// Eliminar enlaces Markdown restantes:
// [texto](url) -> texto
$descripcion = preg_replace('/\[([^\]]+)\]\([^)]+\)/','$1', $descripcion);
// Negrita/cursiva:
// ***texto*** -> texto
// **texto** -> texto
// *texto* -> texto
$descripcion = preg_replace('/\*{1,3}([^*]+)\*{1,3}/','$1', $descripcion);
// Limpiar espacios innecesarios
$descripcion = preg_replace("/[ \t]+/",' ', $descripcion);
$descripcion = preg_replace("/\n{3,}/","\n\n", $descripcion);
return trim($descripcion);
} // Fin limpiarSinopsis()
public function descargarPortada($url){
if(empty($url)){
return '';
}
$carpeta = $_SERVER['DOCUMENT_ROOT'].'/MyDiary/images/libros/';
// Creamos la carpeta si no existe.
if(!is_dir($carpeta)){
if(!mkdir($carpeta, 0755, true)){
return '';
}
}
// Extraemos el id de la portada de Open Library
if(!preg_match('/\/id\/(\d+)-[SML]\.jpg/i', $url, $coincidencias)){
return '';
}
$idPortada = $coincidencias[1];
// Nombre y ruta física del archivo.
$nombreArchivo = $idPortada.'.jpg';
$rutaFisica = $carpeta.$nombreArchivo;
// Ruta que guardaremos en la Base de Datos.
$rutaBD = 'images/libros/'.$nombreArchivo;
// Si ya existe, no descargamos nada.
if(file_exists($rutaFisica)){
return $rutaBD;
}
// Descargamos la imagen.
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$imagen = curl_exec($ch);
$codigoHTTP = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Comprobamos que la descarga haya funcionado.
if($imagen === false || $codigoHTTP < 200 || $codigoHTTP >= 300 || empty($imagen)){
return '';
}
// Guardamos la imagen físicamente.
if(file_put_contents($rutaFisica, $imagen) === false){
return '';
}
return $rutaBD;
} // Fin descargarPortada()
} // Fin clase ApiLibro
?>
+221
View File
@@ -0,0 +1,221 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
class ApiPelicula{
private $token;
public function __construct(){
$this->token = $_ENV['tokenTMDB'];
} // Fin __construct()
private function peticion($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_HTTPHEADER, ["Authorization: Bearer ".$this->token, "accept: application/json"]);
$respuesta = curl_exec($curl);
if(curl_errno($curl)){
return [
"error" => curl_error($curl)
];
}
curl_close($curl);
return $respuesta;
} // Fin peticion()
public function buscar($nombre){
$nombre = urlencode($nombre);
$url = "https://api.themoviedb.org/3/search/movie?query=".$nombre;
$respuesta = $this->peticion($url);
return json_decode($respuesta, true);
} // Fin buscar()
public function detalles($idApi){
/*
* Obtenemos los detalles y los créditos
* en una única petición.
*/
$url = "https://api.themoviedb.org/3/movie/"
. $idApi
. "?append_to_response=credits";
$datos = $this->peticion($url);
$respuesta = json_decode($datos, true);
if(isset($respuesta['status_code'])){
return $respuesta;
}
/*
* Directores
*/
$directores = [];
if(isset($respuesta['credits']['crew'])){
foreach($respuesta['credits']['crew'] as $persona){
if($persona['job'] == 'Director'){
$directores[] = $persona['name'];
if(count($directores) >= 2){
break;
}
}
}
}
$respuesta['directores'] =
implode(', ', $directores);
/*
* Actores
*/
$actores = [];
if(isset($respuesta['credits']['cast'])){
foreach($respuesta['credits']['cast'] as $actor){
if(count($actores) >= 6){
break;
}
$actores[] = $actor['name'];
}
}
$respuesta['actores'] =
implode(', ', $actores);
/*
* Guionistas
*/
$guionistas = [];
if(isset($respuesta['credits']['crew'])){
foreach($respuesta['credits']['crew'] as $persona){
if($persona['job'] == 'Screenplay'){
$guionistas[] = $persona['name'];
if(count($guionistas) >= 3){
break;
}
}
}
}
$respuesta['guionistas'] =
implode(', ', $guionistas);
/*
* Eliminamos credits porque ya no necesitamos
* conservar toda esa información en la respuesta.
*/
unset($respuesta['credits']);
return $respuesta;
} // Fin detalles()
public function transformarDatos($resultado){
$pelicula = [];
$pelicula['idApi'] = $resultado['id'];
$pelicula['nombrePelicula'] = $resultado['title'];
$pelicula['anoPelicula'] = substr($resultado['release_date'],0,4);
$pelicula['posterPelicula'] = "https://image.tmdb.org/t/p/w500".$resultado['poster_path'];
$pelicula['ratingAvgPelicula'] = number_format($resultado['vote_average']/2, 2);
$pelicula['sinopsisPelicula'] = $resultado['overview'];
if(isset($resultado['runtime'])){
$pelicula['duracionPelicula'] = $resultado['runtime'];
}
if(isset($resultado['directores'])){
$pelicula['directorPelicula'] = $resultado['directores'];
}
if(isset($resultado['actores'])){
$pelicula['actorPelicula'] = $resultado['actores'];
}
if(isset($resultado['guionistas'])){
if($resultado['guionistas']==''){
$pelicula['guionistaPelicula'] = $resultado['directores'];
}else{
$pelicula['guionistaPelicula'] = $resultado['guionistas'];
}
}
// Géneros
if(isset($resultado['genres'])){
$generos = [];
foreach($resultado['genres'] as $genero){
$generos[] = $genero['name'];
}
$pelicula['generoPelicula'] = implode(', ', $generos);
}
// Paises
if(isset($resultado['origin_country'])){
$paises = [];
foreach($resultado['origin_country'] as $pais){
$paises[] = $pais;
}
$pelicula['paisPelicula'] = implode(', ', $paises);
}
// Compañías
if(isset($resultado['production_companies'])){
$companias = [];
foreach($resultado['production_companies'] as $compania){
$companias[] = $compania['name'];
}
$pelicula['companiaPelicula'] = implode(', ', $companias);
}
// Idiomas
if(isset($resultado['spoken_languages'])){
$idiomas = [];
foreach($resultado['spoken_languages'] as $idioma){
$idiomas[] = $idioma['name'];
}
$pelicula['idiomaPelicula'] = implode(', ', $idiomas);
}
return $pelicula;
} // Fin transformarDatos()
} // Fin clase ApiPelicula
?>
+700
View File
@@ -0,0 +1,700 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
class ApiSerie{
private $token;
public function __construct(){
$this->token = $_ENV['tokenTMDB'];
} // Fin __construct()
private function peticion($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_HTTPHEADER,['Authorization: Bearer '.$this->token, 'Accept: application/json']);
$respuesta = curl_exec($curl);
$codigoHTTP = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if(curl_errno($curl)){
$error = curl_error($curl);
curl_close($curl);
return [
'error' => 'No se pudo realizar la petición a TMDB.',
'error_tecnico' => $error
];
}
curl_close($curl);
$resultado =json_decode($respuesta,true);
if($codigoHTTP < 200 || $codigoHTTP >= 300){
return [
'error' => 'TMDB devolvió un error.',
'error_tecnico' => $resultado
];
}
return $resultado;
} // Fin peticion()
public function buscar($nombre){
$nombre = urlencode($nombre);
$url = 'https://api.themoviedb.org/3/search/tv'.'?query='.$nombre;
$resultado = $this->peticion($url);
if(isset($resultado['error'])){
return $resultado;
}
return $resultado['results'];
} // Fin buscar()
public function detalles($idApi){
$url = 'https://api.themoviedb.org/3/tv/'.$idApi.'?append_to_response=aggregate_credits,watch/providers';
$resultado = $this->peticion($url);
if(isset($resultado['error'])){
return $resultado;
}
// Directores
$directores = [];
if(isset($resultado['aggregate_credits']['crew'])){
foreach($resultado['aggregate_credits']['crew'] as $persona){
if(!isset($persona['jobs'])){
continue;
}
foreach($persona['jobs'] as $trabajo){
if($trabajo['job'] === 'Director' && !in_array($persona['name'],$directores,true)){
$directores[] = $persona['name'];
break;
}
}
if(count($directores) >= 2){
break;
}
}
}
$resultado['directores'] = implode(', ', $directores);
// Actores
$actores = [];
if(isset($resultado['aggregate_credits']['cast'])){
foreach($resultado['aggregate_credits']['cast'] as $actor){
if(count($actores) >= 6){
break;
}
$actores[] = $actor['name'];
}
}
$resultado['actores'] = implode(', ', $actores);
// Guionistas
$guionistas = [];
if(isset($resultado['aggregate_credits']['crew'])){
foreach($resultado['aggregate_credits']['crew'] as $persona){
if(!isset($persona['jobs'])){
continue;
}
foreach($persona['jobs'] as $trabajo){
if($trabajo['job'] === 'Writer' || $trabajo['job'] === 'Screenplay' || $trabajo['job'] === 'Teleplay'){
if(!in_array($persona['name'],$guionistas,true)){
$guionistas[] = $persona['name'];
}
break;
}
}
if(count($guionistas) >= 3){
break;
}
}
}
$resultado['guionistas'] = implode(', ', $guionistas);
unset($resultado['aggregate_credits']);
return $resultado;
} // Fin detalles()
public function transformarDatos($resultado){
$serie = [];
// Id
$serie['idApi'] = $resultado['id'] ?? '';
// Nombre
$serie['nombreSerie'] = $resultado['name'] ?? '';
// Creador
$creadores = [];
if(!empty($resultado['created_by'])){
foreach($resultado['created_by'] as $creador){
if(isset($creador['name'])){
$creadores[] =$creador['name'];
}
}
}
$serie['creadorSerie'] = implode(', ',array_unique($creadores));
// Director
$serie['directorSerie'] = $resultado['directores'] ?? '';
// Actor
$serie['actorSerie'] = $resultado['actores'] ?? '';
// Guionista
$serie['guionistaSerie'] = $resultado['guionistas'] ?? '';
// Genero
$generos = [];
if(!empty($resultado['genres'])){
foreach($resultado['genres'] as $genero){
if(isset($genero['name'])){
$generos[] = $genero['name'];
}
}
}
$serie['generoSerie'] = implode(', ',array_unique($generos));
// Año
$serie['anoSerie'] = !empty($resultado['first_air_date']) ? substr($resultado['first_air_date'],0,4) : '';
// Número temporadas
$serie['temporadasSerie'] = $resultado['number_of_seasons'] ?? 0;
// Número episodios
$serie['episodiosSerie'] = $resultado['number_of_episodes'] ?? 0;
// Rating medio
$serie['ratingAvgSerie'] = isset($resultado['vote_average']) ? number_format($resultado['vote_average'] / 2,2): null;
// Compañia
$companias = [];
if(!empty($resultado['production_companies'])){
foreach($resultado['production_companies'] as $compania){
if(isset($compania['name'])){
$companias[] = $compania['name'];
}
}
}
$serie['companiaSerie'] = implode(', ',array_unique($companias));
// País
$paises = [];
if(!empty($resultado['production_countries'])){
foreach($resultado['production_countries'] as $pais){
if(isset($pais['name'])){
$paises[] = $pais['name'];
}
}
}
if(empty($paises) && !empty($resultado['origin_country'])){
$paises = $resultado['origin_country'];
}
$serie['paisSerie'] = implode(', ',array_unique($paises));
// Idioma
$idiomas = [];
if(!empty($resultado['spoken_languages'])){
foreach($resultado['spoken_languages'] as $idioma){
if(isset($idioma['name'])){
$idiomas[] = $idioma['name'];
}
}
}
if(empty($idiomas) && !empty($resultado['original_language'])){
$idiomas[] = $resultado['original_language'];
}
$serie['idiomaSerie'] = implode(', ',array_unique($idiomas));
// Sinopsis
$serie['sinopsisSerie'] = $resultado['overview'] ?? '';
// Portada
if(!empty($resultado['poster_path'])){
$serie['posterSerie'] = 'https://image.tmdb.org/t/p/w500'.$resultado['poster_path'];
}else{
$serie['posterSerie'] = 'images/noPoster.jpeg';
}
// Temporadas.
// Mantenemos la información proporcionada directamente por TMDB para poder utilizarla más adelante.
$serie['temporadas'] = $resultado['seasons'] ?? [];
return $serie;
} // Fin transformarDatos()
public function temporada($idSerie, $numeroTemporada){
$url = 'https://api.themoviedb.org/3/tv/'.$idSerie.'/season/'.$numeroTemporada.'?append_to_response=aggregate_credits';
$datos = $this->peticion($url);
if(is_array($datos)){
return $datos;
}
$respuesta = json_decode($datos, true);
if(isset($respuesta['status_code'])){
return [
'error' => 'TMDB devolvió un error.',
'error_tecnico' => $respuesta
];
}
return $respuesta;
} // Fin temporada()
public function transformarDatosTemporada($resultado, $nombreSerie){
$temporada = [];
// Id
$temporada['idApi'] = $resultado['id'] ?? '';
// ID de la serie a la que pertenece
// Lo dejamos preparado para que el controlador
// pueda asignarle después tu idSerie de la BD.
$temporada['idSerie'] = null;
// Nombre
$temporada['nombreTemporada'] = $resultado['name'] ? $nombreSerie.' - '.$resultado['name'] : '';
// Numero temporada
$temporada['numeroTemporada'] = $resultado['season_number'] ?? null;
// Director
$directores = [];
if(isset($resultado['aggregate_credits']['crew']) && is_array($resultado['aggregate_credits']['crew'])){
foreach($resultado['aggregate_credits']['crew'] as $persona){
if(empty($persona['jobs'])){
continue;
}
foreach($persona['jobs'] as $trabajo){
if(isset($trabajo['job']) && $trabajo['job'] === 'Director'){
if(isset($persona['name']) && !in_array($persona['name'],$directores,true)){
$directores[] = $persona['name'];
}
break;
}
}
if(count($directores) >= 2){
break;
}
}
}
$temporada['directorTemporada'] = implode(', ', $directores);
// Guionista
$guionistas = [];
if(isset($resultado['aggregate_credits']['crew']) && is_array($resultado['aggregate_credits']['crew'])){
foreach($resultado['aggregate_credits']['crew'] as $persona){
if(empty($persona['jobs'])){
continue;
}
foreach($persona['jobs'] as $trabajo){
if(isset($trabajo['job']) &&($trabajo['job'] === 'Writer' || $trabajo['job'] === 'Screenplay' ||$trabajo['job'] === 'Teleplay')){
if(isset($persona['name']) && !in_array($persona['name'], $guionistas, true)){
$guionistas[] = $persona['name'];
}
break;
}
}
if(count($guionistas) >= 3){
break;
}
}
}
$temporada['guionistaTemporada'] = implode(', ', $guionistas);
// Actor
$actores = [];
if(isset($resultado['aggregate_credits']['cast']) && is_array($resultado['aggregate_credits']['cast'])){
foreach($resultado['aggregate_credits']['cast'] as $actor){
if(count($actores) >= 6){
break;
}
if(isset($actor['name'])){
$actores[] = $actor['name'];
}
}
}
$temporada['actorTemporada'] = implode(', ', $actores);
// Numero episodios
$temporada['episodiosTemporada'] = count($resultado['episodes']) ?? 0;
// Año
$temporada['anoTemporada'] = '';
if(!empty($resultado['air_date'])){
$temporada['anoTemporada'] =substr($resultado['air_date'],0,4);
}
// Rating medio
$temporada['ratingAvgTemporada'] = isset($resultado['vote_average']) ? number_format($resultado['vote_average'] / 2, 2) : null;
// Portada
if(!empty($resultado['poster_path'])){
$temporada['posterTemporada'] = 'https://image.tmdb.org/t/p/w500'.$resultado['poster_path'];
}else{
$temporada['posterTemporada'] = 'images/noPoster.jpeg';
}
// Sinopsis
$temporada['sinopsisTemporada'] = $resultado['overview'] ?? '';
// Episodios
$episodios = [];
if(!empty($resultado['episodes'])){
foreach($resultado['episodes'] as $episodio){
$episodios[] = [
'idApi' => $episodio['id'] ?? '',
'nombreEpisodio' => $episodio['name'] ?? '',
'numeroEpisodio' => $episodio['episode_number'] ?? null,
'ratingAvgEpisodio' => isset($episodio['vote_average']) ? number_format($episodio['vote_average'] / 2, 2) : null,
'posterEpisodio' => !empty($episodio['still_path']) ? 'https://image.tmdb.org/t/p/w300'.$episodio['still_path'] : 'images/noPoster.jpeg',
'sinopsisEpisodio' => $episodio['overview'] ?? '',
'anoEpisodio' => !empty($episodio['air_date']) ? substr($episodio['air_date'], 0, 4) : ''
];
}
}
$temporada['episodios'] = $episodios;
return $temporada;
} // Fin transformarDatosTemporada()
public function episodio($idSerie, $numeroTemporada, $numeroEpisodio){
$url =
'https://api.themoviedb.org/3/tv/'
.$idSerie
.'/season/'
.$numeroTemporada
.'/episode/'
.$numeroEpisodio
.'?append_to_response=credits';
$datos = $this->peticion($url);
if(is_array($datos)){
return $datos;
}
$respuesta = json_decode($datos, true);
if(isset($respuesta['status_code'])){
return [
'error' => 'TMDB devolvió un error.',
'error_tecnico' => $respuesta
];
}
return $respuesta;
} // Fin episodio()
public function transformarDatosEpisodio($resultado, $numeroTemporada, $nombreSerie){
$episodio = [];
/*
* ID de TMDB
*/
$episodio['idApi'] = $resultado['id'] ?? '';
/*
* ID de la temporada
*
* Será el ID interno de tu BD cuando lo guardemos.
*/
$episodio['idTemporada'] = null;
/*
* Nombre
*/
if(strlen((string)$resultado['episode_number'])==1){
$episodio['nombreEpisodio'] = $resultado['name'] ? $nombreSerie.' - '.$numeroTemporada.'x0'.$resultado['episode_number'].' ('.$resultado['name'].')' : '';
}else{
$episodio['nombreEpisodio'] = $resultado['name'] ? $nombreSerie.' - '.$numeroTemporada.'x'.$resultado['episode_number'].' ('.$resultado['name'].')' : '';
}
/*
* Número de episodio
*/
$episodio['numeroEpisodio'] = $resultado['episode_number'] ?? null;
/*
* Director
*/
$directores = [];
if(
!empty($resultado['credits']['crew']) &&
is_array($resultado['credits']['crew'])
){
foreach(
$resultado['credits']['crew']
as $persona
){
if(
isset($persona['job']) &&
$persona['job'] === 'Director' &&
isset($persona['name'])
){
if(!in_array(
$persona['name'],
$directores,
true
)){
$directores[] =
$persona['name'];
}
if(count($directores) >= 2){
break;
}
}
}
}
$episodio['directorEpisodio'] =
implode(', ', $directores);
/*
* Guionistas
*/
$guionistas = [];
if(
!empty($resultado['credits']['crew']) &&
is_array($resultado['credits']['crew'])
){
foreach(
$resultado['credits']['crew']
as $persona
){
if(
!isset($persona['job']) ||
!isset($persona['name'])
){
continue;
}
if(
$persona['job'] === 'Writer' ||
$persona['job'] === 'Screenplay' ||
$persona['job'] === 'Teleplay'
){
if(!in_array(
$persona['name'],
$guionistas,
true
)){
$guionistas[] =
$persona['name'];
}
if(count($guionistas) >= 3){
break;
}
}
}
}
$episodio['guionistaEpisodio'] =
implode(', ', $guionistas);
/*
* Actores
*/
$actores = [];
if(
!empty($resultado['credits']['cast']) &&
is_array($resultado['credits']['cast'])
){
foreach(
$resultado['credits']['cast']
as $actor
){
if(count($actores) >= 6){
break;
}
if(isset($actor['name'])){
$actores[] =
$actor['name'];
}
}
}
$episodio['actorEpisodio'] =
implode(', ', array_unique($actores));
/*
* Año
*/
$episodio['anoEpisodio'] = '';
if(!empty($resultado['air_date'])){
$episodio['anoEpisodio'] =
substr(
$resultado['air_date'],
0,
4
);
}
/*
* Valoración media
*
* TMDB: 0-10
* Proyecto: 0-5
*/
$episodio['ratingAvgEpisodio'] =
isset($resultado['vote_average'])
? number_format(
$resultado['vote_average'] / 2,
2
)
: null;
/*
* Portada / imagen
*/
if(!empty($resultado['still_path'])){
$episodio['posterEpisodio'] =
'https://image.tmdb.org/t/p/w500'
.$resultado['still_path'];
}else{
$episodio['posterEpisodio'] =
'images/noPoster.jpeg';
}
/*
* Sinopsis
*/
$episodio['sinopsisEpisodio'] =
$resultado['overview'] ?? '';
/*
* Duración
*
* El episodio puede tener runtime aunque no
* lo hayamos guardado en la temporada.
*/
$episodio['duracionEpisodio'] = $resultado['runtime'] ? $resultado['runtime'].' min' : null;
return $episodio;
} // Fin transformarDatosEpisodio()
} // Fin clase ApiSerie
/*
$api = new ApiSerie();
$resultado = $api->episodio(70523, 2, 6);
echo '<pr>';
print_r ($resultado);
echo '</pr>';
*/
?>
+148
View File
@@ -0,0 +1,148 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiSerie.php';
class Episodio{
public $idEpisodio;
public $idApi;
public $idTemporada;
public $nombreEpisodio;
public $numeroEpisodio;
public $directorEpisodio;
public $actorEpisodio;
public $guionistaEpisodio;
public $anoEpisodio;
public $duracionEpisodio;
public $ratingAvgEpisodio;
public $posterEpisodio;
public $sinopsisEpisodio;
function __construct($idEpisodio=null, $idApi=null, $idTemporada=null, $nombreEpisodio=null, $numeroEpisodio=null, $directorEpisodio=null, $actorEpisodio=null, $guionistaEpisodio=null, $anoEpisodio=null, $duracionEpisodio=null, $ratingAvgEpisodio=null, $posterEpisodio=null, $sinopsisEpisodio=null){
$this->idEpisodio = $idEpisodio;
$this->idApi = $idApi;
$this->idTemporada = $idTemporada;
$this->nombreEpisodio = $nombreEpisodio;
$this->directorEpisodio = $directorEpisodio;
$this->actorEpisodio = $actorEpisodio;
$this->guionistaEpisodio = $guionistaEpisodio;
$this->anoEpisodio = $anoEpisodio;
$this->duracionEpisodio = $duracionEpisodio;
$this->ratingAvgEpisodio = $ratingAvgEpisodio;
$this->posterEpisodio = $posterEpisodio;
$this->sinopsisEpisodio = $sinopsisEpisodio;
} // Fin __construct
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idEpisodio FROM seriesepisodios WHERE idApi=:idApi");
$consulta->bindParam(':idApi', $this->idApi);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
return $resultado['idEpisodio'];
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe el episodio en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin existe()
public function agregar(){
// Miramos si existe
$idEpisodio = $this->existe($this->idApi);
// Si no existe la creamos, y devolvemos el último idEpisodio insertado
// Si existe devolvemos el idEpisodio correspondiente
if(!$idEpisodio){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO seriesepisodios (idApi, idTemporada, nombreEpisodio, numeroEpisodio, directorEpisodio, actorEpisodio, guionistaEpisodio, anoEpisodio, duracionEpisodio, ratingAvgEpisodio, posterEpisodio, sinopsisEpisodio) VALUES (:idApi,:idTemporada,:nombre,:numero,:director,:actor,:guionista,:ano,:duracion,:ratingAvg,:poster,:sinopsis)");
$consulta->bindParam(':idApi',$this->idApi);
$consulta->bindParam(':idTemporada',$this->idTemporada);
$consulta->bindParam(':nombre',$this->nombreEpisodio);
$consulta->bindParam(':numero',$this->numeroEpisodio);
$consulta->bindParam(':director',$this->directorEpisodio);
$consulta->bindParam(':actor',$this->actorEpisodio);
$consulta->bindParam(':guionista',$this->guionistaEpisodio);
$consulta->bindParam(':ano',$this->anoEpisodio);
$consulta->bindParam(':duracion',$this->duracionEpisodio);
$consulta->bindParam(':ratingAvg',$this->ratingAvgEpisodio);
$consulta->bindParam(':poster',$this->posterEpisodio);
$consulta->bindParam(':sinopsis',$this->sinopsisEpisodio);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar el episodio.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
}else{
return $idEpisodio;
}
} // Fin agregar()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM seriesepisodios WHERE idEpisodio= :idEpisodio");
$consulta->bindParam(':idEpisodio', $this->idEpisodio);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos del episodio seleccionado.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
} // Fin clase Episodio
?>
+311
View File
@@ -0,0 +1,311 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
class Historial{
public $idHistorial;
public $idUsuario;
public $idUsuarioPelicula;
public $idUsuarioSerie;
public $idUsuarioTemporada;
public $idUsuarioEpisodio;
public $idUsuarioJuego;
public $idUsuarioLibro;
public $nombreHistorial;
public $accionHistorial;
public $fechaHistorial;
function __construct($idHistorial=null, $idUsuario=null, $idUsuarioPelicula=null, $idUsuarioSerie=null, $idUsuarioTemporada=null, $idUsuarioEpisodio=null, $idUsuarioJuego=null, $idUsuarioLibro=null, $nombreHistorial=null, $accionHistorial=null, $fechaHistorial=null){
$this->idHistorial = $idHistorial;
$this->idUsuario = $idUsuario;
$this->idUsuarioPelicula = $idUsuarioPelicula;
$this->idUsuarioSerie = $idUsuarioSerie;
$this->idUsuarioTemporada = $idUsuarioTemporada;
$this->idUsuarioEpisodio = $idUsuarioEpisodio;
$this->idUsuarioJuego = $idUsuarioJuego;
$this->idUsuarioLibro = $idUsuarioLibro;
$this->nombreHistorial = $nombreHistorial;
$this->accionHistorial = $accionHistorial;
$this->fechaHistorial = $fechaHistorial;
} // Fin __construct
public function agregarPelicula(){
$conexion=conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO historial (idUsuario, idUsuarioPelicula, nombreHistorial, accionHistorial) VALUES (:idUsuario, :idUsuarioPelicula, :nombre, :accion)");
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->bindParam(':idUsuarioPelicula',$this->idUsuarioPelicula);
$consulta->bindParam(':nombre',$this->nombreHistorial);
$consulta->bindParam(':accion',$this->accionHistorial);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la acción al historial de películas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPelicula()
public function listarPelicula(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM historial WHERE idUsuario = :idUsuario AND idUsuarioPelicula IS NOT NULL ORDER BY fechaHistorial DESC LIMIT 50");
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de historial de películas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarPelicula()
public function agregarSerie(){
$conexion=conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO historial (idUsuario, idUsuarioSerie, nombreHistorial, accionHistorial) VALUES (:idUsuario, :idUsuarioSerie, :nombre, :accion)");
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->bindParam(':idUsuarioSerie',$this->idUsuarioSerie);
$consulta->bindParam(':nombre',$this->nombreHistorial);
$consulta->bindParam(':accion',$this->accionHistorial);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la acción al historial de series.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarSerie()
public function agregarTemporada(){
$conexion=conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO historial (idUsuario, idUsuarioTemporada, nombreHistorial, accionHistorial) VALUES (:idUsuario, :idUsuarioTemporada, :nombre, :accion)");
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->bindParam(':idUsuarioTemporada',$this->idUsuarioTemporada);
$consulta->bindParam(':nombre',$this->nombreHistorial);
$consulta->bindParam(':accion',$this->accionHistorial);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la acción al historial de series.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarTemporada()
public function agregarEpisodio(){
$conexion=conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO historial (idUsuario, idUsuarioEpisodio, nombreHistorial, accionHistorial) VALUES (:idUsuario, :idUsuarioEpisodio, :nombre, :accion)");
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->bindParam(':idUsuarioEpisodio',$this->idUsuarioEpisodio);
$consulta->bindParam(':nombre',$this->nombreHistorial);
$consulta->bindParam(':accion',$this->accionHistorial);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la acción al historial de series.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarEpisodio()
public function listarSerie(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM historial WHERE idUsuario = :idUsuario AND (idUsuarioSerie IS NOT NULL OR idUsuarioTemporada IS NOT NULL OR idUsuarioEpisodio IS NOT NULL) ORDER BY fechaHistorial DESC LIMIT 50");
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de historial para series.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarSerie()
public function agregarJuego(){
$conexion=conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO historial (idUsuario, idUsuarioJuego, nombreHistorial, accionHistorial) VALUES (:idUsuario, :idUsuarioJuego, :nombre, :accion)");
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->bindParam(':idUsuarioJuego',$this->idUsuarioJuego);
$consulta->bindParam(':nombre',$this->nombreHistorial);
$consulta->bindParam(':accion',$this->accionHistorial);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la acción al historial de videojuegos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarJuego()
public function listarJuego(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM historial WHERE idUsuario = :idUsuario AND idUsuarioJuego IS NOT NULL ORDER BY fechaHistorial DESC LIMIT 50");
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de historial para videojuegos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarJuego()
public function agregarLibro(){
$conexion=conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO historial (idUsuario, idUsuarioLibro, nombreHistorial, accionHistorial) VALUES (:idUsuario, :idUsuarioLibro, :nombre, :accion)");
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->bindParam(':idUsuarioLibro',$this->idUsuarioLibro);
$consulta->bindParam(':nombre',$this->nombreHistorial);
$consulta->bindParam(':accion',$this->accionHistorial);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la acción al historial de libros.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarLibro()
public function listarLibro(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM historial WHERE idUsuario = :idUsuario AND idUsuarioLibro IS NOT NULL ORDER BY fechaHistorial DESC LIMIT 50");
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de historial para libros.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarLibro()
} // Fin clase Historial
?>
+156
View File
@@ -0,0 +1,156 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiJuego.php';
class Juego{
public $idJuego;
public $idApi;
public $nombreJuego;
public $desarrolladorJuego;
public $editorJuego;
public $anoJuego;
public $franquiciaJuego;
public $generoJuego;
public $plataformasJuego;
public $dlcJuego;
public $expansionJuego;
public $duracionJuego;
public $ratingAvgJuego;
public $posterJuego;
public $sinopsisJuego;
function __construct($idJuego=null, $idApi=null, $nombreJuego=null, $desarrolladorJuego=null, $editorJuego=null, $anoJuego=null, $franquiciaJuego=null, $generoJuego=null, $plataformasJuego=null, $dlcJuego=null, $expansionJuego=null, $duracionJuego=null, $ratingAvgJuego=null, $sinopsisJuego=null, $posterJuego=null){
$this->idJuego = $idJuego;
$this->idApi = $idApi;
$this->nombreJuego = $nombreJuego;
$this->desarrolladorJuego = $desarrolladorJuego;
$this->editorJuego = $editorJuego;
$this->anoJuego = $anoJuego;
$this->franquiciaJuego = $franquiciaJuego;
$this->generoJuego = $generoJuego;
$this->plataformasJuego = $plataformasJuego;
$this->dlcJuego = $dlcJuego;
$this->expansionJuego = $expansionJuego;
$this->duracionJuego = $duracionJuego;
$this->ratingAvgJuego = $ratingAvgJuego;
$this->posterJuego = $posterJuego;
$this->sinopsisJuego = $sinopsisJuego;
} // Fin __construct
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idJuego FROM juegos WHERE idApi=:idApi");
$consulta->bindParam(':idApi', $this->idApi);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
return $resultado['idJuego'];
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe el videojuego en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin existe()
public function agregar(){
// Miramos si existe
$idJuego = $this->existe($this->idApi);
// Si no existe la creamos, y devolvemos el último idJuego insertado
// Si existe devolvemos el idJuego correspondiente
if(!$idJuego){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO juegos (idApi, nombreJuego, desarrolladorJuego, editorJuego, anoJuego, franquiciaJuego, generoJuego, plataformasJuego, dlcJuego, expansionJuego, duracionJuego, ratingAvgJuego, posterJuego, sinopsisJuego) VALUES (:idApi,:nombre,:desarrollador,:editor,:ano,:franquicia,:genero,:plat,:dlc,:expansion,:duracion,:ratingAvg,:poster,:sinopsis)");
$consulta->bindParam(':idApi',$this->idApi);
$consulta->bindParam(':nombre',$this->nombreJuego);
$consulta->bindParam(':desarrollador',$this->desarrolladorJuego);
$consulta->bindParam(':editor',$this->editorJuego);
$consulta->bindParam(':ano',$this->anoJuego);
$consulta->bindParam(':franquicia',$this->franquiciaJuego);
$consulta->bindParam(':genero',$this->generoJuego);
$consulta->bindParam(':plat',$this->plataformasJuego);
$consulta->bindParam(':dlc',$this->dlcJuego);
$consulta->bindParam(':expansion',$this->expansionJuego);
$consulta->bindParam(':duracion',$this->duracionJuego);
$consulta->bindParam(':ratingAvg',$this->ratingAvgJuego);
$consulta->bindParam(':poster',$this->posterJuego);
$consulta->bindParam(':sinopsis',$this->sinopsisJuego);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar el videojuego.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
}else{
return $idJuego;
}
} // Fin agregar()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM juegos WHERE idJuego= :idJuego");
$consulta->bindParam(':idJuego', $this->idJuego);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos del videojuego seleccionado.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
} // Fin clase Juego
?>
+192
View File
@@ -0,0 +1,192 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiLibro.php';
class Libro{
public $idLibro;
public $idApi;
public $nombreLibro;
public $autorLibro;
public $anoLibro;
public $generoLibro;
public $temaLibro;
public $paginasLibro;
public $edicionesLibro;
public $idiomaLibro;
public $ratingAvgLibro;
public $posterLibro;
public $sinopsisLibro;
function __construct($idLibro=null, $idApi=null, $nombreLibro=null, $autorLibro=null, $anoLibro=null, $generoLibro=null, $temaLibro=null, $paginasLibro=null, $edicionesLibro=null, $idiomaLibro=null, $ratingAvgLibro=null, $posterLibro=null, $sinopsisLibro=null){
$this->idLibro = $idLibro;
$this->idApi = $idApi;
$this->nombreLibro = $nombreLibro;
$this->autorLibro = $autorLibro;
$this->anoLibro = $anoLibro;
$this->generoLibro = $generoLibro;
$this->temaLibro = $temaLibro;
$this->paginasLibro = $paginasLibro;
$this->edicionesLibro = $edicionesLibro;
$this->idiomaLibro = $idiomaLibro;
$this->ratingAvgLibro = $ratingAvgLibro;
$this->posterLibro = $posterLibro;
$this->sinopsisLibro = $sinopsisLibro;
} // Fin __construct
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idLibro FROM libros WHERE idApi=:idApi");
$consulta->bindParam(':idApi', $this->idApi);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
return $resultado['idLibro'];
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe el libro en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin existe()
public function agregar(){
// Miramos si existe
$idLibro = $this->existe($this->idApi);
// Si no existe la creamos, y devolvemos el último idLibro insertado
// Si existe devolvemos el idLibro correspondiente
if(!$idLibro){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO libros (idApi, nombreLibro, autorLibro, anoLibro, generoLibro, temaLibro, paginasLibro, edicionesLibro, idiomaLibro, ratingAvgLibro, posterLibro, sinopsisLibro) VALUES (:idApi,:nombre,:autor,:ano,:genero,:tema,:paginas,:ediciones,:idioma,:ratingAvg,:poster,:sinopsis)");
$consulta->bindParam(':idApi',$this->idApi);
$consulta->bindParam(':nombre',$this->nombreLibro);
$consulta->bindParam(':autor',$this->autorLibro);
$consulta->bindParam(':ano',$this->anoLibro);
$consulta->bindParam(':genero',$this->generoLibro);
$consulta->bindParam(':tema',$this->temaLibro);
$consulta->bindParam(':paginas',$this->paginasLibro);
$consulta->bindParam(':ediciones',$this->edicionesLibro);
$consulta->bindParam(':idioma',$this->idiomaLibro);
$consulta->bindParam(':ratingAvg',$this->ratingAvgLibro);
$consulta->bindParam(':poster',$this->posterLibro);
$consulta->bindParam(':sinopsis',$this->sinopsisLibro);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar el libro a la tabla libros.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
}else{
return $idLibro;
}
} // Fin agregar()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM libros WHERE idLibro= :idLibro");
$consulta->bindParam(':idLibro', $this->idLibro);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos del libro seleccionado.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
public function actualizarPoster(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}
try{
$consulta = $conexion->prepare(
"UPDATE libros
SET posterLibro = :poster
WHERE idLibro = :idLibro"
);
$consulta->bindParam(
':poster',
$this->posterLibro
);
$consulta->bindParam(
':idLibro',
$this->idLibro
);
$consulta->execute();
return $this->posterLibro;
}catch(PDOException $error){
$respuesta = [
'error' => 'La portada se descargó, pero no se pudo actualizar la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin actualizarPoster()
} // Fin clase Libro
?>
+244
View File
@@ -0,0 +1,244 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiPelicula.php';
class Pelicula{
public $idPelicula;
public $idApi;
public $nombrePelicula;
public $directorPelicula;
public $actorPelicula;
public $guionistaPelicula;
public $generoPelicula;
public $anoPelicula;
public $companiaPelicula;
public $duracionPelicula;
public $ratingAvgPelicula;
public $paisPelicula;
public $idiomaPelicula;
public $posterPelicula;
public $sinopsisPelicula;
function __construct($idPelicula=null, $idApi=null, $nombrePelicula=null, $directorPelicula=null, $actorPelicula=null, $guionistaPelicula=null, $generoPelicula=null, $anoPelicula=null, $companiaPelicula=null, $duracionPelicula=null, $ratingAvgPelicula=null, $paisPelicula=null, $idiomaPelicula=null, $posterPelicula=null, $sinopsisPelicula=null){
$this->idPelicula = $idPelicula;
$this->idApi = $idApi;
$this->nombrePelicula = $nombrePelicula;
$this->directorPelicula = $directorPelicula;
$this->actorPelicula = $actorPelicula;
$this->guionistaPelicula = $guionistaPelicula;
$this->generoPelicula = $generoPelicula;
$this->anoPelicula = $anoPelicula;
$this->companiaPelicula = $companiaPelicula;
$this->duracionPelicula = $duracionPelicula;
$this->ratingAvgPelicula = $ratingAvgPelicula;
$this->paisPelicula = $paisPelicula;
$this->idiomaPelicula = $idiomaPelicula;
$this->posterPelicula = $posterPelicula;
$this->sinopsisPelicula = $sinopsisPelicula;
} // Fin __construct
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idPelicula FROM peliculas WHERE idApi=:idApi");
$consulta->bindParam(':idApi', $this->idApi);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
return $resultado['idPelicula'];
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe la película en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin existe()
public function agregar(){
// Miramos si existe
$idPelicula = $this->existe($this->idApi);
// Si no existe la creamos, y devolvemos el último idPelicula insertado
// Si existe devolvemos el idPelicula correspondiente
if(!$idPelicula){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO peliculas (idApi,nombrePelicula,directorPelicula,actorPelicula,guionistaPelicula,generoPelicula,anoPelicula,companiaPelicula,duracionPelicula,posterPelicula,ratingAvgPelicula,paisPelicula,idiomaPelicula,sinopsisPelicula) VALUES (:idApi,:nombre,:director,:actor,:guionista,:genero,:ano,:compania,:duracion,:poster,:ratingAvg,:pais,:idioma,:sinopsis)");
$consulta->bindParam(':idApi',$this->idApi);
$consulta->bindParam(':nombre',$this->nombrePelicula);
$consulta->bindParam(':director',$this->directorPelicula);
$consulta->bindParam(':actor',$this->actorPelicula);
$consulta->bindParam(':guionista',$this->guionistaPelicula);
$consulta->bindParam(':genero',$this->generoPelicula);
$consulta->bindParam(':ano',$this->anoPelicula);
$consulta->bindParam(':compania',$this->companiaPelicula);
$consulta->bindParam(':duracion',$this->duracionPelicula);
$consulta->bindParam(':ratingAvg',$this->ratingAvgPelicula);
$consulta->bindParam(':pais',$this->paisPelicula);
$consulta->bindParam(':idioma',$this->idiomaPelicula);
$consulta->bindParam(':poster',$this->posterPelicula);
$consulta->bindParam(':sinopsis',$this->sinopsisPelicula);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
}else{
return $idPelicula;
}
} // Fin agregar()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM peliculas WHERE idPelicula= :idPelicula");
$consulta->bindParam(':idPelicula', $this->idPelicula);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos de la película seleccionada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
// Métodos para actualizar detalles
public function listarIdApi(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("
SELECT idPelicula, idApi
FROM peliculas
WHERE idApi IS NOT NULL
AND idApi <> ''
");
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al listar las películas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
}
} // Fin listarIdApi()
public function actualizarDetalles(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("
UPDATE peliculas SET
actorPelicula = :actor,
guionistaPelicula = :guionista,
generoPelicula = :genero,
duracionPelicula = :duracion,
companiaPelicula = :compania,
paisPelicula = :pais,
idiomaPelicula = :idioma
WHERE idPelicula = :idPelicula
");
$consulta->bindParam(':actor', $this->actorPelicula);
$consulta->bindParam(':guionista', $this->guionistaPelicula);
$consulta->bindParam(':genero', $this->generoPelicula);
$consulta->bindParam(':duracion', $this->duracionPelicula);
$consulta->bindParam(':compania', $this->companiaPelicula);
$consulta->bindParam(':pais', $this->paisPelicula);
$consulta->bindParam(':idioma', $this->idiomaPelicula);
$consulta->bindParam(':idPelicula', $this->idPelicula);
$consulta->execute();
return true;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al actualizar los detalles de la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
}
} // Fin actualizarDetalles()
} // Fin clase Pelicula
?>
+161
View File
@@ -0,0 +1,161 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiSerie.php';
class Serie{
public $idSerie;
public $idApi;
public $nombreSerie;
public $creadorSerie;
public $directorSerie;
public $actorSerie;
public $guionistaSerie;
public $companiaSerie;
public $generoSerie;
public $anoSerie;
public $temporadasSerie;
public $episodiosSerie;
public $ratingAvgSerie;
public $paisSerie;
public $idiomaSerie;
public $posterSerie;
public $sinopsisSerie;
function __construct($idSerie=null, $idApi=null, $nombreSerie=null, $creadorSerie=null, $directorSerie=null, $actorSerie=null, $guionistaSerie=null, $companiaSerie=null, $generoSerie=null, $anoSerie=null, $temporadasSerie=null, $episodiosSerie=null, $ratingAvgSerie=null, $paisSerie=null, $idiomaSerie=null, $posterSerie=null, $sinopsisSerie=null){
$this->idSerie = $idSerie;
$this->idApi = $idApi;
$this->nombreSerie = $nombreSerie;
$this->creadorSerie = $creadorSerie;
$this->directorSerie = $directorSerie;
$this->actorSerie = $actorSerie;
$this->guionistaSerie = $guionistaSerie;
$this->companiaSerie = $companiaSerie;
$this->generoSerie = $generoSerie;
$this->anoSerie = $anoSerie;
$this->temporadasSerie = $temporadasSerie;
$this->episodiosSerie = $episodiosSerie;
$this->ratingAvgSerie = $ratingAvgSerie;
$this->paisSerie = $paisSerie;
$this->idiomaSerie = $idiomaSerie;
$this->posterSerie = $posterSerie;
$this->sinopsisSerie = $sinopsisSerie;
} // Fin __construct
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idSerie FROM series WHERE idApi=:idApi");
$consulta->bindParam(':idApi', $this->idApi);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
return $resultado['idSerie'];
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe la serie en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin existe()
public function agregar(){
// Miramos si existe
$idSerie = $this->existe($this->idApi);
// Si no existe la creamos, y devolvemos el último idSerie insertado
// Si existe devolvemos el idSerie correspondiente
if(!$idSerie){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO series (idApi, nombreSerie, creadorSerie, directorSerie, actorSerie, guionistaSerie, companiaSerie, generoSerie, anoSerie, temporadasSerie, episodiosSerie, ratingAvgSerie, paisSerie, idiomaSerie, posterSerie, sinopsisSerie) VALUES (:idApi,:nombre,:creador,:director,:actor,:guionista,:compania,:genero,:ano,:temporadas,:episodios,:ratingAvg,:pais,:idioma,:poster,:sinopsis)");
$consulta->bindParam(':idApi',$this->idApi);
$consulta->bindParam(':nombre',$this->nombreSerie);
$consulta->bindParam(':creador',$this->creadorSerie);
$consulta->bindParam(':director',$this->directorSerie);
$consulta->bindParam(':actor',$this->actorSerie);
$consulta->bindParam(':guionista',$this->guionistaSerie);
$consulta->bindParam(':compania',$this->companiaSerie);
$consulta->bindParam(':genero',$this->generoSerie);
$consulta->bindParam(':ano',$this->anoSerie);
$consulta->bindParam(':temporadas',$this->temporadasSerie);
$consulta->bindParam(':episodios',$this->episodiosSerie);
$consulta->bindParam(':ratingAvg',$this->ratingAvgSerie);
$consulta->bindParam(':pais',$this->paisSerie);
$consulta->bindParam(':idioma',$this->idiomaSerie);
$consulta->bindParam(':poster',$this->posterSerie);
$consulta->bindParam(':sinopsis',$this->sinopsisSerie);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la serie.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
}else{
return $idSerie;
}
} // Fin agregar()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM series WHERE idSerie= :idSerie");
$consulta->bindParam(':idSerie', $this->idSerie);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos de la serie seleccionada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
} // Fin clase Serie
?>
+150
View File
@@ -0,0 +1,150 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiSerie.php';
class Temporada{
public $idTemporada;
public $idApi;
public $idSerie;
public $nombreTemporada;
public $numeroTemporada;
public $directorTemporada;
public $guionistaTemporada;
public $actorTemporada;
public $episodiosTemporada;
public $anoTemporada;
public $ratingAvgTemporada;
public $posterTemporada;
public $sinopsisTemporada;
function __construct($idTemporada=null, $idApi=null, $idSerie=null, $nombreTemporada=null, $numeroTemporada=null, $directorTemporada=null, $guionistaTemporada=null, $actorTemporada=null, $episodiosTemporada=null, $anoTemporada=null, $ratingAvgTemporada=null, $posterTemporada=null, $sinopsisTemporada=null, ){
$this->idTemporada = $idTemporada;
$this->idApi = $idApi;
$this->idSerie = $idSerie;
$this->nombreTemporada = $nombreTemporada;
$this->numeroTemporada = $numeroTemporada;
$this->directorTemporada = $directorTemporada;
$this->guionistaTemporada = $guionistaTemporada;
$this->actorTemporada = $actorTemporada;
$this->episodiosTemporada = $episodiosTemporada;
$this->anoTemporada = $anoTemporada;
$this->ratingAvgTemporada = $ratingAvgTemporada;
$this->posterTemporada = $posterTemporada;
$this->sinopsisTemporada = $sinopsisTemporada;
} // Fin __construct
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idTemporada FROM seriestemporadas WHERE idApi=:idApi");
$consulta->bindParam(':idApi', $this->idApi);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
return $resultado['idTemporada'];
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe la temporada en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin existe()
public function agregar(){
// Miramos si existe
$idTemporada = $this->existe($this->idApi);
// Si no existe la creamos, y devolvemos el último idTemporada insertado
// Si existe devolvemos el idTemporada correspondiente
if(!$idTemporada){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO seriestemporadas (idApi, idSerie, nombreTemporada, numeroTemporada, directorTemporada, guionistaTemporada, actorTemporada, episodiosTemporada, anoTemporada, ratingAvgTemporada, posterTemporada, sinopsisTemporada) VALUES (:idApi,:idSerie,:nombre,:numero,:director,:guionista,:actor,:episodios,:ano,:ratingAvg,:poster,:sinopsis)");
$consulta->bindParam(':idApi',$this->idApi);
$consulta->bindParam(':idSerie',$this->idSerie);
$consulta->bindParam(':nombre',$this->nombreTemporada);
$consulta->bindParam(':numero',$this->numeroTemporada);
$consulta->bindParam(':director',$this->directorTemporada);
$consulta->bindParam(':guionista',$this->guionistaTemporada);
$consulta->bindParam(':actor',$this->actorTemporada);
$consulta->bindParam(':episodios',$this->episodiosTemporada);
$consulta->bindParam(':ano',$this->anoTemporada);
$consulta->bindParam(':ratingAvg',$this->ratingAvgTemporada);
$consulta->bindParam(':poster',$this->posterTemporada);
$consulta->bindParam(':sinopsis',$this->sinopsisTemporada);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la temporada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
}else{
return $idTemporada;
}
} // Fin agregar()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM seriestemporadas WHERE idTemporada= :idTemporada");
$consulta->bindParam(':idTemporada', $this->idTemporada);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos de la temporada seleccionada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
} // Fin clase Temporada
?>
+349
View File
@@ -0,0 +1,349 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
class Usuario{
public $idUsuario;
public $username;
public $nombreUsuario;
public $email;
public $contrasena;
public $avatar;
public $fechaRegistro;
public $identificador;
function __construct($idUsuario=null, $username=null, $nombreUsuario=null, $email=null, $contrasena=null, $avatar=null, $fechaRegistro=null){
$this->idUsuario = $idUsuario;
$this->username = $username;
$this->nombreUsuario = $nombreUsuario;
$this->email = $email;
$this->contrasena = $contrasena;
$this->avatar = $avatar;
$this->fechaRegistro = $fechaRegistro;
} // Fin __construct()
public function insertar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
// Comprobamos que el username esté libre
$consulta = $conexion->prepare("SELECT * FROM usuarios WHERE username= :username");
$consulta->bindParam(':username', $this->username);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
if(count($resultado)>0){
$respuesta = [
'error' => 'Este nombre de usuario ya existe.',
'caso' => 'username'
];
return $respuesta;
}
// Comprobamos que el email esté libre
$consulta = $conexion->prepare("SELECT * FROM usuarios WHERE email= :email");
$consulta->bindParam(':email', $this->email);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
if(count($resultado)>0){
$respuesta = [
'error' => 'Ya existe un usuario con este correo.',
'caso' => 'email'
];
return $respuesta;
}
$consulta = $conexion->prepare("INSERT INTO usuarios (idUsuario, username, nombreUsuario, email, contrasena, avatar, fechaRegistro) VALUES (:idUsuario, :username, :nombreUsuario, :email, :contrasena, :avatar, :fechaRegistro)");
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':username', $this->username);
$consulta->bindParam(':nombreUsuario', $this->nombreUsuario);
$consulta->bindParam(':email', $this->email);
$consulta->bindParam(':avatar', $this->avatar);
$fechaRegistro=date('Y/m/d');
$consulta->bindParam(':fechaRegistro', $fechaRegistro);
// Ciframos la contraseña
$pass = password_hash($this->contrasena, PASSWORD_DEFAULT);
$consulta->bindParam(':contrasena', $pass);
$consulta->execute();
// Inciamos la sesión al registrarse
$this->idUsuario = $conexion->lastInsertId();
$_SESSION['idUsuario'] = $this->idUsuario;
$_SESSION['username'] = $this->username;
$respuesta = [
'exito' => 'El usuario se registró correctamente.',
'id' => $conexion->lastInsertId()
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al crear al usuario.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin insertar()
public function validar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM usuarios WHERE username= :identificador OR email= :identificador");
$consulta->bindParam(':identificador', $this->identificador);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
// Si el usuario no existe
if(count($resultado)==0){
$respuesta = ['error' => 'Usuario o contrasena incorrectos.'];
return $respuesta;
}
$pass = $resultado[0]['contrasena'];
if(password_verify($this->contrasena, $pass)){
// La pass es correcta, el usuario está validado
// Actualizamos variables y también el objeto actual, para que se sepa qué usuario tiene sesión iniciado en cualquier página del proyecto
$_SESSION['idUsuario'] = $resultado[0]['idUsuario'];
$_SESSION['username'] = $resultado[0]['username'];
$_SESSION['nombreUsuario'] = $resultado[0]['nombreUsuario'];
$_SESSION['avatar'] = $resultado[0]['avatar'];
$this->idUsuario = $resultado[0]['idUsuario'];
$this->username = $resultado[0]['username'];
$this->nombreUsuario = $resultado[0]['nombreUsuario'];
$this->email = $resultado[0]['email'];
$this->avatar = $resultado[0]['avatar'];
$this->fechaRegistro = $resultado[0]['fechaRegistro'];
// Almacenamos datos que usaremos en la respuesta
$respuesta = [
'exito' => 'Usuario validado.',
'nombreUsuario' => $resultado[0]['nombreUsuario']
];
return $respuesta;
}else{
// pass incorrecta
// Eliminamos los datos por si hubiera alguna sesión iniciado si alguien ha introducido mal la contraseña
unset($_SESSION['idUsuario']);
unset($_SESSION['nombreUsuario']);
unset($_SESSION['username']);
$this->idUsuario = null;
$this->username = null;
$this->nombreUsuario = null;
$this->email = null;
$this->avatar = null;
$this->fechaRegistro = null;
$respuesta = ['error' => 'Usuario o contrasena incorrectos.'];
return $respuesta;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al validar al usuario.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin validar()
public function editarNombre(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuarios SET nombreUsuario=:nombre WHERE idUsuario=:id");
$consulta->bindParam(':id', $this->idUsuario);
$consulta->bindParam(':nombre', $this->nombreUsuario);
$consulta->execute();
$_SESSION['nombreUsuario'] = $this->nombreUsuario;
$respuesta = [
'exito' => 'El nombre de usuario se editó correctamente.',
'exito_tecnico' => $this->nombreUsuario
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar el nombre del usuario.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarNombre()
public function editarAvatar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}
try{
if(!isset($_FILES['avatar']) || !isset($_FILES['avatar']['error'])){
return [
'error' => 'No se recibió ninguna imagen.'
];
}
if($_FILES['avatar']['error'] !== UPLOAD_ERR_OK){
return [
'error' => 'No se pudo subir la imagen.'
];
}
if($_FILES['avatar']['size'] > 5 * 1024 * 1024){
return [
'error' => 'El avatar no puede superar los 5 MB.'
];
}
$finfo = new finfo(FILEINFO_MIME_TYPE);
$tiposPermitidos = [
'image/jpeg' => 'jpg',
'image/png' => 'png',
'image/webp' => 'webp'
];
$mime = $finfo->file(
$_FILES['avatar']['tmp_name']
);
if(!isset($tiposPermitidos[$mime])){
return [
'error' => 'El archivo debe ser una imagen JPG, PNG o WEBP.'
];
}
if(@getimagesize($_FILES['avatar']['tmp_name']) === false){
return [
'error' => 'El archivo seleccionado no es una imagen válida.'
];
}
// Creamos la carpeta física
$carpeta = $_SERVER['DOCUMENT_ROOT'].'/MyDiary/images/avatars/';
if(!is_dir($carpeta)){
if(!mkdir($carpeta, 0755, true)){
return [
'error' => 'No se pudo crear la carpeta de avatares.'
];
}
}
$extension = $tiposPermitidos[$mime];
$nombreArchivo = $this->idUsuario.'.'.$extension;
$rutaFisica = $carpeta.$nombreArchivo;
// Eliminamos posibles avatares anteriores de este usuario
$extensiones = ['jpg', 'png', 'webp'];
foreach($extensiones as $extensionAnterior){
$archivoAnterior = $carpeta.$this->idUsuario.'.'.$extensionAnterior;
if(file_exists($archivoAnterior) && $archivoAnterior !== $rutaFisica){
unlink($archivoAnterior);
}
}
if(!move_uploaded_file($_FILES['avatar']['tmp_name'],$rutaFisica)){
return [
'error' => 'No se pudo guardar el avatar.'
];
}
$rutaBD ='images/avatars/'.$nombreArchivo;
// Actualizamos el usuario
$consulta = $conexion->prepare("UPDATE usuarios SET avatar = :avatar WHERE idUsuario = :idUsuario");
$consulta->bindParam(':avatar', $rutaBD);
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->execute();
// Lo guardamos ya en la sesión actual
$_SESSION['avatar'] = $rutaBD;
return [
'exito' => true,
'avatar' => $rutaBD
];
}catch(PDOException $error){
return [
'error' => 'Ocurrió un error al actualizar el avatar.',
'error_tecnico' => $error
];
}
} // Fin editarAvatar()
public function cerrarSesion(){
$_SESSION = [];
session_destroy();
$respuesta = [
'exito' => 'La sesión se ha cerrado correctamente'
];
return $respuesta;
} // Fin cerrarSesion()
} // Fin de la clase Usuario
/*
$usuario = new Usuario();
$usuario->username = 'isaac';
$usuario->nombreUsuario = 'Isaac';
$usuario->email = 'isaac.espi@hotmail.es';
$usuario->contrasena = '1234';
$resultado = $usuario->insertar();
var_dump($resultado);
echo '<br>';
$resultado = $usuario->validar();
var_dump($resultado);
*/
?>
+514
View File
@@ -0,0 +1,514 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiSerie.php';
class UsuarioxEpisodio{
public $idUsuarioEpisodio;
public $idUsuario;
public $idEpisodio;
public $ratingEpisodio;
public $favEpisodio;
public $pendienteEpisodio;
public $fechaEpisodio;
public $notasEpisodio;
function __construct($idUsuarioEpisodio=null, $idUsuario=null, $idEpisodio=null, $ratingEpisodio=null, $favEpisodio=null, $pendienteEpisodio=null, $fechaEpisodio=null, $notasEpisodio=null){
$this->idUsuarioEpisodio = $idUsuarioEpisodio;
$this->idUsuario = $idUsuario;
$this->idEpisodio = $idEpisodio;
$this->ratingEpisodio = $ratingEpisodio;
$this->favEpisodio = $favEpisodio;
$this->pendienteEpisodio = $pendienteEpisodio;
$this->fechaEpisodio = $fechaEpisodio;
$this->notasEpisodio = $notasEpisodio;
} // Fin __construct
public function agregar(){
$conexion=conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO usuariosxepisodios (idUsuario, idEpisodio, ratingEpisodio, favEpisodio, pendienteEpisodio, fechaEpisodio, notasEpisodio) VALUES (:idUsuario,:idEpisodio, :rating, :fav, :pend, :fecha, :notas)");
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->bindParam(':idEpisodio',$this->idEpisodio);
$consulta->bindParam(':rating',$this->ratingEpisodio);
$consulta->bindParam(':fav',$this->favEpisodio);
$pend=0;
$consulta->bindParam(':pend',$pend);
$consulta->bindParam(':fecha',$this->fechaEpisodio);
$consulta->bindParam(':notas',$this->notasEpisodio);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar el episodio.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregar()
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idUsuarioEpisodio FROM usuariosxepisodios WHERE idEpisodio=:idEpisodio AND idUsuario=:idUsuario");
$consulta->bindParam(':idEpisodio', $this->idEpisodio);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
$respuesta = [
'error' => 'Ya has registrado este episodio',
'error_tecnico' => $this->idEpisodio
];
$conexion = null;
return $respuesta;
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe el episodio en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin existe()
public function listarTodo(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idEpisodio, p.idApi, p.idTemporada, p.nombreEpisodio, p.numeroEpisodio, p.directorEpisodio, p.actorEpisodio, p.guionistaEpisodio, p.anoEpisodio, p.duracionEpisodio, p.ratingAvgEpisodio, p.posterEpisodio, p.sinopsisEpisodio, up.idUsuarioEpisodio, up.idUsuario, up.idEpisodio, up.ratingEpisodio, up.favEpisodio, up.pendienteEpisodio, up.fechaEpisodio, up.notasEpisodio FROM usuariosxepisodios up INNER JOIN seriesepisodios p ON up.idEpisodio = p.idEpisodio WHERE up.idUsuario = :idUsuario AND up.pendienteEpisodio = :pend ORDER BY up.fechaEpisodio DESC, up.idUsuarioEpisodio DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de episodios.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarTodo()
public function listarEstrellas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idEpisodio, p.idApi, p.idTemporada, p.nombreEpisodio, p.numeroEpisodio, p.directorEpisodio, p.actorEpisodio, p.guionistaEpisodio, p.anoEpisodio, p.duracionEpisodio, p.ratingAvgEpisodio, p.posterEpisodio, p.sinopsisEpisodio, up.idUsuarioEpisodio, up.idUsuario, up.idEpisodio, up.ratingEpisodio, up.favEpisodio, up.pendienteEpisodio, up.fechaEpisodio, up.notasEpisodio FROM usuariosxepisodios up INNER JOIN seriesepisodios p ON up.idEpisodio = p.idEpisodio WHERE up.ratingEpisodio = :rating AND up.idUsuario = :idUsuario AND up.pendienteEpisodio = :pend ORDER BY up.fechaEpisodio DESC, up.idUsuarioEpisodio DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':rating', $this->ratingEpisodio);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de episodios con valoracion '.$this->ratingEpisodio,
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarEstrellas()
public function listarFav(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idEpisodio, p.idApi, p.idTemporada, p.nombreEpisodio, p.numeroEpisodio, p.directorEpisodio, p.actorEpisodio, p.guionistaEpisodio, p.anoEpisodio, p.duracionEpisodio, p.ratingAvgEpisodio, p.posterEpisodio, p.sinopsisEpisodio, up.idUsuarioEpisodio, up.idUsuario, up.idEpisodio, up.ratingEpisodio, up.favEpisodio, up.pendienteEpisodio, up.fechaEpisodio, up.notasEpisodio FROM usuariosxepisodios up INNER JOIN seriesepisodios p ON up.idEpisodio = p.idEpisodio WHERE up.favEpisodio = :fav AND up.idUsuario = :idUsuario AND up.pendienteEpisodio = :pend ORDER BY up.fechaEpisodio DESC, up.idUsuarioEpisodio DESC");
$fav = 1;
$consulta->bindParam(':fav', $fav);
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de episodios favoritos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarFav()
public function listarPendientes(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idEpisodio, p.idApi, p.idTemporada, p.nombreEpisodio, p.numeroEpisodio, p.directorEpisodio, p.actorEpisodio, p.guionistaEpisodio, p.anoEpisodio, p.duracionEpisodio, p.ratingAvgEpisodio, p.posterEpisodio, p.sinopsisEpisodio, up.idUsuarioEpisodio, up.idUsuario, up.idEpisodio, up.ratingEpisodio, up.favEpisodio, up.pendienteEpisodio, up.fechaEpisodio, up.notasEpisodio FROM usuariosxepisodios up INNER JOIN seriesepisodios p ON up.idEpisodio = p.idEpisodio WHERE up.pendienteEpisodio = :pend AND up.idUsuario = :idUsuario");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de episodios pendientes.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarPendientes()
public function agregarPend(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("INSERT INTO usuariosxepisodios (idUsuario, idEpisodio, pendienteEpisodio) VALUES (:idUsuario, :idEpisodio, :pend)");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':idEpisodio', $this->idEpisodio);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar el episodio como pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPend()
public function buscar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$busqueda = $_POST['busqueda'];
if(is_numeric($busqueda)){
$consulta = $conexion->prepare("SELECT p.idEpisodio, p.idApi, p.idTemporada, p.nombreEpisodio, p.numeroEpisodio, p.directorEpisodio, p.actorEpisodio, p.guionistaEpisodio, p.anoEpisodio, p.duracionEpisodio, p.ratingAvgEpisodio, p.posterEpisodio, p.sinopsisEpisodio, up.idUsuarioEpisodio, up.idUsuario, up.idEpisodio, up.ratingEpisodio, up.favEpisodio, up.pendienteEpisodio, up.fechaEpisodio, up.notasEpisodio FROM usuariosxepisodios up INNER JOIN seriesepisodios p ON up.idEpisodio = p.idEpisodio WHERE p.anoEpisodio=:ano AND up.idUsuario=:idUsuario ORDER BY up.ratingEpisodio DESC, up.fechaEpisodio DESC, up.idUsuarioEpisodio DESC");
$consulta->bindParam(':ano', $busqueda);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}else{
$busquedaParcial = "%" . $_POST['busqueda'] . "%";
$consulta = $conexion->prepare("SELECT p.idEpisodio, p.idApi, p.idTemporada, p.nombreEpisodio, p.numeroEpisodio, p.directorEpisodio, p.actorEpisodio, p.guionistaEpisodio, p.anoEpisodio, p.duracionEpisodio, p.ratingAvgEpisodio, p.posterEpisodio, p.sinopsisEpisodio, up.idUsuarioEpisodio, up.idUsuario, up.idEpisodio, up.ratingEpisodio, up.favEpisodio, up.pendienteEpisodio, up.fechaEpisodio, up.notasEpisodio FROM usuariosxepisodios up INNER JOIN seriesepisodios p ON up.idEpisodio = p.idEpisodio WHERE up.idUsuario=:idUsuario AND (p.nombreEpisodio LIKE :nombre OR p.directorEpisodio LIKE :director) ORDER BY up.ratingEpisodio DESC, up.fechaEpisodio DESC, up.idUsuarioEpisodio DESC");
$consulta->bindParam(':nombre', $busquedaParcial);
$consulta->bindParam(':director', $busquedaParcial);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de episodios buscados.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin buscar()
public function favorita(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxepisodios SET favEpisodio= :fav WHERE idUsuarioEpisodio = :idUsuarioEpisodio AND idUsuario=:idUsuario AND pendienteEpisodio=:pend");
$consulta->bindParam(':idUsuarioEpisodio', $this->idUsuarioEpisodio);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fav', $this->favEpisodio);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return [
'exito' => true,
'idUsuarioEpisodio' => $this->idUsuarioEpisodio,
'favEpisodio' => $this->favEpisodio
];
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al cambiar el estado favorita del episodio.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin favorita()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM usuariosxepisodios WHERE idUsuarioEpisodio= :idUsuarioEpisodio AND idUsuario=:idUsuario");
$consulta->bindParam(':idUsuarioEpisodio', $this->idUsuarioEpisodio);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos del episodio seleccionado.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
function editarVal(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxepisodios SET ratingEpisodio=:rating WHERE idUsuarioEpisodio=:id AND idUsuario=:idUsuario AND pendienteEpisodio=:pend");
$consulta->bindParam(':rating', $this->ratingEpisodio);
$consulta->bindParam(':id', $this->idUsuarioEpisodio);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la valoración del episodio.',
'exito_tecnico' => $this->ratingEpisodio
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la valoración del episodio.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarVal()
function editarFecha(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxepisodios SET fechaEpisodio=:fecha WHERE idUsuarioEpisodio= :id AND idUsuario=:idUsuario AND pendienteEpisodio=:pend");
$consulta->bindParam(':id', $this->idUsuarioEpisodio);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaEpisodio);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la fecha de visualización del episodio.',
'exito_tecnico' => $this->fechaEpisodio
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la fecha de visualización del episodio.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarFecha()
function editarNotas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxepisodios SET notasEpisodio=:notas WHERE idUsuarioEpisodio= :id AND idUsuario=:idUsuario AND pendienteEpisodio=:pend");
$consulta->bindParam(':id', $this->idUsuarioEpisodio);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':notas', $this->notasEpisodio);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente las notas del episodio.',
'exito_tecnico' => $this->fechaEpisodio
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar las notas del episodio.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarNotas()
function agregarPendTabla(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxepisodios SET pendienteEpisodio=:pend, fechaEpisodio=:fecha, ratingEpisodio=:rating, favEpisodio=:fav, notasEpisodio=:notas WHERE idUsuarioEpisodio= :id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioEpisodio);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaEpisodio);
$consulta->bindParam(':rating', $this->ratingEpisodio);
$consulta->bindParam(':fav', $this->favEpisodio);
$consulta->bindParam(':notas', $this->notasEpisodio);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return $this->idUsuarioEpisodio;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar el episodio pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPendTabla
function eliminar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("DELETE FROM usuariosxepisodios WHERE idUsuarioEpisodio=:id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioEpisodio);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$respuesta = [
'exito' => 'Se eliminó correctamente el episodio.',
'exito_tecnico' => $this->idUsuarioEpisodio,
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al eliminar el episodio.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin eliminar()
} // Fin clase UsuarioxEpisodio
?>
+557
View File
@@ -0,0 +1,557 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiJuego.php';
class UsuarioxJuego{
public $idUsuarioJuego;
public $idUsuario;
public $idJuego;
public $ratingJuego;
public $favJuego;
public $pendienteJuego;
public $fechaInicioJuego;
public $fechaJuego;
public $plataformaJuego;
public $notasJuego;
function __construct($idUsuarioJuego=null, $idUsuario=null, $idJuego=null, $ratingJuego=null, $favJuego=null, $pendienteJuego=null, $fechaInicioJuego=null, $fechaJuego=null, $plataformaJuego=null, $notasJuego=null){
$this->idUsuarioJuego = $idUsuarioJuego;
$this->idUsuario = $idUsuario;
$this->idJuego = $idJuego;
$this->ratingJuego = $ratingJuego;
$this->favJuego = $favJuego;
$this->pendienteJuego = $pendienteJuego;
$this->fechaInicioJuego = $fechaInicioJuego;
$this->fechaJuego = $fechaJuego;
$this->plataformaJuego = $plataformaJuego;
$this->notasJuego = $notasJuego;
} // Fin __construct
public function agregar(){
$conexion=conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO usuariosxjuegos (idUsuario, idJuego, ratingJuego, favJuego, pendienteJuego, fechaJuego, notasJuego, fechaInicioJuego, plataformaJuego) VALUES (:idUsuario,:idJuego, :rating, :fav, :pend, :fecha, :notas, :fechaInicio, :plat)");
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->bindParam(':idJuego',$this->idJuego);
$consulta->bindParam(':rating',$this->ratingJuego);
$consulta->bindParam(':fav',$this->favJuego);
$pend=0;
$consulta->bindParam(':pend',$pend);
$consulta->bindParam(':fecha',$this->fechaJuego);
$consulta->bindParam(':notas',$this->notasJuego);
$consulta->bindParam(':fechaInicio',$this->fechaInicioJuego);
$consulta->bindParam(':plat',$this->plataformaJuego);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar el videojuego.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregar()
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idUsuarioJuego FROM usuariosxjuegos WHERE idJuego=:idJuego AND idUsuario=:idUsuario");
$consulta->bindParam(':idJuego', $this->idJuego);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
$respuesta = [
'error' => 'Ya has registrado este videojuego',
'error_tecnico' => $this->idJuego
];
$conexion = null;
return $respuesta;
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe el videojuego en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin existe()
public function listarTodo(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idJuego, p.idApi, p.nombreJuego, p.desarrolladorJuego, p.editorJuego, p.anoJuego, p.franquiciaJuego, p.generoJuego, p.plataformasJuego, p.dlcJuego, p.expansionJuego, p.duracionJuego, p.ratingAvgJuego, p.posterJuego, p.sinopsisJuego, up.idUsuarioJuego, up.idUsuario, up.idJuego, up.fechaJuego, up.ratingJuego, up.favJuego, up.pendienteJuego, up.notasJuego, up.plataformaJuego, up.fechaInicioJuego FROM usuariosxjuegos up INNER JOIN juegos p ON up.idJuego = p.idJuego WHERE up.idUsuario = :idUsuario AND up.pendienteJuego = :pend ORDER BY up.fechaJuego DESC, up.idUsuarioJuego DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de videojuegos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarTodo()
public function listarEstrellas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idJuego, p.idApi, p.nombreJuego, p.desarrolladorJuego, p.editorJuego, p.anoJuego, p.franquiciaJuego, p.generoJuego, p.plataformasJuego, p.dlcJuego, p.expansionJuego, p.duracionJuego, p.ratingAvgJuego, p.posterJuego, p.sinopsisJuego, up.idUsuarioJuego, up.idUsuario, up.idJuego, up.fechaJuego, up.ratingJuego, up.favJuego, up.pendienteJuego, up.notasJuego, up.plataformaJuego, up.fechaInicioJuego FROM usuariosxjuegos up INNER JOIN juegos p ON up.idJuego = p.idJuego WHERE up.ratingJuego = :rating AND up.idUsuario = :idUsuario AND up.pendienteJuego = :pend ORDER BY up.fechaJuego DESC, up.idUsuarioJuego DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':rating', $this->ratingJuego);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de videojuegos con valoracion '.$this->ratingJuego,
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarEstrellas()
public function listarFav(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idJuego, p.idApi, p.nombreJuego, p.desarrolladorJuego, p.editorJuego, p.anoJuego, p.franquiciaJuego, p.generoJuego, p.plataformasJuego, p.dlcJuego, p.expansionJuego, p.duracionJuego, p.ratingAvgJuego, p.posterJuego, p.sinopsisJuego, up.idUsuarioJuego, up.idUsuario, up.idJuego, up.fechaJuego, up.ratingJuego, up.favJuego, up.pendienteJuego, up.notasJuego, up.plataformaJuego, up.fechaInicioJuego FROM usuariosxjuegos up INNER JOIN juegos p ON up.idJuego = p.idJuego WHERE up.favJuego = :fav AND up.idUsuario = :idUsuario AND up.pendienteJuego = :pend ORDER BY up.fechaJuego DESC, up.idUsuarioJuego DESC");
$fav = 1;
$consulta->bindParam(':fav', $fav);
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de videojuegos favoritos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarFav()
public function listarPendientes(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idJuego, p.idApi, p.nombreJuego, p.desarrolladorJuego, p.editorJuego, p.anoJuego, p.franquiciaJuego, p.generoJuego, p.plataformasJuego, p.dlcJuego, p.expansionJuego, p.duracionJuego, p.ratingAvgJuego, p.posterJuego, p.sinopsisJuego, up.idUsuarioJuego, up.idUsuario, up.idJuego, up.fechaJuego, up.ratingJuego, up.favJuego, up.pendienteJuego, up.notasJuego, up.plataformaJuego, up.fechaInicioJuego FROM usuariosxjuegos up INNER JOIN juegos p ON up.idJuego = p.idJuego WHERE up.pendienteJuego = :pend AND up.idUsuario = :idUsuario");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de videojuegos pendientes.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarPendientes()
public function agregarPend(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("INSERT INTO usuariosxjuegos (idUsuario, idJuego, pendienteJuego) VALUES (:idUsuario, :idJuego, :pend)");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':idJuego', $this->idJuego);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar el videojuego como pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPend()
public function buscar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$busqueda = $_POST['busqueda'];
if(is_numeric($busqueda)){
$consulta = $conexion->prepare("SELECT p.idJuego, p.idApi, p.nombreJuego, p.desarrolladorJuego, p.editorJuego, p.anoJuego, p.franquiciaJuego, p.generoJuego, p.plataformasJuego, p.dlcJuego, p.expansionJuego, p.duracionJuego, p.ratingAvgJuego, p.posterJuego, p.sinopsisJuego, up.idUsuarioJuego, up.idUsuario, up.idJuego, up.fechaJuego, up.ratingJuego, up.favJuego, up.pendienteJuego, up.notasJuego, up.plataformaJuego, up.fechaInicioJuego FROM usuariosxjuegos up INNER JOIN juegos p ON up.idJuego = p.idJuego WHERE p.anoJuego=:ano AND up.idUsuario=:idUsuario ORDER BY up.ratingJuego DESC, up.fechaJuego DESC, up.idUsuarioJuego DESC");
$consulta->bindParam(':ano', $busqueda);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}else{
$busquedaParcial = "%" . $_POST['busqueda'] . "%";
$consulta = $conexion->prepare("SELECT p.idJuego, p.idApi, p.nombreJuego, p.desarrolladorJuego, p.editorJuego, p.anoJuego, p.franquiciaJuego, p.generoJuego, p.plataformasJuego, p.dlcJuego, p.expansionJuego, p.duracionJuego, p.ratingAvgJuego, p.posterJuego, p.sinopsisJuego, up.idUsuarioJuego, up.idUsuario, up.idJuego, up.fechaJuego, up.ratingJuego, up.favJuego, up.pendienteJuego, up.notasJuego, up.plataformaJuego, up.fechaInicioJuego FROM usuariosxjuegos up INNER JOIN juegos p ON up.idJuego = p.idJuego WHERE up.idUsuario=:idUsuario AND (p.nombreJuego LIKE :nombre OR p.desarrolladorJuego LIKE :desarrollador) ORDER BY up.ratingJuego DESC, up.fechaJuego DESC, up.idUsuarioJuego DESC");
$consulta->bindParam(':nombre', $busquedaParcial);
$consulta->bindParam(':desarrollador', $busquedaParcial);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de videojuegos buscados.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin buscar()
public function favorita(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxjuegos SET favJuego= :fav WHERE idUsuarioJuego = :idUsuarioJuego AND idUsuario=:idUsuario AND pendienteJuego=:pend");
$consulta->bindParam(':idUsuarioJuego', $this->idUsuarioJuego);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fav', $this->favJuego);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return [
'exito' => true,
'idUsuarioJuego' => $this->idUsuarioJuego,
'favJuego' => $this->favJuego
];
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al cambiar el estado favorita del videojuego.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin favorita()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM usuariosxjuegos WHERE idUsuarioJuego= :idUsuarioJuego AND idUsuario=:idUsuario");
$consulta->bindParam(':idUsuarioJuego', $this->idUsuarioJuego);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos del videojuego seleccionado.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
function editarVal(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxjuegos SET ratingJuego=:rating WHERE idUsuarioJuego=:id AND idUsuario=:idUsuario AND pendienteJuego=:pend");
$consulta->bindParam(':rating', $this->ratingJuego);
$consulta->bindParam(':id', $this->idUsuarioJuego);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la valoración del videojuego.',
'exito_tecnico' => $this->ratingJuego
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la valoración del videojuego.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarVal()
function editarFecha(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxjuegos SET fechaJuego=:fecha, fechaInicioJuego=:fechaInicio WHERE idUsuarioJuego= :id AND idUsuario=:idUsuario AND pendienteJuego=:pend");
$consulta->bindParam(':id', $this->idUsuarioJuego);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaJuego);
$consulta->bindParam(':fechaInicio', $this->fechaInicioJuego);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la fecha de visualización del videojuego.',
'exito_tecnico' => $this->fechaJuego
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la fecha de visualización del videojuego.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarFecha()
function editarPlataforma(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxjuegos SET plataformaJuego=:plat WHERE idUsuarioJuego=:id AND idUsuario=:idUsuario AND pendienteJuego=:pend");
$consulta->bindParam(':plat', $this->plataformaJuego);
$consulta->bindParam(':id', $this->idUsuarioJuego);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la plataforma del videojuego.',
'exito_tecnico' => $this->plataformaJuego
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la plataforma del videojuego.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarPlataforma()
function editarNotas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxjuegos SET notasJuego=:notas WHERE idUsuarioJuego= :id AND idUsuario=:idUsuario AND pendienteJuego=:pend");
$consulta->bindParam(':id', $this->idUsuarioJuego);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':notas', $this->notasJuego);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente las notas del videojuego.',
'exito_tecnico' => $this->fechaJuego
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar las notas del videojuego.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarNotas()
function agregarPendTabla(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxjuegos SET pendienteJuego=:pend, fechaJuego=:fecha, fechaInicioJuego=:fechaInicio, ratingJuego=:rating, favJuego=:fav, notasJuego=:notas, plataformaJuego=:plat WHERE idUsuarioJuego= :id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioJuego);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaJuego);
$consulta->bindParam(':fechaInicio', $this->fechaInicioJuego);
$consulta->bindParam(':rating', $this->ratingJuego);
$consulta->bindParam(':fav', $this->favJuego);
$consulta->bindParam(':notas', $this->notasJuego);
$consulta->bindParam(':plat', $this->plataformaJuego);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return $this->idUsuarioJuego;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar el videojuego pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPendTabla
function eliminar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("DELETE FROM usuariosxjuegos WHERE idUsuarioJuego=:id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioJuego);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$respuesta = [
'exito' => 'Se eliminó correctamente el videojuego.',
'exito_tecnico' => $this->idUsuarioJuego,
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al eliminar el videojuego.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin eliminar()
} // Fin clase UsuarioxJuego
?>
+520
View File
@@ -0,0 +1,520 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiLibro.php';
class UsuarioxLibro{
public $idUsuarioLibro;
public $idUsuario;
public $idLibro;
public $ratingLibro;
public $favLibro;
public $pendienteLibro;
public $fechaInicioLibro;
public $fechaLibro;
public $notasLibro;
function __construct($idUsuarioLibro=null, $idUsuario=null, $idLibro=null, $ratingLibro=null, $favLibro=null, $pendienteLibro=null, $fechaInicioLibro=null, $fechaLibro=null, $notasLibro=null){
$this->idUsuarioLibro = $idUsuarioLibro;
$this->idUsuario = $idUsuario;
$this->idLibro = $idLibro;
$this->ratingLibro = $ratingLibro;
$this->favLibro = $favLibro;
$this->pendienteLibro = $pendienteLibro;
$this->fechaInicioLibro = $fechaInicioLibro;
$this->fechaLibro = $fechaLibro;
$this->notasLibro = $notasLibro;
} // Fin __construct
public function agregar(){
$conexion=conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO usuariosxlibros (idUsuario, idLibro, ratingLibro, favLibro, pendienteLibro, fechaLibro, notasLibro, fechaInicioLibro) VALUES (:idUsuario, :idLibro, :rating, :fav, :pend, :fecha, :notas, :fechaInicio)");
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->bindParam(':idLibro',$this->idLibro);
$consulta->bindParam(':rating',$this->ratingLibro);
$consulta->bindParam(':fav',$this->favLibro);
$pend=0;
$consulta->bindParam(':pend',$pend);
$consulta->bindParam(':fecha',$this->fechaLibro);
$consulta->bindParam(':notas',$this->notasLibro);
$consulta->bindParam(':fechaInicio',$this->fechaInicioLibro);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar el libro.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregar()
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idUsuarioLibro FROM usuariosxlibros WHERE idLibro=:idLibro AND idUsuario=:idUsuario");
$consulta->bindParam(':idLibro', $this->idLibro);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
$respuesta = [
'error' => 'Ya has registrado este libro',
'error_tecnico' => $this->idLibro
];
$conexion = null;
return $respuesta;
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe el libro en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin existe()
public function listarTodo(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idLibro, p.idApi, p.nombreLibro, p.autorLibro, p.anoLibro, p.generoLibro, p.temaLibro, p.paginasLibro, p.edicionesLibro, p.idiomaLibro, p.ratingAvgLibro, p.posterLibro, p.sinopsisLibro, up.idUsuarioLibro, up.idUsuario, up.idLibro, up.fechaLibro, up.ratingLibro, up.favLibro, up.pendienteLibro, up.notasLibro, up.fechaInicioLibro FROM usuariosxlibros up INNER JOIN libros p ON up.idLibro = p.idLibro WHERE up.idUsuario = :idUsuario AND up.pendienteLibro = :pend ORDER BY up.fechaLibro DESC, up.idUsuarioLibro DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de libros.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarTodo()
public function listarEstrellas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idLibro, p.idApi, p.nombreLibro, p.autorLibro, p.anoLibro, p.generoLibro, p.temaLibro, p.paginasLibro, p.edicionesLibro, p.idiomaLibro, p.ratingAvgLibro, p.posterLibro, p.sinopsisLibro, up.idUsuarioLibro, up.idUsuario, up.idLibro, up.fechaLibro, up.ratingLibro, up.favLibro, up.pendienteLibro, up.notasLibro, up.fechaInicioLibro FROM usuariosxlibros up INNER JOIN libros p ON up.idLibro = p.idLibro WHERE up.ratingLibro = :rating AND up.idUsuario = :idUsuario AND up.pendienteLibro = :pend ORDER BY up.fechaLibro DESC, up.idUsuarioLibro DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':rating', $this->ratingLibro);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de libros con valoracion '.$this->ratingLibro,
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarEstrellas()
public function listarFav(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idLibro, p.idApi, p.nombreLibro, p.autorLibro, p.anoLibro, p.generoLibro, p.temaLibro, p.paginasLibro, p.edicionesLibro, p.idiomaLibro, p.ratingAvgLibro, p.posterLibro, p.sinopsisLibro, up.idUsuarioLibro, up.idUsuario, up.idLibro, up.fechaLibro, up.ratingLibro, up.favLibro, up.pendienteLibro, up.notasLibro, up.fechaInicioLibro FROM usuariosxlibros up INNER JOIN libros p ON up.idLibro = p.idLibro WHERE up.favLibro = :fav AND up.idUsuario = :idUsuario AND up.pendienteLibro = :pend ORDER BY up.fechaLibro DESC, up.idUsuarioLibro DESC");
$fav = 1;
$consulta->bindParam(':fav', $fav);
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de libros favoritos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarFav()
public function listarPendientes(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idLibro, p.idApi, p.nombreLibro, p.autorLibro, p.anoLibro, p.generoLibro, p.temaLibro, p.paginasLibro, p.edicionesLibro, p.idiomaLibro, p.ratingAvgLibro, p.posterLibro, p.sinopsisLibro, up.idUsuarioLibro, up.idUsuario, up.idLibro, up.fechaLibro, up.ratingLibro, up.favLibro, up.pendienteLibro, up.notasLibro, up.fechaInicioLibro FROM usuariosxlibros up INNER JOIN libros p ON up.idLibro = p.idLibro WHERE up.pendienteLibro = :pend AND up.idUsuario = :idUsuario");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de libros pendientes.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarPendientes()
public function agregarPend(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("INSERT INTO usuariosxlibros (idUsuario, idLibro, pendienteLibro) VALUES (:idUsuario, :idLibro, :pend)");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':idLibro', $this->idLibro);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar el libro como pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPend()
public function buscar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$busqueda = $_POST['busqueda'];
if(is_numeric($busqueda)){
$consulta = $conexion->prepare("SELECT p.idLibro, p.idApi, p.nombreLibro, p.autorLibro, p.anoLibro, p.generoLibro, p.temaLibro, p.paginasLibro, p.edicionesLibro, p.idiomaLibro, p.ratingAvgLibro, p.posterLibro, p.sinopsisLibro, up.idUsuarioLibro, up.idUsuario, up.idLibro, up.fechaLibro, up.ratingLibro, up.favLibro, up.pendienteLibro, up.notasLibro, up.fechaInicioLibro FROM usuariosxlibros up INNER JOIN libros p ON up.idLibro = p.idLibro WHERE p.anoLibro=:ano AND up.idUsuario=:idUsuario ORDER BY up.ratingLibro DESC, up.fechaLibro DESC, up.idUsuarioLibro DESC");
$consulta->bindParam(':ano', $busqueda);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}else{
$busquedaParcial = "%" . $_POST['busqueda'] . "%";
$consulta = $conexion->prepare("SELECT p.idLibro, p.idApi, p.nombreLibro, p.autorLibro, p.anoLibro, p.generoLibro, p.temaLibro, p.paginasLibro, p.edicionesLibro, p.idiomaLibro, p.ratingAvgLibro, p.posterLibro, p.sinopsisLibro, up.idUsuarioLibro, up.idUsuario, up.idLibro, up.fechaLibro, up.ratingLibro, up.favLibro, up.pendienteLibro, up.notasLibro, up.fechaInicioLibro FROM usuariosxlibros up INNER JOIN libros p ON up.idLibro = p.idLibro WHERE idUsuario=:idUsuario AND (p.nombreLibro LIKE :nombre OR p.autorLibro LIKE :autor) ORDER BY up.ratingLibro DESC, up.fechaLibro DESC, up.idUsuarioLibro DESC");
$consulta->bindParam(':nombre', $busquedaParcial);
$consulta->bindParam(':autor', $busquedaParcial);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de libros buscados.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin buscar()
public function favorita(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxlibros SET favLibro= :fav WHERE idUsuarioLibro = :idUsuarioLibro AND idUsuario=:idUsuario AND pendienteLibro=:pend");
$consulta->bindParam(':idUsuarioLibro', $this->idUsuarioLibro);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fav', $this->favLibro);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return [
'exito' => true,
'idUsuarioLibro' => $this->idUsuarioLibro,
'favLibro' => $this->favLibro
];
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al cambiar el estado favorita del libro.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin favorita()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM usuariosxlibros WHERE idUsuarioLibro= :idUsuarioLibro AND idUsuario=:idUsuario");
$consulta->bindParam(':idUsuarioLibro', $this->idUsuarioLibro);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos del libro seleccionado.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
function editarVal(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxlibros SET ratingLibro=:rating WHERE idUsuarioLibro=:id AND idUsuario=:idUsuario AND pendienteLibro=:pend");
$consulta->bindParam(':rating', $this->ratingLibro);
$consulta->bindParam(':id', $this->idUsuarioLibro);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la valoración del vlibro.',
'exito_tecnico' => $this->ratingLibro
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la valoración del libro.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarVal()
function editarFecha(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxlibros SET fechaLibro=:fecha, fechaInicioLibro=:fechaInicio WHERE idUsuarioLibro= :id AND idUsuario=:idUsuario AND pendienteLibro=:pend");
$consulta->bindParam(':id', $this->idUsuarioLibro);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaLibro);
$consulta->bindParam(':fechaInicio', $this->fechaInicioLibro);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la fecha de visualización del libro.',
'exito_tecnico' => $this->fechaLibro
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la fecha de visualización del libro.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarFecha()
function editarNotas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxlibros SET notasLibro=:notas WHERE idUsuarioLibro= :id AND idUsuario=:idUsuario AND pendienteLibro=:pend");
$consulta->bindParam(':id', $this->idUsuarioLibro);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':notas', $this->notasLibro);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente las notas del libro.',
'exito_tecnico' => $this->fechaLibro
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar las notas del libro.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarNotas()
function agregarPendTabla(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxlibros SET pendienteLibro=:pend, fechaLibro=:fecha, fechaInicioLibro=:fechaInicio, ratingLibro=:rating, favLibro=:fav, notasLibro=:notas WHERE idUsuarioLibro= :id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioLibro);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaLibro);
$consulta->bindParam(':fechaInicio', $this->fechaInicioLibro);
$consulta->bindParam(':rating', $this->ratingLibro);
$consulta->bindParam(':fav', $this->favLibro);
$consulta->bindParam(':notas', $this->notasLibro);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return $this->idUsuarioLibro;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar el libro pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPendTabla
function eliminar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("DELETE FROM usuariosxlibros WHERE idUsuarioLibro=:id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioLibro);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$respuesta = [
'exito' => 'Se eliminó correctamente el libro.',
'exito_tecnico' => $this->idUsuarioLibro,
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al eliminar el libro.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin eliminar()
} // Fin clase UsuarioxLibro
?>
+512
View File
@@ -0,0 +1,512 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiPelicula.php';
class UsuarioxPelicula{
public $idUsuarioPelicula;
public $idUsuario;
public $idPelicula;
public $ratingPelicula;
public $favPelicula;
public $pendientePelicula;
public $fechaPelicula;
public $notasPelicula;
function __construct($idUsuarioPelicula=null, $idUsuario=null, $idPelicula=null, $ratingPelicula=null, $favPelicula=null, $pendientePelicula=null, $fechaPelicula=null, $notasPelicula=null){
$this->idUsuarioPelicula = $idUsuarioPelicula;
$this->idUsuario = $idUsuario;
$this->idPelicula = $idPelicula;
$this->ratingPelicula = $ratingPelicula;
$this->favPelicula = $favPelicula;
$this->pendientePelicula = $pendientePelicula;
$this->fechaPelicula = $fechaPelicula;
$this->notasPelicula = $notasPelicula;
} // Fin __construct
public function agregar(){
$conexion=conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO usuariosxpeliculas (idUsuario, idPelicula, ratingPelicula, favPelicula, pendientePelicula, fechaPelicula, notasPelicula) VALUES (:idUsuario,:idPelicula, :rating, :fav, :pend, :fecha, :notas)");
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->bindParam(':idPelicula',$this->idPelicula);
$consulta->bindParam(':rating',$this->ratingPelicula);
$consulta->bindParam(':fav',$this->favPelicula);
$pend=0;
$consulta->bindParam(':pend',$pend);
$consulta->bindParam(':fecha',$this->fechaPelicula);
$consulta->bindParam(':notas',$this->notasPelicula);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregar()
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idUsuarioPelicula FROM usuariosxpeliculas WHERE idPelicula=:idPelicula AND idUsuario=:idUsuario");
$consulta->bindParam(':idPelicula', $this->idPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
$respuesta = [
'error' => 'Ya has registrado esta película',
'error_tecnico' => $this->idPelicula
];
$conexion = null;
return $respuesta;
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe la película en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin existe()
public function listarTodo(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idPelicula, p.idApi, p.nombrePelicula, p.directorPelicula, p.actorPelicula, p.guionistaPelicula, p.generoPelicula, p.anoPelicula, p.companiaPelicula, p.duracionPelicula, p.posterPelicula, p.ratingAvgPelicula, p.paisPelicula, p.idiomaPelicula, p.sinopsisPelicula, up.idUsuarioPelicula, up.idUsuario, up.idPelicula, up.ratingPelicula, up.favPelicula, up.pendientePelicula, up.fechaPelicula, up.notasPelicula FROM usuariosxpeliculas up INNER JOIN peliculas p ON up.idPelicula = p.idPelicula WHERE up.idUsuario = :idUsuario AND up.pendientePelicula = :pend ORDER BY up.fechaPelicula DESC, up.idUsuarioPelicula DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de peliculas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarTodo()
public function listarEstrellas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idPelicula, p.idApi, p.nombrePelicula, p.directorPelicula, p.actorPelicula, p.guionistaPelicula, p.generoPelicula, p.anoPelicula, p.companiaPelicula, p.duracionPelicula, p.posterPelicula, p.ratingAvgPelicula, p.paisPelicula, p.idiomaPelicula, p.sinopsisPelicula, up.idUsuarioPelicula, up.idUsuario, up.idPelicula, up.ratingPelicula, up.favPelicula, up.pendientePelicula, up.fechaPelicula, up.notasPelicula FROM usuariosxpeliculas up INNER JOIN peliculas p ON up.idPelicula = p.idPelicula WHERE up.ratingPelicula = :rating AND up.idUsuario = :idUsuario AND up.pendientePelicula = :pend ORDER BY up.fechaPelicula DESC, up.idUsuarioPelicula DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':rating', $this->ratingPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de peliculas con valoracion '.$this->ratingPelicula,
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarEstrellas()
public function listarFav(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idPelicula, p.idApi, p.nombrePelicula, p.directorPelicula, p.actorPelicula, p.guionistaPelicula, p.generoPelicula, p.anoPelicula, p.companiaPelicula, p.duracionPelicula, p.posterPelicula, p.ratingAvgPelicula, p.paisPelicula, p.idiomaPelicula, p.sinopsisPelicula, up.idUsuarioPelicula, up.idUsuario, up.idPelicula, up.ratingPelicula, up.favPelicula, up.pendientePelicula, up.fechaPelicula, up.notasPelicula FROM usuariosxpeliculas up INNER JOIN peliculas p ON up.idPelicula = p.idPelicula WHERE up.favPelicula = :fav AND up.pendientePelicula= :pend AND up.idUsuario= :idUsuario ORDER BY up.fechaPelicula DESC, up.idUsuarioPelicula DESC");
$fav = 1;
$consulta->bindParam(':fav', $fav);
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de peliculas favoritas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarFav()
public function listarPendientes(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idPelicula, p.idApi, p.nombrePelicula, p.directorPelicula, p.actorPelicula, p.guionistaPelicula, p.generoPelicula, p.anoPelicula, p.companiaPelicula, p.duracionPelicula, p.posterPelicula, p.ratingAvgPelicula, p.paisPelicula, p.idiomaPelicula, p.sinopsisPelicula, up.idUsuarioPelicula, up.idUsuario, up.idPelicula, up.ratingPelicula, up.favPelicula, up.pendientePelicula, up.fechaPelicula, up.notasPelicula FROM usuariosxpeliculas up INNER JOIN peliculas p ON up.idPelicula = p.idPelicula WHERE up.pendientePelicula = :pend AND up.idUsuario=:idUsuario");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de peliculas pendientes.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarPendientes()
public function agregarPend(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("INSERT INTO usuariosxpeliculas (idUsuario, idPelicula, pendientePelicula) VALUES (:idUsuario, :idPelicula, :pend)");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':idPelicula', $this->idPelicula);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la película como pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPend()
public function buscar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$busqueda = $_POST['busqueda'];
if(is_numeric($busqueda)){
$consulta = $conexion->prepare("SELECT p.idPelicula, p.idApi, p.nombrePelicula, p.directorPelicula, p.actorPelicula, p.guionistaPelicula, p.generoPelicula, p.anoPelicula, p.companiaPelicula, p.duracionPelicula, p.posterPelicula, p.ratingAvgPelicula, p.paisPelicula, p.idiomaPelicula, p.sinopsisPelicula, up.idUsuarioPelicula, up.idUsuario, up.idPelicula, up.ratingPelicula, up.favPelicula, up.pendientePelicula, up.fechaPelicula, up.notasPelicula FROM usuariosxpeliculas up INNER JOIN peliculas p ON up.idPelicula = p.idPelicula WHERE p.anoPelicula=:ano AND up.idUsuario=:idUsuario ORDER BY up.ratingPelicula DESC, up.fechaPelicula DESC, up.idUsuarioPelicula DESC");
$consulta->bindParam(':ano', $busqueda);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}else{
$busquedaParcial = "%" . $_POST['busqueda'] . "%";
$consulta = $conexion->prepare("SELECT p.idPelicula, p.idApi, p.nombrePelicula, p.directorPelicula, p.actorPelicula, p.guionistaPelicula, p.generoPelicula, p.anoPelicula, p.companiaPelicula, p.duracionPelicula, p.posterPelicula, p.ratingAvgPelicula, p.paisPelicula, p.idiomaPelicula, p.sinopsisPelicula, up.idUsuarioPelicula, up.idUsuario, up.idPelicula, up.ratingPelicula, up.favPelicula, up.pendientePelicula, up.fechaPelicula, up.notasPelicula FROM usuariosxpeliculas up INNER JOIN peliculas p ON up.idPelicula = p.idPelicula WHERE up.idUsuario=:idUsuario AND (p.nombrePelicula LIKE :nombre OR p.directorPelicula LIKE :director) ORDER BY up.ratingPelicula DESC, up.fechaPelicula DESC, up.idUsuarioPelicula DESC");
$consulta->bindParam(':nombre', $busquedaParcial);
$consulta->bindParam(':director', $busquedaParcial);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de peliculas buscadas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin buscar()
public function favorita(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxpeliculas SET favPelicula= :favPelicula WHERE idUsuarioPelicula = :idUsuarioPelicula AND idUsuario=:idUsuario AND pendientePelicula=:pend");
$consulta->bindParam(':idUsuarioPelicula', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':favPelicula', $this->favPelicula);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return [
'exito' => true,
'idUsuarioPelicula' => $this->idUsuarioPelicula,
'favPelicula' => $this->favPelicula
];
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al cambiar el estado favorita de la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin favorita()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM usuariosxpeliculas WHERE idUsuarioPelicula= :idUsuarioPelicula AND idUsuario=:idUsuario");
$consulta->bindParam(':idUsuarioPelicula', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos de la película seleccionada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
function editarVal(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxpeliculas SET ratingPelicula=:rating WHERE idUsuarioPelicula=:id AND idUsuario=:idUsuario AND pendientePelicula=:pend");
$consulta->bindParam(':rating', $this->ratingPelicula);
$consulta->bindParam(':id', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la valoración de la película.',
'exito_tecnico' => $this->ratingPelicula
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la valoración de la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarVal()
function editarFecha(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxpeliculas SET fechaPelicula=:fecha WHERE idUsuarioPelicula= :id AND idUsuario=:idUsuario AND pendientePelicula=:pend");
$consulta->bindParam(':id', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaPelicula);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la fecha de visualización de la película.',
'exito_tecnico' => $this->fechaPelicula
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la fecha de visualización de la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarFecha()
function editarNotas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxpeliculas SET notasPelicula=:notas WHERE idUsuarioPelicula= :id AND idUsuario=:idUsuario AND pendientePelicula=:pend");
$consulta->bindParam(':id', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':notas', $this->notasPelicula);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente las notas de la película.',
'exito_tecnico' => $this->fechaPelicula
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar las notas de la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarNotas()
function agregarPendTabla(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxpeliculas SET pendientePelicula=:pend, fechaPelicula=:fecha, ratingPelicula=:rating, favPelicula=:fav, notasPelicula=:notas WHERE idUsuarioPelicula= :id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaPelicula);
$consulta->bindParam(':rating', $this->ratingPelicula);
$consulta->bindParam(':fav', $this->favPelicula);
$consulta->bindParam(':notas', $this->notasPelicula);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return $this->idUsuarioPelicula;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la película pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPendTabla
function eliminar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("DELETE FROM usuariosxpeliculas WHERE idUsuarioPelicula=:id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$respuesta = [
'exito' => 'Se eliminó correctamente la película.',
'exito_tecnico' => $this->idUsuarioPelicula,
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al eliminar la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin eliminar()
} // Fin clase UsuarioxPelicula
?>
+553
View File
@@ -0,0 +1,553 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiSerie.php';
class UsuarioxSerie{
public $idUsuarioSerie;
public $idUsuario;
public $idSerie;
public $ratingSerie;
public $favSerie;
public $pendienteSerie;
public $fechaSerie;
public $estadoSerie;
public $notasSerie;
function __construct($idUsuarioSerie=null, $idUsuario=null, $idSerie=null, $ratingSerie=null, $favSerie=null, $pendienteSerie=null, $fechaSerie=null, $estadoSerie=null, $notasSerie=null){
$this->idUsuarioSerie = $idUsuarioSerie;
$this->idUsuario = $idUsuario;
$this->idSerie = $idSerie;
$this->ratingSerie = $ratingSerie;
$this->favSerie = $favSerie;
$this->pendienteSerie = $pendienteSerie;
$this->fechaSerie = $fechaSerie;
$this->estadoSerie = $estadoSerie;
$this->notasSerie = $notasSerie;
} // Fin __construct
public function agregar(){
$conexion=conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO usuariosxseries (idUsuario, idSerie, ratingSerie, favSerie, pendienteSerie, fechaSerie, notasSerie, estadoSerie) VALUES (:idUsuario,:idSerie, :rating, :fav, :pend, :fecha, :notas, :estado)");
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->bindParam(':idSerie',$this->idSerie);
$consulta->bindParam(':rating',$this->ratingSerie);
$consulta->bindParam(':fav',$this->favSerie);
$pend=0;
$consulta->bindParam(':pend',$pend);
$consulta->bindParam(':fecha',$this->fechaSerie);
$consulta->bindParam(':notas',$this->notasSerie);
$consulta->bindParam(':estado',$this->estadoSerie);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la serie.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregar()
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idUsuarioSerie FROM usuariosxseries WHERE idSerie=:idSerie AND idUsuario=:idUsuario");
$consulta->bindParam(':idSerie', $this->idSerie);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
$respuesta = [
'error' => 'Ya has registrado esta serie',
'error_tecnico' => $this->idSerie
];
$conexion = null;
return $respuesta;
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe la serie en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin existe()
public function listarTodo(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idSerie, p.idApi, p.nombreSerie, p.creadorSerie, p.directorSerie, p.actorSerie, p.guionistaSerie, p.companiaSerie, p.generoSerie, p.anoSerie, p.temporadasSerie, p.episodiosSerie, p.ratingAvgSerie, p.paisSerie, p.idiomaSerie, p.posterSerie, p.sinopsisSerie, up.idUsuarioSerie, up.idUsuario, up.idSerie, up.ratingSerie, up.favSerie, up.pendienteSerie, up.fechaSerie, up.estadoSerie, up.notasSerie FROM usuariosxseries up INNER JOIN series p ON up.idSerie = p.idSerie WHERE up.idUsuario = :idUsuario AND up.pendienteSerie = :pend ORDER BY up.fechaSerie DESC, up.idUsuarioSerie DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de series.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarTodo()
public function listarEstrellas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idSerie, p.idApi, p.nombreSerie, p.creadorSerie, p.directorSerie, p.actorSerie, p.guionistaSerie, p.companiaSerie, p.generoSerie, p.anoSerie, p.temporadasSerie, p.episodiosSerie, p.ratingAvgSerie, p.paisSerie, p.idiomaSerie, p.posterSerie, p.sinopsisSerie, up.idUsuarioSerie, up.idUsuario, up.idSerie, up.ratingSerie, up.favSerie, up.pendienteSerie, up.fechaSerie, up.estadoSerie, up.notasSerie FROM usuariosxseries up INNER JOIN series p ON up.idSerie = p.idSerie WHERE up.ratingSerie = :rating AND up.idUsuario = :idUsuario AND up.pendienteSerie = :pend ORDER BY up.fechaSerie DESC, up.idUsuarioSerie DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':rating', $this->ratingSerie);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de series con valoracion '.$this->ratingSerie,
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarEstrellas()
public function listarFav(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idSerie, p.idApi, p.nombreSerie, p.creadorSerie, p.directorSerie, p.actorSerie, p.guionistaSerie, p.companiaSerie, p.generoSerie, p.anoSerie, p.temporadasSerie, p.episodiosSerie, p.ratingAvgSerie, p.paisSerie, p.idiomaSerie, p.posterSerie, p.sinopsisSerie, up.idUsuarioSerie, up.idUsuario, up.idSerie, up.ratingSerie, up.favSerie, up.pendienteSerie, up.fechaSerie, up.estadoSerie, up.notasSerie FROM usuariosxseries up INNER JOIN series p ON up.idSerie = p.idSerie WHERE up.favSerie = :fav AND up.idUsuario = :idUsuario AND up.pendienteSerie = :pend ORDER BY up.fechaSerie DESC, up.idUsuarioSerie DESC");
$fav = 1;
$consulta->bindParam(':fav', $fav);
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de series favoritas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarFav()
public function listarPendientes(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idSerie, p.idApi, p.nombreSerie, p.creadorSerie, p.directorSerie, p.actorSerie, p.guionistaSerie, p.companiaSerie, p.generoSerie, p.anoSerie, p.temporadasSerie, p.episodiosSerie, p.ratingAvgSerie, p.paisSerie, p.idiomaSerie, p.posterSerie, p.sinopsisSerie, up.idUsuarioSerie, up.idUsuario, up.idSerie, up.ratingSerie, up.favSerie, up.pendienteSerie, up.fechaSerie, up.estadoSerie, up.notasSerie FROM usuariosxseries up INNER JOIN series p ON up.idSerie = p.idSerie WHERE up.pendienteSerie = :pend AND up.idUsuario = :idUsuario");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de series pendientes.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarPendientes()
public function agregarPend(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("INSERT INTO usuariosxseries (idUsuario, idSerie, pendienteSerie) VALUES (:idUsuario, :idSerie, :pend)");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':idSerie', $this->idSerie);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la serie como pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPend()
public function buscar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$busqueda = $_POST['busqueda'];
if(is_numeric($busqueda)){
$consulta = $conexion->prepare("SELECT p.idSerie, p.idApi, p.nombreSerie, p.creadorSerie, p.directorSerie, p.actorSerie, p.guionistaSerie, p.companiaSerie, p.generoSerie, p.anoSerie, p.temporadasSerie, p.episodiosSerie, p.ratingAvgSerie, p.paisSerie, p.idiomaSerie, p.posterSerie, p.sinopsisSerie, up.idUsuarioSerie, up.idUsuario, up.idSerie, up.ratingSerie, up.favSerie, up.pendienteSerie, up.fechaSerie, up.estadoSerie, up.notasSerie FROM usuariosxseries up INNER JOIN series p ON up.idSerie = p.idSerie WHERE p.anoSerie=:ano AND up.idUsuario=:idUsuario ORDER BY up.ratingSerie DESC, up.fechaSerie DESC, up.idUsuarioSerie DESC");
$consulta->bindParam(':ano', $busqueda);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}else{
$busquedaParcial = "%" . $_POST['busqueda'] . "%";
$consulta = $conexion->prepare("SELECT p.idSerie, p.idApi, p.nombreSerie, p.creadorSerie, p.directorSerie, p.actorSerie, p.guionistaSerie, p.companiaSerie, p.generoSerie, p.anoSerie, p.temporadasSerie, p.episodiosSerie, p.ratingAvgSerie, p.paisSerie, p.idiomaSerie, p.posterSerie, p.sinopsisSerie, up.idUsuarioSerie, up.idUsuario, up.idSerie, up.ratingSerie, up.favSerie, up.pendienteSerie, up.fechaSerie, up.estadoSerie, up.notasSerie FROM usuariosxseries up INNER JOIN series p ON up.idSerie = p.idSerie WHERE up.idUsuario=:idUsuario AND (p.nombreSerie LIKE :nombre OR p.creadorSerie LIKE :creador OR p.directorSerie LIKE :director) ORDER BY up.ratingSerie DESC, up.fechaSerie DESC, up.idUsuarioSerie DESC");
$consulta->bindParam(':nombre', $busquedaParcial);
$consulta->bindParam(':creador', $busquedaParcial);
$consulta->bindParam(':director', $busquedaParcial);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de series buscadas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin buscar()
public function favorita(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxseries SET favSerie= :fav WHERE idUsuarioSerie = :idUsuarioSerie AND idUsuario=:idUsuario AND pendienteSerie=:pend");
$consulta->bindParam(':idUsuarioSerie', $this->idUsuarioSerie);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fav', $this->favSerie);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return [
'exito' => true,
'idUsuarioSerie' => $this->idUsuarioSerie,
'favSerie' => $this->favSerie
];
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al cambiar el estado favorita de la serie.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin favorita()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM usuariosxseries WHERE idUsuarioSerie= :idUsuarioSerie AND idUsuario=:idUsuario");
$consulta->bindParam(':idUsuarioSerie', $this->idUsuarioSerie);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos de la serie seleccionada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
function editarVal(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxseries SET ratingSerie=:rating WHERE idUsuarioSerie=:id AND idUsuario=:idUsuario AND pendienteSerie=:pend");
$consulta->bindParam(':rating', $this->ratingSerie);
$consulta->bindParam(':id', $this->idUsuarioSerie);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la valoración de la serie.',
'exito_tecnico' => $this->ratingSerie
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la valoración de la serie.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarVal()
function editarFecha(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxseries SET fechaSerie=:fecha WHERE idUsuarioSerie= :id AND idUsuario=:idUsuario AND pendienteSerie=:pend");
$consulta->bindParam(':id', $this->idUsuarioSerie);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaSerie);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la fecha de visualización de la serie.',
'exito_tecnico' => $this->fechaSerie
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la fecha de visualización de la serie.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarFecha()
function editarEstado(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxseries SET estadoSerie=:estado WHERE idUsuarioSerie=:id AND idUsuario=:idUsuario AND pendienteSerie=:pend");
$consulta->bindParam(':estado', $this->estadoSerie);
$consulta->bindParam(':id', $this->idUsuarioSerie);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente el estado de la serie.',
'exito_tecnico' => $this->estadoSerie
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar el estado de la serie.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarEstado()
function editarNotas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxseries SET notasSerie=:notas WHERE idUsuarioSerie= :id AND idUsuario=:idUsuario AND pendienteSerie=:pend");
$consulta->bindParam(':id', $this->idUsuarioSerie);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':notas', $this->notasSerie);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente las notas de la serie.',
'exito_tecnico' => $this->fechaSerie
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar las notas de la serie.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarNotas()
function agregarPendTabla(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxseries SET pendienteSerie=:pend, fechaSerie=:fecha, ratingSerie=:rating, favSerie=:fav, notasSerie=:notas, estadoSerie=:estado WHERE idUsuarioSerie= :id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioSerie);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaSerie);
$consulta->bindParam(':rating', $this->ratingSerie);
$consulta->bindParam(':fav', $this->favSerie);
$consulta->bindParam(':notas', $this->notasSerie);
$consulta->bindParam(':estado', $this->estadoSerie);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return $this->idUsuarioSerie;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la serie pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPendTabla
function eliminar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("DELETE FROM usuariosxseries WHERE idUsuarioSerie=:id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioSerie);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$respuesta = [
'exito' => 'Se eliminó correctamente la serie.',
'exito_tecnico' => $this->idUsuarioSerie,
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al eliminar la serie.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin eliminar()
} // Fin clase UsuarioxSerie
?>
+529
View File
@@ -0,0 +1,529 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiSerie.php';
class UsuarioxTemporada{
public $idUsuarioTemporada;
public $idUsuario;
public $idTemporada;
public $ratingTemporada;
public $favTemporada;
public $pendienteTemporada;
public $fechaTemporada;
public $notasTemporada;
function __construct($idUsuarioTemporada=null, $idUsuario=null, $idTemporada=null, $ratingTemporada=null, $favTemporada=null, $pendienteTemporada=null, $fechaTemporada=null, $notasTemporada=null){
$this->idUsuarioTemporada = $idUsuarioTemporada;
$this->idUsuario = $idUsuario;
$this->idTemporada = $idTemporada;
$this->ratingTemporada = $ratingTemporada;
$this->favTemporada = $favTemporada;
$this->pendienteTemporada = $pendienteTemporada;
$this->fechaTemporada = $fechaTemporada;
$this->notasTemporada = $notasTemporada;
} // Fin __construct
public function agregar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("INSERT INTO usuariosxtemporadas (idUsuario, idTemporada, ratingTemporada, favTemporada, pendienteTemporada, fechaTemporada, notasTemporada) VALUES ( :idUsuario, :idTemporada, :rating, :fav, :pend, :fecha, :notas)");
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':idTemporada', $this->idTemporada);
$consulta->bindParam(':rating',$this->ratingTemporada);
$consulta->bindParam(':fav',$this->favTemporada);
$pend=0;
$consulta->bindParam(':pend',$pend);
$consulta->bindParam(':fecha',$this->fechaTemporada);
$consulta->bindParam(':notas',$this->notasTemporada);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la temporada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
}
} // Fin agregar()
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idUsuarioTemporada FROM usuariosxtemporadas WHERE idTemporada = :idTemporada AND idUsuario = :idUsuario");
$consulta->bindParam(':idTemporada',$this->idTemporada);
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
$respuesta = [
'error' => 'Ya has registrado esta temporada.',
'error_tecnico' => $this->idTemporada
];
$conexion = null;
return $respuesta;
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe la temporada en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
}
} // Fin existe()
public function listarTodo(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idTemporada, p.idApi, p.idSerie, p.nombreTemporada, p.numeroTemporada, p.directorTemporada, p.guionistaTemporada, p.actorTemporada, p.episodiosTemporada, p.anoTemporada, p.ratingAvgTemporada, p.posterTemporada, p.sinopsisTemporada, up.idUsuarioTemporada, up.idUsuario, up.idTemporada, up.ratingTemporada, up.favTemporada, up.pendienteTemporada, up.fechaTemporada, up.notasTemporada FROM usuariosxtemporadas up INNER JOIN seriestemporadas p ON up.idTemporada = p.idTemporada WHERE up.idUsuario = :idUsuario AND up.pendienteTemporada = :pend ORDER BY up.fechaTemporada DESC, up.idUsuarioTemporada DESC");
$pend = 0;
$consulta->bindParam(':pend',$pend);
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de temporadas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
}
} // Fin listarTodo()
public function listarEstrellas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idTemporada, p.idApi, p.idSerie, p.nombreTemporada, p.numeroTemporada, p.directorTemporada, p.guionistaTemporada, p.actorTemporada, p.episodiosTemporada, p.anoTemporada, p.ratingAvgTemporada, p.posterTemporada, p.sinopsisTemporada, up.idUsuarioTemporada, up.idUsuario, up.idTemporada, up.ratingTemporada, up.favTemporada, up.pendienteTemporada, up.fechaTemporada, up.notasTemporada FROM usuariosxtemporadas up INNER JOIN seriestemporadas p ON up.idTemporada = p.idTemporada WHERE up.ratingTemporada = :rating AND up.idUsuario = :idUsuario AND up.pendienteTemporada = :pend ORDER BY up.fechaTemporada DESC, up.idUsuarioTemporada DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':rating', $this->ratingTemporada);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de temporadas con valoracion '.$this->ratingTemporada,
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarEstrellas()
public function listarFav(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idTemporada, p.idApi, p.idSerie, p.nombreTemporada, p.numeroTemporada, p.directorTemporada, p.guionistaTemporada, p.actorTemporada, p.episodiosTemporada, p.anoTemporada, p.ratingAvgTemporada, p.posterTemporada, p.sinopsisTemporada, up.idUsuarioTemporada, up.idUsuario, up.idTemporada, up.ratingTemporada, up.favTemporada, up.pendienteTemporada, up.fechaTemporada, up.notasTemporada FROM usuariosxtemporadas up INNER JOIN seriestemporadas p ON up.idTemporada = p.idTemporada WHERE up.favTemporada = :fav AND up.idUsuario = :idUsuario AND up.pendienteTemporada = :pend ORDER BY up.fechaTemporada DESC, up.idUsuarioTemporada DESC");
$fav = 1;
$consulta->bindParam(':fav', $fav);
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de temporadas favoritas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarFav()
public function listarPendientes(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idTemporada, p.idApi, p.idSerie, p.nombreTemporada, p.numeroTemporada, p.directorTemporada, p.guionistaTemporada, p.actorTemporada, p.episodiosTemporada, p.anoTemporada, p.ratingAvgTemporada, p.posterTemporada, p.sinopsisTemporada, up.idUsuarioTemporada, up.idUsuario, up.idTemporada, up.ratingTemporada, up.favTemporada, up.pendienteTemporada, up.fechaTemporada, up.notasTemporada FROM usuariosxtemporadas up INNER JOIN seriestemporadas p ON up.idTemporada = p.idTemporada WHERE up.pendienteTemporada = :pend AND up.idUsuario = :idUsuario");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de temporadas pendientes.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarPendientes()
public function agregarPend(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("INSERT INTO usuariosxtemporadas (idUsuario, idTemporada, pendienteTemporada) VALUES (:idUsuario, :idTemporada, :pend)");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':idTemporada', $this->idTemporada);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la temporada como pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPend()
public function buscar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$busqueda = $_POST['busqueda'];
if(is_numeric($busqueda)){
$consulta = $conexion->prepare("SELECT p.idTemporada, p.idApi, p.idSerie, p.nombreTemporada, p.numeroTemporada, p.directorTemporada, p.guionistaTemporada, p.actorTemporada, p.episodiosTemporada, p.anoTemporada, p.ratingAvgTemporada, p.posterTemporada, p.sinopsisTemporada, up.idUsuarioTemporada, up.idUsuario, up.idTemporada, up.ratingTemporada, up.favTemporada, up.pendienteTemporada, up.fechaTemporada, up.notasTemporada FROM usuariosxtemporadas up INNER JOIN seriestemporadas p ON up.idTemporada = p.idTemporada WHERE p.anoTemporada=:ano AND up.idUsuario=:idUsuario ORDER BY up.ratingTemporada DESC, up.fechaTemporada DESC, up.idUsuarioTemporada DESC");
$consulta->bindParam(':ano', $busqueda);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}else{
$busquedaParcial = "%" . $_POST['busqueda'] . "%";
$consulta = $conexion->prepare("SELECT p.idTemporada, p.idApi, p.idSerie, p.nombreTemporada, p.numeroTemporada, p.directorTemporada, p.guionistaTemporada, p.actorTemporada, p.episodiosTemporada, p.anoTemporada, p.ratingAvgTemporada, p.posterTemporada, p.sinopsisTemporada, up.idUsuarioTemporada, up.idUsuario, up.idTemporada, up.ratingTemporada, up.favTemporada, up.pendienteTemporada, up.fechaTemporada, up.notasTemporada FROM usuariosxtemporadas up INNER JOIN seriestemporadas p ON up.idTemporada = p.idTemporada WHERE up.idUsuario=:idUsuario AND (p.nombreTemporada LIKE :nombre OR p.directorTemporada LIKE :director) ORDER BY up.ratingTemporada DESC, up.fechaTemporada DESC, up.idUsuarioTemporada DESC");
$consulta->bindParam(':nombre', $busquedaParcial);
$consulta->bindParam(':director', $busquedaParcial);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de temporadas buscadas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin buscar()
public function favorita(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxtemporadas SET favTemporada= :fav WHERE idUsuarioTemporada = :idUsuarioTemporada AND idUsuario=:idUsuario AND pendienteTemporada=:pend");
$consulta->bindParam(':idUsuarioTemporada', $this->idUsuarioTemporada);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fav', $this->favTemporada);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return [
'exito' => true,
'idUsuarioSerie' => $this->idUsuarioTemporada,
'favSerie' => $this->favTemporada
];
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al cambiar el estado favorita de la temporada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin favorita()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM usuariosxtemporadas WHERE idUsuarioTemporada= :idUsuarioTemporada AND idUsuario=:idUsuario");
$consulta->bindParam(':idUsuarioTemporada', $this->idUsuarioTemporada);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos de la temporada seleccionada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
function editarVal(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxtemporadas SET ratingTemporada=:rating WHERE idUsuarioTemporada=:id AND idUsuario=:idUsuario AND pendienteTemporada=:pend");
$consulta->bindParam(':rating', $this->ratingTemporada);
$consulta->bindParam(':id', $this->idUsuarioTemporada);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la valoración de la temporada.',
'exito_tecnico' => $this->ratingTemporada
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la valoración de la temporada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarVal()
function editarFecha(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxtemporadas SET fechaTemporada=:fecha WHERE idUsuarioTemporada= :id AND idUsuario=:idUsuario AND pendienteTemporada=:pend");
$consulta->bindParam(':id', $this->idUsuarioTemporada);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaTemporada);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la fecha de visualización de la temporada.',
'exito_tecnico' => $this->fechaTemporada
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la fecha de visualización de la temporada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarFecha()
function editarNotas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxtemporadas SET notasTemporada=:notas WHERE idUsuarioTemporada= :id AND idUsuario=:idUsuario AND pendienteTemporada=:pend");
$consulta->bindParam(':id', $this->idUsuarioTemporada);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':notas', $this->notasTemporada);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente las notas de la temporada.',
'exito_tecnico' => $this->fechaTemporada
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar las notas de la temporada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarNotas()
function agregarPendTabla(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxtemporadas SET pendienteTemporada=:pend, fechaTemporada=:fecha, ratingTemporada=:rating, favTemporada=:fav, notasTemporada=:notas WHERE idUsuarioTemporada= :id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioTemporada);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaTemporada);
$consulta->bindParam(':rating', $this->ratingTemporada);
$consulta->bindParam(':fav', $this->favTemporada);
$consulta->bindParam(':notas', $this->notasTemporada);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return $this->idUsuarioTemporada;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la temporada pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPendTabla
function eliminar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("DELETE FROM usuariosxtemporadas WHERE idUsuarioTemporada=:id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioTemporada);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$respuesta = [
'exito' => 'Se eliminó correctamente la temporada.',
'exito_tecnico' => $this->idUsuarioTemporada,
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al eliminar la temporada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin eliminar()
} // Fin clase UsuarioxTemporada
?>