parent
f932f3ae06
commit
4cb2d3726d
|
@ -0,0 +1,86 @@
|
||||||
|
<?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);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* NSERTION DES UTILISATEURS DANS LA BDD DEPUIS JSON
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @return status<Boolean> TRUE si aucune erreur, sinon FALSE
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function insertUsersFromJSON(){
|
||||||
|
$json = manager\ResourcesDispatcher::getRessource('/f/json/generated_users/conf');
|
||||||
|
$json = json_decode( $json, true );
|
||||||
|
|
||||||
|
// Pour chaque entree
|
||||||
|
foreach( $json as $user ){
|
||||||
|
|
||||||
|
$insertRequest = manager\Database::getPDO()->prepare("INSERT INTO user(id_user, code, username, firstname, lastname, mail, password, status)
|
||||||
|
VALUES(
|
||||||
|
DEFAULT,
|
||||||
|
:code,
|
||||||
|
:username,
|
||||||
|
:firstname,
|
||||||
|
:lastname,
|
||||||
|
:mail,
|
||||||
|
:password,
|
||||||
|
:status
|
||||||
|
)");
|
||||||
|
|
||||||
|
$status = $insertRequest->execute(array(
|
||||||
|
':code' => $user['code'],
|
||||||
|
':username' => $user['username'],
|
||||||
|
':firstname' => $user['firstname'],
|
||||||
|
':lastname' => $user['lastname'],
|
||||||
|
':mail' => $user['email'],
|
||||||
|
':password' => $user['password'],
|
||||||
|
':status' => $user['status']
|
||||||
|
));
|
||||||
|
|
||||||
|
var_dump( $status );
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}// insertUsersFromJSON();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* TEST DU DISPATCHER DES MANAGERS
|
||||||
|
*
|
||||||
|
* @return nomRetour<typeRetour> Description du retour
|
||||||
|
|
||||||
|
*/
|
||||||
|
function testModuleDispatcher(){
|
||||||
|
|
||||||
|
$req1 = new manager\ModuleRequest('firstModule/a', array('id_user' => 10) );
|
||||||
|
$req2 = manager\ModuleRequest::fromString('{"path": "firstModule/a", "data": [{"id_user":10}]}');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$instance = new manager\ModuleDispatcher($req1);
|
||||||
|
var_dump( $instance );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}testModuleDispatcher();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
|
@ -0,0 +1,24 @@
|
||||||
|
[
|
||||||
|
'{{repeat(100)}}',
|
||||||
|
{
|
||||||
|
code: function(tags){
|
||||||
|
|
||||||
|
function randHex(){ return ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'][Math.floor(Math.random()*16)]; }
|
||||||
|
|
||||||
|
return randHex()+randHex()+'-'+randHex()+randHex()+'-'+randHex()+randHex()+'-'+randHex()+randHex();
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
username: '{{firstName()}}',
|
||||||
|
firstname: '{{firstName()}}',
|
||||||
|
lastname: '{{surname()}}',
|
||||||
|
email: '{{email()}}',
|
||||||
|
password: function(tags){
|
||||||
|
var result = '';
|
||||||
|
for(var i = 0 ; i < 40 ; i++ )
|
||||||
|
result += ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'][Math.floor(Math.random()*16)];
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
status: '{{integer(0,1)}}'
|
||||||
|
}
|
||||||
|
]
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
"a" : "/firstManager",
|
|
||||||
"b" : "/secondManager",
|
|
||||||
"c" : "/thirdManager"
|
|
||||||
}
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"firstModule" : [
|
||||||
|
"a",
|
||||||
|
"b",
|
||||||
|
"c",
|
||||||
|
"d",
|
||||||
|
"e"
|
||||||
|
],
|
||||||
|
|
||||||
|
"secondModule" : [
|
||||||
|
"f",
|
||||||
|
"g",
|
||||||
|
"h",
|
||||||
|
"i",
|
||||||
|
"j"
|
||||||
|
],
|
||||||
|
|
||||||
|
"thirdModule" : [
|
||||||
|
"k",
|
||||||
|
"l",
|
||||||
|
"m",
|
||||||
|
"n",
|
||||||
|
"o"
|
||||||
|
]
|
||||||
|
}
|
|
@ -51,6 +51,7 @@
|
||||||
|
|
||||||
$R->post('.*', function(){
|
$R->post('.*', function(){
|
||||||
var_dump( 'Acces POST : '.$_GET['url'] );
|
var_dump( 'Acces POST : '.$_GET['url'] );
|
||||||
|
var_dump( $_POST );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace manager;
|
||||||
|
|
||||||
|
|
||||||
|
// FORMAT:
|
||||||
|
//
|
||||||
|
// path: "nomModule/nomMethode"
|
||||||
|
// data1: {donnee1}
|
||||||
|
// data2: {donnee2}
|
||||||
|
// ...
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
class ModuleDispatcher{
|
||||||
|
|
||||||
|
|
||||||
|
// Attributs prives utiles (initialisation)
|
||||||
|
private $modules;
|
||||||
|
private $flags;
|
||||||
|
|
||||||
|
|
||||||
|
/* CONSTRUCTEUR & AMORCAGE DU DISPATCHER
|
||||||
|
*
|
||||||
|
* @request<ModuleRequest> La requete a dispatcher de type <ModuleRequest>
|
||||||
|
*
|
||||||
|
* @return status<Boolean> Retourne si oui ou non tout s'est bien passe
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function __construct($request){
|
||||||
|
/* [1] On verifie le type de la requete
|
||||||
|
=========================================================*/
|
||||||
|
if( !($request instanceof ModuleRequest) ) // Si c'est pas une instance de <ModuleRequest>
|
||||||
|
return false; // On retourne FALSE, si erreur
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -0,0 +1,155 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace manager;
|
||||||
|
|
||||||
|
|
||||||
|
// FORMAT:
|
||||||
|
//
|
||||||
|
// path: "nomModule/nomMethode"
|
||||||
|
// data1: {donnee1}
|
||||||
|
// data2: {donnee2}
|
||||||
|
// ...
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
class ModuleRequest{
|
||||||
|
|
||||||
|
// Constantes
|
||||||
|
public static $config_path = '/f/json/modules/conf';
|
||||||
|
|
||||||
|
|
||||||
|
// Attributs prives utiles (initialisation)
|
||||||
|
private $path;
|
||||||
|
private $data;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* CONSTRUCTEUR D'UNE REQUETE DE MODULE
|
||||||
|
*
|
||||||
|
* @path<String> Chemin de delegation ("module/methode")
|
||||||
|
* @data<Array> Tableau contenant les parametres utiles au traitement
|
||||||
|
*
|
||||||
|
* @return status<Boolean> Retourne si oui ou non tout s'est bien passe
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function __construct($path=null, $data=null){
|
||||||
|
// Si pas parametre manquant, on quitte
|
||||||
|
if( $path == null ) return false;
|
||||||
|
|
||||||
|
/* [0] On met a jour la configuration
|
||||||
|
=========================================================*/
|
||||||
|
// Modules specifies
|
||||||
|
$this->modules = json_decode( ResourcesDispatcher::getResource(self::$config_path), true );
|
||||||
|
|
||||||
|
// Gestion de l'erreur de parsage
|
||||||
|
if( $this->modules == null ) return false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* [1] Verification des types des parametres
|
||||||
|
=========================================================*/
|
||||||
|
// Type de @path
|
||||||
|
if( !is_string($path) ) // Si le type est incorrect
|
||||||
|
return false; // On retourne FALSE, si erreur
|
||||||
|
|
||||||
|
// Type de @data (optionnel)
|
||||||
|
$data = (is_array($data)) ? $data : array();
|
||||||
|
|
||||||
|
|
||||||
|
/* [2] Verification du chemin (existence module+methode)
|
||||||
|
=========================================================*/
|
||||||
|
if( !$this->checkPath($path) ) // Verification de la coherence du chemin + attribution
|
||||||
|
return false; // On retourne FALSE, si erreur
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* [3] Construction de l'objet
|
||||||
|
=========================================================*/
|
||||||
|
$this->data = $data;
|
||||||
|
|
||||||
|
return true; // On retourne que tout s'est bien passe
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* VERIFICATION DU FORMAT ET DE LA COHERENCE DU CHEMIN SPECIFIE
|
||||||
|
*
|
||||||
|
* @path<String> String correspondant au chemin de delegation ("module/methode")
|
||||||
|
*
|
||||||
|
* @return validity<Boolean> Retourne si oui ou non l'objet est correct
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private function checkPath($path){
|
||||||
|
/* [1] Verification format general
|
||||||
|
=========================================================*/
|
||||||
|
if( !preg_match('#^([\w_-]+)/([\w_-]+)$#i', $path, $matches) ) // Si mauvais format
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// On recupere les donnes de la regex
|
||||||
|
$module = $matches[1];
|
||||||
|
$method = $matches[2];
|
||||||
|
|
||||||
|
/* [2] Verification de l'existence du module (conf)
|
||||||
|
=========================================================*/
|
||||||
|
if( !array_key_exists($module, $this->modules) ) // Si le module n'est pas specifie dans la conf
|
||||||
|
return false; // On retourne FALSE, si erreur
|
||||||
|
|
||||||
|
|
||||||
|
/* [3] Verification de l'existence de la methode (conf)
|
||||||
|
=========================================================*/
|
||||||
|
if( array_search($method, $this->modules[$module]) === false ) // Si la methode n'est pas specifie dans la conf
|
||||||
|
return false; // On retourne FALSE, si erreur
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* [4] Enregistrement du chemin et renvoi de SUCCESS
|
||||||
|
=========================================================*/
|
||||||
|
$this->path = array(
|
||||||
|
'module' => $module,
|
||||||
|
'method' => $method
|
||||||
|
);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* DESERIALISATION ET CREATION D'UN OBJET
|
||||||
|
*
|
||||||
|
* @jsonString<String> Json au format string contenant les donnees
|
||||||
|
*
|
||||||
|
* @return instance<ModuleRequest> Retourne un objet de type <ModuleRequest>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function fromString($jsonString){
|
||||||
|
$json = json_decode( $jsonString, true );
|
||||||
|
|
||||||
|
// Verification du parsage
|
||||||
|
if( $json == null )
|
||||||
|
return new ModuleRequest();
|
||||||
|
|
||||||
|
// Verification des parametres
|
||||||
|
if( !isset($json['path']) )
|
||||||
|
return new ModuleRequest();
|
||||||
|
|
||||||
|
// On definit $data au cas ou il soit vide
|
||||||
|
$data = (isset($json['data'])) ? $json['data'] : array();
|
||||||
|
|
||||||
|
return new ModuleRequest($json['path'], $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
class ResourcesDispatcher{
|
class ResourcesDispatcher{
|
||||||
|
|
||||||
// Constantes (a dispatcher dans un .conf)
|
// Constantes
|
||||||
public static $extension_config_path = '/config/dispatcher-extensions.json';
|
public static $extension_config_path = '/config/dispatcher-extensions.json';
|
||||||
public static $parents_config_path = '/config/dispatcher-tree.json';
|
public static $parents_config_path = '/config/dispatcher-tree.json';
|
||||||
|
|
||||||
|
@ -22,8 +22,6 @@
|
||||||
*
|
*
|
||||||
* @url<String> L'url courante
|
* @url<String> L'url courante
|
||||||
*
|
*
|
||||||
* @GET<Array> Arguments indirects (variable $_GET)
|
|
||||||
*
|
|
||||||
* @return status<Boolean> Retourne si oui ou non tout s'est bien passe
|
* @return status<Boolean> Retourne si oui ou non tout s'est bien passe
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -32,10 +30,18 @@
|
||||||
=====================================================*/
|
=====================================================*/
|
||||||
// Extensions supportees
|
// Extensions supportees
|
||||||
$extensions_conf = json_decode( file_get_contents('http://'.$_SERVER['HTTP_HOST'].self::$extension_config_path), true );
|
$extensions_conf = json_decode( file_get_contents('http://'.$_SERVER['HTTP_HOST'].self::$extension_config_path), true );
|
||||||
|
|
||||||
|
// Gestion de l'erreur de parsage
|
||||||
|
if( $extensions_conf == null ) return false;
|
||||||
|
|
||||||
self::$supported_extensions = $extensions_conf;
|
self::$supported_extensions = $extensions_conf;
|
||||||
|
|
||||||
// Dossiers supportes
|
// Dossiers supportes
|
||||||
$parents_conf = json_decode( file_get_contents('http://'.$_SERVER['HTTP_HOST'].self::$parents_config_path), true );
|
$parents_conf = json_decode( file_get_contents('http://'.$_SERVER['HTTP_HOST'].self::$parents_config_path), true );
|
||||||
|
|
||||||
|
// Gestion de l'erreur de parsage
|
||||||
|
if( $parents_conf == null ) return false;
|
||||||
|
|
||||||
self::$supported_parents = $parents_conf;
|
self::$supported_parents = $parents_conf;
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,6 +71,18 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* INCLUSION PHP D'UNE RESSOURCE UTILISANT LE DISPATCHER
|
||||||
|
*
|
||||||
|
* @route<String> Route associee a une ressource
|
||||||
|
*
|
||||||
|
* @return content<*> Retourne le contenu de la ressource
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function getResource($route){
|
||||||
|
return file_get_contents('http://'.$_SERVER['HTTP_HOST'].$route);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* FONCTION QUI VERIFIE LES DRAPEAUX
|
/* FONCTION QUI VERIFIE LES DRAPEAUX
|
||||||
*
|
*
|
||||||
|
|
5
todo.md
5
todo.md
|
@ -13,6 +13,11 @@
|
||||||
############
|
############
|
||||||
# EN COURS #
|
# EN COURS #
|
||||||
############
|
############
|
||||||
|
- [ ] Conception du systeme de delegation des managers
|
||||||
|
- [.] Module Dispatcher
|
||||||
|
- [x] Module Request
|
||||||
|
- [ ] Module Answer
|
||||||
|
|
||||||
- [x] Conception BDD + ameliorations
|
- [x] Conception BDD + ameliorations
|
||||||
- [x] Liste des tables
|
- [x] Liste des tables
|
||||||
- [x] Liste de attributs
|
- [x] Liste de attributs
|
||||||
|
|
Loading…
Reference in New Issue