Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1448 → Rev 1514

/trunk/services/modules/0.1/images/ListeImages.old.php/ListeImages.php
94,7 → 94,6
// pas la même requête, pour optimiser les jointures et les
// rapidités d'éxécution.
$type = $this->getTypeRequete($ressources, $parametres);
switch ($type) {
case 'obs' :
$liaisons = $this->chargerLiaisonsObs();
172,6 → 171,12
case 'tag' :
$where[] = ' '.$this->creerFiltreMotsCles($valeurMasque);
break;
case 'tag_cel' :
$where[] = ' '.$this->creerFiltreMotsClesCel($valeurMasque);
break;
case 'tag_pictoflora' :
$where[] = ' '.$this->creerFiltreMotsClesPictoflora($valeurMasque);
break;
case 'referentiel' :
$where[] = ' dob.nom_referentiel LIKE '.$this->proteger($valeurMasque.'%');
break;
359,6 → 364,55
return $masque;
}
/**
* Générer la chaine de recherche dans les mots clés en fonction du masque
* @param $valeurMasque le mot clé recherché
* */
private function creerFiltreMotsClesPictoflora($valeurMasque) {
$mots_cles = explode(' ', $valeurMasque);
$requeteMotsClesImg = array();
$requeteMotsClesObs = array();
$requeteMotsClesImgPublic = array();
foreach($mots_cles as $mot_cle) {
//TODO: rechercher sur les mots clés normalisés dans tous les cas ?
$requeteMotsCles = $this->proteger('%'.$mot_cle.'%');
$motsCleProtege = $this->proteger($this->normaliserMotCle('%'.$mot_cle.'%'));
$requeteMotsClesImgPublic[] = 'di.id_image IN (SELECT ce_image FROM del_image_tag WHERE tag_normalise LIKE '.$motsCleProtege.' AND actif = 1)';
}
$requeteMotsClesImgPublic = implode(' AND ', $requeteMotsClesImgPublic);
$masque = '('.$requeteMotsClesImgPublic.') ';
return $masque;
}
private function creerFiltreMotsClesCel($valeurMasque) {
$mots_cles = explode(' ', $valeurMasque);
$requeteMotsClesImg = array();
$requeteMotsClesObs = array();
foreach($mots_cles as $mot_cle) {
//TODO: rechercher sur les mots clés normalisés dans tous les cas ?
$requeteMotsCles = $this->proteger('%'.$mot_cle.'%');
$motsCleProtege = $this->proteger($this->normaliserMotCle('%'.$mot_cle.'%'));
$requeteMotsClesImg[] = 'di.mots_cles_texte LIKE '.$requeteMotsCles;
$requeteMotsClesObs[] = 'dob.mots_cles_texte LIKE '.$requeteMotsCles;
}
$requeteMotsClesImg = implode(' AND ', $requeteMotsClesImg);
$requeteMotsClesObs = implode(' AND ', $requeteMotsClesObs);
$masque = '('.
'('.$requeteMotsClesImg.') OR '.
'('.$requeteMotsClesObs.') '.
')';
return $masque;
}
// ??
private function assemblercomptageOccurencesMotsClesCel() {
$chaineMotsClesAffiches = $this->conteneur->getParametre('mots_cles_cel_affiches');
510,6 → 564,11
$dept = $masques['masque.departement'];
$conditionsObs[] = $this->creerFiltreIdZoneGeo($dept);
}
if (isset($masques['masque.tag_cel'])) {
$motsCles = $masques['masque.tag_cel'];
$conditionsObs[] = $this->creerFiltreMotsClesCel($motsCles);
}
 
return $conditionsObs;
}
520,10 → 579,9
private function getConditionsImages() {
$conditionsImg = array();
$masques = $this->masque->getMasque();
if (isset($masques['masque.tag'])) {
$tag = $masques['masque.tag'];
$conditionsImg[] = " dit.tag_normalise LIKE '$tag%' ";
$conditionsImg[] = " di.mots_cles_texte LIKE '%$tag%' ";
if (isset($masques['masque.tag_pictoflora'])) {
$tag = $masques['masque.tag_pictoflora'];
$conditionsImg[] = $this->creerFiltreMotsClesPictoflora($tag);
}
return $conditionsImg;
725,7 → 783,7
' LEFT JOIN del_utilisateur du ON du.id_utilisateur = di.ce_utilisateur ';
 
$conditionsImg = $this->getConditionsImages();
 
if (!empty($conditionsImg)) {
$where = ' WHERE ('.implode(' OR ', $conditionsImg).') ';
$where .= ' AND dit.actif = 1 ';
788,9 → 846,9
' INNER JOIN del_image di ON doi.id_image = di.id_image '.
' INNER JOIN del_observation dob ON dob.id_observation = doi.id_observation ';
 
if (isset($this->parametres['masque.tag'])) {
if (isset($this->parametres['masque.tag_pictoflora'])) {
// Et si on a cherché par tag ?
$tag = $this->parametres['masque.tag'];
$tag = $this->parametres['masque.tag_pictoflora'];
$requetetags .= " WHERE (dit.tag_normalise LIKE '$tag%' OR di.mots_cles_texte LIKE '%$tag%') ";
}
807,7 → 865,7
// Et si on a cherché par tag ?
if (isset($this->parametres['masque.tag'])) {
if (isset($this->parametres['masque.tag_pictoflora'])) {
$chaineTri .= ' AND ';
} else {
$chaineTri .= ' WHERE ';
1159,8 → 1217,8
unset($parametres['ordre']);
// En revanche, chaque masque est associé à un type de requête particulier.
$masquesObservation = array('masque', 'masque.departement', 'masque.ns', 'masque.genre', 'masque.date', 'masque.commune', 'masque.famille', 'masque.auteur', 'masque.nn', 'masque.referentiel');
$masquesImage = array('masque', 'masque.tag');
$masquesObservation = array('masque', 'masque.departement', 'masque.ns', 'masque.genre', 'masque.date', 'masque.commune', 'masque.famille', 'masque.auteur', 'masque.nn', 'masque.referentiel', 'masque.tag_cel');
$masquesImage = array('masque', 'masque.tag_pictoflora');
// Le type de requête est défini par les tables qu'il doit inclure (observation, image, ou les deux)
$requeteSimple = false;