Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 486 → Rev 487

/trunk/framework/RestServeur.php
272,7 → 272,7
 
$urlParts = $this->decouperUrlChemin();
 
$this->initialiserApiVersion(array_shift($urlParts));
$this->initialiserApiVersion($urlParts);
$this->initialiserServiceNom(array_shift($urlParts));
$this->initialiserRessource($urlParts);
 
331,18 → 331,35
return explode('/', $urlChaine);
}
 
private function initialiserApiVersion($apiVersion) {
if ($this->verifierApiVersion($apiVersion)) {
$this->apiVersion = $apiVersion;
self::$config['chemins']['api'] = Config::get('chemin_modules').$this->apiVersion.DS;
/**
* Gère les API non versionnées, si le paramètre de configuration
* "api_non_versionnee" est explicitement mis à 1 / true. Dans ce cas,
* modifie les chemins de chargement des bibliothèques et des modules.
* ATTENTION $urlParts doit être un pointeur, car un élément est parfois dépilé
* @param array &$urlParts pointeur sur les éléments d'URL desquels tirer éventuellement la version de l'API
*/
private function initialiserApiVersion(&$urlParts) {
self::$config['api_non_versionnee'] = Config::get('api_non_versionnee');
// test à l'envers pour rétrocompatibilité, évite de rajouter un
// paramètre de config pour les API versionnées (par défaut)
if (self::$config['api_non_versionnee'] != 1) {
$apiVersion = array_shift($urlParts);
if ($this->verifierApiVersion($apiVersion)) {
$this->apiVersion = $apiVersion;
self::$config['chemins']['api'] = Config::get('chemin_modules').$this->apiVersion.DS;
self::$config['chemins']['api_bibliotheque'] = self::$config['chemins']['api'].Config::get('dossier_bibliotheque').DS;
} else {
self::envoyerEnteteStatutHttp(self::HTTP_CODE_MAUVAISE_REQUETE);
$e = "Aucune version d'API n'a été spécifiée.\n".
"La version doit respecter l'expression régulière suivante : ".self::MOTIF_API_VERSION.".\n".
"L'url doit avoir la forme suivante : http://www.mondomaine.org/services/apiVersion/monService/";
self::ajouterMessage($e);
self::cloreAccesServeur();
}
} else {
// Chemins sans dossier de version d'API
self::$config['chemins']['api'] = Config::get('chemin_modules');
self::$config['chemins']['api_bibliotheque'] = self::$config['chemins']['api'].Config::get('dossier_bibliotheque').DS;
} else {
self::envoyerEnteteStatutHttp(self::HTTP_CODE_MAUVAISE_REQUETE);
$e = "Aucune version d'API n'a été spécifiée.\n".
"La version doit respecter l'expression régulière suivante : ".self::MOTIF_API_VERSION.".\n".
"L'url doit avoir la forme suivante : http://www.mondomaine.org/services/apiVersion/monService/";
self::ajouterMessage($e);
self::cloreAccesServeur();
}
}
 
433,7 → 450,7
* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.
*
*@param string le nom de la classe appelée.
*@return void le fichier contenant la classe doit être inclu par la fonction.
*@return void le fichier contenant la classe doit être inclus par la fonction.
*/
public static function chargerClasse($classe) {
if (class_exists($classe)) {
440,6 → 457,7
return null;
}
$chemins = array('', self::$config['chemins']['api'], self::$config['chemins']['api_bibliotheque']);
$chemins = array_unique($chemins);
foreach ($chemins as $chemin) {
$chemin = $chemin.$classe.'.php';
if (file_exists($chemin)) {