Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Regard whitespace Rev 917 → Rev 918

/trunk/services/modules/0.1/coste/Textes.php
126,17 → 126,19
// en cas d'accès HTTP
if(array_key_exists('QUERY_STRING', $_SERVER)) {
self::requestParse($uri, $params);
}
// en cas d'accès phpunit
else {
} else {// en cas d'accès phpunit
$uri = $ressources;
}
 
// renvoie du plain/text d'aide (cf fin de programme)
if(count($uri) == 1 && $uri[0] == 'aide') return self::aide();
if (count($uri) == 1 && $uri[0] == 'aide') {
return self::aide();
}
 
 
if(is_null($parametres)) $parametres = Array();
if (is_null($parametres)) {
$parametres = Array();
}
$params = self::requestFilterParams($parametres);
// les contraintes liées aux ids (passés comme composants d'URL)
// sont ajoutées aux params [sans être accepté comme paramètre d'URL]
168,7 → 170,9
$clef_index = $params['retour.indexBy'] == 'coste' ? 'coste:nn' : 'bdtfx:nn';
$res2 = array();
foreach($res as $v) {
if(!$v[$clef_index]) throw new Exception('format error: index NULL, use retour.indexBy=coste', 409);
if (!$v[$clef_index]) {
throw new Exception('format error: index NULL, use retour.indexBy=coste', 409);
}
$res2[$v[$clef_index]] = $v;
}
 
175,7 → 179,8
// l'appelant s'occupera du json_encode()
// même si ça démange d'exit'er ici
header("Content-Type: application/json; charset=utf-8");
return array('entete' => array('depart' => $params['navigation.depart'],
return array('entete' => array(
'depart' => $params['navigation.depart'],
'limite' => $params['navigation.limite'],
'total' => count($res2),
'match' => $matches),
197,18 → 202,17
 
// joins:
$other_join = self::sqlAddJoins($params, $champs_valides_non_formattes);
$req = sprintf(<<<EOF
SELECT SQL_CALC_FOUND_ROWS %s
FROM tb_eflore.coste_v2_00 c
LEFT JOIN tela_prod_wikini.florecoste_pages dsc ON c.page_wiki_dsc = dsc.tag AND dsc.latest = 'Y'
LEFT JOIN tela_prod_wikini.florecoste_pages cle ON c.page_wiki_cle = cle.tag AND cle.latest = 'Y'
%s
WHERE %s ORDER BY c.num_nom LIMIT %u, %u -- %s
EOF
,
$requete_tpl = "SELECT SQL_CALC_FOUND_ROWS %s".
"FROM tb_eflore.coste_v2_00 c ".
" LEFT JOIN tela_prod_wikini.florecoste_pages dsc ON c.page_wiki_dsc = dsc.tag AND dsc.latest = 'Y' ".
" LEFT JOIN tela_prod_wikini.florecoste_pages cle ON c.page_wiki_cle = cle.tag AND cle.latest = 'Y' ".
" %s ".
"WHERE %s ORDER BY c.num_nom LIMIT %u, %u -- %s ";
$req = sprintf($requete_tpl,
$champs_valides, // dans le SELECT (parmi champs coste_v2_00)
// autre join, si nécessaire
$other_join ? $other_join : '',
 
// where
$constraints ? implode(' AND ', $constraints) : '1',
 
220,9 → 224,6
return $req;
}
 
 
 
 
// SQL helpers
// le préfix de coste_v2_00 est "c"
// le préfix de florecoste_pages sur la description est est "dsc"
230,15 → 231,16
static function sqlAddConstraint($params, $db) {
$stack = array();
if(!empty($params['masque.ns'])) {
if($params['recherche'] == 'etendue')
if ($params['recherche'] == 'etendue') {
$stack[] = 'c.nom_sci LIKE ' . $db->proteger('%' . trim($params['masque.ns']) . '%');
elseif($params['recherche'] == 'floue')
} elseif($params['recherche'] == 'floue') {
$stack[] = sprintf(self::$soundex_scheme,
'c.nom_sci',
$db->proteger('%' . trim($params['masque.ns']) . '%'));
else
} else {
$stack[] = 'c.nom_sci = ' . $db->proteger(trim($params['masque.ns']));
}
}
 
// le masque sur texte est toujours un LIKE() "étendue", sauf si "floue" spécifié
if(!empty($params['masque.txt'])) {
290,7 → 292,9
$o_stack[] = sprintf("c.flore_bdtfx_nn IN (%s)", implode(',', $params['_ids']['bdtfx']));
}
}
if($o_stack) $stack[] = '(' . implode(' OR ', $o_stack) . ')';
if ($o_stack) {
$stack[] = '(' . implode(' OR ', $o_stack) . ')';
}
 
return $stack;
}
305,8 → 309,7
$c = self::addSQLToFieldSynonym(explode(',', $champs));
if(isset($c['*'])) {
$t = array_diff_key(self::$allow_champs, array_flip(self::$special_champs));
}
else {
} else {
// just loop below
$t = $c;
}
394,27 → 397,32
// renvoie FALSE ou NULL si absent ou invalide
$p['navigation.limite'] = filter_var(@$params['navigation.limite'],
FILTER_VALIDATE_INT,
array('options' => array('default' => NULL,
array('options' => array(
'default' => NULL,
'min_range' => 1,
'max_range' => _COSTE_TEXTE_MAX_RESULT_LIMIT)));
$p['navigation.depart'] = filter_var(@$params['navigation.depart'],
FILTER_VALIDATE_INT,
array('options' => array('default' => NULL,
array('options' => array(
'default' => NULL,
'min_range' => 0,
'max_range' => _COSTE_TEXTE_MAX_COSTE_NN)));
$p['masque.page'] = filter_var(@$params['masque.page'],
FILTER_VALIDATE_INT,
array('options' => array('default' => NULL,
array('options' => array(
'default' => NULL,
'min_range' => 0,
'max_range' => _COSTE_TEXTE_MAX_COSTE_PAGE)));
$p['masque.tome'] = filter_var(@$params['masque.tome'],
FILTER_VALIDATE_INT,
array('options' => array('default' => NULL,
array('options' => array(
'default' => NULL,
'min_range' => 0,
'max_range' => _COSTE_TEXTE_MAX_COSTE_TOME)));
$p['masque.nt'] = filter_var(@$params['masque.nt'],
FILTER_VALIDATE_INT,
array('options' => array('default' => NULL,
array('options' => array(
'default' => NULL,
'min_range' => 0,
'max_range' => _COSTE_TEXTE_MAX_BDTFX_NT)));