Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 1082 → Rev 1083

/branches/v5.8-aspergeraie/services/modules/0.1/coste/Textes.php
56,7 → 56,7
static $allow_champs = array(
'coste:nn' => 'c.num_nom',
'bdtfx:nn' => 'IF(c.flore_bdtfx_nn = "",NULL,c.flore_bdtfx_nn)',
'bdtfx:nt' => 'c.flore_bdtfx_nt',
'bdtfx:nt' => 'IF(c.flore_bdtfx_nt = "",NULL,c.flore_bdtfx_nt)',
'num_nom' => 'c.num_nom',
'num_nom_retenu' => 'c.num_nom_retenu',
'num_tax_sup' => 'c.num_tax_sup',
109,7 → 109,7
static $special_champs = array('nom_sci_html', 'nom_sci', '*', 'flore_bdtfx_nn', 'flore_bdtfx_nt', 'num_nom');
 
// ces champs sont toujours dans les résultats (cf sqlSelectFields()
static $champs_obligatoires = array('coste:nn', 'bdtfx:nn');
static $champs_obligatoires = array('coste:nn', 'bdtfx:nn', 'bdtfx:nt');
 
 
// le pattern utilisé pour la recherche dite "floue"
146,7 → 146,6
// XXX: temporaires, passage de $db aux fonctions
// de toolkits
$req = self::getCosteInfo($params, $db);
 
$res = $db->recupererTous($req);
$err = mysql_error();
if (!$res && $err) {
183,7 → 182,7
'limite' => $params['navigation.limite'],
'total' => count($res2),
'match' => $matches),
'resultats' => $res2);
'resultats' => $res2);
}
 
 
200,7 → 199,7
 
// joins:
$other_join = self::sqlAddJoins($params, $champs_valides_non_formattes);
$requete_tpl = "SELECT SQL_CALC_FOUND_ROWS %s".
$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' ".
283,12 → 282,15
// comportant un #id existe, cf self::requestFilterIds()
$o_stack = array();
if (array_key_exists('_ids', $params) && $params['_ids']) {
if ($params['_ids']['coste']) {
$o_stack[] = sprintf("c.num_nom IN (%s)", implode(',', $params['_ids']['coste']));
if ($params['_ids']['coste.nn']) {
$o_stack[] = sprintf("c.num_nom IN (%s)", implode(',', $params['_ids']['coste.nn']));
}
if ($params['_ids']['bdtfx']) {
$o_stack[] = sprintf("c.flore_bdtfx_nn IN (%s)", implode(',', $params['_ids']['bdtfx']));
if ($params['_ids']['bdtfx.nn']) {
$o_stack[] = sprintf("c.flore_bdtfx_nn IN (%s)", implode(',', $params['_ids']['bdtfx.nn']));
}
if ($params['_ids']['bdtfx.nt']) {
$o_stack[] = sprintf("c.flore_bdtfx_nt IN (%s)", implode(',', $params['_ids']['bdtfx.nt']));
}
}
if ($o_stack) {
$stack[] = '(' . implode(' OR ', $o_stack) . ')';
362,12 → 364,13
// request handler
static function requestParse(&$ressource, &$params) {
if (isset($_SERVER['REDIRECT_URL'])) {
$uri = explode('/', $_SERVER['REDIRECT_URL']);
} else {
$uri = explode('/', $_SERVER['REQUEST_URI']);
}
if(!empty($_SERVER['QUERY_STRING']))
$uri = explode('/', $_SERVER['REDIRECT_URL']);
} else {
$uri = explode('/', $_SERVER['REQUEST_URI']);
}
if (!empty($_SERVER['QUERY_STRING'])) {
parse_str($_SERVER['QUERY_STRING'], $params);
}
$ressource = array_slice($uri, array_search('textes', $uri) + 1, 3);
}
 
443,18 → 446,20
// - soit un id selon coste (num_nom dans coste_v2_00)
// - soit un id selon bdtfx (num_nom dans bdtfx_v2_00)
// ou bien l'extrait du pattern bdtfx.nn:(#id)
$ids_coste = array_filter(array_map(array(__CLASS__, 'getNNCoste'), explode(',', $uri[0])));
$ids_bdtfx = array_filter(array_map(array(__CLASS__, 'getNNBdtfx'), explode(',', $uri[0])));
$ids_coste_nn = array_filter(array_map(array(__CLASS__, 'getNNCoste'), explode(',', $uri[0])));
$ids_bdtfx_nn = array_filter(array_map(array(__CLASS__, 'getNNBdtfx'), explode(',', $uri[0])));
$ids_bdtfx_nt = array_filter(array_map(array(__CLASS__, 'getNTBdtfx'), explode(',', $uri[0])));
 
// en cas d'échec (tous les id sont invalides), bail-out
if(!$ids_bdtfx && !$ids_coste) {
if(!$ids_bdtfx_nt && !$ids_bdtfx_nn && !$ids_coste_nn) {
// http_response_code(500);
throw new Exception('not supported', 500);
}
 
return array(
'coste' => array_slice($ids_coste, 0, intval(_COSTE_TEXTE_MAX_RESULT_LIMIT / 2) ),
'bdtfx' => array_slice($ids_bdtfx, 0, intval(_COSTE_TEXTE_MAX_RESULT_LIMIT / 2) )
'coste.nn' => array_slice($ids_coste_nn, 0, intval(_COSTE_TEXTE_MAX_RESULT_LIMIT / 2) ),
'bdtfx.nn' => array_slice($ids_bdtfx_nn, 0, intval(_COSTE_TEXTE_MAX_RESULT_LIMIT / 2) ),
'bdtfx.nt' => array_slice($ids_bdtfx_nt, 0, intval(_COSTE_TEXTE_MAX_RESULT_LIMIT / 2) )
);
}
 
512,4 → 517,11
if($t >= 1 && $t < _COSTE_TEXTE_MAX_BDTFX_NN) return $t;
return FALSE;
}
 
static function getNTBdtfx($refnt) {
if(strpos($refnt, 'bdtfx.nt:') !== 0) return FALSE;
$t = intval(str_replace('bdtfx.nt:', '', $refnt));
if($t >= 1 && $t < _COSTE_TEXTE_MAX_BDTFX_NT) return $t;
return FALSE;
}
}