Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 483 | Rev 516 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 483 Rev 499
Line 32... Line 32...
32
	protected $limite_requete = array( 'depart' => 0, 'limite' => 10);
32
	protected $limite_requete = array( 'depart' => 0, 'limite' => 10);
33
	private $champs_recherches = '*';
33
	private $champs_recherches = '*';
34
	private $champs_ontologiques = array();
34
	private $champs_ontologiques = array();
35
	protected $serviceNom = 'informations';
35
	protected $serviceNom = 'informations';
Line 36... Line -...
36
	
-
 
37
	
-
 
38
	
36
 
39
	public function consulter($ressources, $parametres) {
-
 
40
 
37
	public function consulter($ressources, $parametres) {
41
		$this->ressources = $ressources;
38
		$this->ressources = $ressources;
42
		$this->parametres = $parametres;
39
		$this->parametres = $parametres;
43
		$this->traiterParametres();
40
		$this->traiterParametres();
44
		$this->traiterVersionProjet();
41
		$this->traiterVersionProjet();
Line 57... Line 54...
57
			}
54
			}
58
		}
55
		}
59
	return $resultats;
56
		return $resultats;
60
	}
57
	}
Line 61... Line -...
61
	
-
 
62
	
-
 
63
	
58
 
64
	public function traiterResultat($resultat, $version, $requete) {
59
	public function traiterResultat($resultat, $version, $requete) {
65
		$versionResultat = null;
60
		$versionResultat = null;
66
		if ($resultat == '') {
61
		if ($resultat == '') {
67
			$message = 'La requête SQL formée comporte une erreur!';
62
			$message = 'La requête SQL formée comporte une erreur!';
Line 99... Line 94...
99
								"OR ve_continentalite != '' OR ve_humidite_atmos != '' ".
94
								"OR ve_continentalite != '' OR ve_humidite_atmos != '' ".
100
								"OR ve_humidite_edaph != '' OR ve_reaction_sol != '' ".
95
								"OR ve_humidite_edaph != '' OR ve_reaction_sol != '' ".
101
								"OR ve_nutriments_sol != '' OR ve_salinite != '' ".
96
								"OR ve_nutriments_sol != '' OR ve_salinite != '' ".
102
								"OR ve_texture_sol != '' OR ve_mat_org_sol != '' )";														
97
								"OR ve_texture_sol != '' OR ve_mat_org_sol != '' )";
103
						}else {
98
						} else {
104
							$e = 'Valeur de paramètre inconnue  pour \'test\'. ';
99
							$e = "Valeur de paramètre inconnue  pour 'test'.";
105
							$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
100
							$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
106
						}
101
						}
107
						break;
102
						break;
108
					case 'retour.format'  :
103
					case 'retour.format'  :
109
						$this->retour_format = $valeur;
104
						$this->retour_format = $valeur;
Line 261... Line 256...
261
		$resultat_json[$champs.'.code'] = $valeur;
256
		$resultat_json[$champs.'.code'] = $valeur;
262
		$resultat_json[$champs.'.href'] = $url;
257
		$resultat_json[$champs.'.href'] = $url;
263
		return $resultat_json;
258
		return $resultat_json;
264
	}
259
	}
Line 265... Line -...
265
	
-
 
266
	
-
 
267
	
260
 
268
	public function recupererOntologiePrTypeBio($type_a_traiter){
261
	public function recupererOntologiePrTypeBio($type_a_traiter){
269
		$resultat_typeBio = "";
262
		$resultat_typeBio = "";
270
		if ($type_a_traiter != ""){
263
		if ($type_a_traiter != "") {
271
			$resultat_typeBio['type_bio.code'] = $type_a_traiter;
264
			$resultat_typeBio['type_bio.code'] = $type_a_traiter;
Line 283... Line 276...
283
				case 3 : 
276
				case 3 :
284
					$types_sstypes = array_merge($types_sstypes['principal'],
277
					$types_sstypes = array_merge($types_sstypes['principal'],
285
												$types_sstypes['secondaire'],
278
												$types_sstypes['secondaire'],
286
												$types_sstypes['special']);
279
												$types_sstypes['special']);
287
					break;
280
					break;
288
			  default :
-
 
289
			  	break;
-
 
290
				 
-
 
291
			}
281
			}
Line 292... Line 282...
292
			
282
 
293
			foreach ($types_sstypes as $cle => $tb){
283
			foreach ($types_sstypes as $cle => $tb) {
294
				if (($cle == 'type.principal') || ($cle == 'type.secondaire')){
284
				if (($cle == 'type.principal') || ($cle == 'type.secondaire')) {
Line 297... Line 287...
297
					$libelle[$cle]= $val->nom;
287
					$libelle[$cle]= $val->nom;
298
					$detail[$cle]['libelle'] = $val->nom;
288
					$detail[$cle]['libelle'] = $val->nom;
299
					$detail[$cle]['code'] = $val->code;
289
					$detail[$cle]['code'] = $val->code;
300
					$detail[$cle]['href'] = $url;
290
					$detail[$cle]['href'] = $url;
301
				}
291
				}
302
				if ( ($cle == 'sous_type.principal') || ($cle == 'sous_type.secondaire') || ($cle == 'sous_type.special') ){
292
				if ($cle == 'sous_type.principal' || $cle == 'sous_type.secondaire' || $cle == 'sous_type.special') {
303
					$i = 0; 
293
					$i = 0;
304
					foreach ($tb as $sstypes){
294
					foreach ($tb as $sstypes) {
305
						$url = $this->ajouterHref('ontologies','ssTT:'.urlencode(urlencode($sstypes)));
295
						$url = $this->ajouterHref('ontologies','ssTT:'.urlencode(urlencode($sstypes)));
306
						$val = $this->consulterHref($url);
296
						$val = $this->consulterHref($url);
307
						$libelle[$cle]=$val->nom;
297
						$libelle[$cle]=$val->nom;
Line 316... Line 306...
316
		$resultat_typeBio['type_bio.detail'] = $detail;
306
			$resultat_typeBio['type_bio.detail'] = $detail;
317
		}
307
		}
318
		return $resultat_typeBio;
308
		return $resultat_typeBio;
319
	}
309
	}
Line 320... Line -...
320
	
-
 
321
	
310
 
322
	public function formaterTypeBioPrLibelle($info){
311
	public function formaterTypeBioPrLibelle($info) {
323
		$libelle = $info['type.principal']." ";
312
		$libelle = $info['type.principal']." ";
324
		$libelle .= isset($info['sous_type.principal']) ? " (".$info['sous_type.principal'].") " : "";
313
		$libelle .= isset($info['sous_type.principal']) ? " (".$info['sous_type.principal'].") " : "";
325
		$libelle .= isset($info['type.secondaire']) ? ", ".$info['type.secondaire']." " : "";
314
		$libelle .= isset($info['type.secondaire']) ? ", ".$info['type.secondaire']." " : "";
326
		$libelle .= isset($info['sous_type.secondaire']) ? "(".$info['sous_type.secondaire'].") " : "";
315
		$libelle .= isset($info['sous_type.secondaire']) ? "(".$info['sous_type.secondaire'].") " : "";
327
		$libelle .= isset($info['sous_type.special']) ? "(".$info['sous_type.special'].") " : "";
316
		$libelle .= isset($info['sous_type.special']) ? "(".$info['sous_type.special'].") " : "";
328
		return $libelle;
317
		return $libelle;
Line 329... Line -...
329
	}
-
 
330
	
318
	}
331
 
319
 
332
	public function separerTypesPrimairesSecondaires($type){
320
	public function separerTypesPrimairesSecondaires($type) {
333
		$types = array(); 
321
		$types = array();
334
		//séparation des principaux et des secondaires
322
		//séparation des principaux et des secondaires
335
		if (( preg_match("/(.+)\((.+)\)\-{0,1}(.+){0,1}/", $type,$retour) == 1  )){
323
		if (preg_match("/(.+)\((.+)\)\-{0,1}(.+){0,1}/", $type,$retour) == 1) {
336
			$types['principal'] = $retour[1]; 
324
			$types['principal'] = $retour[1];
337
			$types['secondaire'] = $retour[2];
325
			$types['secondaire'] = $retour[2];
338
			if (isset($retour[3])){$types['special'] = $retour[3];}
326
			if (isset($retour[3])){$types['special'] = $retour[3];}
Line 342... Line 330...
342
		return $types;
330
		return $types;
343
	}
331
	}
Line 344... Line 332...
344
	
332
 
345
	public function separerTypes_SousTypes($type_a_traiter, $typePrimOuSec){
333
	public function separerTypes_SousTypes($type_a_traiter, $typePrimOuSec) {
346
		$types = array();
334
		$types = array();
347
		if(( preg_match("/^([a-zA-Zé]+)\-(.+)$|^([a-zA-Zé]+[^\-])$/", $type_a_traiter, $retour) == 1  )){
335
		if (preg_match("/^([a-zA-Zé]+)\-(.+)$|^([a-zA-Zé]+[^\-])$/", $type_a_traiter, $retour) == 1) {
Line 348... Line 336...
348
    		//recupère le type unique
336
    		//recupère le type unique
349
		
337
 
350
			$type = (isset($retour[3]) && ($typePrimOuSec != 'special') ) ? $retour[3] : $retour[1] ;
338
			$type = (isset($retour[3]) && ($typePrimOuSec != 'special') ) ? $retour[3] : $retour[1] ;
351
			$types['type.'.$typePrimOuSec]= $type;
339
			$types['type.'.$typePrimOuSec]= $type;
352
    		//recupère le ou les sous-types
340
    		//recupère le ou les sous-types
353
    		if ((isset($retour[3]) && ($typePrimOuSec == 'special') )){
341
    		if (isset($retour[3]) && $typePrimOuSec == 'special') {
354
    			$ss_types[0] = (isset($retour[3]) && ($typePrimOuSec == 'special') ) ? $retour[3] : "" ;
342
    			$ss_types[0] = (isset($retour[3]) && ($typePrimOuSec == 'special') ) ? $retour[3] : "" ;
355
    		}elseif(isset($retour[2]) && ($retour[2] != "")){
343
    		} elseif (isset($retour[2]) && $retour[2] != '') {
356
    			$ss_types[0]= (isset($retour[2]) && ($retour[2] != "") ) ? $retour[2] : "" ;
344
    			$ss_types[0]= (isset($retour[2]) && ($retour[2] != "") ) ? $retour[2] : "" ;
357
    		}
345
    		}
358
     		if (isset($ss_types[0])){
346
     		if (isset($ss_types[0])) {
359
    			if (( preg_match("/\-/", $ss_types[0])) == 1 ){
347
    			if (preg_match("/\-/", $ss_types[0]) == 1) {
360
    				$ss_types = preg_split("/\-/", $ss_types[0]);
348
    				$ss_types = preg_split("/\-/", $ss_types[0]);
361
    			}
349
    			}
362
				for($i = 0 ; $i < count($ss_types); $i++){
350
				for ($i = 0 ; $i < count($ss_types); $i++) {
363
    				$types['sous_type.'.$typePrimOuSec][$i] = $ss_types[$i];
351
    				$types['sous_type.'.$typePrimOuSec][$i] = $ss_types[$i];
364
        			}
352
        		}
365
    		}
-
 
366
    	}
353
    		}
367
    	
354
    	}
Line 368... Line -...
368
 		return $types;
-
 
369
	}
355
 		return $types;
Line 370... Line 356...
370
	
356
	}
371
	
-
 
372
//+--------------------------FONCTIONS D'ASSEMBLAGE DE LA REQUETE-------------------------------------------+
357
 
373
	
358
//+--------------------------FONCTIONS D'ASSEMBLAGE DE LA REQUETE-------------------------------------------+
374
	public function assemblerLaRequete() {
359
 
375
 
-
 
376
		$requete = 	' SELECT '.$this->champs_recherches.' FROM '.$this->table.' '
360
	public function assemblerLaRequete() {
377
		.$this->retournerRequeteCondition().' '
361
		$requete = 	' SELECT '.$this->champs_recherches.' FROM '.$this->table.' '
Line 378... Line -...
378
		.$this->delimiterResultatsRequete();
-
 
379
 
-
 
380
		return $requete;
362
			.$this->retournerRequeteCondition().' '
381
	}
363
			.$this->delimiterResultatsRequete();
382
	
364
		return $requete;
383
 
365
	}
384
	
366
 
385
	public  function retournerRequeteCondition() {
367
	public  function retournerRequeteCondition() {
386
		$condition = '';
368
		$condition = '';
Line 387... Line -...
387
		if ($this->requete_condition !== "") {
-
 
388
			$condition = ' WHERE '.implode(' AND ', $this->requete_condition);
-
 
389
		}
369
		if ($this->requete_condition !== "") {
390
		return $condition;
370
			$condition = ' WHERE '.implode(' AND ', $this->requete_condition);
391
	}
371
		}
392
	
-
 
393
 
372
		return $condition;
394
	
373
	}
395
	public function calculerTotalResultat() {
374
 
396
		//on récupère le nombre total de résultats de la requete
375
	public function calculerTotalResultat() {
397
		$requete = 'SELECT count(*) as nombre FROM '.$this->table.' '
376
		//on récupère le nombre total de résultats de la requete
398
		.$this->retournerRequeteCondition();
377
		$requete = 'SELECT count(*) as nombre FROM '.$this->table.' '.$this->retournerRequeteCondition();
399
		$res = $this->getBdd()->recuperer($requete);
378
		$res = $this->getBdd()->recuperer($requete);
400
		if ($res) {
379
		if ($res) {
401
			$this->total_resultat = $res['nombre'];
380
			$this->total_resultat = $res['nombre'];
Line 402... Line -...
402
		} else {
-
 
403
			$this->total_resultat = 0;
381
		} else {
404
			$e = 'Données introuvables dans la base';
382
			$this->total_resultat = 0;
405
			$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
383
			$e = 'Données introuvables dans la base';
406
		}
384
			$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
407
	}
385
		}