Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2461 → Rev 2462

/trunk/jrest/bibliotheque/RechercheImage.php
1,24 → 1,20
<?php
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
// declare(encoding='UTF-8');
/**
* PHP Version 5
*
* @category PHP
* @package jrest
* @author Aurélien Peronnet <aurelien@tela-botania.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @version SVN: <svn_id>
* @link /doc/jrest/
*/
 
/**
* in : utf8
* out : utf8
*
* Librairie recherche d'images a partir de divers critères
*
*/
* Classe de recherche d'images à partir de divers critères.
*
* @internal Mininum PHP version : 5.2
* @category CEL
* @package Services
* @subpackage Bibliothèques
* @version 0.1
* @author Mathias CHOUET <mathias@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Aurelien PERONNET <aurelien@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
*/
class RechercheImage extends Cel {
 
function rechercherImagesEtObservationAssociees($id_utilisateur = null, $criteres = array(), $debut = 0, $limite = 50) {
85,7 → 81,6
if ($resultat_requete_nombre_images && is_array($resultat_requete_nombre_images) && count($resultat_requete_nombre_images) > 0) {
$nb_images = $resultat_requete_nombre_images[0]['nb_images'];
}
 
return $nb_images;
}
 
126,12 → 121,12
 
private function fabriquerSousRequeteRecherche($id_utilisateur, $criteres) {
$sous_requete = ' AND ';
foreach($criteres as $nom => $valeur) {
if($valeur == null || trim($nom) == "" || trim($valeur) == "") {
foreach ($criteres as $nom => $valeur) {
if ($valeur == null || trim($nom) == "" || trim($valeur) == "") {
continue;
}
 
switch($nom) {
switch ($nom) {
case "id_image";
$sous_requete .= 'ci.id_image = '.Cel::db()->proteger($valeur) ;
$sous_requete .= ' AND ';
219,10 → 214,8
if (trim($chaine_recherche) == '') {
return '';
}
 
$chaine_recherche = strtolower($chaine_recherche);
$chaine_recherche = str_replace(' ','_',$chaine_recherche);
 
$requete = ' ('.
'ci.nom_original LIKE '.Cel::db()->proteger($chaine_recherche.'%').' OR '.
'co.nom_ret LIKE '.Cel::db()->proteger($chaine_recherche.'%').' OR '.
236,7 → 229,6
'ci.nom_utilisateur LIKE '.Cel::db()->proteger($chaine_recherche.'%').' OR '.
'ci.prenom_utilisateur LIKE '.Cel::db()->proteger($chaine_recherche.'%').' '.
') ';
 
return $requete;
}
 
254,18 → 246,18
}
 
private function creerSousRequeteMotsCles($mot_cle) {
//TODO: une requête plus efficace serait possible en utilisant
// les vraies tables de mots clés et en faisant disparaitre ce champ maudit
$requete = '';
//TODO: une requête plus efficace serait possible en utilisant
// les vraies tables de mots clés et en faisant disparaitre ce champ maudit
$requete = '';
if (preg_match('/.*OU.*/', $mot_cle)) {
$mots_cles_tab = explode('OU',$mot_cle);
foreach($mots_cles_tab as $mot_cle_item) {
foreach ($mots_cles_tab as $mot_cle_item) {
$requete .= '(ci.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') OR ';
}
$requete = '('.rtrim($requete,'OR ').')';
} else if (preg_match('/.*ET.*/', $mot_cle)) {
$mots_cles_tab = explode('ET',$mot_cle);
foreach($mots_cles_tab as $mot_cle_item) {
foreach ($mots_cles_tab as $mot_cle_item) {
$requete .= '(ci.mots_cles_texte LIKE '.Cel::db()->proteger('%'.$mot_cle_item.'%').') AND ';
}
$requete = '('.rtrim($requete, 'AND ').') ';
286,13 → 278,15
$mots_cles_chaine = rtrim($mots_cles_chaine,',');
$image['mots_cles'] = $mots_cles_chaine;
}
 
return $tableau_images;
}
 
public function obtenirCourrielUtilisateurPourIdImage($id_image) {
$requete = 'SELECT courriel_utilisateur FROM cel_images WHERE id_image = '.Cel::db()->proteger($id_image);
 
$idImageP = Cel::db()->proteger($id_image);
$requete = 'SELECT courriel_utilisateur '.
'FROM cel_images '.
"WHERE id_image = $idImageP ".
' -- '.__FILE__.':'.__LINE__;
$utilisateur_courriel = Cel::db()->requeter($requete);
 
$retour = false;
305,18 → 299,8
private function getIdsMotsClesImage($id_image) {
$requete = 'SELECT DISTINCT id_mot_cle '.
'FROM cel_mots_cles_images_liaison '.
"WHERE id_element_lie = $id_image ";
 
"WHERE id_element_lie = $id_image ".
' -- '.__FILE__.':'.__LINE__;
return Cel::db()->requeter($requete);
}
 
// TODO: fonction temporaire
private function formaterDateSqlVersDateAvecSlash($date_sql) {
$date_formatee = '';
$date = explode('-', $date_sql) ;
if (count($date) > 2) {
$date_formatee = $date[2].'/'.$date[1].'/'.$date[0] ;
}
return $date_formatee;
}
}