....
Explication du code:
Construction de la requette 'url':
url= "./ajax.php?module=ajax&categ=misc&fname=verifdate&p1=" + DirectDate;
Les parametres module,categ permettent de parser la commande au bon endroit dans
la structure de codage de PMB
Plusieurs paramètres optionnels de la fonction 'request' permettent de faire des POST
en mode synchrone ou pas.
Pour plus de précisions, voir l'entete de la procédure dans: ./javascript/http_request.js
Coté serveur, on se rend dans le bon module, grace aux paramètres passés dans 'url'.
Dans l'exemple, module=ajax , categ=misc .
Ainsi le fichier /ajax/ajax_main.inc.php parse la commande à /pmb/ajax/misc/misc.inc.php
Cette métodologie devra être respectée pour chaque requette Ajax, afin de localiser le traitement
facilement et de réutiliser au mieux le code existant du module
*/
$base_path = ".";
$base_noheader = 1;
$base_nobody = 1;
$base_nodojo = 1;
$clean_pret_tmp=1;
$base_is_http_request=1;
//avant l'inclusion faudrait peut-être s'occuper de la gestion des droits dans les différentes requetes...
switch($_GET['module']){
case "cms" :
$base_auth = "CMS_AUTH";
break;
case "autorites" :
$base_auth = "AUTORITES_AUTH";
break;
case 'catalog':
$base_auth = "CATALOGAGE_AUTH";
break;
case 'circ':
$base_auth = "CIRCULATION_AUTH";
break;
case 'admin':
$base_auth = "ADMINISTRATION_AUTH";
break;
case 'demandes':
$base_auth = "DEMANDES_AUTH";
break;
case 'acquisition':
$base_auth = "ACQUISITION_AUTH";
break;
case 'fichier':
$base_auth = "FICHES_AUTH";
break;
case "edit" :
$base_auth = "EDIT_AUTH";
break;
case "modelling" :
$base_auth = "MODELLING_AUTH";
break;
case "frbr" :
$base_auth = "FRBR_AUTH";
break;
case "selectors" :
$base_auth = "";
break;
}
require_once ($base_path . "/includes/init.inc.php");
if(!SESSrights) exit;
// inclusion des fonctions utiles pour renvoyer la réponse à la requette recu
require_once ($base_path . "/includes/ajax.inc.php");
/*
* Parse la commande Ajax du client vers
* $module est passé dans l'url,envoyé par http_send_request, in http_request.js script file
* les valeurs envoyées dans les requêtes en ajax du client vers le serveur sont encodées
* exclusivement en utf-8 donc décodage de toutes les variables envoyées si nécessaire
*/
function utf8_decode_pmb(&$var) {
if(is_array($var)){
foreach($var as $key => $val) {
utf8_decode_pmb($var[$key]);
}
}
else $var=utf8_decode($var);
}
function array_uft8_decode($tab){
foreach($tab as $key => $val) {
if(is_array($val)){
$tab[$key] = array_uft8_decode($val);
}else{
$tab[$key] = utf8_decode($val);
}
}
return $tab;
}
if(!isset($is_iframe)) $is_iframe = 0;
if (strtoupper($charset)!="UTF-8" && !$is_iframe) {
$t=array_keys($_POST);
foreach($t as $v) {
global ${$v};
utf8_decode_pmb(${$v});
}
$t=array_keys($_GET);
foreach($t as $v) {
global ${$v};
utf8_decode_pmb(${$v});
}
//On décode aussi les POST et les GET en plus de les mettre en global
$_POST = array_uft8_decode($_POST);
$_GET = array_uft8_decode($_GET);
}
$main_file="./$module/ajax_main.inc.php";
switch($module) {
case 'ajax':
include($main_file);
break;
case 'autorites':
include($main_file);
break;
case 'catalog':
include($main_file);
break;
case 'circ':
include($main_file);
break;
case 'admin':
include($main_file);
break;
case 'demandes':
include($main_file);
break;
case 'acquisition':
include($main_file);
break;
case 'fichier':
include($main_file);
break;
case 'cms':
include($main_file);
break;
case "edit" :
include($main_file);
break;
case "dsi" :
include($main_file);
break;
case "dashboard" :
include($main_file);
break;
case "selectors":
$autoloader->add_register("selectors_class",true);
global $what,$concept_scheme;
if($what == 'ontology'){
if(!is_array($concept_scheme) && $concept_scheme != ''){
$concept_scheme = explode(",",$concept_scheme);
}else{
$concept_scheme = [];
}
}
require_once($base_path.'/selectors/classes/selector_controller.class.php');
if(!isset($user_input)) $user_input = '';
$selector_controller = new selector_controller(stripslashes($user_input));
$selector_controller->proceed();
break;
case "modelling" :
include($main_file);
break;
case "frbr" :
include($main_file);
break;
default:
//tbd
break;
}
?>