- [x] Ajout de "use CLASS;" dans les fichiers pour simplifier la lisibilite

This commit is contained in:
xdrm-brackets 2016-02-13 18:41:19 +01:00
parent e4669f02c4
commit 89c1420f62
10 changed files with 222 additions and 74 deletions

View File

@ -1,13 +1,7 @@
<?php define('__ROOT__', dirname(__FILE__) );
require_once __ROOT__.'/manager/autoloader.php';
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
debug();
@ -246,7 +240,7 @@
return true;
}insertUsersComposite();
}//insertUsersComposite();
?>

View File

@ -2,25 +2,34 @@
"user" :[
"create",
"getAll",
"getById",
"getByCode",
"getAll",
"getGroup",
"getByUsername",
"getGroups",
"delete"
],
"machine" :[
"get",
"create",
"getAll",
"getById",
"getGroup"
],
"group" :[
"get",
"create",
"link",
"unlink",
"getAll",
"getUser",
"getMachine"
"getById",
"getMembers"
]
}

View File

@ -1,7 +1,11 @@
<?php define('__ROOT__', dirname(__FILE__) );
// \manager\session_start();
require_once __ROOT__.'/manager/autoloader.php';
use \router\Router;
use \manager\ResourceDispatcher;
use \manager\ModuleRequest;
/*******************************************/
/* DEBUGGER */
/*******************************************/
@ -11,7 +15,7 @@
/* [0] On initialise le routeur
===================================================*/
$R = new router\Router( $_GET['url'] );
$R = new Router( $_GET['url'] );
// var_dump($R);
/* [1] On cree les regles de routage
@ -37,11 +41,11 @@
// $R->get('settings/', function(){ include __ROOT__.'/view.php'; });
// Dispatcher
$R->get('f(?:/([\w-]+))*/?', function(){ new \manager\ResourceDispatcher($_GET['url'], true); });
$R->get('f(?:/([\w-]+))*/?', function(){ new ResourceDispatcher($_GET['url'], true); });
// Api
$R->post('api/?', function(){
$request = \manager\ModuleRequest::fromPost($_POST);
$request = ModuleRequest::fromPost($_POST);
$answer = $request->dispatch();
echo $answer->serialize();

View File

@ -1,6 +1,8 @@
<?php
namespace manager;
use \manager\ManagerError;
use \manager\ResourceDispatcher;
class DataBase{
@ -34,18 +36,18 @@
self::$pdo = new \PDO('mysql:host='.$this->host.';dbname='.$this->dbname, $this->username, $this->password);
// On signale que tout s'est bien passe
self::$error = \manager\ManagerError::Success;
self::$error = ManagerError::Success;
}catch(Exception $e){
// On signale qu'il y a une erreur
self::$error = \manager\ManagerError::PDOConnection;
self::$error = ManagerError::PDOConnection;
}
}
/* retourne une instance de la classe */
public static function getInstance(){
if( self::$instance == null || self::$error != \manager\ManagerError::Success ){ // Si aucune instance existante OU erreur de connection
if( self::$instance == null || self::$error != ManagerError::Success ){ // Si aucune instance existante OU erreur de connection
// chargement de la configuration du server SQL
if( !isset($_SERVER['HTTP_HOST']) || isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] == 'stefproject' )

View File

@ -1,6 +1,7 @@
<?php
namespace manager;
use \manager\ManagerError;
// FORMAT:

View File

@ -1,7 +1,9 @@
<?php
namespace manager;
use \manager\ModuleAnswer;
use \manager\ManagerError;
use \manager\ResourceDispatcher;
// FORMAT:
//

View File

@ -1,7 +1,11 @@
<?php
// On definit la racine __ROOT__ si c'est pas deja fait
if( !defined('__ROOT__') )
define('__ROOT__', dirname(dirname(__FILE__)) );
if( !defined('__ROOT__') ) define('__ROOT__', dirname(dirname(__FILE__)) );
@ -16,6 +20,30 @@
/* APPEL DYNAMIQUE DES CLASSES PASSEES EN PARAMETRE
*
* @classes<Array> Tableau contenant le nom des classes
*
*/
function autoload($classes){
foreach($classes as $class){
$name_only = substr(strrchr($class, '\\'), 1);
var_dump('use '.$class.' as '.$name_only.';');
eval('use '.$class.' as '.$name_only.';');
}
}
/* AUTOLOADER
*
* @className<String> Nom de la classe appelee
@ -30,9 +58,10 @@
$path = str_replace('\\', '/', $className) . '.php';
$path = __ROOT__.'/'.$path;
// Si le fichier existe, on l'inclut
// Si le fichier existe
if( file_exists($path) )
require_once $path;
require_once $path; // on inclue le fichier
}
// On definit l'autoloader comme autoloader (obvious)

View File

@ -1,6 +1,10 @@
<?php
namespace manager\module;
use \manager\Database;
use \manager\sessionManager;
use \manager\ManagerError;
use \manager\Repo;
class userDefault{
@ -12,7 +16,7 @@
*/
public static function getAll(){
// On recupere les donnees
$users = new \manager\Repo('user/getAll');
$users = new Repo('user/getAll');
return array(
'users' => $users->answer()
@ -37,54 +41,62 @@
public static function create($code=null, $username=null, $firstname=null, $lastname=null, $mail=null, $password=null, $status=null){
/* [1] Normalisation + verification des donnees
=========================================================*/
$password_hash = \manager\sessionManager::secure_sha1($password);
$password_hash = sessionManager::secure_sha1($password);
$correct_param = \manager\Database::check('user.code', $code);
$correct_param = $correct_param && \manager\Database::check('user.username', $username);
$correct_param = $correct_param && \manager\Database::check('user.firstname', $firstname);
$correct_param = $correct_param && \manager\Database::check('user.lastname', $lastname);
$correct_param = $correct_param && \manager\Database::check('user.mail', $mail);
$correct_param = $correct_param && \manager\Database::check('user.password', $password_hash);
$correct_param = $correct_param && \manager\Database::check('user.status', $status);
$correct_param = Database::check('user.code', $code);
$correct_param = $correct_param && Database::check('user.username', $username);
$correct_param = $correct_param && Database::check('user.firstname', $firstname);
$correct_param = $correct_param && Database::check('user.lastname', $lastname);
$correct_param = $correct_param && Database::check('user.mail', $mail);
$correct_param = $correct_param && Database::check('user.password', $password_hash);
$correct_param = $correct_param && Database::check('user.status', $status);
// Si les parametres ne sont pas corrects, on retourne une erreur
if( !$correct_param )
return array('ModuleError' => \manager\ManagerError::ParamError);
return array('ModuleError' => ManagerError::ParamError);
/* [2] Creation de l'utilisateur
=========================================================*/
$create_user = new \manager\Repo('user/create', array($code, $username, $firstname, $lastname, $mail, $password_hash, $status) );
$create_user = new Repo('user/create', array($code, $username, $firstname, $lastname, $mail, $password_hash, $status) );
$id_user = $create_user->answer();
// Si une erreur est retournee, on retourne une erreur
if( $id_user === false )
return array('ModuleError' => \manager\ManagerError::ModuleError);
return array('ModuleError' => ManagerError::ModuleError);
/* [3] Creation du groupe de meme nom que l'username
=========================================================*/
$create_group = new \manager\Repo('group/create', array($username) );
$create_group = new Repo('group/create', array($username) );
$id_group = $create_group->answer();
// Si une erreur est retournee, on retourne une erreur
if( $id_group === false )
return array('ModuleError' => \manager\ManagerError::ModuleError);
return array('ModuleError' => ManagerError::ModuleError);
/* [4] Association au groupe
=========================================================*/
$assoc_goup = new \manager\Repo('group/associate', array($id_user, $id_group));
$assoc_goup = new Repo('group/link', array($id_user, $id_group));
$id_assoc = $assoc_goup->answer();
// Si une erreur est retournee, on retourne une erreur
if( $id_assoc === false )
return array('ModuleError' => \manager\ManagerError::ModuleError);
return array('ModuleError' => ManagerError::ModuleError);
/* [5] Gestion du retour
=========================================================*/
return array(
'ModuleError' => \manager\ManagerError::Success,
'ModuleError' => ManagerError::Success,
'id_user' => $id_user
);
}

View File

@ -1,9 +1,38 @@
<?php
namespace manager\repo;
use \manager\Database;
class user{
/* CREATION D'UN UTILISATEUR ET DE SON GROUPE INDIVIDUEL
*
* @code<String> Code RFID de l'utilisateur
* @username<String> Identifiant l'utilisateur
* @firstname<String> Prenom de l'utilisateur
* @lastcode<String> Nom de l'utilisateur
* @mail<String> Adresse email de l'utilisateur
* @password<String> Mot de passe de l'utilisateur
* @status<String> Status de l'utilisateur
*
* @return nomRetour<typeRetour> Description du retour
*
*/
public static function create($code, $username, $firstname, $lastname, $mail, $password, $status){
/* [1] Creation de l'utilisateur (unicite de l'username)
=========================================================*/
$check_unique = ( self::getByCode($code) == false );
$check_unique = $check_unique && ( self::getByUsername($username) == false );
var_dump($check_unique);
}
/* RENVOIE LA LISTE DE TOUS LES UTILISATEURS
*
@ -12,13 +41,13 @@
*/
public static function getAll(){
// On ecrit la requete
$request = \manager\Database::getPDO()->query("SELECT * FROM user ORDER BY id_user");
$request = Database::getPDO()->query("SELECT * FROM user ORDER BY id_user");
// On recupere le resutat
$answer = $request->fetchAll();
// On retourne en supprimant les indices numeriques
return \manager\Database::delNumeric( $answer );
return Database::delNumeric( $answer );
}
@ -28,11 +57,6 @@
/* RENVOIE L'UTILISATEUR D'ID DONNE
*
* @id<int> Id de l'utilisateur en question
@ -43,7 +67,7 @@
*/
public static function getById($id){
// On ecrit la requete
$request = \manager\Database::getPDO()->prepare("SELECT * FROM user
$request = Database::getPDO()->prepare("SELECT * FROM user
WHERE id_user = :id");
// On execute la requete
@ -59,7 +83,7 @@
return false;
// On retourne en supprimant les indices numeriques
return \manager\Database::delNumeric( $answer, true );
return Database::delNumeric( $answer, true );
}
@ -69,11 +93,6 @@
/* RENVOIE L'UTILISATEUR DE CODE DONNE
*
* @code<String> Code de l'utilisateur en question
@ -84,7 +103,7 @@
*/
public static function getByCode($code){
// On ecrit la requete
$request = \manager\Database::getPDO()->prepare("SELECT * FROM user
$request = Database::getPDO()->prepare("SELECT * FROM user
WHERE code = :code");
// On execute la requete
@ -100,7 +119,9 @@
return false;
// On retourne en supprimant les indices numeriques
return \manager\Database::delNumeric( $answer, true );
return Database::delNumeric( $answer, true );
}
@ -110,31 +131,104 @@
/* CREATION D'UN UTILISATEUR ET DE SON GROUPE INDIVIDUEL
/* RENVOIE L'UTILISATEUR D'USERNAME DONNE
*
* @code<String> Code RFID de l'utilisateur
* @username<String> Identifiant l'utilisateur
* @firstname<String> Prenom de l'utilisateur
* @lastcode<String> Nom de l'utilisateur
* @mail<String> Adresse email de l'utilisateur
* @password<String> Mot de passe de l'utilisateur
* @status<String> Status de l'utilisateur
* @username<String> Identifiant de l'utilisateur en question
*
* @return nomRetour<typeRetour> Description du retour
* @return utilisateur<Array> Renvoie l'utilisateur d'username donne si existe
* @return error<Boolean> Retourne FALSE si aucun resultat
*
*/
public static function create($code, $username, $firstname, $lastname, $mail, $password, $status){
/* [1] Creation de l'utilisateur (unicite de l'username)
=========================================================*/
$check_unique = ( self::getByCode($code) == false );
public static function getByUsername($username){
// On ecrit la requete
$request = Database::getPDO()->prepare("SELECT * FROM user
WHERE username = :username");
var_dump($check_unique);
// On execute la requete
$request->execute(array(
':username' => $username
));
// On recupere 1 seul utilisateur
$answer = $request->fetch();
// Gestion d'erreur -> aucun resultat
if( $answer == null )
return false;
// On retourne en supprimant les indices numeriques
return Database::delNumeric( $answer, true );
}
/* RENVOIE LES GROUPE AUQUELS UN UTILISATEUR DONNE APPARTIENT
*
* @id_user<int> UID de l'utilisateur en question
*
* @return groups<Array> Renvoie un tableau d'UID des groupes
*
*/
public static function getGroups($id_user){
/* [1] On redige/execute la requete
=========================================================*/
$select_groups = Database::getPDO()->prepare("SELECT gm.id_group FROM user as u, group_merge as gm
WHERE u.id_user = gm.id_user
AND u.id_user = :id_user
ORDER BY gm.id_user ASC");
$select_groups->execute(array(
':id_user' => $id_user
));
// On retourne en supprimant les indices numeriques
return Database::delNumeric( $select_groups->fetchAll() );
}
/* SUPPRIME UN UTILISATEUR DONNE
*
* @id_user<int> UID de l'utilisateur en question
*
* @return status<Boolean> Retourne si oui ou non l'utilisateur a bien ete supprime
*
*/
public static function delete($id_user){
/* [1] On redige/execute la requete
=========================================================*/
$delete_user = Database::getPDO()->prepare("DELETE FROM user WHERE id_user = :id_user");
$delete_user->execute(array(
':id_user' => $id_user
));
/* [2] On verifie que l'utilisateur n'existe plus
=========================================================*/
return ( self::getById($id_user) === false );
}
}

View File

@ -39,6 +39,7 @@
########
# FAIT #
########
- [x] Ajout de "use CLASS;" dans les fichiers pour simplifier la lisibilite
- [x] [phpunit/sessionManager] test unitaires du manager de session php
- [x] [ModuleAnswer] Gestion des erreurs au niveau interne des Modules
- [x] [autoloader][phpunit/bootstrap.php] Correction des bugs de $_SERVER avec PHPUnit -> autoloader + bootstrap personnalise