| 7 | 
           jpm | 
           1 | 
           <?php
  | 
        
        
            | 
            | 
           2 | 
           // declare(encoding='UTF-8');
  | 
        
        
            | 
            | 
           3 | 
           /**
  | 
        
        
            | 
            | 
           4 | 
            * classe Controleur du module Recherche.
  | 
        
        
            | 
            | 
           5 | 
            *
  | 
        
        
            | 
            | 
           6 | 
            * @package		Collection
  | 
        
        
            | 
            | 
           7 | 
            * @category	Php5
  | 
        
        
            | 
            | 
           8 | 
            * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
  | 
        
        
            | 
            | 
           9 | 
            * @copyright	2010 Tela-Botanica
  | 
        
        
            | 
            | 
           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
  | 
        
        
           | 20 | 
           jpm | 
           12 | 
            * @version		SVN: $Id: Recherche.php 195 2014-01-22 13:29:20Z aurelien $
  | 
        
        
           | 7 | 
           jpm | 
           13 | 
            */
  | 
        
        
           | 114 | 
           jpm | 
           14 | 
           class Recherche extends aControleur {
  | 
        
        
           | 7 | 
           jpm | 
           15 | 
              | 
        
        
           | 180 | 
           mathias | 
           16 | 
           	//private $chaine_recherche = null;
  | 
        
        
            | 
            | 
           17 | 
           	private $masque = null;
  | 
        
        
           | 54 | 
           jpm | 
           18 | 
           	private static $url_exemple = null;
  | 
        
        
            | 
            | 
           19 | 
              | 
        
        
           | 8 | 
           jpm | 
           20 | 
           	//+----------------------------------------------------------------------------------------------------------------+
  | 
        
        
           | 9 | 
           jpm | 
           21 | 
           	// Méthodes
  | 
        
        
           | 7 | 
           jpm | 
           22 | 
           	/**
  | 
        
        
            | 
            | 
           23 | 
           	 * Fonction d'affichage par défaut, elle appelle la liste des administrateurs
  | 
        
        
            | 
            | 
           24 | 
           	 */
  | 
        
        
            | 
            | 
           25 | 
           	public function executerActionParDefaut() {
  | 
        
        
           | 8 | 
           jpm | 
           26 | 
           		return $this->rechercher();
  | 
        
        
           | 7 | 
           jpm | 
           27 | 
           	}
  | 
        
        
            | 
            | 
           28 | 
              | 
        
        
            | 
            | 
           29 | 
           	/**
  | 
        
        
            | 
            | 
           30 | 
           	 * Charge le moteur de recherche et l'envoie à la vue.
  | 
        
        
            | 
            | 
           31 | 
           	 */
  | 
        
        
            | 
            | 
           32 | 
           	public function chargerMoteurRecherche() {
  | 
        
        
            | 
            | 
           33 | 
           		$donnees = array();
  | 
        
        
           | 180 | 
           mathias | 
           34 | 
              | 
        
        
           | 8 | 
           jpm | 
           35 | 
           		// Gestion des données de la requête
  | 
        
        
           | 180 | 
           mathias | 
           36 | 
           		//$donnees['recherche'] = htmlspecialchars($this->obtenirChaineRecherche());
  | 
        
        
            | 
            | 
           37 | 
           		// masque multi-critères
  | 
        
        
            | 
            | 
           38 | 
           		$donnees['masque'] = $this->obtenirMasqueRecherche();
  | 
        
        
           | 54 | 
           jpm | 
           39 | 
              | 
        
        
           | 21 | 
           jpm | 
           40 | 
           		// Gestion des urls
  | 
        
        
           | 112 | 
           jpm | 
           41 | 
           		$donnees['url_form'] = $this->obtenirUrlRecherche();
  | 
        
        
           | 7 | 
           jpm | 
           42 | 
           		$donnees['url_module'] = 'Recherche';
  | 
        
        
            | 
            | 
           43 | 
           		$donnees['url_action'] = 'rechercher';
  | 
        
        
           | 169 | 
           jpm | 
           44 | 
           		$donnees['url_contexte'] = $this->registre->get('contexte');
  | 
        
        
           | 112 | 
           jpm | 
           45 | 
           		self::$url_exemple = $this->obtenirUrlRecherche('%s');
  | 
        
        
           | 195 | 
           aurelien | 
           46 | 
              | 
        
        
            | 
            | 
           47 | 
           		// remplissage de case de tableaux vides pour éviter des warnings
  | 
        
        
            | 
            | 
           48 | 
           		$donnees['masque'] = $this->initialiserMasquesVides($donnees['masque']);
  | 
        
        
            | 
            | 
           49 | 
           		//echo '<pre>'.print_r($donnees['masque'],true).'</pre>';exit;
  | 
        
        
           | 7 | 
           jpm | 
           50 | 
              | 
        
        
           | 8 | 
           jpm | 
           51 | 
           		// Gestion du squelette et de la sortie
  | 
        
        
            | 
            | 
           52 | 
           		$this->setSortie(self::RENDU_TETE, $this->getVue('moteur', $donnees));
  | 
        
        
           | 7 | 
           jpm | 
           53 | 
           	}
  | 
        
        
           | 180 | 
           mathias | 
           54 | 
              | 
        
        
            | 
            | 
           55 | 
           	private function obtenirMasqueRecherche() {
  | 
        
        
            | 
            | 
           56 | 
           		$masque = array();
  | 
        
        
            | 
            | 
           57 | 
           		if (!is_null($this->masque)) {
  | 
        
        
            | 
            | 
           58 | 
           			$masque = $this->masque;
  | 
        
        
            | 
            | 
           59 | 
           		} else if (isset($_GET['masque'])) {
  | 
        
        
            | 
            | 
           60 | 
           			$masque = $_GET['masque'];
  | 
        
        
            | 
            | 
           61 | 
           			$_SESSION['col']['masque'] = $masque;
  | 
        
        
            | 
            | 
           62 | 
           		} else if (isset($_SESSION['col']['masque'])) {
  | 
        
        
            | 
            | 
           63 | 
           			$masque = $_SESSION['col']['masque'];
  | 
        
        
            | 
            | 
           64 | 
           		}
  | 
        
        
            | 
            | 
           65 | 
           		$this->masque = $masque;
  | 
        
        
            | 
            | 
           66 | 
           		return $masque;
  | 
        
        
            | 
            | 
           67 | 
           	}
  | 
        
        
            | 
            | 
           68 | 
              | 
        
        
            | 
            | 
           69 | 
           	/*private function obtenirChaineRecherche() {
  | 
        
        
           | 15 | 
           jpm | 
           70 | 
           		$chaine = '';
  | 
        
        
           | 54 | 
           jpm | 
           71 | 
           		if (!is_null($this->chaine_recherche)) {
  | 
        
        
            | 
            | 
           72 | 
           			$chaine = $this->chaine_recherche;
  | 
        
        
            | 
            | 
           73 | 
           		} else if (isset($_GET['recherche'])) {
  | 
        
        
            | 
            | 
           74 | 
           			// Pré-traitement de la chaine de recherche
  | 
        
        
           | 15 | 
           jpm | 
           75 | 
           			$chaine = $_GET['recherche'];
  | 
        
        
           | 54 | 
           jpm | 
           76 | 
           			// Suppression des slash ajouté automatiquement par PHP devant les guillemets
  | 
        
        
            | 
            | 
           77 | 
           			$chaine = stripslashes($chaine);
  | 
        
        
            | 
            | 
           78 | 
           			// Mémorisation de la chaine
  | 
        
        
            | 
            | 
           79 | 
           			$this->memoriserChaineRecherche($chaine);
  | 
        
        
            | 
            | 
           80 | 
           			// Stockage dans la classe pour éviter d'effectuer à nouveau le traitement ci-dessus
  | 
        
        
            | 
            | 
           81 | 
           			$this->chaine_recherche = $chaine;
  | 
        
        
           | 15 | 
           jpm | 
           82 | 
           		} else if (isset($_SESSION['col']['recherche'])) {
  | 
        
        
            | 
            | 
           83 | 
           			$chaine = $_SESSION['col']['recherche'];
  | 
        
        
            | 
            | 
           84 | 
           		}
  | 
        
        
            | 
            | 
           85 | 
           		return $chaine;
  | 
        
        
           | 180 | 
           mathias | 
           86 | 
           	}*/
  | 
        
        
            | 
            | 
           87 | 
              | 
        
        
            | 
            | 
           88 | 
           	/*private function memoriserChaineRecherche($chaine) {
  | 
        
        
           | 15 | 
           jpm | 
           89 | 
           		$_SESSION['col']['recherche'] = $chaine;
  | 
        
        
           | 180 | 
           mathias | 
           90 | 
           	}*/
  | 
        
        
           | 54 | 
           jpm | 
           91 | 
              | 
        
        
            | 
            | 
           92 | 
           	public static function getUrlExemple($chaine) {
  | 
        
        
            | 
            | 
           93 | 
           		$url = '';
  | 
        
        
            | 
            | 
           94 | 
           		if (!is_null(self::$url_exemple)) {
  | 
        
        
            | 
            | 
           95 | 
           			// L'utilisation d'urlencode nécessiate de pré-encodé la chaine dans le format de sortie si nécessaire
  | 
        
        
            | 
            | 
           96 | 
           			if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
  | 
        
        
            | 
            | 
           97 | 
           				$chaine = mb_convert_encoding($chaine, Config::get('sortie_encodage'), Config::get('appli_encodage'));
  | 
        
        
            | 
            | 
           98 | 
           			}
  | 
        
        
            | 
            | 
           99 | 
           			$chaine = urlencode($chaine);
  | 
        
        
            | 
            | 
           100 | 
           			$url = sprintf(self::$url_exemple, $chaine);
  | 
        
        
            | 
            | 
           101 | 
           		}
  | 
        
        
            | 
            | 
           102 | 
           		return $url;
  | 
        
        
            | 
            | 
           103 | 
           	}
  | 
        
        
           | 180 | 
           mathias | 
           104 | 
              | 
        
        
            | 
            | 
           105 | 
           	// recherche des collections ou des personnes, dépendemment de la cible
  | 
        
        
           | 7 | 
           jpm | 
           106 | 
           	public function rechercher() {
  | 
        
        
           | 180 | 
           mathias | 
           107 | 
           		// un seul pour les collections ou les personnes, on ne cherche pas 2 choses à la fois !
  | 
        
        
            | 
            | 
           108 | 
           		$masque = $this->obtenirMasqueRecherche();
  | 
        
        
            | 
            | 
           109 | 
              | 
        
        
           | 7 | 
           jpm | 
           110 | 
           		$donnees = array();
  | 
        
        
           | 181 | 
           mathias | 
           111 | 
           		$donnees['masque'] = $masque;
  | 
        
        
           | 147 | 
           jpm | 
           112 | 
           		$rechercheDao =  new RechercheDao();
  | 
        
        
           | 20 | 
           jpm | 
           113 | 
           		$parametres = array('mots' => '*');
  | 
        
        
           | 7 | 
           jpm | 
           114 | 
              | 
        
        
            | 
            | 
           115 | 
           		// Récupération des paramêtres de l'url
  | 
        
        
           | 180 | 
           mathias | 
           116 | 
           		/*$chaine_de_recherche = $this->obtenirChaineRecherche();
  | 
        
        
            | 
            | 
           117 | 
           		echo "CH RECH: $chaine_de_recherche<br/>";
  | 
        
        
           | 54 | 
           jpm | 
           118 | 
           		if (!empty($chaine_de_recherche)) {
  | 
        
        
           | 23 | 
           jpm | 
           119 | 
           			$this->url->setVariableRequete('recherche', $chaine_de_recherche);
  | 
        
        
           | 7 | 
           jpm | 
           120 | 
           		}
  | 
        
        
           | 180 | 
           mathias | 
           121 | 
           		$parametres = $this->parserChaineDeRecherche($chaine_de_recherche);*/
  | 
        
        
            | 
            | 
           122 | 
              | 
        
        
            | 
            | 
           123 | 
           		// Récupération des paramètres depuis le masque
  | 
        
        
            | 
            | 
           124 | 
           		$parametres = $masque;
  | 
        
        
            | 
            | 
           125 | 
              | 
        
        
            | 
            | 
           126 | 
           		$this->remplacerAbreviationParId($parametres);
  | 
        
        
            | 
            | 
           127 | 
           		//echo "PARAM 2: <pre>" . print_r($parametres, true) . "</pre><br/>";
  | 
        
        
           | 20 | 
           jpm | 
           128 | 
              | 
        
        
           | 7 | 
           jpm | 
           129 | 
           		// Gestion du nombre de résultats
  | 
        
        
           | 180 | 
           mathias | 
           130 | 
           		switch ($masque['cible']) {
  | 
        
        
            | 
            | 
           131 | 
           			case 'collections':
  | 
        
        
            | 
            | 
           132 | 
           				$donnees_total = $rechercheDao->chercherCollectionsNbre($parametres);
  | 
        
        
            | 
            | 
           133 | 
           				break;
  | 
        
        
            | 
            | 
           134 | 
           			case 'personnes':
  | 
        
        
            | 
            | 
           135 | 
           				$donnees_total = $rechercheDao->chercherPersonnesNbre($parametres);
  | 
        
        
            | 
            | 
           136 | 
           				break;
  | 
        
        
            | 
            | 
           137 | 
           			default:
  | 
        
        
            | 
            | 
           138 | 
           				// @TODO qu'est-ce qui se passe ?
  | 
        
        
            | 
            | 
           139 | 
           		}
  | 
        
        
            | 
            | 
           140 | 
              | 
        
        
           | 7 | 
           jpm | 
           141 | 
           		// Gestion du fragmenteur
  | 
        
        
            | 
            | 
           142 | 
           		$options = array(
  | 
        
        
            | 
            | 
           143 | 
           			'url' => $this->url,
  | 
        
        
           | 43 | 
           jpm | 
           144 | 
           			'donnees_total' => $donnees_total,
  | 
        
        
            | 
            | 
           145 | 
           			'donnees_par_page' => Config::get('resultat_par_page_defaut'),
  | 
        
        
            | 
            | 
           146 | 
           			'donnees_par_page_choix' => Config::get('resultat_par_page_choix'),
  | 
        
        
            | 
            | 
           147 | 
           		);
  | 
        
        
           | 7 | 
           jpm | 
           148 | 
           		$fragmenteur = Composant::fabrique('fragmenteur', $options);
  | 
        
        
            | 
            | 
           149 | 
           		$donnees['fragmenteur'] = $fragmenteur->executer();
  | 
        
        
            | 
            | 
           150 | 
           		list($de, $a) = $fragmenteur->getDeplacementParPageId();
  | 
        
        
           | 111 | 
           jpm | 
           151 | 
           		$this->url->unsetVariablesRequete(array('recherche', 'page'));
  | 
        
        
           | 7 | 
           jpm | 
           152 | 
              | 
        
        
            | 
            | 
           153 | 
           		// Gestion de l'accès aux données
  | 
        
        
            | 
            | 
           154 | 
           		$rechercheDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage());
  | 
        
        
           | 20 | 
           jpm | 
           155 | 
           		$rechercheDao->setDistinction(1);
  | 
        
        
           | 21 | 
           jpm | 
           156 | 
              | 
        
        
           | 180 | 
           mathias | 
           157 | 
           		// Récupération des résultats
  | 
        
        
            | 
            | 
           158 | 
           		switch ($masque['cible']) {
  | 
        
        
            | 
            | 
           159 | 
           			case 'collections':
  | 
        
        
            | 
            | 
           160 | 
           				$resultats = $rechercheDao->chercherCollections($parametres);
  | 
        
        
            | 
            | 
           161 | 
           				break;
  | 
        
        
            | 
            | 
           162 | 
           			case 'personnes':
  | 
        
        
            | 
            | 
           163 | 
           				$resultats = $rechercheDao->chercherPersonnes($parametres);
  | 
        
        
            | 
            | 
           164 | 
           				break;
  | 
        
        
            | 
            | 
           165 | 
           			default:
  | 
        
        
            | 
            | 
           166 | 
           		}
  | 
        
        
            | 
            | 
           167 | 
              | 
        
        
            | 
            | 
           168 | 
           		// Affichage de la liste de résultats
  | 
        
        
            | 
            | 
           169 | 
           		switch ($masque['cible']) {
  | 
        
        
            | 
            | 
           170 | 
           			case 'collections':
  | 
        
        
            | 
            | 
           171 | 
           				foreach ($resultats as $resultat) {
  | 
        
        
            | 
            | 
           172 | 
           					// Ajout des données concernant la structure si ce n'est pas déjà fait
  | 
        
        
            | 
            | 
           173 | 
           					$structure_id = $resultat['cs_id_structure'];
  | 
        
        
            | 
            | 
           174 | 
           					if (!isset($donnees['infos'][$structure_id])) {
  | 
        
        
            | 
            | 
           175 | 
           						$structure = array(
  | 
        
        
            | 
            | 
           176 | 
           							'nom' => $resultat['cs_nom'],
  | 
        
        
            | 
            | 
           177 | 
           							'ville' => $resultat['cs_ville'],
  | 
        
        
            | 
            | 
           178 | 
           							'url' => $this->obtenirUrlFicheStructure($resultat['cs_id_structure'])
  | 
        
        
            | 
            | 
           179 | 
           						);
  | 
        
        
            | 
            | 
           180 | 
           						$donnees['infos'][$structure_id]['structure'] = $structure;
  | 
        
        
            | 
            | 
           181 | 
           					}
  | 
        
        
            | 
            | 
           182 | 
              | 
        
        
            | 
            | 
           183 | 
           					// Si la structure possède des collections
  | 
        
        
            | 
            | 
           184 | 
           					if (!empty($resultat['cc_id_collection'])) {
  | 
        
        
            | 
            | 
           185 | 
           						$collection = array(
  | 
        
        
            | 
            | 
           186 | 
           							'nom' => $resultat['cc_nom'],
  | 
        
        
            | 
            | 
           187 | 
           							'url' => $this->obtenirUrlFicheCollection($resultat['cc_id_collection'])
  | 
        
        
            | 
            | 
           188 | 
           						);
  | 
        
        
            | 
            | 
           189 | 
           						$donnees['infos'][$structure_id]['collections'][] = $collection;
  | 
        
        
            | 
            | 
           190 | 
           					}
  | 
        
        
            | 
            | 
           191 | 
           				}
  | 
        
        
            | 
            | 
           192 | 
           			break;
  | 
        
        
            | 
            | 
           193 | 
              | 
        
        
            | 
            | 
           194 | 
           			case 'personnes':
  | 
        
        
            | 
            | 
           195 | 
           				foreach ($resultats as $resultat) {
  | 
        
        
            | 
            | 
           196 | 
           					//echo "<pre>".print_r($resultat,true)."</pre>";
  | 
        
        
            | 
            | 
           197 | 
           					if (!empty($resultat['cp_id_personne'])) {
  | 
        
        
            | 
            | 
           198 | 
           						$personne = array(
  | 
        
        
            | 
            | 
           199 | 
           							'nomcomplet' => $resultat['cp_fmt_nom_complet'],
  | 
        
        
            | 
            | 
           200 | 
           							'nom' => $resultat['cp_nom'],
  | 
        
        
            | 
            | 
           201 | 
           							'prenom' => $resultat['cp_prenom'],
  | 
        
        
            | 
            | 
           202 | 
           							'url' => $this->obtenirUrlFichePersonne($resultat['cp_id_personne'])
  | 
        
        
            | 
            | 
           203 | 
           						);
  | 
        
        
            | 
            | 
           204 | 
           						$donnees['infos']['personnes'][] = $personne;
  | 
        
        
            | 
            | 
           205 | 
           					}
  | 
        
        
            | 
            | 
           206 | 
           				}
  | 
        
        
            | 
            | 
           207 | 
           			break;
  | 
        
        
            | 
            | 
           208 | 
              | 
        
        
            | 
            | 
           209 | 
           			default:
  | 
        
        
            | 
            | 
           210 | 
           		}
  | 
        
        
            | 
            | 
           211 | 
              | 
        
        
           | 7 | 
           jpm | 
           212 | 
           		// Post-traitement des résultats pour l'affichage
  | 
        
        
           | 110 | 
           jpm | 
           213 | 
           		$this->postraiterDonnees($donnees['infos']);
  | 
        
        
           | 7 | 
           jpm | 
           214 | 
              | 
        
        
            | 
            | 
           215 | 
           		// Gestion des squelettes
  | 
        
        
           | 8 | 
           jpm | 
           216 | 
           		$this->chargerMoteurRecherche();
  | 
        
        
            | 
            | 
           217 | 
           		$resultat = $this->getVue('resultat', $donnees);
  | 
        
        
            | 
            | 
           218 | 
           		$this->setSortie(self::RENDU_CORPS, $resultat);
  | 
        
        
            | 
            | 
           219 | 
           		$this->chargerPiedDePage();
  | 
        
        
           | 7 | 
           jpm | 
           220 | 
           	}
  | 
        
        
           | 8 | 
           jpm | 
           221 | 
              | 
        
        
           | 195 | 
           aurelien | 
           222 | 
           	private function initialiserMasquesVides($masque) {
  | 
        
        
            | 
            | 
           223 | 
           		$masques_possibles = array('lieu-stockage',
  | 
        
        
            | 
            | 
           224 | 
           		'veg','zg','bot','p','pr','nom-famille','date-vivant','date-deces','adresse');
  | 
        
        
            | 
            | 
           225 | 
           		foreach($masques_possibles as $masque_possible) {
  | 
        
        
            | 
            | 
           226 | 
           			if(!isset($masque[$masque_possible])) {
  | 
        
        
            | 
            | 
           227 | 
           				$masque[$masque_possible] = '';
  | 
        
        
            | 
            | 
           228 | 
           			}
  | 
        
        
            | 
            | 
           229 | 
           		}
  | 
        
        
            | 
            | 
           230 | 
           		return $masque;
  | 
        
        
            | 
            | 
           231 | 
           	}
  | 
        
        
            | 
            | 
           232 | 
              | 
        
        
           | 180 | 
           mathias | 
           233 | 
           	/*private function parserChaineDeRecherche($chaine) {
  | 
        
        
           | 20 | 
           jpm | 
           234 | 
           		$mots = preg_split('/ /i', $chaine, -1, PREG_SPLIT_NO_EMPTY);
  | 
        
        
            | 
            | 
           235 | 
           		$parametres = array('mots' => '');
  | 
        
        
            | 
            | 
           236 | 
           		$cle_precedente = null;
  | 
        
        
            | 
            | 
           237 | 
           		foreach ($mots as $mot) {
  | 
        
        
           | 84 | 
           jpm | 
           238 | 
           			if (preg_match('/^(sci|veg|bot|zg|p|pr|str-d):(.*)$/', $mot, $match)) {
  | 
        
        
           | 20 | 
           jpm | 
           239 | 
           				$cle = $match[1];
  | 
        
        
            | 
            | 
           240 | 
           				$cle_precedente = $cle;
  | 
        
        
            | 
            | 
           241 | 
           				$valeur = $match[2];
  | 
        
        
            | 
            | 
           242 | 
           				$parametres[$cle] = $valeur;
  | 
        
        
            | 
            | 
           243 | 
           			} else if (!is_null($cle_precedente)) {
  | 
        
        
            | 
            | 
           244 | 
           				$parametres[$cle_precedente] .= ' '.$mot;
  | 
        
        
            | 
            | 
           245 | 
           			} else if (is_null($cle_precedente)) {
  | 
        
        
            | 
            | 
           246 | 
           				if (empty($parametres['mots'])) {
  | 
        
        
            | 
            | 
           247 | 
           					$parametres['mots'] = $mot;
  | 
        
        
            | 
            | 
           248 | 
           				} else {
  | 
        
        
            | 
            | 
           249 | 
           					$parametres['mots'] .= ' '.$mot;
  | 
        
        
            | 
            | 
           250 | 
           				}
  | 
        
        
            | 
            | 
           251 | 
           			}
  | 
        
        
            | 
            | 
           252 | 
           		}
  | 
        
        
            | 
            | 
           253 | 
           		$this->remplacerAbreviationParId($parametres);
  | 
        
        
           | 21 | 
           jpm | 
           254 | 
              | 
        
        
           | 20 | 
           jpm | 
           255 | 
           		return $parametres;
  | 
        
        
           | 180 | 
           mathias | 
           256 | 
           	}*/
  | 
        
        
            | 
            | 
           257 | 
              | 
        
        
           | 20 | 
           jpm | 
           258 | 
           	private function remplacerAbreviationParId(&$parametres) {
  | 
        
        
            | 
            | 
           259 | 
           		// liste 27 : Liste des relations entre une collection et une personne (id:1030)
  | 
        
        
            | 
            | 
           260 | 
           		// liste 80 : Liste des types de collection botanique (id:1083)
  | 
        
        
           | 84 | 
           jpm | 
           261 | 
           		$params_a_remplacer = array('veg' => 1043, 'bot' => 1083, 'pr' => 1030);
  | 
        
        
           | 20 | 
           jpm | 
           262 | 
           		foreach ($params_a_remplacer as $param => $id_liste) {
  | 
        
        
            | 
            | 
           263 | 
           			if (isset($parametres[$param])) {
  | 
        
        
           | 84 | 
           jpm | 
           264 | 
           				// Si plusieurs valeurs séparées par des virgules
  | 
        
        
            | 
            | 
           265 | 
           				$valeurs = explode(',', $parametres[$param]);
  | 
        
        
            | 
            | 
           266 | 
           				$valeurs_nbre = count($valeurs);
  | 
        
        
            | 
            | 
           267 | 
           				$liste = Ontologie::getListeTrieeParAbreviation($id_liste);
  | 
        
        
            | 
            | 
           268 | 
           				foreach ($valeurs as $valeur) {
  | 
        
        
            | 
            | 
           269 | 
           					$cle = strtoupper($valeur);
  | 
        
        
            | 
            | 
           270 | 
           					if (isset($liste[$cle])) {
  | 
        
        
            | 
            | 
           271 | 
           						if ($valeurs_nbre == 1) {
  | 
        
        
            | 
            | 
           272 | 
           							$parametres[$param] = $liste[$cle]['id'];
  | 
        
        
            | 
            | 
           273 | 
           						} else if ($valeurs_nbre > 1) {
  | 
        
        
            | 
            | 
           274 | 
           							$valeur = preg_quote($valeur, '/');
  | 
        
        
            | 
            | 
           275 | 
           							$parametres[$param] = preg_replace("/$valeur/", $liste[$cle]['id'], $parametres[$param]);
  | 
        
        
            | 
            | 
           276 | 
           						}
  | 
        
        
            | 
            | 
           277 | 
           					}
  | 
        
        
           | 20 | 
           jpm | 
           278 | 
           				}
  | 
        
        
            | 
            | 
           279 | 
           			}
  | 
        
        
            | 
            | 
           280 | 
           		}
  | 
        
        
            | 
            | 
           281 | 
           	}
  | 
        
        
           | 7 | 
           jpm | 
           282 | 
           }
  |