Correction et parent pour tous les repos (pour le getter dynamique)
Correction de l'héritage statique
This commit is contained in:
parent
b68a02d64f
commit
bd7eaf02a5
|
@ -64,7 +64,7 @@
|
|||
// var_dump($response);
|
||||
|
||||
|
||||
|
||||
var_dump( \manager\repo\user::getByMail('B@gmail.com') );
|
||||
var_dump( \manager\repo\subject::getByPseudo('jeannot') );
|
||||
|
||||
?>
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
<?php
|
||||
<?php
|
||||
|
||||
namespace manager;
|
||||
|
||||
|
||||
// FORMAT:
|
||||
//
|
||||
|
||||
// FORMAT:
|
||||
//
|
||||
// path: "nomModule/nomMethode"
|
||||
// data1: {donnee1}
|
||||
// data2: {donnee2}
|
||||
// ...
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
class Repo{
|
||||
|
||||
|
@ -54,7 +54,7 @@
|
|||
=========================================================*/
|
||||
// Modules specifies
|
||||
$this->repositories = json_decode( ResourceDispatcher::getResource(self::$config_path), true );
|
||||
|
||||
|
||||
// Gestion de l'erreur de parsage
|
||||
if( $this->repositories == null ){
|
||||
$this->error = ManagerError::ParsingFailed;
|
||||
|
@ -72,7 +72,7 @@
|
|||
}
|
||||
|
||||
// Type de @data (optionnel)
|
||||
$data = (is_array($data)) ? $data : array();
|
||||
$data = (is_array($data)) ? $data : array();
|
||||
|
||||
|
||||
/* [2] Verification du chemin (existence repo+methode)
|
||||
|
@ -165,7 +165,7 @@
|
|||
$this->error = ManagerError::UnknownMethod;
|
||||
return false; // On retourne FALSE, si erreur
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* [4] Enregistrement du chemin et renvoi de SUCCESS
|
||||
|
@ -194,4 +194,4 @@
|
|||
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace manager\repo;
|
||||
use \manager\Database;
|
||||
|
||||
class Personnes{
|
||||
|
||||
/* Gestion de la table Personne et des derivations
|
||||
*
|
||||
* 1. Gestion des access
|
||||
* - getById(id)
|
||||
*
|
||||
* 2. Gestion des matchs
|
||||
* - getMatch(id)
|
||||
* - getMatch(pseudo, nom, prenom, facebook, telephone)
|
||||
*
|
||||
* 3. Gestion de la fusion de 2 Personnes (car sont en fait la meme -> portage des donnees)
|
||||
* - merge(idA, idB)
|
||||
*
|
||||
* 4. Gestion de creation
|
||||
* - create(pseudo, nom, prenom, facebook, telephone)
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/* RENVOIE LES DONNEES D'UN UTILISATEUR D'UID DONNE
|
||||
*
|
||||
* @id_personne<int> UID de la personne en question
|
||||
*
|
||||
* @return personne<Array> Tableau associatif contenant les informations utiles de la personne
|
||||
* @return FALSE<boolean> Si une erreur occure ou qu'aucune personne n'est trouvee, retourne FALSE
|
||||
*
|
||||
*/
|
||||
public static function getById($id_personne=null){
|
||||
/* [0] Verification des INPUT
|
||||
=========================================================*/
|
||||
if( !Database::check('id', $id_personne) ) return false;
|
||||
|
||||
/* [1] On prepare et execute la requete
|
||||
=========================================================*/
|
||||
$request = Database::getPDO()->prepare("SELECT idPersonne as id, pseudo, nom, prenom, id_facebook, telephone
|
||||
FROM Personnes
|
||||
WHERE idPersonne = :uid");
|
||||
$request->execute(array(
|
||||
':uid' => $id_personne
|
||||
));
|
||||
|
||||
|
||||
/* [2] On recupere le resultat
|
||||
=========================================================*/
|
||||
// si aucun resultat, on retourne FALSE
|
||||
if( ($personne=$request->fetch()) === false ) return false;
|
||||
|
||||
|
||||
/* [3] On retourne les donnees
|
||||
=========================================================*/
|
||||
return Database::delNumeric( $personne, true );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
|
@ -1,337 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace manager\repo;
|
||||
use \manager\Database;
|
||||
use \manager\repo\cluster as clusterRepo;
|
||||
|
||||
class machine{
|
||||
|
||||
/* CREATION D'UNE MACHINE
|
||||
*
|
||||
* @code<String> Code de la machine
|
||||
* @name<String> Nom de la machine
|
||||
*
|
||||
* @return id_machine<int> Renvoie l'UID de la machine cree
|
||||
* Renvoie FALSE si une erreur occure
|
||||
*
|
||||
*/
|
||||
public static function create($code, $name){
|
||||
/* [1] Verification de l'unicite de code+name
|
||||
=========================================================*/
|
||||
$check_unique = ( self::getByCode($code) === false );
|
||||
$check_unique = $check_unique && ( self::getByName($name) === false );
|
||||
|
||||
// Si une machine a deja ce code/nom, on renvoie une erreur
|
||||
if( !$check_unique )
|
||||
return false;
|
||||
|
||||
|
||||
/* [2] Creation de la machine
|
||||
=========================================================*/
|
||||
$insert_machine = Database::getPDO()->prepare("INSERT INTO machine(id_machine, code, name)
|
||||
VALUES(DEFAULT, :code, :name)");
|
||||
$insert_machine->execute(array(
|
||||
':code' => $code,
|
||||
':name' => $name
|
||||
));
|
||||
|
||||
/* [3] On retourne l'id_machine ou FALSE si erreur
|
||||
=========================================================*/
|
||||
$check_machine = self::getByCode($code);
|
||||
|
||||
// Si n'existe pas on retourne FALSE
|
||||
if( $check_machine === false )
|
||||
return false;
|
||||
|
||||
// Sinon, on retourne son id
|
||||
return $check_machine['id_machine'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* RENVOIE UNE LISTE DE MACHINE EN FONCTION D'UN MOT CLE
|
||||
*
|
||||
* @keyword<String> Element de recherche
|
||||
*
|
||||
* @return machines<Array> Retourne les machines trouvees
|
||||
*
|
||||
*/
|
||||
public static function search($keyword){
|
||||
// On recupere les donnees
|
||||
$searchmachines = Database::getPDO()->query("SELECT * FROM machine
|
||||
WHERE code LIKE '%".$keyword."%'
|
||||
OR name LIKE '%".$keyword."%'
|
||||
");
|
||||
|
||||
return Database::delNumeric( $searchmachines->fetchAll() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* RENVOIE LA LISTE DE TOUTES LES MACHINES
|
||||
*
|
||||
* @return machine<Array> Liste des machines de la BDD
|
||||
*
|
||||
*/
|
||||
public static function getAll(){
|
||||
// On ecrit la requete
|
||||
$request = Database::getPDO()->query("SELECT * FROM machine ORDER BY name");
|
||||
|
||||
// On recupere le resultat
|
||||
$answer = $request->fetchAll();
|
||||
|
||||
// On retourne en supprimant les indices numeriques
|
||||
return Database::delNumeric( $answer );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* RENVOIE LA MACHINE D'ID DONNE
|
||||
*
|
||||
* @id<int> Id de la machine en question
|
||||
*
|
||||
* @return machine<Array> Renvoie la machine d'id donne si existe
|
||||
* @return error<Boolean> Retourne FALSE si aucun resultat
|
||||
*
|
||||
*/
|
||||
public static function getById($id){
|
||||
// On ecrit la requete
|
||||
$request = Database::getPDO()->prepare("SELECT * FROM machine
|
||||
WHERE id_machine = :id");
|
||||
|
||||
// On execute la requete
|
||||
$request->execute(array(
|
||||
':id' => $id
|
||||
));
|
||||
|
||||
// On recupere 1 seule machine
|
||||
$answer = $request->fetch();
|
||||
|
||||
// Gestion d'erreur -> aucun resultat
|
||||
if( $answer === false )
|
||||
return false;
|
||||
|
||||
// On retourne en supprimant les indices numeriques
|
||||
return Database::delNumeric( $answer, true );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* RENVOIE LA MACHINE DE CODE DONNE
|
||||
*
|
||||
* @code<String> Code de la machine en question
|
||||
*
|
||||
* @return machine<Array> Renvoie la machine de code donne si existe
|
||||
* @return error<Boolean> Retourne FALSE si aucun resultat
|
||||
*
|
||||
*/
|
||||
public static function getByCode($code){
|
||||
// On ecrit la requete
|
||||
$request = Database::getPDO()->prepare("SELECT * FROM machine
|
||||
WHERE code = :code");
|
||||
|
||||
|
||||
// On execute la requete
|
||||
$request->execute(array(
|
||||
':code' => $code
|
||||
));
|
||||
|
||||
// On recupere 1 seule machine
|
||||
$answer = $request->fetch();
|
||||
|
||||
// Gestion d'erreur -> aucun resultat
|
||||
if( $answer === false )
|
||||
return false;
|
||||
|
||||
// On retourne en supprimant les indices numeriques
|
||||
return Database::delNumeric( $answer, true );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* RENVOIE LA MACHINE DE NOM DONNE
|
||||
*
|
||||
* @name<String> Nom de la machine en question
|
||||
*
|
||||
* @return machine<Array> Renvoie la machine de nom donne si existe
|
||||
* @return error<Boolean> Retourne FALSE si aucun resultat
|
||||
*
|
||||
*/
|
||||
public static function getByName($name){
|
||||
// On ecrit la requete
|
||||
$request = Database::getPDO()->prepare("SELECT * FROM machine
|
||||
WHERE name = :name");
|
||||
|
||||
|
||||
// On execute la requete
|
||||
$request->execute(array(
|
||||
':name' => $name
|
||||
));
|
||||
|
||||
// On recupere 1 seule machine
|
||||
$answer = $request->fetch();
|
||||
|
||||
// Gestion d'erreur -> aucun resultat
|
||||
if( $answer === false )
|
||||
return false;
|
||||
|
||||
// On retourne en supprimant les indices numeriques
|
||||
return Database::delNumeric( $answer, true );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* RENVOIE LES GROUPES AUQUEL APPARTIENT UNE MACHINE DONNEE
|
||||
*
|
||||
* @id_machine<int> UID de la machine en question
|
||||
*
|
||||
* @return clusters<Array> Retourne la liste des groupes auquel appartient la machine
|
||||
*
|
||||
*/
|
||||
public static function getClusters($id_machine){
|
||||
/* [1] On redige/execute la requete
|
||||
=========================================================*/
|
||||
$get_clusters = Database::getPDO()->prepare("SELECT c.* FROM cluster as c, cluster_merge as cm
|
||||
WHERE cm.id_cluster = c.id_cluster
|
||||
AND cm.id_entity = :id_machine
|
||||
AND cm.class = :class
|
||||
ORDER BY c.id_cluster");
|
||||
$get_clusters->execute(array(
|
||||
':id_machine' => $id_machine,
|
||||
':class' => clusterRepo::MACHINE_CLASS
|
||||
));
|
||||
|
||||
/* [2] On retourne la liste des groupes
|
||||
=========================================================*/
|
||||
return Database::delNumeric( $get_clusters->fetchAll() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* MODIFICATION D'UNE MACHINE DONNEE
|
||||
*
|
||||
* @id_machine<int> UID de la machine
|
||||
* @code<String> Code RFID de la machine
|
||||
* @name<String> Identifiant l'utilisateur
|
||||
*
|
||||
* @return status<Boolean> Renvoie si oui ou non tout s'est bien passe
|
||||
*
|
||||
*/
|
||||
public static function edit($id_machine=null, $code=null, $name=null){
|
||||
/* [1] Verification de l'unicite de code+name (si differents)
|
||||
=========================================================*/
|
||||
// On recupere les machine ayant le meme code ou name (si existent)
|
||||
$getbycode = self::getByCode($code);
|
||||
$getbyname = self::getByName($name);
|
||||
|
||||
$check_unique = is_array($getbycode) && $getbycode['id_machine'] == $id_machine || !is_array($getbycode);
|
||||
$check_unique = $check_unique && is_array($getbyname) && $getbyname['id_machine'] == $id_machine || !is_array($getbyname);
|
||||
|
||||
// Si un utilisateur a deja ce code ou ce name (sauf lui), on renvoie une erreur
|
||||
if( !$check_unique )
|
||||
return false;
|
||||
|
||||
/* [2] Modification de la machine
|
||||
=========================================================*/
|
||||
$edit_machine = Database::getPDO()->prepare("UPDATE machine
|
||||
SET code = :code,
|
||||
name = :name
|
||||
WHERE id_machine = :id_machine");
|
||||
$edit_machine->execute(array(
|
||||
':code' => $code,
|
||||
':name' => $name,
|
||||
':id_machine' => $id_machine
|
||||
));
|
||||
|
||||
|
||||
|
||||
/* [3] On retourne si tout a ete modifie, si erreur
|
||||
=========================================================*/
|
||||
$check_machine = self::getById($id_machine);
|
||||
|
||||
$checker = $check_machine['id_machine'] == $id_machine;
|
||||
$checker = $checker && $check_machine['code'] == $code;
|
||||
$checker = $checker && $check_machine['name'] == $name;
|
||||
|
||||
// On retourne l'etat de la modification
|
||||
return $checker;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* SUPPRIME UNE MACHINE DONNE
|
||||
*
|
||||
* @id_machine<int> UID de la machine en question
|
||||
*
|
||||
* @return status<Boolean> Retourne si oui ou non la machine a bien ete supprime
|
||||
*
|
||||
*/
|
||||
public static function delete($id_machine){
|
||||
/* [1] On redige/execute la requete
|
||||
=========================================================*/
|
||||
$delete_machine = Database::getPDO()->prepare("DELETE FROM machine WHERE id_machine = :id_machine");
|
||||
$delete_machine->execute(array(
|
||||
':id_machine' => $id_machine
|
||||
));
|
||||
|
||||
|
||||
/* [2] On verifie que la machine n'existe plus
|
||||
=========================================================*/
|
||||
return ( self::getById($id_machine) === false );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
|
||||
namespace manager\repo;
|
||||
use \manager\Database;
|
||||
|
||||
class parentRepo{
|
||||
|
||||
// mise à jour du nom de la table (pour les enfants)
|
||||
protected static function table_name(){ static $table_name = null; return $table_name; }
|
||||
|
||||
|
||||
|
||||
|
||||
/* GESTION DES GETTERS dynamiques
|
||||
*
|
||||
* @method<String> Nom du getter du type 'getAll' ou 'getX' avec 'X' une colonne de la table en question
|
||||
* @args<Array> Liste des arguments, $args[0] est la valeur du getter (sauf pour 'getAll')
|
||||
*
|
||||
* @return lines<Array> Retourne le résultat du fetchAll()
|
||||
*
|
||||
*/
|
||||
public static function __callStatic($method, $args){
|
||||
// Si static::table_name() NULL
|
||||
if( is_null(static::table_name()) ) return false;
|
||||
|
||||
/* [0] On charge la liste des colonnes de la table
|
||||
=========================================================*/
|
||||
$getColumns = Database::getPDO()->query('SHOW COLUMNS FROM '.static::table_name());
|
||||
$cols = $getColumns->fetchAll();
|
||||
|
||||
$table_columns = array();
|
||||
|
||||
// On ajoute la liste des colonnes
|
||||
foreach($cols as $column)
|
||||
array_push($table_columns, $column['Field']);
|
||||
|
||||
|
||||
/* [1] On vérifie que la méthode est 'getX', avec X une chaine
|
||||
=========================================================*/
|
||||
// Si c'est pas le bon format, on retourne une erreur
|
||||
if( !preg_match('/^getBy(\w+)$/', $method, $matches) ) return false;
|
||||
|
||||
/* [2] On vérifie que la valeur après 'get' est dans $table_columns
|
||||
=========================================================*/
|
||||
$columnName = strtolower($matches[1]);
|
||||
|
||||
$getAll = $columnName == 'all'; // Si 'getAll'
|
||||
$getSomething = count($args) > 0 && in_array($columnName, $table_columns); // Si 'getX', et 'X' dans la liste des colonnes
|
||||
|
||||
// Si ni 'getAll' ni 'getSomething' -> erreur
|
||||
if( !$getAll && !$getSomething ) return false;
|
||||
|
||||
/* [3] On rédige la requête
|
||||
=========================================================*/
|
||||
$getRequestString = 'SELECT * FROM '.static::table_name();
|
||||
// Si c'est 'getSomething', on ajoute une condition
|
||||
if( $getSomething ) $getRequestString .= ' WHERE '.$columnName.' = :value';
|
||||
|
||||
$getRequest = Database::getPDO()->prepare($getRequestString);
|
||||
|
||||
/* [4] On exécute la requête
|
||||
=========================================================*/
|
||||
// Si 'getSomething', on ajoute le champ
|
||||
$getRequest->execute(array(
|
||||
':value' => $getSomething ? $args[0] : null
|
||||
));
|
||||
|
||||
/* [5] On récupère le résultat
|
||||
=========================================================*/
|
||||
return Database::delNumeric( $getRequest->fetchAll() );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
|
@ -4,7 +4,9 @@
|
|||
use \manager\Database;
|
||||
use \manager\sessionManager;
|
||||
|
||||
class subject{
|
||||
class subject extends parentRepo{
|
||||
|
||||
protected static function table_name(){ static $table_name = 'Personnes'; return $table_name; }
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -4,8 +4,10 @@
|
|||
use \manager\sessionManager;
|
||||
use \manager\Database;
|
||||
|
||||
class token{
|
||||
|
||||
class token extends parentRepo{
|
||||
|
||||
protected static $table_name = 'api_token';
|
||||
|
||||
/* Gestion de la table Token (pour secu) et des derivations
|
||||
*
|
||||
* 1. Gestion des access
|
||||
|
@ -37,7 +39,7 @@
|
|||
FROM api_token
|
||||
ORDER BY expires DESC");
|
||||
|
||||
|
||||
|
||||
/* [3] On retourne les donnees
|
||||
=========================================================*/
|
||||
return Database::delNumeric( $request->fetchAll() );
|
||||
|
@ -121,7 +123,7 @@
|
|||
=========================================================*/
|
||||
if( !Database::check('varchar(3, 50)', $name) || !Database::check('id', $duration) ) return false;
|
||||
|
||||
|
||||
|
||||
// On definit la date d'expiration du token
|
||||
$expiration = date('Y-m-d', time()+$duration*3600*24);
|
||||
|
||||
|
@ -209,4 +211,4 @@
|
|||
}
|
||||
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -3,61 +3,12 @@
|
|||
namespace manager\repo;
|
||||
use \manager\Database;
|
||||
use \manager\sessionManager;
|
||||
use \manager\repo\parentRepo;
|
||||
|
||||
class user{
|
||||
class user extends parentRepo{
|
||||
|
||||
private static $table_name = 'users';
|
||||
private static $columns = null;
|
||||
protected static function table_name(){ static $table_name = 'users'; return $table_name; }
|
||||
|
||||
// Getters dynamiques
|
||||
public static function __callStatic($method, $args){
|
||||
/* [0] Si les colonnes valides ne sont pas chargées, on les charges
|
||||
=========================================================*/
|
||||
if( is_null(self::$columns) ){
|
||||
$getColumns = Database::getPDO()->query('SHOW COLUMNS FROM '.self::$table_name);
|
||||
$cols = $getColumns->fetchAll();
|
||||
|
||||
self::$columns = array();
|
||||
|
||||
// On ajoute la liste des colonnes
|
||||
foreach($cols as $column)
|
||||
array_push(self::$columns, $column['Field']);
|
||||
}
|
||||
|
||||
/* [1] On vérifie que la méthode est 'getX', avec X une chaine
|
||||
=========================================================*/
|
||||
// Si c'est pas le bon format, on retourne une erreur
|
||||
if( !preg_match('/^getBy(\w+)$/', $method, $matches) ) return false;
|
||||
|
||||
/* [2] On vérifie que la valeur après 'get' est dans self::$columns
|
||||
=========================================================*/
|
||||
$columnName = strtolower($matches[1]);
|
||||
|
||||
$getAll = $columnName == 'all'; // Si 'getAll'
|
||||
$getSomething = count($args) > 0 && in_array($columnName, self::$columns); // Si 'getX', et 'X' dans la liste des colonnes
|
||||
|
||||
// Si ni 'getAll' ni 'getSomething' -> erreur
|
||||
if( !$getAll && !$getSomething ) return false;
|
||||
|
||||
/* [3] On rédige la requête
|
||||
=========================================================*/
|
||||
$getRequestString = 'SELECT * FROM '.self::$table_name;
|
||||
// Si c'est 'getSomething', on ajoute une condition
|
||||
if( $getSomething ) $getRequestString .= ' WHERE '.$columnName.' = :value';
|
||||
|
||||
$getRequest = Database::getPDO()->prepare($getRequestString);
|
||||
|
||||
/* [4] On exécute la requête
|
||||
=========================================================*/
|
||||
// Si 'getSomething', on ajoute le champ
|
||||
$getRequest->execute(array(
|
||||
':value' => $getSomething ? $args[0] : null
|
||||
));
|
||||
|
||||
/* [5] On récupère le résultat
|
||||
=========================================================*/
|
||||
return Database::delNumeric( $getRequest->fetchAll() );
|
||||
}
|
||||
|
||||
|
||||
/* VERIFICATION DU LOGIN/PASSWORD D'UN UTILISATEUR
|
||||
|
|
Loading…
Reference in New Issue