From 2cad3ac40e4d54f96e9341ae99948480668f8194 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Tue, 19 Apr 2016 14:01:34 +0200 Subject: [PATCH] FIX: Correction pour laisser passer 'getAll' et 'getByXXX' dans parentRepo --- automate.php | 5 +-- manager/module/user.php | 35 --------------------- manager/repo/parentRepo.php | 28 ++++++++++------- manager/repo/user.php | 63 ------------------------------------- 4 files changed, 19 insertions(+), 112 deletions(-) diff --git a/automate.php b/automate.php index a46fcb2..a7601d1 100755 --- a/automate.php +++ b/automate.php @@ -64,7 +64,8 @@ // var_dump($response); - var_dump( \manager\repo\user::getByMail('B@gmail.com') ); - var_dump( \manager\repo\subject::getByPseudo('jeannot') ); + var_dump( \manager\repo\user::getByLogin('xdrm') ); + // var_dump( \manager\repo\user::getByLogin('xdrm') ); + // var_dump( \manager\repo\subject::getByPseudo('jeannot') ); ?> diff --git a/manager/module/user.php b/manager/module/user.php index d6c04cd..68df0c9 100755 --- a/manager/module/user.php +++ b/manager/module/user.php @@ -58,41 +58,6 @@ - - /* RETOURNE L'UTILISATEUR D'ID DONNE - * - * @id_user UID de l'utilisateur en question - * - * @return user Tableau contenant les informations de l'utilisateur - * - */ - public static function getById($params){ - extract($params); - - /* [1] On recupere les donnees de l'utilisateur - =========================================================*/ - $getUser = new Repo('user/getById', array($id_user)); - $user_data = $getUser->answer(); - - // Si aucun utilisateur n'est trouve - if( $user_data === false ) return array('ModuleError' => ManagerError::ModuleError); - - - /* [2] On met les permissions au bon format (string -> array) - =========================================================*/ - $user_data['permission'] = explode( ',', str_replace(' ', '', $user_data['permission']) ); - - /* [3] Gestion du retour - =========================================================*/ - return array( - 'ModuleError' => ManagerError::Success, - 'user' => $user_data - ); - } - - - - /* RETOURNE LA LISTE DE TOUS LES UTILISATEURS * * @return users Tableau contenant les informations de tous les utilisateurs diff --git a/manager/repo/parentRepo.php b/manager/repo/parentRepo.php index 067c909..752235f 100644 --- a/manager/repo/parentRepo.php +++ b/manager/repo/parentRepo.php @@ -23,7 +23,12 @@ // Si static::table_name() NULL if( is_null(static::table_name()) ) return false; - /* [0] On charge la liste des colonnes de la table + /* [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('/^get(?:By(\w+)|(All))$/', $method, $matches) ) return false; + + /* [2] On charge la liste des colonnes de la table =========================================================*/ $getColumns = Database::getPDO()->query('SHOW COLUMNS FROM '.static::table_name()); $cols = $getColumns->fetchAll(); @@ -34,38 +39,37 @@ 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 + /* [3] On vérifie que la valeur après 'get' est dans $table_columns =========================================================*/ $columnName = strtolower($matches[1]); - $getAll = $columnName == 'all'; // Si 'getAll' + $getAll = count($matches) > 2; // 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 + /* [4] 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'; + $getRequestString .= ' ORDER BY 1 ASC'; + + // On prépare la requête $getRequest = Database::getPDO()->prepare($getRequestString); - /* [4] On exécute la requête + /* [5] 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 + + /* [6] On récupère le résultat =========================================================*/ return Database::delNumeric( $getRequest->fetchAll() ); } diff --git a/manager/repo/user.php b/manager/repo/user.php index 4c8c21a..356e99c 100755 --- a/manager/repo/user.php +++ b/manager/repo/user.php @@ -55,69 +55,6 @@ - /* RETOURNE LES DONNEES D'UN UTILISATEUR D'ID DONNE - * - * @id_user UID de l'utilisateur en question - * - * @return user Tableau contenant les donnees de l'utilisateur s'il existe sinon retourne FALSE - * - */ - 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 - =========================================================*/ - $getUser = Database::getPDO()->prepare("SELECT id_user, login, mail, permission - FROM users - WHERE id_user = :id_user"); - $getUser->execute(array( ':id_user' => $id_user )); - - - /* [2] On recupere le resultat de la requete - =========================================================*/ - $userData = $getUser->fetch(); - - // Si l'utilisateur n'existe pas, on retourne FALSE - if( $userData === false ) return false; - - /* [3] Gestion du retour - =========================================================*/ - return Database::delNumeric( $userData, true ); - } - - - - - - /* RETOURNE LES DONNEES DE TOUS LES UTILISATEURS - * - * @return users Tableau contenant les donnees des utilisateurs, retourne FALSE si erreur - * - */ - public static function getAll(){ - /* [1] On effectue la requete - =========================================================*/ - $getUsers = Database::getPDO()->query("SELECT id_user, login, mail, permission - FROM users - ORDER BY login ASC"); - - - /* [2] On recupere le resultat de la requete - =========================================================*/ - $usersData = $getUsers->fetchAll(); - - // Si l'utilisateur n'existe pas, on retourne FALSE - if( $usersData === false ) return false; - - /* [3] Gestion du retour - =========================================================*/ - return Database::delNumeric( $usersData ); - } - - - /* CREE UN UTILISATEUR *