Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1333 Rev 1334
Line 645... Line 645...
645
	private function getSqlWhereObsAvecImagesTaguees($tag) {
645
	private function getSqlWhereObsAvecImagesTaguees($tag) {
646
		$sql = null;
646
		$sql = null;
647
		if (isset($tag) && !$this->etreNull($tag)) {
647
		if (isset($tag) && !$this->etreNull($tag)) {
648
			$tag_sql = $this->getSqlWhereMotsCles($tag);
648
			$tag_sql = $this->getSqlWhereMotsCles($tag);
649
			// Construction de la requête
649
			// Construction de la requête
650
			$requete = 	'SELECT DISTINCT coi.id_observation AS id_obs,  coi.ce_utilisateur AS utilisateur '.
650
			$requete = 	'SELECT DISTINCT coi.id_observation AS id_obs,  ci.ce_utilisateur AS utilisateur '.
651
						'FROM cel_images '.
651
						'FROM cel_images ci'.
652
						'	LEFT JOIN cel_obs_images coi'.
652
						'	LEFT JOIN cel_obs_images coi'.
653
						'		ON (ci_id_image = coi_ce_image) '.
653
						'		ON (ci.id_image = coi.id_image) '.
654
						'	LEFT JOIN cel_obs AS i '.
654
						'	LEFT JOIN cel_obs AS co '.
655
						'		ON (coi_ce_utilisateur = i.identifiant AND coi_ce_observation = i.ordre) '.
655
						'		ON (coi.id_observation = co.id_observation) '.
656
						'	LEFT JOIN locations AS l '.
656
						'	LEFT JOIN cel_zones_geo AS l '.
657
						"		ON (l.name = i.location AND l.code = i.id_location) ".
657
						"		ON (l.nom = co.zone_geo AND l.id_zone_geo = co.ce_zone_geo) ".
658
						"WHERE  transmission = '1' ".
658
						"WHERE transmission = '1' ".
659
						$this->construireWhereCoordonnees().
659
						$this->construireWhereCoordonnees().
660
						$this->construireWhereUtilisateur().
660
						$this->construireWhereUtilisateur().
661
						$this->construireWhereNumTaxon().
661
						$this->construireWhereNumTaxon().
662
						$this->construireWhereNomTaxon().
662
						$this->construireWhereNomTaxon().
663
						$this->construireWhereProjet().
663
						$this->construireWhereProjet().
664
						(!$this->etreNull($tag_sql) ? "AND ($tag_sql) " : '').
664
						(!$this->etreNull($tag_sql) ? "AND ($tag_sql) " : '').
665
						'ORDER BY utilisateur ASC, ordre ASC';
665
						'ORDER BY utilisateur ASC, ci.ordre ASC';
666
			//$this->debug[] = $requete;
666
			//$this->debug[] = $requete;
667
			//die($requete);
667
			//die($requete);
668
			$elements_tag = $this->executerRequete($requete);
668
			$elements_tag = $this->executerRequete($requete);
Line 669... Line 669...
669
			
669
			
Line 702... Line 702...
702
	 * Traitement de $tag pour construction du filtre dans la requête
702
	 * Traitement de $tag pour construction du filtre dans la requête
703
	 */
703
	 */
704
	private function getSqlWhereMotsCles($tag) {
704
	private function getSqlWhereMotsCles($tag) {
705
		$sql = null;
705
		$sql = null;
706
		$mots_cles = $this->decomposerParametreTag($tag);
706
		$mots_cles = $this->decomposerParametreTag($tag);
707
		$requete_projet = $this->getSqlWhereMotsClesImages($tag);
707
		$requete_projet = $this->getSqlWhereMotsClesImages($mots_cles['motsClesEncodesProteges']);
708
		$sql = implode(" \nOR ", $requete_projet);
708
		$sql = $requete_projet;
709
		//$this->debug[] = $sql;
709
		//$this->debug[] = $sql;
710
		return $sql;
710
		return $sql;
711
	}
711
	}
Line 712... Line 712...
712
	
712
	
713
	/**
713
	/**
714
	 * Traitement de $tag pour construction du filtre dans la requête
714
	 * Traitement de $tag pour construction du filtre dans la requête
715
	 */
715
	 */
716
	private function getSqlWhereMotsClesImages($mots_cles_encodes) {
716
	private function getSqlWhereMotsClesImages($mots_cles_encodes) {
717
		$where_mots_cles_images = array();
717
		$where_mots_cles_images = array();
718
		foreach ($mots_cles_encodes as $mot_cle_encode) {
718
		foreach ($mots_cles_encodes as $mot_cle_encode) {
719
			$where_mots_cles_images[] = "ci.mots_cles_texte = $mot_cle_encode";
719
			$where_mots_cles_images[] = "ci.mots_cles_texte LIKE $mot_cle_encode";
720
		}
720
		}
721
		$where_mots_cles_images = implode(' OR ', $where_mots_cles_images);
721
		$where_mots_cles_images = implode(' OR ', $where_mots_cles_images);
722
		return $where_mots_cles_images;
722
		return $where_mots_cles_images;
Line 723... Line 723...
723
	}
723
	}
-
 
724
	
724
	
725
	private function decomposerParametreTag($tags) {
725
	private function decomposerParametreTag($tags) {
726
		
726
		$mots_cles = array('type' => null, 'motsCles' => null, 'motsClesEncodesProteges' => null);
727
		$mots_cles = array('type' => null, 'motsCles' => null, 'motsClesEncodesProteges' => null);
727
		if (preg_match('/.+OU.+/', $tags)) {
728
		if (preg_match('/.+OU.+/', $tags)) {
728
			$mots_cles['type'] = 'OR';
729
			$mots_cles['type'] = 'OR';
Line 733... Line 734...
733
		} else {
734
		} else {
734
			$mots_cles['motsCles'][] = $tags;
735
			$mots_cles['motsCles'][] = $tags;
735
		}
736
		}
Line 736... Line 737...
736
		
737
		
737
		foreach ($mots_cles['motsCles'] as $mot) {
738
		foreach ($mots_cles['motsCles'] as $mot) {
738
			$mots_cles['motsClesEncodesProteges'][] = $this->bdd->quote($mot);
739
			$mots_cles['motsClesEncodesProteges'][] = $this->bdd->quote('%'.$mot.'%');
-
 
740
		}
739
		}
741
		//print_r($mots_cles); exit;
740
		$this->debug[] = $mots_cles;
742
		$this->debug[] = $mots_cles;
741
		return $mots_cles;
743
		return $mots_cles;
Line 742... Line 744...
742
	}
744
	}