Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 643 Rev 657
Line 42... Line 42...
42
				switch ($param) {
42
				switch ($param) {
43
					case 'ns.structure' :
43
					case 'ns.structure' :
44
						$this->remplirTableCompositionNom($val);
44
						$this->remplirTableCompositionNom($val);
45
						if (in_array($val,$this->sans_nom_sci)){
45
						if (in_array($val,$this->sans_nom_sci)){
46
							$this->requete_champ = implode(', ',$this->compo_nom);
46
							$this->requete_champ = implode(', ',$this->compo_nom);
47
						}else {						
47
						}else {
48
							$this->requete_champ .= ' ,'.implode(', ',$this->compo_nom);
48
							$this->requete_champ .= ' ,'.implode(', ',$this->compo_nom);
49
						}
49
						}
50
						break;
50
						break;
51
					case 'navigation.depart' :
51
					case 'navigation.depart' :
52
							$this->limite_requete['depart'] = $val;
52
							$this->limite_requete['depart'] = $val;
Line 73... Line 73...
73
		if (empty($this->parametres['ns.structure']) &&
73
		if (empty($this->parametres['ns.structure']) &&
74
			$this->parametres['retour.format'] != 'oss') {
74
			$this->parametres['retour.format'] != 'oss') {
75
			$this->parametres['ns.structure'] = 'au,an,bib';
75
			$this->parametres['ns.structure'] = 'au,an,bib';
76
		}
76
		}
77
	}
77
	}
78
	
78
 
79
	
79
 
80
	public function verifierParametres() {
80
	public function verifierParametres() {
81
		//$this->verifierParametresAPI();
81
		//$this->verifierParametresAPI();
Line 82... Line 82...
82
 
82
 
83
		$this->verifierParametre('recherche', 'stricte|floue|etendue|complete');
83
		$this->verifierParametre('recherche', 'stricte|floue|etendue|complete');
Line 139... Line 139...
139
			if ($this->parametres['recherche'] == 'etendue') {
139
			if ($this->parametres['recherche'] == 'etendue') {
140
				foreach ($valeur as $val) {
140
				foreach ($valeur as $val) {
141
					$val = $this->modifierValeur($val);
141
					$val = $this->modifierValeur($val);
142
					$conditions[] = "$nom_champ LIKE ".$this->getBdd()->proteger($val);
142
					$conditions[] = "$nom_champ LIKE ".$this->getBdd()->proteger($val);
143
				}
143
				}
144
				
144
 
145
			} elseif ($this->parametres['recherche'] == 'floue') {
145
			} elseif ($this->parametres['recherche'] == 'floue') {
146
				foreach ($valeur as $val) {
146
				foreach ($valeur as $val) {
147
					$val = $this->getBdd()->proteger($val);
147
					$val = $this->getBdd()->proteger($val);
148
					$conditions[] = "( SOUNDEX($nom_champ) = SOUNDEX($val))".
148
					$conditions[] = "( SOUNDEX($nom_champ) = SOUNDEX($val))".
149
											" OR ( SOUNDEX(REVERSE($nom_champ)) = SOUNDEX(REVERSE($val)))";
149
											" OR ( SOUNDEX(REVERSE($nom_champ)) = SOUNDEX(REVERSE($val)))";
Line 242... Line 242...
242
	/** Permet de remplir le tableau compo_nom. Il comprendra en fct du paramètre ns.structure les éléments à rajouter
242
	/** Permet de remplir le tableau compo_nom. Il comprendra en fct du paramètre ns.structure les éléments à rajouter
243
	 * au nom_sci (annee, auteur, biblio ou addendum). */
243
	 * au nom_sci (annee, auteur, biblio ou addendum). */
244
	public function remplirTableCompositionNom($valeur) {
244
	public function remplirTableCompositionNom($valeur) {
245
		$structure_nom = explode(',', $valeur);
245
		$structure_nom = explode(',', $valeur);
246
		foreach ($structure_nom as $structure) {
246
		foreach ($structure_nom as $structure) {
247
			//avec str_replace() 'sp' est inclu dans 'ssp', et la conversion pour 'ssp' est mauvaise
-
 
248
			$this->compo_nom[$structure] = 
247
			$structure = trim($structure);
249
				preg_replace(array('/^an$/', '/^au$/', '/^bib$/', '/^ad$/',
248
			$patterns = array('/^an$/', '/^au$/', '/^bib$/', '/^ad$/', '/^sp$/', '/^gen$/', '/^ssp$/','/^fam$/',
250
				 '/^sp$/', '/^gen$/', '/^ssp$/','/^fam$/','/^au_ss$/','/^bib_ss$/'),
249
					'/^au_ss$/','/^bib_ss$/');
251
				array('annee', 'auteur', 'biblio_origine', 'nom_addendum', 
250
			$champs = array('annee', 'auteur', 'biblio_origine', 'nom_addendum', 'epithete_sp', 'genre',
252
				'epithete_sp', 'genre', 'epithete_infra_sp','famille','auteur', 'biblio_origine'), 
251
					'epithete_infra_sp','famille','auteur', 'biblio_origine');
-
 
252
 
-
 
253
			// avec str_replace() 'sp' est inclu dans 'ssp', et la conversion pour 'ssp' est mauvaise
253
				$structure);
254
			$this->compo_nom[$structure] = preg_replace($patterns, $champs, $structure);
254
		} 
255
		}
255
	}
256
	}
Line 256... Line 257...
256
 
257
 
257
	public function mettreAuFormat() {
258
	public function mettreAuFormat() {
258
		if ($this->parametres['ns.format'] == 'htm') {
259
		if ($this->parametres['ns.format'] == 'htm') {
Line 299... Line 300...
299
				$res = $this->ajouterCompositionNom($tab);
300
				$res = $this->ajouterCompositionNom($tab);
300
				if($res) {
301
				if($res) {
301
					$oss[] = $res;
302
					$oss[] = $res;
302
				}
303
				}
303
			}
304
			}
304
			
305
 
305
		}
306
		}
306
	
307
 
307
		if (isset($this->masque)) $masque = implode('&', $this->masque);
308
		if (isset($this->masque)) $masque = implode('&', $this->masque);
308
		else $masque = 'Pas de masque';
309
		else $masque = 'Pas de masque';
309
		$table_retour_oss = array($masque, $oss);
310
		$table_retour_oss = array($masque, $oss);
310
		return $table_retour_oss;
311
		return $table_retour_oss;
311
	}
312
	}
Line 378... Line 379...
378
			foreach ($champs as $champ) {
379
			foreach ($champs as $champ) {
379
				if ($this->verifierValiditeChamp($champ)) {
380
				if ($this->verifierValiditeChamp($champ)) {
380
					if (strrpos($champ, '.*') !== false) {
381
					if (strrpos($champ, '.*') !== false) {
381
						$this->afficherPointEtoile($champ, $reponse_id);
382
						$this->afficherPointEtoile($champ, $reponse_id);
382
					} elseif (in_array($champ, $champs_a_libeller)) {
383
					} elseif (in_array($champ, $champs_a_libeller)) {
383
						$this->table_retour[$champ.'.libelle'] = 
384
						$this->table_retour[$champ.'.libelle'] =
384
							(isset($reponse_id[$champ.'.libelle'])) ? $reponse_id[$champ.'.libelle'] : null;
385
							(isset($reponse_id[$champ.'.libelle'])) ? $reponse_id[$champ.'.libelle'] : null;
385
					} else {
386
					} else {
386
						$champ = $this->trouverChampBddCorrespondant($champ);
387
						$champ = $this->trouverChampBddCorrespondant($champ);
387
						$this->table_retour[$champ] = (isset($reponse_id[$champ])) ? $reponse_id[$champ] : null;
388
						$this->table_retour[$champ] = (isset($reponse_id[$champ])) ? $reponse_id[$champ] : null;
388
					}
389
					}
Line 721... Line 722...
721
			}
722
			}
722
		}
723
		}
723
	}
724
	}
Line 724... Line 725...
724
 
725
 
725
	public function ajouterSignificationCode($champ, $valeur) {
726
	public function ajouterSignificationCode($champ, $valeur) {
726
		$categorie = $champ;	
727
		$categorie = $champ;
727
		if($this->termeOntologieEstEnCache($categorie, $valeur)) {
728
		if($this->termeOntologieEstEnCache($categorie, $valeur)) {
728
			$nom_code = $this->obtenirTermeOntologieParCache($categorie, $valeur);
729
			$nom_code = $this->obtenirTermeOntologieParCache($categorie, $valeur);
729
		} else {		
730
		} else {
730
			$champ = ($champ == 'rang') ? 'rangTaxo' : rtrim($champ, '_Co,_Ga');
731
			$champ = ($champ == 'rang') ? 'rangTaxo' : rtrim($champ, '_Co,_Ga');
731
			if (preg_match('/^([^_-]+)(?:_|-)([^_-]+)$/', $champ, $match)) {
732
			if (preg_match('/^([^_-]+)(?:_|-)([^_-]+)$/', $champ, $match)) {
732
				$champ = $match[1].ucfirst($match[2]);
733
				$champ = $match[1].ucfirst($match[2]);
733
			}
734
			}
Line 830... Line 831...
830
		if (isset($fam)) $nom_complet[] = sprintf($format['fam'], $fam);
831
		if (isset($fam)) $nom_complet[] = sprintf($format['fam'], $fam);
831
		if (isset($au_ss)) $nom_complet[] = sprintf($format['au_ss'], $au_ss);
832
		if (isset($au_ss)) $nom_complet[] = sprintf($format['au_ss'], $au_ss);
832
		if (isset($bib_ss)) {
833
		if (isset($bib_ss)) {
833
			$bibl = $this->tronquerBiblio($bib_ss);
834
			$bibl = $this->tronquerBiblio($bib_ss);
834
			//simule un 'select distinct' sur les biblio tronquées
835
			//simule un 'select distinct' sur les biblio tronquées
835
			if (!isset($this->bib_traitees[$bibl])) { 
836
			if (!isset($this->bib_traitees[$bibl])) {
836
				$nom_complet[] = sprintf($format['bib_ss'],$bibl );
837
				$nom_complet[] = sprintf($format['bib_ss'],$bibl );
837
				$this->bib_traitees[$bibl] = 1;
838
				$this->bib_traitees[$bibl] = 1;
838
			}
839
			}
839
		}
840
		}
840
		return $nom_complet;
841
		return $nom_complet;
Line 844... Line 845...
844
		$bib = '';
845
		$bib = '';
845
		if(strpos($valeur,',') !== false) {
846
		if(strpos($valeur,',') !== false) {
846
			$bib = explode(',',$valeur);
847
			$bib = explode(',',$valeur);
847
		}
848
		}
848
		if(strpos($bib[0],';') !== false) {
849
		if(strpos($bib[0],';') !== false) {
849
			
850
 
850
			$bib[0] = strstr($bib[0],';');
851
			$bib[0] = strstr($bib[0],';');
851
			$bib[0] = str_replace('; ','',$bib[0]);
852
			$bib[0] = str_replace('; ','',$bib[0]);
852
		}
853
		}
853
		return $bib[0];
854
		return $bib[0];
854
	}
855
	}
855
	
856
 
Line 856... Line 857...
856
 
857
 
857
 
858
 
858
	public function correspondAUnCode($key) {
859
	public function correspondAUnCode($key) {
Line 898... Line 899...
898
            }
899
            }
899
        }
900
        }
900
        $this->masque = $liste_masque;
901
        $this->masque = $liste_masque;
901
        return $masque;
902
        return $masque;
902
	}
903
	}
903
	
904
 
904
	private function mettreEnCacheOntologie($categorie, $valeur, $correspondance) {
905
	private function mettreEnCacheOntologie($categorie, $valeur, $correspondance) {
905
		if(!isset($this->ontologie[$categorie])) {
906
		if(!isset($this->ontologie[$categorie])) {
906
			$this->ontologie[$categorie] = array();
907
			$this->ontologie[$categorie] = array();
907
		}
908
		}
908
		if(!isset($this->ontologie[$categorie][$valeur])) {
909
		if(!isset($this->ontologie[$categorie][$valeur])) {
909
			$this->ontologie[$categorie][$valeur] = array();
910
			$this->ontologie[$categorie][$valeur] = array();
910
		}
911
		}
911
		$this->ontologie[$categorie][$valeur] = $correspondance;
912
		$this->ontologie[$categorie][$valeur] = $correspondance;
912
	}
913
	}
913
	
914
 
914
	private function termeOntologieEstEnCache($categorie, $valeur) {
915
	private function termeOntologieEstEnCache($categorie, $valeur) {
915
		return array_key_exists($categorie, $this->ontologie) && array_key_exists($valeur, $this->ontologie[$categorie]);
916
		return array_key_exists($categorie, $this->ontologie) && array_key_exists($valeur, $this->ontologie[$categorie]);
916
	}
917
	}
917
	
918
 
918
	private function obtenirTermeOntologieParCache($categorie, $valeur) {
919
	private function obtenirTermeOntologieParCache($categorie, $valeur) {
919
		return $this->ontologie[$categorie][$valeur];
920
		return $this->ontologie[$categorie][$valeur];
920
	}
921
	}
921
}
922
}
922
?>
923
?>
923
924