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(){
|
||||
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{
|
||||
|
||||
// Constantes (a dispatcher dans un .conf)
|
||||
// Constantes
|
||||
public static $extension_config_path = '/config/dispatcher-extensions.json';
|
||||
public static $parents_config_path = '/config/dispatcher-tree.json';
|
||||
|
||||
|
@ -22,8 +22,6 @@
|
|||
*
|
||||
* @url<String> L'url courante
|
||||
*
|
||||
* @GET<Array> Arguments indirects (variable $_GET)
|
||||
*
|
||||
* @return status<Boolean> Retourne si oui ou non tout s'est bien passe
|
||||
*
|
||||
*/
|
||||
|
@ -32,10 +30,18 @@
|
|||
=====================================================*/
|
||||
// Extensions supportees
|
||||
$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;
|
||||
|
||||
// Dossiers supportes
|
||||
$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;
|
||||
|
||||
|
||||
|
@ -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
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue