UID du sujet en question * * @return subject Tableau contenant les donnees du sujet s'il existe sinon retourne FALSE * */ public static function getById($id_subject){ /* [1] On effectue la requete =========================================================*/ $getSubject = Database::getPDO()->prepare("SELECT idSujet, pseudo, prenom, nom, id_facebook, telephone FROM sujets WHERE idSujet = :id_subject"); $get_status = $getSubject->execute(array( ':id_subject' => $id_subject )); // Si erreur de requête if( $get_status === false ) return false; /* [2] On recupere le resultat de la requete =========================================================*/ $subjectData = $getSubject->fetch(); // Si l'utilisateur n'existe pas, on retourne FALSE if( $subjectData === false ) return false; /* [3] Gestion du retour =========================================================*/ return Database::delNumeric( $subjectData, true ); } /* RETOURNE LES DONNEES DE TOUS LES SUJETS * * @return subjects Tableau contenant les donnees des sujets, retourne FALSE si erreur * */ public static function getAll(){ /* [1] On effectue la requete =========================================================*/ $getSubjects = Database::getPDO()->query("SELECT idSujet, pseudo, prenom, nom, id_facebook, telephone FROM sujets ORDER BY idSujet ASC"); /* [2] On recupere le resultat de la requete =========================================================*/ $subjectsData = $getSubjects->fetchAll(); // Si l'utilisateur n'existe pas, on retourne FALSE if( $subjectsData === false ) return false; /* [3] Gestion du retour =========================================================*/ return Database::delNumeric( $subjectsData ); } /* CREE UN SUJET * * @username Pseudo du sujet * @firstname Prénom du sujet * @lastname Nom du sujet * @id_facebook Id facebook du sujet (optionnel) * @number Numéro de téléphone du sujet (optionnel) * * @return id_subject Renvoie l'id du sujet cree ou FALSE si erreur * */ public static function create($username, $firstname, $lastname, $id_facebook, $number){ /* [0] Verification et formattage des INPUT =========================================================*/ $checkInput = Database::check('varchar(0,30)', $username); $checkInput = $checkInput && Database::check('varchar(0,30)', $firstname); $checkInput = $checkInput && Database::check('varchar(0,30)', $lastname); $checkInput = $checkInput && !!strlen($username.$firstname.$lastname); // Pseudo, prénom, ou nom, au moins un n'est pas vide $checkInput = $checkInput && ( Database::check('id', $id_facebook) || is_null($id_facebook) ); $checkInput = $checkInput && ( Database::check('number', $number) || is_null($number) ); // Si erreur en entree, on retourne FAUX if( !$checkInput ) return false; /* [1] On écrit la requête =========================================================*/ $request_create_string = 'INSERT INTO sujets(idSujet, pseudo, nom, prenom, id_facebook, telephone) '; $request_create_string .= 'VALUES ('; $request_create_string .= 'DEFAULT, '; // idPersone $request_create_string .= strlen($username) ? ':pseudo, ' : 'NULL, '; // pseudo $request_create_string .= strlen($lastname) ? ':nom, ' : 'NULL, '; // nom $request_create_string .= strlen($firstname) ? ':prenom, ' : 'NULL, '; // prenom $request_create_string .= !is_null($id_facebook) ? ':id_facebook, ' : 'NULL, '; // Id facebook $request_create_string .= !is_null($number) ? ':number, ' : 'NULL, '; // Numéro de tél // On retire la dernière virgule $request_create_string = preg_replace('/, ?$/', '', $request_create_string); $request_create_string .= ')'; // On crée la requête $request_create = Database::getPDO()->prepare($request_create_string); /* [2] On exécute la requête avec les valeurs =========================================================*/ /* (1) On ajoute les paramètres à ajouter */ $variables = array(); if( strlen($username) ) $variables[':pseudo'] = $username; if( strlen($lastname) ) $variables[':nom'] = $lastname; if( strlen($firstname) ) $variables[':prenom'] = $firstname; if( !is_null($id_facebook) ) $variables[':id_facebook'] = $id_facebook; if( !is_null($number) ) $variables[':number'] = $number; /* (2) On exécute la requête avec leurs variables utiles uniquement */ $status_created = $request_create->execute($variables); /* [3] Verification de la creation + recuperation id =========================================================*/ // Si erreur de création if( $status_created === false ) return false; // On recupere l'id du sujet $id_subject = Database::getPDO()->lastInsertId(); // Si erreur, on retourne FALSE if( $id_subject == null ) return false; /* [4] Gestion du retour =========================================================*/ return $id_subject; } /* SUPRESSION D'UN SUJET D'ID DONNE * * @id_subject UID du sujet en question * */ public static function remove($id_subject){ /* [0] Vérification des INPUT =========================================================*/ if( !Database::check('id', $id_subject) ) return false; /* [1] On effectue la suppression =========================================================*/ $delSubject = Database::getPDO()->prepare("DELETE FROM sujets WHERE idSujet = :id_subject"); return $delSubject->execute(array( ':id_subject' => $id_subject )); } /* CREER UNE RELATION ENTRE 2 SUJETS * * @A UID du premier sujet * @B UID du second sujet * @category Intitulé du type de relation * * @return id_relation Renvoie l'id de la relation crée, sinon FALSE si erreur * */ public static function link($A, $B, $category){ /* [0] Vérification des INPUT =========================================================*/ $checkInput = Database::check('id', $A); $checkInput = $checkInput && Database::check('id', $B); $checkInput = $checkInput && ( Database::check('varchar(0,40)', $category) || is_null($category) ); // Si erreur de type de paramètre, on retourne FALSE if( !$checkInput ) return false; $nullCat = is_null($category); /* [1] On vérifie l'existence de la catégorie =========================================================*/ $category_exists_req = Database::getPDO()->prepare("SELECT idCategorie as id FROM categories WHERE intitule ". ( $nullCat ? "is NULL" : "= :category" ) ); $cat_ex_status = $category_exists_req->execute( ($nullCat) ? null : array( ':category' => $category ) ); // Si erreur de requête -> FALSE if( $cat_ex_status === false ) return false; // On récupère l'id de la catégorie, sinon NULL $category_id = is_array($category_exists_req->fetch()) ? $category_exists_req->fetch()['id'] : null; /* [2] On crée la catégorie si elle n'existe pas =========================================================*/ if( $category_id === null ){ $create_category_req = Database::getPDO()->prepare("INSERT INTO categories(idCategorie, intitule) VALUES(DEFAULT, ". ( $nullCat ? "NULL" : ":category" ) .")"); $create_cat_status = $create_category_req->execute( ($nullCat) ? null : array( ':category' => $category ) ); // Si erreur de requête -> FALSE if( $create_cat_status === false ) return false; // On récupère l'id de la catégorie $get_category_id = Database::getPDO()->prepare("SELECT idCategorie as id FROM categories WHERE intitule ". ( $nullCat ? "is NULL" : "= :category" ) ); $get_cat_status = $get_category_id->execute( ($nullCat) ? null : array( ':category' => $category ) ); // Si erreur de requête -> FALSE if( $get_cat_status === false ) return false; // Si on a toujours rien, on retourne FALSE if( !is_array($get_category_id->fetch()) ) return false; // On récupère l'id de la catégorie $category_id = $get_category_id->fetch()['id']; } /* [3] On crée la relation =========================================================*/ $create_relation = Database::getPDO()->prepare("INSERT INTO relations(idPersonneA, idPersonneB, idCategorie) VALUES(:A, :B, :category)"); $create_rel_status = $create_relation->execute( array( ':A' => $A, ':B' => $B, ':category' => $category_id )); return $B; // Si erreur de requête -> FALSE if( $create_rel_status === false ) return false; /* [4] On vérifie que la relation est crée =========================================================*/ $check_relation = Database::getPDO()->prepare("SELECT idPersonneA, idPersonneB, idCategorie FROM relations WHERE idPersonneA = :A AND idPersonneB = :B AND idCategorie = :category"); $check_rel_status = $check_relation->execute( array( ':A' => $A, ':B' => $B, ':category' => $category_id )); // Si erreur de requête -> FALSE if( $check_rel_status === false ) return false; // Si on ne trouve pas, on retourne une erreur if( $check_relation->fetch() === false ) return false; // Si tout s'est bien passé, on retourne TRUE return true; } } ?>