NxTIC/manager/repo/category.php

64 lines
1.8 KiB
PHP
Raw Normal View History

<?php
namespace manager\repo;
use \manager\Database;
use \manager\Checker;
use \manager\sessionManager;
class category extends parentRepo{
protected static function table_name(){ static $table_name = 'categories'; return $table_name; }
/* CREATION D'UNE NOUVELLE CATEGORIE SI AUCUNE AVEC CE NOM N'EXISTE DEJA, SINON RENVOIE L'ID
*
* @intitule<String> Nom de la catégorie
*
* @return id<int> Retourne l'id de la catégorie crée, FALSE si erreur
*
*/
public static function getOrCreate($intitule){
/* [0] Vérification des INPUT
=========================================================*/
// Si erreur de type de paramètre, on retourne FALSE
if( !Checker::run('varchar(0,40)', $intitule) )
return false;
/* [1] Vérification qu'aucune n'a cet intitulé
=========================================================*/
$existing = self::getByIntitule($intitule);
/* (1) Si existe déja avec cet intitulé, on récupère l'id */
if( is_array($existing) && count($existing) > 0 )
return $existing[0]['idCategorie'];
/* [2] Création si l'intitulé n'est pas déja utilisé
=========================================================*/
$create_r = Database::getPDO()->prepare("INSERT INTO categories(idCategorie, intitule)
VALUES(DEFAULT, :intitule)");
$create_r_status = $create_r->execute( array( ':intitule' => $intitule ) );
// Si erreur de requête
if( $create_r_status === false )
return false;
/* [3] On vérifie et renvoie l'id
=========================================================*/
$created = self::getByIntitule($intitule);
/* (1) Si existe déja avec cet intitulé, on récupère l'id */
if( is_array($created) && count($created) > 0 )
return $created[0]['idCategorie'];
// Sinon, c'est qu'il y a une erreur
return false;
}
}
?>