Subversion Repositories eFlore/Applications.eflore-consultation

Rev

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

Rev 915 Rev 923
Line 146... Line 146...
146
		$retenus = array();
146
		$retenus = array();
147
		foreach ($this->noms as $cle => $valeurs) {
147
		foreach ($this->noms as $cle => $valeurs) {
148
			if ($valeurs['nom_retenu.libelle'] == null) {//sans correspondances
148
			if ($valeurs['nom_retenu.libelle'] == null) {//sans correspondances
149
				$sansCorres[$cle] = $valeurs['nom_sci_complet'];
149
				$sansCorres[$cle] = $valeurs['nom_sci_complet'];
150
			} elseif ($valeurs['retenu'] == 'true') { // retenus
150
			} elseif ($valeurs['retenu'] == 'true') { // retenus
151
				if (preg_match('/ x |x /',$valeurs['nom_sci'] )  ) {
151
				if (preg_match('/ x |^x /',$valeurs['nom_sci'] )  ) {
152
					//hybrides
152
					//hybrides
153
					$retenus[2][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
153
					$retenus[2][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
154
				} elseif (preg_match('/^'.strtolower($this->parametres->masqueRecherche).' |^'.strtolower($this->parametres->masqueRecherche).'$/', strtolower($valeurs['nom_sci']) ) ) {
154
				} elseif (strripos($valeurs['nom_sci_complet'], $this->parametres->masqueRecherche) === 0) {//preg_match('/^'.strtolower($this->parametres->masqueRecherche).' |^'.strtolower($this->parametres->masqueRecherche).'$/', strtolower($valeurs['nom_sci']) ) ) {
155
					//commence par
155
					//commence par
156
					$retenus[0][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
156
					$retenus[0][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
157
				} else {
157
				} else {
158
					//contient
158
					//contient
159
					$retenus[3][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
159
					$retenus[3][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
160
				}
160
				}
161
			} else {//synonymes
161
			} else {//synonymes
162
				$idNomRetenu = $valeurs['nom_retenu.id'];
162
				$idNomRetenu = $valeurs['nom_retenu.id'];
163
				if (preg_match('/'.strtolower($this->parametres->masqueRecherche).'/', strtolower($valeurs['nom_retenu.libelle'])) == 0) {
163
				if (in_array($valeurs['nom_retenu.id'], array_keys($this->noms)) == false) {
164
					//synonymes dont le nom retenu ne contient pas la requête
164
					//synonymes dont le nom retenu n'est pas un résultat de recherche
165
					$retenus[1][$idNomRetenu] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_retenu_complet'], $valeurs['rang.libelle']);
165
					$retenus[1][$idNomRetenu] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_retenu_complet'], $valeurs['rang.libelle']);
166
					$this->infosPourTpl['taxons'][$idNomRetenu] = $valeurs['num_taxonomique']; //num taxon pour images coste
166
					$this->infosPourTpl['taxons'][$idNomRetenu] = $valeurs['num_taxonomique']; //num taxon pour images coste
167
				}
167
				}
168
				$synonymes[$idNomRetenu][] = $this->retournerInfosSynonyme($cle, $valeurs);
168
				$synonymes[$idNomRetenu][] = $this->retournerInfosSynonyme($cle, $valeurs);
169
			}
169
			}
Line 187... Line 187...
187
		$infos['nomSci'] = $valeurs['nom_sci_complet'];
187
		$infos['nomSci'] = $valeurs['nom_sci_complet'];
188
		$infos['urlFiche'] = $this->urls->obtenirUrlFiche($cle, $this->parametres->typeNom, $this->parametres->masqueRecherche, $valeurs['nom_retenu.libelle']);
188
		$infos['urlFiche'] = $this->urls->obtenirUrlFiche($cle, $this->parametres->typeNom, $this->parametres->masqueRecherche, $valeurs['nom_retenu.libelle']);
189
		return $infos;
189
		return $infos;
190
	}
190
	}
191
	public function trier() {		
191
	public function trier() {		
192
		if ($this->donnerNombreResultatRetenus() <= 3) { // classement par score
192
		/*if (count($this->infosPourTpl['noms']) <= 1) { // classement par score
193
			$nomsRetenus = array();
193
			$nomsRetenus = array();
194
			foreach ($this->infosPourTpl['noms'] as $categorie) { //ote la division des retenus
194
			foreach ($this->infosPourTpl['noms'] as $categorie) { //ote la division des retenus
195
				$nomsRetenus += $categorie;
195
				$nomsRetenus += $categorie;
196
			}
196
			}
197
			$this->ajouterAuxNomsScoreSimilariteAvec($this->parametres->masqueRecherche);
197
			$this->ajouterAuxNomsScoreSimilariteAvec($this->parametres->masqueRecherche);
Line 199... Line 199...
199
			$this->trieur->setChampsEtOrdres(array('score' => SORT_DESC));
199
			$this->trieur->setChampsEtOrdres(array('score' => SORT_DESC));
200
			$this->infosPourTpl['noms'] = $this->trieur->trier();
200
			$this->infosPourTpl['noms'] = $this->trieur->trier();
201
			$this->infosPourTpl['nomsSansCorrespondance'] =
201
			$this->infosPourTpl['nomsSansCorrespondance'] =
202
						$this->classerAlphabetiquement('nomSciRetenu', $this->infosPourTpl['nomsSansCorrespondance'] );
202
						$this->classerAlphabetiquement('nomSciRetenu', $this->infosPourTpl['nomsSansCorrespondance'] );
203
		} else { // classement alphabétique
203
		} else { // classement alphabétique
-
 
204
		*/
204
			$nomsRetenus = array();
205
			$nomsRetenus = array();
205
			foreach ($this->infosPourTpl['noms'] as $categorie => $valeurs ) { //classement alpha par groupes 
206
			foreach ($this->infosPourTpl['noms'] as $categorie => $valeurs ) { //classement alpha par groupes 
206
				$nomsRetenus += $this->classerAlphabetiquement('nomSciRetenu', $valeurs);
207
				$nomsRetenus += $this->classerAlphabetiquement('nomSciRetenu', $valeurs);
207
			}
208
			}
208
			$this->infosPourTpl['noms'] = $nomsRetenus;
209
			$this->infosPourTpl['noms'] = $nomsRetenus;
209
			$this->infosPourTpl['nomsSansCorrespondance'] = 
210
			$this->infosPourTpl['nomsSansCorrespondance'] = 
210
			$this->classerAlphabetiquement('nomSciRetenu', $this->infosPourTpl['nomsSansCorrespondance'] );
211
				$this->classerAlphabetiquement('nomSciRetenu', $this->infosPourTpl['nomsSansCorrespondance'] );
211
		}
-
 
212
	}
-
 
213
	private function donnerNombreResultatRetenus() {
-
 
214
		$nbre = 0;
-
 
215
		foreach ($this->infosPourTpl['noms'] as $lignes) {
-
 
216
			$nbre += count($lignes);
-
 
217
			if ($nbre >= 3 ) {
-
 
218
				break;
-
 
219
			}
212
		//}
220
		}
-
 
221
		return $nbre;
-
 
222
	}
213
	}
Line 223... Line 214...
223
	
214
	
224
	private function ajouterAuxNomsScoreSimilariteAvec($masque) {
215
	private function ajouterAuxNomsScoreSimilariteAvec($masque) {
225
		$nom_demande_ss = strtolower($this->manipulateurDeChaine->supprimerAccents($masque));
216
		$nom_demande_ss = strtolower($this->manipulateurDeChaine->supprimerAccents($masque));