Subversion Repositories eFlore/Applications.del

Compare Revisions

Regard whitespace Rev 1583 → Rev 1584

/trunk/services/modules/0.1/images/ListeImages.php
339,12 → 339,12
if($p['ordre'] == 'desc') {
// pas de group by nécessaire pour cette jointure
// PRIMARY KEY (`ce_image`, `ce_protocole`)
$req['join'][] = sprintf('INNER JOIN del_image_stat dis'.
$req['join']['dis'] = sprintf('INNER JOIN del_image_stat dis'.
' ON vdi.id_image = dis.ce_image'.
' AND dis.ce_protocole = %d',
$p['protocole']);
} else {
$req['join'][] = sprintf('LEFT JOIN del_image_stat dis'.
$req['join']['dis'] = sprintf('LEFT JOIN del_image_stat dis'.
' ON vdi.id_image = dis.ce_image'.
' AND dis.ce_protocole = %d',
$p['protocole']);
537,6 → 537,9
// tri est aussi nécessaire car affecte les contraintes de JOIN
'tri' => $p['tri'],
'ordre' => $p['ordre']);
if (array_key_exists('protocole', $p)) {
$or_params['protocole'] = $p['protocole'];
}
 
/* Cependant les champs spécifiques ont priorité sur le masque général.
Pour cette raison nous supprimons la génération de SQL du masque général sur les
555,7 → 558,8
 
$or_masque = array_merge(
DelTk::requestFilterParams($or_params, NULL, $c /* pour masque.departement */),
self::requestFilterParams($or_params));
self::requestFilterParams($or_params)
);
 
/* Lorsqu'on utilise le masque général pour chercher des tags, ils sont
postulés comme séparés par des espaces, et doivent être tous matchés. */
568,6 → 572,7
// pas de select, groupby & co ici: uniquement 'join' et 'where'
$or_req = array('join' => array(), 'where' => array());
DelTk::sqlAddConstraint($or_masque, $db, $or_req);
self::sqlAddConstraint($or_masque, $db, $or_req);
 
if($or_req['where']) {
631,11 → 636,12
 
if($p['tri'] == 'votes' || $p['tri'] == 'tags' || $p['tri'] == 'points') {
// ces critère de tri des image à privilégier ne s'applique qu'à un protocole donné
if(!isset($params['protocole']) || !is_numeric($params['protocole']))
if(!isset($params['protocole']) || !is_numeric($params['protocole'])) {
$p['protocole'] = self::$default_proto;
else
} else {
$p['protocole'] = intval($params['protocole']);
}
}
 
return array_filter($p, create_function('$a','return !in_array($a, array("",false,null),true);'));
}
/trunk/services/modules/0.1/observations/Observation.php
225,20 → 225,30
$proto_fields = DelTk::sqlFieldsToAlias(self::$mappings['protocoles'], $select['protocole'], 'p');
$where = array();
$idsImages = array_values(array_map(create_function('$a', 'return $a["id_image"];'), $images));
$where[] = sprintf('v.ce_image IN (%s)',
implode(',', array_values(array_map(create_function('$a', 'return $a["id_image"];'), $images))));
implode(',', $idsImages));
 
if ($protocole) {
$where[] = "v.ce_protocole = $protocole";
}
 
return $db->recupererTous(sprintf(
// pour une fois, on conserve l'ordre en ne luttant pas contre les IDs reçus
$ordreDesIdsRecus = sprintf('FIELD(v.ce_image, %s)', implode(',', $idsImages));
$req = sprintf(
'SELECT %s, %s FROM del_image_vote AS v'.
' INNER JOIN del_image_protocole p ON v.ce_protocole = p.id_protocole'.
' WHERE %s -- %s',
$vote_fields, $proto_fields,
$where ? implode(' AND ', $where) : 1,
__FILE__ . ':' . __LINE__));
' WHERE %s'.
' ORDER BY %s -- %s',
$vote_fields,
$proto_fields,
($where ? implode(' AND ', $where) : 1),
$ordreDesIdsRecus,
__FILE__ . ':' . __LINE__);
//echo "REQUETE: $req"; exit;
 
return $db->recupererTous($req);
}
/**