Subversion Repositories Applications.framework

Rev

Rev 484 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 484 Rev 487
Line 270... Line 270...
270
			$this->initialiserMethode();
270
			$this->initialiserMethode();
271
			$this->initialiserRequeteDonnees();
271
			$this->initialiserRequeteDonnees();
Line 272... Line 272...
272
 
272
 
Line 273... Line 273...
273
			$urlParts = $this->decouperUrlChemin();
273
			$urlParts = $this->decouperUrlChemin();
274
 
274
 
275
			$this->initialiserApiVersion(array_shift($urlParts));
275
			$this->initialiserApiVersion($urlParts);
Line 276... Line 276...
276
			$this->initialiserServiceNom(array_shift($urlParts));
276
			$this->initialiserServiceNom(array_shift($urlParts));
277
			$this->initialiserRessource($urlParts);
277
			$this->initialiserRessource($urlParts);
Line 329... Line 329...
329
			$urlChaine = substr($url, strlen(Config::get('serveur.baseAlternativeURL')), $tailleURL);
329
			$urlChaine = substr($url, strlen(Config::get('serveur.baseAlternativeURL')), $tailleURL);
330
		}
330
		}
331
		return explode('/', $urlChaine);
331
		return explode('/', $urlChaine);
332
	}
332
	}
Line -... Line 333...
-
 
333
 
-
 
334
	/**
-
 
335
	 * Gère les API non versionnées, si le paramètre de configuration
-
 
336
	 * "api_non_versionnee" est explicitement mis à 1 / true. Dans ce cas,
-
 
337
	 * modifie les chemins de chargement des bibliothèques et des modules.
-
 
338
	 * ATTENTION $urlParts doit être un pointeur, car un élément est parfois dépilé
-
 
339
	 * @param array &$urlParts pointeur sur les éléments d'URL desquels tirer éventuellement la version de l'API
333
 
340
	 */
-
 
341
	private function initialiserApiVersion(&$urlParts) {
-
 
342
		self::$config['api_non_versionnee'] = Config::get('api_non_versionnee');
-
 
343
		// test à l'envers pour rétrocompatibilité, évite de rajouter un
-
 
344
		// paramètre de config pour les API versionnées (par défaut)
-
 
345
		if (self::$config['api_non_versionnee'] != 1) {
334
	private function initialiserApiVersion($apiVersion) {
346
			$apiVersion = array_shift($urlParts);
335
		if ($this->verifierApiVersion($apiVersion)) {
347
			if ($this->verifierApiVersion($apiVersion)) {
336
			$this->apiVersion = $apiVersion;
348
				$this->apiVersion = $apiVersion;
337
			self::$config['chemins']['api'] = Config::get('chemin_modules').$this->apiVersion.DS;
349
				self::$config['chemins']['api'] = Config::get('chemin_modules').$this->apiVersion.DS;
-
 
350
				self::$config['chemins']['api_bibliotheque'] = self::$config['chemins']['api'].Config::get('dossier_bibliotheque').DS;
-
 
351
			} else {
-
 
352
				self::envoyerEnteteStatutHttp(self::HTTP_CODE_MAUVAISE_REQUETE);
-
 
353
				$e = "Aucune version d'API n'a été spécifiée.\n".
-
 
354
					"La version doit respecter l'expression régulière suivante : ".self::MOTIF_API_VERSION.".\n".
-
 
355
					"L'url doit avoir la forme suivante : http://www.mondomaine.org/services/apiVersion/monService/";
-
 
356
				self::ajouterMessage($e);
-
 
357
				self::cloreAccesServeur();
338
			self::$config['chemins']['api_bibliotheque'] = self::$config['chemins']['api'].Config::get('dossier_bibliotheque').DS;
358
			}
339
		} else {
-
 
340
			self::envoyerEnteteStatutHttp(self::HTTP_CODE_MAUVAISE_REQUETE);
359
		} else {
341
			$e = "Aucune version d'API n'a été spécifiée.\n".
360
			// Chemins sans dossier de version d'API
342
				"La version doit respecter l'expression régulière suivante : ".self::MOTIF_API_VERSION.".\n".
361
			self::$config['chemins']['api'] = Config::get('chemin_modules');
343
			  	"L'url doit avoir la forme suivante : http://www.mondomaine.org/services/apiVersion/monService/";
-
 
344
			self::ajouterMessage($e);
-
 
345
			self::cloreAccesServeur();
362
			self::$config['chemins']['api_bibliotheque'] = self::$config['chemins']['api'].Config::get('dossier_bibliotheque').DS;
346
		}
363
		}
Line 347... Line 364...
347
	}
364
	}
348
 
365
 
Line 431... Line 448...
431
	/**
448
	/**
432
	* La méthode __autoload() charge dynamiquement les classes trouvées dans le code.
449
	* La méthode __autoload() charge dynamiquement les classes trouvées dans le code.
433
	* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.
450
	* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.
434
	*
451
	*
435
	*@param string le nom de la classe appelée.
452
	*@param string le nom de la classe appelée.
436
	*@return void le fichier contenant la classe doit être inclu par la fonction.
453
	*@return void le fichier contenant la classe doit être inclus par la fonction.
437
	*/
454
	*/
438
	public static function chargerClasse($classe) {
455
	public static function chargerClasse($classe) {
439
		if (class_exists($classe)) {
456
		if (class_exists($classe)) {
440
			return null;
457
			return null;
441
		}
458
		}
442
		$chemins = array('', self::$config['chemins']['api'], self::$config['chemins']['api_bibliotheque']);
459
		$chemins = array('', self::$config['chemins']['api'], self::$config['chemins']['api_bibliotheque']);
-
 
460
		$chemins = array_unique($chemins);
443
		foreach ($chemins as $chemin) {
461
		foreach ($chemins as $chemin) {
444
			$chemin = $chemin.$classe.'.php';
462
			$chemin = $chemin.$classe.'.php';
445
			if (file_exists($chemin)) {
463
			if (file_exists($chemin)) {
446
				require_once $chemin;
464
				require_once $chemin;
447
			}
465
			}