Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 6 Rev 236
Line 22... Line 22...
22
* @copyright 1999-${year} Tela Botanica (accueil@tela-botanica.org)
22
* @copyright 1999-${year} Tela Botanica (accueil@tela-botanica.org)
23
*/
23
*/
Line 24... Line 24...
24
 
24
 
Line 25... Line 25...
25
class Observations extends Commun {
25
class Observations extends Commun {
Line 26... Line 26...
26
	
26
	
27
	protected $service = 'observations';
27
	protected $serviceNom = 'observations';
28
	
28
	
29
	/** Stockage des paramétres */
29
	/** Stockage des paramétres */
Line 74... Line 74...
74
				$resultat = $this->getBdd()->recupererTous($requete);
74
				$resultat = $this->getBdd()->recupererTous($requete);
75
				$res_version = $this->testerResultat($resultat);
75
				$res_version = $this->testerResultat($resultat);
76
			}
76
			}
77
			if ($this->corps_http == '' && $this->entete_http == '') {
77
			if ($this->corps_http == '' && $this->entete_http == '') {
78
				if (isset($res_version)) {
78
				if (isset($res_version)) {
79
					$resultat_formate = json_encode($res_version);
79
					$resultat_formate = $res_version;
80
				}
80
				}
81
			}
81
			}
82
		} 
82
		} 
83
		$this->formerReponseHTTP($resultat_formate); 
83
		return $resultat_formate; 
84
	}
84
	}
Line 85... Line 85...
85
	
85
	
86
	public function testerResultat($resultat) {
86
	public function testerResultat($resultat) {
87
		if ($resultat == '') { //cas ou la requete comporte des erreurs
87
		if ($resultat == '') { //cas ou la requete comporte des erreurs
Line 376... Line 376...
376
			}
376
			}
377
			$this->table_retour = array();
377
			$this->table_retour = array();
378
		}
378
		}
379
		//on remplit la table $table_retour_json['entete']	
379
		//on remplit la table $table_retour_json['entete']	
380
		//formuler les urls precedentes et suivantes affichées dans l'entete du resultat
380
		//formuler les urls precedentes et suivantes affichées dans l'entete du resultat
381
		$url = $this->formulerUrl($id, $num, '/observations');
381
		$url = $this->formulerUrlObs($id, $num, '/observations');
382
		if ($url['precedent'] != '') { $this->table_entete['href.precedent'] = $url['precedent']; }
382
		if ($url['precedent'] != '') { $this->table_entete['href.precedent'] = $url['precedent']; }
383
		if ($url['suivant']   != '') { $this->table_entete['href.suivant']   = $url['suivant']; }
383
		if ($url['suivant']   != '') { $this->table_entete['href.suivant']   = $url['suivant']; }
384
		$this->table_entete['total']  = $num;
384
		$this->table_entete['total']  = $num;
385
		$table_retour_json['entete'] = $this->table_entete;
385
		$table_retour_json['entete'] = $this->table_entete;
386
		$table_retour_json['resultat'] = $resultat_json; 
386
		$table_retour_json['resultat'] = $resultat_json; 
Line 605... Line 605...
605
	 * Description : 
605
	 * Description : 
606
	 * Est appelée pour former l'url complete des resultats precedants ou suivants.
606
	 * Est appelée pour former l'url complete des resultats precedants ou suivants.
607
	 * @param int : Permet de connaitre le nombre de noms obtenus par la requete
607
	 * @param int : Permet de connaitre le nombre de noms obtenus par la requete
608
	 * @return string Retourne l'url complete des resultats precedents ou suivant sous la forme d'un tableau
608
	 * @return string Retourne l'url complete des resultats precedents ou suivant sous la forme d'un tableau
609
	 */
609
	 */
610
	public function formulerUrl($suivant, $total, $id = null) {
610
	public function formulerUrlObs($suivant, $total, $id = null) {
611
		$debut_url = Config::get('url_service').$id.'?';
611
		$debut_url = Config::get('url_service').$id.'?';
612
		//on recrée l'url sans les parametres de navigation qui seront rajouter ci-apres. On les enlève dc de la table des parametres
612
		//on recrée l'url sans les parametres de navigation qui seront rajouter ci-apres. On les enlève dc de la table des parametres
613
		$table_bis = $this->table_param;
613
		$table_bis = $this->table_param;
614
		if (isset($table_bis['navigation_depart'] )) {
614
		if (isset($table_bis['navigation_depart'] )) {
615
			unset($table_bis['navigation_depart']);
615
			unset($table_bis['navigation_depart']);
Line 617... Line 617...
617
		if (isset($table_bis['navigation_limite'])) {
617
		if (isset($table_bis['navigation_limite'])) {
618
			unset($table_bis['navigation_limite']);
618
			unset($table_bis['navigation_limite']);
619
		}
619
		}
620
		$parametre_url = http_build_query($table_bis);
620
		$parametre_url = http_build_query($table_bis);
621
		//on recupere les limites
621
		//on recupere les limites
622
		$url['suivant']   = $this->recupererLesLimitesSuivantes($suivant, $total);
622
		$url['suivant']   = $this->recupererLesLimitesSuivantesObs($suivant, $total);
623
		$url['precedent'] = $this->recupererLesLimitesPrecedentes($suivant);
623
		$url['precedent'] = $this->recupererLesLimitesPrecedentesObs($suivant);
624
		//on reconstitue les deux urls avec leurs limites
624
		//on reconstitue les deux urls avec leurs limites
625
		foreach ($url as $key => $limite) {
625
		foreach ($url as $key => $limite) {
626
			if ($limite != '') {
626
			if ($limite != '') {
627
				if ($parametre_url == '') {
627
				if ($parametre_url == '') {
628
					//si il n'y a aucun parametres, seules les limites sont à ajouter.On enleve dc le signe & du début
628
					//si il n'y a aucun parametres, seules les limites sont à ajouter.On enleve dc le signe & du début
Line 644... Line 644...
644
	 * Cette url sera afficher dans l'entete de la reponse retournée en format JSON (retour.format=defaut).
644
	 * Cette url sera afficher dans l'entete de la reponse retournée en format JSON (retour.format=defaut).
645
	 * @param int : $nb_resultat : Permet de connaitre le nombre de résultats obtenus par la requete
645
	 * @param int : $nb_resultat : Permet de connaitre le nombre de résultats obtenus par la requete
646
	 * @return string : la fin de l'url decrivant les limites des resultats suivants. Si aucun résultats ne suient, 
646
	 * @return string : la fin de l'url decrivant les limites des resultats suivants. Si aucun résultats ne suient, 
647
	 * une chaine de caractère vide est retournée
647
	 * une chaine de caractère vide est retournée
648
	 */
648
	 */
649
	public function recupererLesLimitesSuivantes($suivant, $total) {
649
	public function recupererLesLimitesSuivantesObs($suivant, $total) {
650
		if ($this->limite_requete['limite'] <= $total) {
650
		if ($this->limite_requete['limite'] <= $total) {
651
			$url_suivante = '&navigation.depart='.$suivant.'&navigation.limite='.$this->limite_requete['limite'];
651
			$url_suivante = '&navigation.depart='.$suivant.'&navigation.limite='.$this->limite_requete['limite'];
652
		} else {
652
		} else {
653
			$url_suivante = '';
653
			$url_suivante = '';
654
		}
654
		}
Line 660... Line 660...
660
	 * Permet de former les limites de la requete retournant les résultats precedents.
660
	 * Permet de former les limites de la requete retournant les résultats precedents.
661
	 * Cette url sera afficher dans l'entete de la taxons/105reponse retournée en format JSON (retour.format=defaut)
661
	 * Cette url sera afficher dans l'entete de la taxons/105reponse retournée en format JSON (retour.format=defaut)
662
	 * @return string : la fin de l'url decrivant les limites des resultats precedents. 
662
	 * @return string : la fin de l'url decrivant les limites des resultats precedents. 
663
	 * Si aucun résultats ne precedent, une chaine de caractère vide est retournée
663
	 * Si aucun résultats ne precedent, une chaine de caractère vide est retournée
664
	 */
664
	 */
665
	public function recupererLesLimitesPrecedentes($suivant) {
665
	public function recupererLesLimitesPrecedentesObs($suivant) {
666
		$url_precedente = '';
666
		$url_precedente = '';
667
		if (isset($this->table_param['navigation_depart'])) { // si on utilise un parametre de départ
667
		if (isset($this->table_param['navigation_depart'])) { // si on utilise un parametre de départ
668
			// si l'adresse d'appel de la page est inférieur au départ
668
			// si l'adresse d'appel de la page est inférieur au départ
669
			$regex = '/http:\/\/.*\/service:eflore:0.1\/chorodep\/observations\?.*navigation.depart=(.*\:[0-9]*).*/';
669
			$regex = '/http:\/\/.*\/service:eflore:0.1\/chorodep\/observations\?.*navigation.depart=(.*\:[0-9]*).*/';
670
			if (isset($_SERVER['HTTP_REFERER']) && preg_match($regex, $_SERVER['HTTP_REFERER'], $match)) {
670
			if (isset($_SERVER['HTTP_REFERER']) && preg_match($regex, $_SERVER['HTTP_REFERER'], $match)) {