Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2170 Rev 2282
Line 12... Line 12...
12
 * /CelWidgetMap/Carte/Utilisateur/Projet/dept/nt : carte des observations publiques d'un utilisateur pour un projet sur un département pour un taxon.
12
 * /CelWidgetMap/Carte/Utilisateur/Projet/dept/nt : carte des observations publiques d'un utilisateur pour un projet sur un département pour un taxon.
13
 *
13
 *
14
 * Carte = Type de carte. Valeurs possible : defaut,
14
 * Carte = Type de carte. Valeurs possible : defaut,
15
 * Utilisateur = identifiant (= courriel) de l'utilisateur ou * pour tous les utilisateurs.
15
 * Utilisateur = identifiant (= courriel) de l'utilisateur ou * pour tous les utilisateurs.
16
 * Projet = mot-clé du projet
16
 * Projet = mot-clé du projet
-
 
17
 * 		Plusieurs mots-clés peuvent être spécifiés:
-
 
18
 * 			machin ET bidule ET chose => observations ayant tous les mots-clés (intersection) 
-
 
19
 * 			machin OU bildule OU chose => observations ayant au moins un des mots-clés (union)
-
 
20
 * 		ATTENTION
-
 
21
 * 			machin ET bidule OU chose donne un résultat indéterminé pour l'instant
17
 *
22
 *
18
 * @author Jean-Pascal MILCENT <jpm@clapas.org>
23
 * @author Jean-Pascal MILCENT <jpm@clapas.org>
19
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
24
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
20
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
25
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
21
 * @version $Id$
26
 * @version $Id$
Line 1003... Line 1008...
1003
		return $nn_sous_taxons;
1008
		return $nn_sous_taxons;
1004
	}
1009
	}
Line 1005... Line 1010...
1005
 
1010
 
1006
	private function construireWhereProjet() {
1011
	private function construireWhereProjet() {
1007
		$sql = '';
-
 
1008
		// Récupération des coordonnées depuis l'id station
1012
		$sql = '';
1009
		extract($this->parametres);
1013
		extract($this->parametres);
1010
		$projet_sql = isset($projet) ? $this->getSqlWhereProjet($projet) : null;
1014
		$projet_sql = isset($projet) ? $this->getSqlWhereProjet($projet) : null;
1011
		if (!$this->etreNull($projet_sql)) {
1015
		if (!$this->etreNull($projet_sql)) {
1012
			$sql = " AND ($projet_sql) ";
1016
			$sql = " AND ($projet_sql) ";
1013
		}
1017
		}
1014
		return $sql;
1018
		return $sql;
Line 1015... Line 1019...
1015
	}
1019
	}
1016
 
1020
 
-
 
1021
	/**
-
 
1022
	 * Traitement de $projet pour construction du filtre dans la requête
-
 
1023
	 * 
-
 
1024
	 * projet1 ET projet2 ET projet3 => intersection
1017
	/**
1025
	 * projet1 OU projet2 OU projet3 => union
1018
	 * Traitement de $projet pour construction du filtre dans la requête
1026
	 * projet1 ET projet2 OU projet3 => ATTENTION indéfini 
1019
	 */
1027
	 */
1020
	private function getSqlWhereProjet($projet) {
1028
	private function getSqlWhereProjet($projet) {
-
 
1029
		$sql = null;
-
 
1030
		if (isset($projet) && !$this->etreNull($projet)) {			
-
 
1031
			if (strpos($projet, ' ET ')) {
-
 
1032
				// intersection
-
 
1033
				$projets = explode(' ET ', $projet);
-
 
1034
				$clauses = array();
-
 
1035
				foreach ($projets as $proj) {
-
 
1036
					if ($proj != '') {
-
 
1037
						$clauses[] = 'co.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$proj.'%');
-
 
1038
					}
-
 
1039
				}
-
 
1040
				$sql = implode($clauses, ' AND ');
-
 
1041
			} else if (strpos($projet, ' OU ')) {
-
 
1042
				// union
-
 
1043
				$projets = explode(' OU ', $projet);
-
 
1044
				$clauses = array();
-
 
1045
				foreach ($projets as $proj) {
-
 
1046
					if ($proj != '') {
-
 
1047
						$clauses[] = 'co.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$proj.'%');
-
 
1048
					}
-
 
1049
				}
-
 
1050
				$sql = implode($clauses, ' OR ');
1021
		$sql = null;
1051
			} else {
-
 
1052
				// simple
1022
		if (isset($projet) && !$this->etreNull($projet)) {
1053
				$sql = 'co.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$projet.'%');
1023
			$sql = 'co.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$projet.'%');
1054
			}
1024
		}
1055
		}
Line 1025... Line 1056...
1025
		return $sql;
1056
		return $sql;