Implémentation de la création d'une relation au niveau du repo : 'subject/link'

This commit is contained in:
xdrm-brackets 2016-05-09 11:27:00 +02:00
parent 7c1ab5e1cf
commit 733a49453c
2 changed files with 124 additions and 1 deletions

View File

@ -14,7 +14,8 @@
"getAll",
"create",
"merge",
"remove"
"remove",
"link"
],
"Personnes": [

View File

@ -162,12 +162,134 @@
*
*/
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<int> UID du premier sujet
* @B<int> UID du second sujet
* @category<String> Intitulé du type de relation
*
* @return id_relation<int> 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(3,40)', $category);
// Si erreur de type de paramètre, on retourne FALSE
if( !$checkInput )
return false;
/* [1] On vérifie l'existence de la catégorie
=========================================================*/
$category_exists_req = Database::getPDO()->prepare("SELECT idCategorie as id
FROM categories
WHERE intitule = :category
");
$cat_ex_status = $category_exists_req->execute( 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, :category)");
$create_cat_status = $create_category_req->execute( 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 = :category");
$get_cat_status = $get_category_id->execute( 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
));
// 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 idPersonnA, 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;
}
}