Subversion Repositories eFlore/Applications.coel-consultation

Rev

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

Rev 54 Rev 84
Line 7... Line 7...
7
 * @category	Php5
7
 * @category	Php5
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @copyright	2010 Tela-Botanica
9
 * @copyright	2010 Tela-Botanica
10
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
10
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
11
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @version		SVN: $Id: Recherche.php 54 2010-04-29 16:25:44Z jpm $
12
 * @version		SVN: $Id: Recherche.php 84 2010-06-07 16:52:43Z jpm $
13
 */
13
 */
14
class Recherche extends ColControleur {
14
class Recherche extends ColControleur {
Line 15... Line 15...
15
	
15
	
16
	private $chaine_recherche = null;
16
	private $chaine_recherche = null;
Line 155... Line 155...
155
	private function parserChaineDeRecherche($chaine) {		
155
	private function parserChaineDeRecherche($chaine) {		
156
		$mots = preg_split('/ /i', $chaine, -1, PREG_SPLIT_NO_EMPTY);
156
		$mots = preg_split('/ /i', $chaine, -1, PREG_SPLIT_NO_EMPTY);
157
		$parametres = array('mots' => '');
157
		$parametres = array('mots' => '');
158
		$cle_precedente = null;
158
		$cle_precedente = null;
159
		foreach ($mots as $mot) {
159
		foreach ($mots as $mot) {
160
			if (preg_match('/^(sci|bot|zg|p|pr|str-d):(.*)$/', $mot, $match)) {
160
			if (preg_match('/^(sci|veg|bot|zg|p|pr|str-d):(.*)$/', $mot, $match)) {
161
				$cle = $match[1];
161
				$cle = $match[1];
162
				$cle_precedente = $cle;
162
				$cle_precedente = $cle;
163
				$valeur = $match[2];
163
				$valeur = $match[2];
164
				$parametres[$cle] = $valeur;
164
				$parametres[$cle] = $valeur;
165
			} else if (!is_null($cle_precedente)) {
165
			} else if (!is_null($cle_precedente)) {
Line 178... Line 178...
178
	}
178
	}
Line 179... Line 179...
179
	
179
	
180
	private function remplacerAbreviationParId(&$parametres) {
180
	private function remplacerAbreviationParId(&$parametres) {
181
		// liste 27 : Liste des relations entre une collection et une personne (id:1030)
181
		// liste 27 : Liste des relations entre une collection et une personne (id:1030)
182
		// liste 80 : Liste des types de collection botanique (id:1083)
182
		// liste 80 : Liste des types de collection botanique (id:1083)
183
		$params_a_remplacer = array('bot' => 1083, 'pr' => 1030);
183
		$params_a_remplacer = array('veg' => 1043, 'bot' => 1083, 'pr' => 1030);
184
		foreach ($params_a_remplacer as $param => $id_liste) {
184
		foreach ($params_a_remplacer as $param => $id_liste) {
-
 
185
			if (isset($parametres[$param])) {
-
 
186
				// Si plusieurs valeurs séparées par des virgules
-
 
187
				$valeurs = explode(',', $parametres[$param]);
185
			if (isset($parametres[$param])) {
188
				$valeurs_nbre = count($valeurs);
-
 
189
				$liste = Ontologie::getListeTrieeParAbreviation($id_liste); 
186
				$liste = Ontologie::getListeTrieeParAbreviation($id_liste);
190
				foreach ($valeurs as $valeur) {
187
				$cle = strtoupper($parametres[$param]);
191
					$cle = strtoupper($valeur);
-
 
192
					if (isset($liste[$cle])) {
188
				if (isset($liste[$cle])) {
193
						if ($valeurs_nbre == 1) {
-
 
194
							$parametres[$param] = $liste[$cle]['id'];
-
 
195
						} else if ($valeurs_nbre > 1) {
-
 
196
							$valeur = preg_quote($valeur, '/');
-
 
197
							$parametres[$param] = preg_replace("/$valeur/", $liste[$cle]['id'], $parametres[$param]);								
-
 
198
						}
189
					$parametres[$param] = $liste[$cle]['id'];
199
					}
190
				}
200
				}
191
			}
201
			}
192
		}
202
		}