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; |
|