getters dynamiques (statiques) pour les repos!! [magic method]
This commit is contained in:
parent
ec88d69427
commit
b68a02d64f
10
automate.php
10
automate.php
|
@ -52,12 +52,6 @@
|
||||||
|
|
||||||
// parseCallLog();
|
// parseCallLog();
|
||||||
|
|
||||||
$username = ' ';
|
|
||||||
$firstname = '';
|
|
||||||
$lastname = '';
|
|
||||||
|
|
||||||
var_dump( !!strlen($username.$firstname.$lastname) ); // Pseudo, prénom, ou nom, au moins un n'est pas vide
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* () Test du client de l'API generique */
|
/* () Test du client de l'API generique */
|
||||||
|
@ -69,4 +63,8 @@
|
||||||
|
|
||||||
// var_dump($response);
|
// var_dump($response);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var_dump( \manager\repo\user::getByMail('B@gmail.com') );
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -6,6 +6,59 @@
|
||||||
|
|
||||||
class user{
|
class user{
|
||||||
|
|
||||||
|
private static $table_name = 'users';
|
||||||
|
private static $columns = null;
|
||||||
|
|
||||||
|
// 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
|
/* VERIFICATION DU LOGIN/PASSWORD D'UN UTILISATEUR
|
||||||
*
|
*
|
||||||
|
@ -59,6 +112,10 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function getById($id_user){
|
public static function getById($id_user){
|
||||||
|
/* [0] On formatte et vérifie les INPUT
|
||||||
|
=========================================================*/
|
||||||
|
if( !Database::check('id', $id_user) ) return false;
|
||||||
|
|
||||||
/* [1] On effectue la requete
|
/* [1] On effectue la requete
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$getUser = Database::getPDO()->prepare("SELECT id_user, login, mail, permission
|
$getUser = Database::getPDO()->prepare("SELECT id_user, login, mail, permission
|
||||||
|
@ -126,6 +183,8 @@
|
||||||
/* [0] Verification et formattage des INPUT
|
/* [0] Verification et formattage des INPUT
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$checkInput = Database::check('sha1', $password);
|
$checkInput = Database::check('sha1', $password);
|
||||||
|
$checkInput = $checkInput && Database::check('varchar(3, 30)', $login);
|
||||||
|
$checkInput = $checkInput && Database::check('mail', $mail);
|
||||||
$checkInput = $checkInput && ( Database::check('id', $reference) || is_null($reference) );
|
$checkInput = $checkInput && ( Database::check('id', $reference) || is_null($reference) );
|
||||||
$checkInput = $checkInput && in_array($permission, array('admin', 'subject'));
|
$checkInput = $checkInput && in_array($permission, array('admin', 'subject'));
|
||||||
|
|
||||||
|
@ -145,10 +204,9 @@
|
||||||
':mail' => $mail,
|
':mail' => $mail,
|
||||||
':reference' => $reference
|
':reference' => $reference
|
||||||
));
|
));
|
||||||
$unique = $checkUnique->fetch() === false;
|
|
||||||
|
|
||||||
// Si un utilisateur a le meme LOGIN/MAIL ou REFERENCE, on retourne une erreur
|
// Si un utilisateur a le meme LOGIN/MAIL ou REFERENCE qu'un autre, on retourne une erreur
|
||||||
if( !$unique ) return false;
|
if( $checkUnique->fetch() !== false ) return false;
|
||||||
|
|
||||||
|
|
||||||
/* [2] Creation de l'utilisateur
|
/* [2] Creation de l'utilisateur
|
||||||
|
|
Loading…
Reference in New Issue