Subversion Repositories eFlore/Applications.cel

Rev

Rev 1805 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1805 Rev 1833
Line 85... Line 85...
85
		$nom_saisi = trim($nom_saisi);
85
		$nom_saisi = trim($nom_saisi);
86
		// Essai de recherche sur le nom saisi tel quel
86
		// Essai de recherche sur le nom saisi tel quel
87
		$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi, true);
87
		$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi, true);
88
		if(empty($liste_genre_espece)) {
88
		if(empty($liste_genre_espece)) {
89
			// Essai de recherche stricte en tentant de supprimer le nom d'auteur
89
			// Essai de recherche stricte en tentant de supprimer le nom d'auteur
90
			$nom_saisi_sans_auteur = $this->supprimerAuteur($nom_saisi);
90
			$nom_saisi_sans_auteur = self::supprimerAuteur($nom_saisi);
91
			if($nom_saisi_sans_auteur) { // ne pas faire la requête sur un mot vide
91
			if($nom_saisi_sans_auteur) { // ne pas faire la requête sur un mot vide
92
				$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi_sans_auteur, true);
92
				$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi_sans_auteur, true);
93
			}
93
			}
94
			if(empty($liste_genre_espece)) {
94
			if(empty($liste_genre_espece)) {
95
				// Dernière tentative : essai de recherche étendue
95
				// Dernière tentative : essai de recherche étendue
Line 108... Line 108...
108
		if(!$res) return NULL;
108
		if(!$res) return NULL;
109
		$resultat = (array)$res->resultat;
109
		$resultat = (array)$res->resultat;
110
		return array_pop($resultat);
110
		return array_pop($resultat);
111
	}
111
	}
Line 112... Line 112...
112
	
112
	
113
	private function supprimerAuteur($nom_saisi) {
-
 
114
		// Attention le parseur de nom n'est pas fiable à 100%
-
 
115
		// mais ça marche dans la plupart des cas	
-
 
116
		// à part les formules d'hybridité saisies avec un auteur
113
	static function supprimerAuteur($nom_saisi) {
117
		// TODO: gérer les hybrides
-
 
118
		$nameparser = new NameParser();
114
		// TODO: gérer les hybrides
119
		if($this->estUnHybride($nom_saisi) || $this->estUneFormuleHybridite($nom_saisi)) {
115
		if(self::estUnHybride($nom_saisi) || self::estUneFormuleHybridite($nom_saisi)) {
120
			$nom_decoupe = explode(' ', $nom_saisi);
116
			$nom_decoupe = explode(' ', $nom_saisi);
121
			$derniere_position_hybride = end(array_keys($nom_decoupe, 'x'));
117
			$derniere_position_hybride = end(array_keys($nom_decoupe, 'x'));
122
			$nom_saisi_sans_auteur = implode(' ',array_slice($nom_decoupe, 0, $derniere_position_hybride + 2));
118
			$nom_saisi_sans_auteur = implode(' ',array_slice($nom_decoupe, 0, $derniere_position_hybride + 2));
-
 
119
		} else {
-
 
120
			/* Attention le parseur de nom n'est pas fiable à 100%
-
 
121
			   mais ça marche dans la plupart des cas	
-
 
122
			   à part les formules d'hybridité saisies avec un auteur */
123
		} else {
123
			$nameparser = new NameParser();
124
			$auteur = $nameparser->parse_auth($nom_saisi);
124
			$auteur = $nameparser->parse_auth($nom_saisi);
125
			$nom_saisi_sans_auteur = str_replace($auteur, '', $nom_saisi);
125
			$nom_saisi_sans_auteur = str_replace($auteur, '', $nom_saisi);
Line 126... Line -...
126
		}
-
 
127
 
126
		}
128
		$nom_saisi_sans_auteur = trim($nom_saisi_sans_auteur);
127
 
Line 129... Line 128...
129
		return $nom_saisi_sans_auteur;
128
		return trim($nom_saisi_sans_auteur);
130
	}
129
	}
131
	
130
	
Line 132... Line 131...
132
	private function estUneFormuleHybridite($nom_saisi) {
131
	static function estUneFormuleHybridite($nom_saisi) {
133
		return strpos($nom_saisi,' x ') !== false;
132
		return strpos($nom_saisi,' x ') !== false;
134
	}
133
	}
Line 135... Line 134...
135
	
134
	
136
	private function estUnHybride($nom_saisi) {
135
	static function estUnHybride($nom_saisi) {