Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1378 → Rev 1379

/trunk/services/modules/0.1/observations/Observation.php
57,6 → 57,11
// modifie $observation
$this->chargerCommentaires($observation);
}
else {
header('HTTP/1.0 404 Not Found');
// don't die (phpunit)
throw(new Exception());
}
 
// Mettre en forme le résultat et l'envoyer pour affichage
$resultat = new ResultatService();
/trunk/services/modules/0.1/observations/ListeObservations2.php
122,22 → 122,28
$idobs_tab = self::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));
$total = $db->recuperer('SELECT FOUND_ROWS() AS c'); $total = intval($total['c']);
 
// 2) récupération des données nécessaires pour ces observations (obs + images)
$obs_unfmt = self::getInfos($idobs, $db);
if($idobs) {
$total = $db->recuperer('SELECT FOUND_ROWS() AS c'); $total = intval($total['c']);
 
// 3) suppression, merge des données en tableau assez représentatif du futur JSON en output
$observations = self::reformateObservation($obs_unfmt, $this->conteneur);
// 2) récupération des données nécessaires pour ces observations (obs + images)
$obs_unfmt = self::getInfos($idobs, $db);
 
// 4) récupération des données nécessaires pour ces observations (commentaires + votes)
// modifie $observations
$this->configurer();
$this->chargerDeterminations($observations);
// 3) suppression, merge des données en tableau assez représentatif du futur JSON en output
$observations = self::reformateObservation($obs_unfmt, $this->conteneur);
 
// 5) restauration de l'ordre souhaité initialement
$observations = self::sortArrayByArray($observations, $idobs);
// 4) récupération des données nécessaires pour ces observations (commentaires + votes)
// modifie $observations
$this->configurer();
$this->chargerDeterminations($observations);
 
// 5) restauration de l'ordre souhaité initialement
$observations = self::sortArrayByArray($observations, $idobs);
} else {
$observations = array();
$total = 0;
}
 
// 6) JSON output
$resultat = new ResultatService();
 
194,7 → 200,7
' WHERE %s'. // where-clause ou TRUE
' %s'. // group-by
' %s'. // having (si commentaires)
' ORDER BY %s %s'.
' ORDER BY %s %s %s'.
' LIMIT %d, %d -- %s',
$req['join'] ? implode(' ', $req['join']) : '',
204,10 → 210,11
$req['having'] ? ('HAVING ' . implode(' AND ', $req['having'])) : '',
 
$p['tri'], strtoupper($p['ordre']),
$p['navigation.depart'],
$p['navigation.limite'],
__FILE__ . ':' . __LINE__);
// date_transmission peut-être NULL et nous voulons de la consistence
$p['tri'] == 'date_transmission' ? ', id_observation' : '',
 
$p['navigation.depart'], $p['navigation.limite'], __FILE__ . ':' . __LINE__);
 
$res = $db->recupererTous($req_s);
$err = mysql_error();
if(!$res && $err) {
284,11 → 291,13
}
 
if(!empty($p['masque.date'])) {
if(is_integer($p['masque.date']) && $p['masque.date'] < 2030)
if(is_integer($p['masque.date']) && $p['masque.date'] < 2030 && $p['masque.date'] > 1600) {
$req['where'][] = sprintf("YEAR(dob.date_observation) = %d", $p['masque.date']);
else
$req['where'][] = sprintf("DATE_FORMAT(dob.date_observation, '%Y-%m-%d') = %s",
}
else {
$req['where'][] = sprintf("DATE_FORMAT(dob.date_observation, '%%Y-%%m-%%d') = %s",
$db->proteger(strftime('%Y-%m-%d', $p['masque.date'])));
}
}
 
// TODO: avoir des champs d'entrée distinct
365,11 → 374,11
 
 
/* Lorsque l'on concatène des champs, un seul NULL prend le dessus,
Il faut donc utiliser la syntaxe IF(%s IS NULL, "", %s).
Il faut donc utiliser la syntaxe IFNULL(%s, "").
(Cette fonction effectue aussi l'implode() "final" */
static function sqlAddIfNullPourConcat($tab) {
// XXX: PHP-5.3
return implode(',',array_map(create_function('$a', 'return "IF($a IS NULL, \"\", $a)";'), $tab));
return implode(',',array_map(create_function('$a', 'return "IFNULL($a, \"\")";'), $tab));
}
 
/*
575,7 → 584,7
if(isset($params['masque.date'])) {
// une année, TODO: masque.annee
if(is_numeric($params['masque.date'])) {
$p['masque.date'] = intval($params['masque.date']);
$p['masque.date'] = $params['masque.date'];
}
elseif(strpos($params['masque.date'], '/' !== false) &&
($x = strtotime(str_replace('/','-',$params['masque.date'])))) {