Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 905 → Rev 906

/trunk/jrest/lib/RechercheObservation.php
1,27 → 1,35
<?php
/*
* Created on 24 août 2011
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
/**
* 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/
*/
/**
* librairie recherche d'observations a partir de divers critères
* Encodage en entrée : utf8
* Encodage en sortie : utf8
*
* @author Aurélien 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>
* @version $Id$
* in : utf8
* out : utf8
*
* Librairie recherche d'observations a partir de divers critères
*
*/
class RechercheObservation extends Cel {
public function rechercherObservations($id_utilisateur, $criteres, $numero_page = 0, $taille_page = 50) {
public function rechercherObservations($id_utilisateur = null, $criteres = array(), $numero_page = 0, $taille_page = 50) {
$requete_selection_observations = "SELECT * FROM cel_obs WHERE ce_utilisateur ='".$id_utilisateur."'";
$requete_selection_observations = 'SELECT * FROM cel_obs ';
if($id_utilisateur != null) {
$requete_selection_observations .= 'WHERE ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ';
} else if(count($criteres) > 0) {
$requete_selection_observations .= 'WHERE ';
}
$sous_requete_recherche = $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres);
$requete_selection_observations .= $sous_requete_recherche;
35,10 → 43,16
return $resultats_observations;
}
public function compterObservations($id_utilisateur, $criteres) {
public function compterObservations($id_utilisateur = null, $criteres = array()) {
$requete_selection_observations = "SELECT COUNT(*) as nb_obs FROM cel_obs WHERE ce_utilisateur ='".$id_utilisateur."'";
$requete_selection_observations = 'SELECT COUNT(*) as nb_obs FROM cel_obs ';
if($id_utilisateur != null) {
$requete_selection_observations .= 'WHERE ce_utilisateur = '.$this->proteger($id_utilisateur).' AND ';
} else if(count($criteres) > 0) {
$requete_selection_observations .= 'WHERE ';
}
$sous_requete_recherche = $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres);
$requete_selection_observations .= $sous_requete_recherche;
67,8 → 81,6
private function fabriquerSousRequeteRecherche($id_utilisateur, $criteres) {
$sous_requete = ' AND ';
foreach ($criteres as $nom_valeur)
{
if (count($nom_valeur) == 0)
96,16 → 108,9
// TODO: adapter la structure aux nouveaux mots clés
case 'mots_cles':
$liste_mc = explode(";",$nom_valeur[1]);
$sous_requete .= '(' ;
foreach($liste_mc as $mot) {
 
if(trim($mot) != '')
{
$sous_requete .= "mots_cles LIKE '%".$this->proteger($mot)."%' OR " ;
}
}
$sous_requete = rtrim($sous_requete,' OR ');
$liste_mc = str_replace(";",',',$nom_valeur[1]);
$sous_requete .= '(' ;
'id_observation IN (SELECT id_observation FROM cel_obs_mots_cles WHERE id_mot_cle_utilisateur IN ('.$liste_mc.')';
$sous_requete .= ') AND ' ;
break;