Subversion Repositories eFlore/Applications.del

Rev

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

Rev 746 Rev 751
Line 63... Line 63...
63
		$this->parametres = $parametres;
63
		$this->parametres = $parametres;
64
	}
64
	}
Line 65... Line 65...
65
 
65
 
66
	private function traiterRessources() {
66
	private function traiterRessources() {
67
		$retour = '';
-
 
68
		if ($this->avoirRessources()) {
-
 
69
			//if ($this->avoirRessourceProjet()) {
67
		$retour = '';
70
				$this->initialiserProjet();
68
		$this->initialiserProjet();
71
				if ($this->avoirRessourceService()) {
69
		if ($this->avoirRessourceService()) {
72
					$retour = $this->initialiserService();
-
 
73
				}
-
 
74
			//}
70
			$retour = $this->initialiserService();
75
		}
71
		}
76
		return $retour;
72
		return $retour;
77
	}
73
	}
78
 
74
	
79
	private function avoirRessources() {
75
	private function avoirRessourceIdentifiant() {
80
		$presenceDeRessources = false;
76
		$presenceId = false;
-
 
77
		if (isset($this->ressources) && count($this->ressources) > 0) {
81
		if (isset($this->ressources) && count($this->ressources) > 0) {
78
			if (is_numeric($this->ressources[0])) {
82
			$presenceDeRessources = true;
79
				$presenceId = true;
83
		} else {
-
 
84
			$message = "Aucune ressource n'a été indiquée.\n".
-
 
85
				"Veuillez indiquer au moins un code de projet et un type de service.";
-
 
86
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
-
 
87
			throw new Exception($message, $code);
80
			}
88
		}
81
		} 
89
		return $presenceDeRessources;
82
		return $presenceId;
90
	}
-
 
-
 
83
	}
-
 
84
	/*------------------------------------------------------------------------------------------------------------------
-
 
85
										CONFIGURATION DU PROJET
91
 
86
	------------------------------------------------------------------------------------------------------------------*/
92
	private function initialiserProjet() {
87
	private function initialiserProjet() {
93
		$this->chargerNomDuProjet();
88
		$this->chargerNomDuProjet();
Line 94... Line -...
94
		$this->chargerConfigProjet();
-
 
95
 
-
 
96
		// php5.3 : Enregistrement en première position des autoload de la méthode gérant les classes des services
-
 
97
		if (phpversion() < 5.3) {
-
 
98
			spl_autoload_register(array($this, 'chargerClasseProjet'));
-
 
99
		} else {
-
 
100
			spl_autoload_register(array($this, 'chargerClasseProjet'), true , true);
89
		$this->chargerConfigProjet();
Line 101... Line 90...
101
		}
90
 
102
	}
91
	}
103
 
92
 
Line 109... Line 98...
109
		$projet = $this->projetNom;
98
		$projet = $this->projetNom;
110
		$chemin = Config::get('chemin_configurations')."config_$projet.ini";
99
		$chemin = Config::get('chemin_configurations')."config_$projet.ini";
111
		Config::charger($chemin);
100
		Config::charger($chemin);
112
	}
101
	}
Line 113... Line 102...
113
 
102
 
114
	private function chargerClasseProjet($classe) {
103
	/*------------------------------------------------------------------------------------------------------------------
115
		if (class_exists($classe)) {
-
 
116
			return null;
-
 
117
		}
-
 
118
 
-
 
119
		$cheminBiblio = Config::get('chemin_bibliotheque');
-
 
120
		$chemins = array();
104
								CONFIGURATION DU SERVICE
121
		$chemins[] = $this->cheminCourant.$this->projetNom.DS;
-
 
122
		$chemins[] = $this->cheminCourant.'commun'.DS;
-
 
123
		$chemins[] = $cheminBiblio;
-
 
124
		$chemins[] = $cheminBiblio.'robots'.DS;
-
 
125
 
-
 
126
		foreach ($chemins as $chemin) {
-
 
127
			$chemin = $chemin.$classe.'.php';
-
 
128
			if (file_exists($chemin)) {
-
 
129
				require_once $chemin;
-
 
130
				break;
-
 
131
			}
-
 
132
		}
-
 
133
	}
-
 
134
 
105
	------------------------------------------------------------------------------------------------------------------*/
-
 
106
	private function avoirRessourceService() {
-
 
107
		/*
-
 
108
		* url possibles :
-
 
109
		* http://localhost/del/services/0.1/images/ => toutes les images, appel à la classe ListeImages
-
 
110
		* http://localhost/del/services/0.1/images/#id => une image donnée => non utilisé sur DEL pour l'instant
-
 
111
		* http://localhost/del/services/0.1/images/#id/votes/ => tous les votes d'une image classés par protocole
-
 
112
		* http://localhost/del/services/0.1/images/#id/votes/protocole/#id => tous les votes d'une image et d'un protocole donné
-
 
113
		* http://localhost/del/services/0.1/images/#id/votes/#id => un vote donné pour une image donnée.
135
	private function avoirRessourceService() {
114
		* */
136
		$presenceRessourceService = false;
115
		$presenceRessourceService = false;
Line 137... Line 116...
137
		$servicesDispo = Outils::recupererTableauConfig('servicesDispo');
116
		$servicesDispo = Outils::recupererTableauConfig('servicesDispo');
138
	
117
	
-
 
118
		if (isset($this->ressources[1])) {
139
		if (isset($this->ressources[0])) {
119
			$service = $this->ressources[1];
140
			$service = $this->ressources[0];
120
			if ($this->avoirRessourceIdentifiant()) {
-
 
121
				if (in_array($service, $servicesDispo)) {
-
 
122
					$presenceRessourceService = true;
-
 
123
					$this->serviceNom = 'votes-image';
-
 
124
				} else {
-
 
125
					$message = "Le service demandé '$service' n'est pas disponible pour le projet {$this->projetNom} !\n".
-
 
126
						"Les services disponibles sont : ".implode(', ', $servicesDispo);
-
 
127
					$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
141
			if (in_array($service, $servicesDispo)) {
128
					throw new Exception($message, $code);
142
				$presenceRessourceService = true;
129
				}
143
			} else {
-
 
144
				$message = "La service demandé '$service' n'est pas disponible pour le projet {$this->projetNom} !\n".
130
			} else {
145
					"Les services disponibles sont : ".implode(', ', $servicesDispo);
131
				$message = "Le service demandé '$service' nécessite d'avoir un identifiant d'image valide";
146
				$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
132
				$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
147
				throw new Exception($message, $code);
133
				throw new Exception($message, $code);
148
			}
-
 
149
		} else {
134
			}
150
			$message = "Vous n'avez pas indiqué de service pour le projet {$this->projetNom} !\n".
-
 
151
				"Les services disponibles sont : ".implode(', ', $servicesDispo);
135
		} else {
152
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
136
			$presenceRessourceService = true;
153
			throw new Exception($message, $code);
137
			$this->serviceNom = 'liste-images';
154
		}
138
		}
Line 155... Line 139...
155
		return $presenceRessourceService;
139
		return $presenceRessourceService;
156
	}
140
	}
Line 157... Line 141...
157
 
141
 
158
	private function initialiserService() {
142
	private function initialiserService() {
159
		$this->chargerNomDuService();
143
		//$this->chargerNomDuService();
160
		
144
		
161
		$classe = $this->obtenirNomClasseService($this->serviceNom);
-
 
162
		$chemins = array();
145
		$classe = $this->obtenirNomClasseService($this->serviceNom);
163
		$chemins[] = $this->cheminCourant.$this->projetNom.DS.$classe.'.php';
146
		$chemins = array();
164
		$chemins[] = $this->cheminCourant.'commun'.DS.$classe.'.php';
147
		$chemins[] = $this->cheminCourant.$this->projetNom.DS.$classe.'.php';
165
 
148
		$chemins[] = $this->cheminCourant.'commun'.DS.$classe.'.php';
166
		$retour = '';
149
		$retour = '';
-
 
150
		$service = null;
167
		$service = null;
151
		foreach ($chemins as $chemin) {
168
		foreach ($chemins as $chemin) {
-
 
169
			if (file_exists($chemin)) {
152
			if (file_exists($chemin)) {
170
				$this->conteneur->chargerConfiguration('config_'.$this->projetNom.'.ini');
153
				$this->conteneur->chargerConfiguration('config_'.$this->projetNom.'.ini');
171
				$service = new $classe($this->conteneur);
154
				require_once $chemin;
Line 172... Line 155...
172
				$ressourcesPourService = $this->filtrerRessourcesPourService();
155
				$service = new $classe($this->conteneur);
173
				$retour = $service->consulter($ressourcesPourService, $this->parametres);
156
				$retour = $service->consulter($this->ressources, $this->parametres);
174
			}
157
			}
175
		}
158
		}
176
		
159
		
177
		if (is_null($service)) {
160
		if (is_null($service)) {
178
			$message = "La service demandé '{$this->serviceNom}' n'existe pas dans le projet {$this->projetNom} !";
161
			$message = "Le service demandé '{$this->serviceNom}' n'existe pas dans le projet {$this->projetNom} !";
Line 179... Line -...
179
			$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
-
 
180
			throw new Exception($message, $code);
-
 
181
		}
-
 
182
		return $retour;
-
 
183
	}
162
			$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
184
 
163
			throw new Exception($message, $code);
185
	private function chargerNomDuService() {
164
		}
186
		$this->serviceNom = $this->ressources[0];
165
		return $retour;
Line 187... Line -...
187
	}
-
 
188
 
-
 
189
	private function obtenirNomClasseService($mot) {
-
 
190
		$classeNom = str_replace(' ', '', ucwords(strtolower(str_replace('-', ' ', $mot))));
-
 
191
		return $classeNom;
-
 
192
	}
-
 
193
 
-
 
194
	private function filtrerRessourcesPourService() {
166
	}
195
		$ressourcesPourService = array();
167
 
196
		$nbreDeRessources = count($this->ressources);
168
	private function obtenirNomClasseService($mot) {
197
		for ($i = 2; $i < $nbreDeRessources; $i++) {
169
		$classeNom = str_replace(' ', '', ucwords(strtolower(str_replace('-', ' ', $mot))));