New file |
0,0 → 1,81 |
<?php |
/** |
* @author Raphaël Droz <raphael@tela-botanica.org> |
* @copyright Copyright (c) 2013, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images |
*/ |
|
require_once(dirname(__FILE__) . '/../observations/ListeObservations2.php'); |
require_once(dirname(__FILE__) . '/../observations/Observation.php'); |
restore_error_handler(); |
restore_exception_handler(); |
error_reporting(E_ALL); |
|
class ListeImages2 { |
|
static $format_image_possible = array('O','CRX2S','CRS','CXS','CS','XS','S','M','L','XL','X2L','X3L'); |
// TODO: INDEX static $tri_possible = array('date_observation','votes','tags'); |
static $tri_possible = array('date_observation'); |
|
static $default_params = array('format' => 'XL'); |
|
public function __construct(Conteneur $conteneur = null) { |
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur; |
$this->conteneur->chargerConfiguration('config_images.ini'); |
$this->gestionBdd = $conteneur->getGestionBdd(); |
$this->bdd = $this->gestionBdd->getBdd(); |
} |
|
public function consulter($ressources, $parametres) { |
$req = array('select' => array(), 'join' => array(), 'where' => array(), 'groupby' => array(), 'having' => array()); |
// toujours nécessaire puisque nous tapons sur v_del_image qui INNER JOIN cel_images, or nous voulons certes |
// toutes les images, mais nous voulons $limite observations uniques. |
$req['groupby'][] = 'dob.id_observation'; |
|
$db = $this->bdd; |
|
// filtrage de l'INPUT général |
$params = ListeObservations2::requestFilterParams($parametres, ListeObservations2::$parametres_autorises, $this->conteneur); |
// notre propre filtrage sur l'INPUT |
|
$params = array_merge($params, self::requestFilterParams($parametres, array('format'))); |
|
$this->conteneur->setParametre('url_images', sprintf($this->conteneur->getParametre('url_images'), |
"%09d", $params['format'])); |
|
// création des contraintes (masques) |
ListeObservations2::sqlAddConstraint($params, $db, $req, $this->conteneur); |
|
// 1) grunt-work: *la* requête de récupération des id valides (+ SQL_CALC_FOUND_ROWS) |
$idobs_tab = ListeObservations2::getIdObs($params, $req, $db); |
// idobs est une liste (toujours ordonnée) des id d'observations recherchées |
$idobs = array_values(array_map(create_function('$a', 'return $a["id_observation"];'), $idobs_tab)); |
|
if($idobs) { |
$total = $db->recuperer('SELECT FOUND_ROWS() AS c'); $total = intval($total['c']); |
// XXX |
} |
|
$images = array(); |
$o = new Observation($this->conteneur); |
foreach($idobs as $i) { |
$images[$i] = $o->consulter(array($i), array('justthrow' => 1)); |
} |
|
|
$resultat = new ResultatService(); |
$resultat->corps = array('entete' => ListeObservations2::makeJSONHeader($total, $params, Config::get('url_service')), |
'resultats' => $images); |
return $resultat; |
|
} |
|
static function requestFilterParams(Array $params) { |
$p['format'] = ListeObservations2::unsetIfInvalid($params, 'format', self::$format_image_possible); |
$p = array_filter($p, create_function('$a','return !in_array($a, array("",false,null),true);')); |
$p = array_merge(self::$default_params, $p); |
return $p; |
} |
} |