| 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 |
}
|