Identifiant de l'entrepot * @password Mot de passe de l'entrepot * * @return id_warehouse Renvoie l'UID de l'entrepot cree * Renvoie FALSE si une erreur occure * */ public static function create($name, $password){ /* [1] Verification de l'unicite du nom (name) =========================================================*/ $check_unique = count(self::getByName($name)) == 0; // Si un entrepot a deja ce nom, on renvoie une erreur if( !$check_unique ) return false; /* [2] Creation de l'utilisateur =========================================================*/ $insert_warehouse = Database::getPDO()->prepare("INSERT INTO warehouse(id_warehouse, name, password, token) VALUES(DEFAULT, :name, :password, :token)"); $insert_warehouse->execute([ ':name' => $name, ':password' => sessionManager::secure_hash( $password ), ':token' => sessionManager::secure_hash( uniqid() ) ]); /* [3] On retourne l'id_warehouse ou FALSE si erreur =========================================================*/ $check_warehouse = self::getByName($name); // Si n'existe pas on retourne FALSE if( !isset($check_warehouse[0]) || !is_array($check_warehouse[0]) ) return false; // Sinon, on retourne son id return intval( $check_warehouse[0]['id_warehouse'] ); } /* MISE A JOUR DU TOKEN D'UN ENTREPOT * * @id_warehouse UID de l'entrepot * * @return new_token Renvoie le nouveau token * */ public static function updateToken($id_warehouse=null){ /* [1] On vérifie que l'entrepot existe =========================================================*/ if( self::getById($id_warehouse) === false ) return false; /* [2] On met à jour le token =========================================================*/ /* (1) On crée un nouveau token */ $new_token = sessionManager::secure_hash( uniqid() ); /* (2) On applique le nouveau token */ $update_token = Database::getPDO()->prepare("UPDATE warehouse SET token = :token WHERE id_warehouse = :id_warehouse"); $update_token->execute([ ':token' => $new_token, ':id_warehouse' => $id_warehouse ]); /* [3] On renvoie le token =========================================================*/ return $new_token; } /* RETOURNE LA LISTE DES MODULE D'UN ENTREPOT * * @return modules Liste des modules autorisés pour l'entrepot * */ public static function getModules($id_warehouse){ /* [1] On récupère les modules =========================================================*/ $getModules = Database::getPDO()->prepare("SELECT m.name FROM module_merge as wm, module as m WHERE wm.id_module = m.id_module AND wm.id_warehouse = :id_warehouse ORDER BY m.name ASC"); $getModules->execute([ ':id_warehouse' => $id_warehouse ]); $modules = $getModules->fetchAll(); /* [2] On formatte les données pour avoir 1 niveau de tableau =========================================================*/ foreach($modules as $m=>$module) $modules[$m] = $module['name']; /* [3] On retourne la liste =========================================================*/ return Database::delNumeric( $modules ); } /* MODIFICATION D'UN ENTREPOT * * @id_warehouse UID de l'entrepot * @name Identifiant de l'entrepot * @password Mot de passe de l'entrepot * * @return status Renvoie si oui ou non tout s'est bien passe * */ public static function edit($id_warehouse=null, $name=null, $password=null){ /* [1] Verification de l'unicite du nom (name) (si different) =========================================================*/ // On recupere les entrepots ayant le meme nom (si existent) // pour éviter les collisions (car le nom doit être unique) $getbyname = self::getByName($name); $check_unique = is_array($getbyname) && $getbyname['id_user'] == $id_user || !is_array($getbyname); // Si un utilisateur a deja ce name ou cet username (sauf lui), on renvoie une erreur if( !$check_unique ) return false; /* [2] Modification de l'utilisateur =========================================================*/ $edit_warehouse = Database::getPDO()->prepare("UPDATE warehouse SET name = :name, password = :password WHERE id_warehouse = :id_warehouse"); $edit_warehouse->execute([ ':name' => $name, ':password' => $password, ':id_warehouse' => $id_warehouse ]); /* [3] On retourne si tout a ete modifie, si erreur =========================================================*/ $check_warehouse = self::getById($id_warehouse); $checker = $check_warehouse['id_warehouse'] == $id_warehouse; $checker = $checker && $check_warehouse['name'] == $name; $checker = $checker && $check_warehouse['password'] == $password; // On retourne l'etat de la modification return $checker; } /* SUPPRIME UN ENTREPOT DONNE * * @id_warehouse UID de l'entrepot en question * * @return status Retourne si oui ou non l'entrepot a bien ete supprime * */ public static function delete($id_warehouse){ /* [1] On redige/execute la requete =========================================================*/ $delete_warehouse = Database::getPDO()->prepare("DELETE FROM warehouse WHERE id_warehouse = :id_warehouse"); $delete_warehouse->execute([ ':id_warehouse' => $id_warehouse ]); /* [2] On verifie que l'utilisateur n'existe plus =========================================================*/ return ( self::getById($id_warehouse) === false ); } } ?>