Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2281 → Rev 2282

/trunk/jrest/services/CelWidgetMapPoint.php
14,6 → 14,11
* Carte = Type de carte. Valeurs possible : defaut,
* Utilisateur = identifiant (= courriel) de l'utilisateur ou * pour tous les utilisateurs.
* Projet = mot-clé du projet
* Plusieurs mots-clés peuvent être spécifiés:
* machin ET bidule ET chose => observations ayant tous les mots-clés (intersection)
* machin OU bildule OU chose => observations ayant au moins un des mots-clés (union)
* ATTENTION
* machin ET bidule OU chose donne un résultat indéterminé pour l'instant
*
* @author Jean-Pascal MILCENT <jpm@clapas.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
1005,7 → 1010,6
 
private function construireWhereProjet() {
$sql = '';
// Récupération des coordonnées depuis l'id station
extract($this->parametres);
$projet_sql = isset($projet) ? $this->getSqlWhereProjet($projet) : null;
if (!$this->etreNull($projet_sql)) {
1016,11 → 1020,38
 
/**
* Traitement de $projet pour construction du filtre dans la requête
*
* projet1 ET projet2 ET projet3 => intersection
* projet1 OU projet2 OU projet3 => union
* projet1 ET projet2 OU projet3 => ATTENTION indéfini
*/
private function getSqlWhereProjet($projet) {
$sql = null;
if (isset($projet) && !$this->etreNull($projet)) {
$sql = 'co.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$projet.'%');
if (isset($projet) && !$this->etreNull($projet)) {
if (strpos($projet, ' ET ')) {
// intersection
$projets = explode(' ET ', $projet);
$clauses = array();
foreach ($projets as $proj) {
if ($proj != '') {
$clauses[] = 'co.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$proj.'%');
}
}
$sql = implode($clauses, ' AND ');
} else if (strpos($projet, ' OU ')) {
// union
$projets = explode(' OU ', $projet);
$clauses = array();
foreach ($projets as $proj) {
if ($proj != '') {
$clauses[] = 'co.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$proj.'%');
}
}
$sql = implode($clauses, ' OR ');
} else {
// simple
$sql = 'co.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$projet.'%');
}
}
return $sql;
}