Line 54... |
Line 54... |
54 |
// les champs de base de coste_v2_00
|
54 |
// les champs de base de coste_v2_00
|
55 |
// mysql -N tb_eflore<<<"SHOW FIELDS FROM coste_v2_00"|egrep -v 'page_'|awk '{print $1}'|xargs -i -n1 printf "'%s' => 'c.%s',\n" {} {}
|
55 |
// mysql -N tb_eflore<<<"SHOW FIELDS FROM coste_v2_00"|egrep -v 'page_'|awk '{print $1}'|xargs -i -n1 printf "'%s' => 'c.%s',\n" {} {}
|
56 |
static $allow_champs = array(
|
56 |
static $allow_champs = array(
|
57 |
'coste:nn' => 'c.num_nom',
|
57 |
'coste:nn' => 'c.num_nom',
|
58 |
'bdtfx:nn' => 'IF(c.flore_bdtfx_nn = "",NULL,c.flore_bdtfx_nn)',
|
58 |
'bdtfx:nn' => 'IF(c.flore_bdtfx_nn = "",NULL,c.flore_bdtfx_nn)',
|
59 |
'bdtfx:nt' => 'c.flore_bdtfx_nt',
|
59 |
'bdtfx:nt' => 'IF(c.flore_bdtfx_nt = "",NULL,c.flore_bdtfx_nt)',
|
60 |
'num_nom' => 'c.num_nom',
|
60 |
'num_nom' => 'c.num_nom',
|
61 |
'num_nom_retenu' => 'c.num_nom_retenu',
|
61 |
'num_nom_retenu' => 'c.num_nom_retenu',
|
62 |
'num_tax_sup' => 'c.num_tax_sup',
|
62 |
'num_tax_sup' => 'c.num_tax_sup',
|
63 |
'rang' => 'c.rang',
|
63 |
'rang' => 'c.rang',
|
64 |
'nom_sci' => 'c.nom_sci',
|
64 |
'nom_sci' => 'c.nom_sci',
|
Line 107... |
Line 107... |
107 |
// les champs suivants disparaissent de la liste utilisée pour former la requête SQL
|
107 |
// les champs suivants disparaissent de la liste utilisée pour former la requête SQL
|
108 |
// (ils sont exclue lorsque '*' est utilisée, ce sont généralement des synonymes)
|
108 |
// (ils sont exclue lorsque '*' est utilisée, ce sont généralement des synonymes)
|
109 |
static $special_champs = array('nom_sci_html', 'nom_sci', '*', 'flore_bdtfx_nn', 'flore_bdtfx_nt', 'num_nom');
|
109 |
static $special_champs = array('nom_sci_html', 'nom_sci', '*', 'flore_bdtfx_nn', 'flore_bdtfx_nt', 'num_nom');
|
Line 110... |
Line 110... |
110 |
|
110 |
|
111 |
// ces champs sont toujours dans les résultats (cf sqlSelectFields()
|
111 |
// ces champs sont toujours dans les résultats (cf sqlSelectFields()
|
Line 112... |
Line 112... |
112 |
static $champs_obligatoires = array('coste:nn', 'bdtfx:nn');
|
112 |
static $champs_obligatoires = array('coste:nn', 'bdtfx:nn', 'bdtfx:nt');
|
113 |
|
113 |
|
Line 144... |
Line 144... |
144 |
$params['_ids'] = self::requestFilterIds($uri);
|
144 |
$params['_ids'] = self::requestFilterIds($uri);
|
Line 145... |
Line 145... |
145 |
|
145 |
|
146 |
// XXX: temporaires, passage de $db aux fonctions
|
146 |
// XXX: temporaires, passage de $db aux fonctions
|
147 |
// de toolkits
|
147 |
// de toolkits
|
148 |
$req = self::getCosteInfo($params, $db);
|
- |
|
149 |
|
148 |
$req = self::getCosteInfo($params, $db);
|
150 |
$res = $db->recupererTous($req);
|
149 |
$res = $db->recupererTous($req);
|
151 |
$err = mysql_error();
|
150 |
$err = mysql_error();
|
152 |
if (!$res && $err) {
|
151 |
if (!$res && $err) {
|
153 |
// http_response_code(400);
|
152 |
// http_response_code(400);
|
Line 281... |
Line 280... |
281 |
|
280 |
|
282 |
// ajout de la contrainte sur coste:nn ou bdtfx:nn si un composant d'URL supplémentaire
|
281 |
// ajout de la contrainte sur coste:nn ou bdtfx:nn si un composant d'URL supplémentaire
|
283 |
// comportant un #id existe, cf self::requestFilterIds()
|
282 |
// comportant un #id existe, cf self::requestFilterIds()
|
284 |
$o_stack = array();
|
283 |
$o_stack = array();
|
285 |
if (array_key_exists('_ids', $params) && $params['_ids']) {
|
284 |
if (array_key_exists('_ids', $params) && $params['_ids']) {
|
286 |
if ($params['_ids']['coste']) {
|
285 |
if ($params['_ids']['coste.nn']) {
|
- |
|
286 |
$o_stack[] = sprintf("c.num_nom IN (%s)", implode(',', $params['_ids']['coste.nn']));
|
- |
|
287 |
}
|
- |
|
288 |
if ($params['_ids']['bdtfx.nn']) {
|
287 |
$o_stack[] = sprintf("c.num_nom IN (%s)", implode(',', $params['_ids']['coste']));
|
289 |
$o_stack[] = sprintf("c.flore_bdtfx_nn IN (%s)", implode(',', $params['_ids']['bdtfx.nn']));
|
288 |
}
|
290 |
}
|
289 |
if ($params['_ids']['bdtfx']) {
|
291 |
if ($params['_ids']['bdtfx.nt']) {
|
290 |
$o_stack[] = sprintf("c.flore_bdtfx_nn IN (%s)", implode(',', $params['_ids']['bdtfx']));
|
292 |
$o_stack[] = sprintf("c.flore_bdtfx_nt IN (%s)", implode(',', $params['_ids']['bdtfx.nt']));
|
291 |
}
|
293 |
}
|
292 |
}
|
294 |
}
|
293 |
if ($o_stack) {
|
295 |
if ($o_stack) {
|
294 |
$stack[] = '(' . implode(' OR ', $o_stack) . ')';
|
296 |
$stack[] = '(' . implode(' OR ', $o_stack) . ')';
|
Line 364... |
Line 366... |
364 |
if (isset($_SERVER['REDIRECT_URL'])) {
|
366 |
if (isset($_SERVER['REDIRECT_URL'])) {
|
365 |
$uri = explode('/', $_SERVER['REDIRECT_URL']);
|
367 |
$uri = explode('/', $_SERVER['REDIRECT_URL']);
|
366 |
} else {
|
368 |
} else {
|
367 |
$uri = explode('/', $_SERVER['REQUEST_URI']);
|
369 |
$uri = explode('/', $_SERVER['REQUEST_URI']);
|
368 |
}
|
370 |
}
|
369 |
if(!empty($_SERVER['QUERY_STRING']))
|
371 |
if (!empty($_SERVER['QUERY_STRING'])) {
|
370 |
parse_str($_SERVER['QUERY_STRING'], $params);
|
372 |
parse_str($_SERVER['QUERY_STRING'], $params);
|
- |
|
373 |
}
|
371 |
$ressource = array_slice($uri, array_search('textes', $uri) + 1, 3);
|
374 |
$ressource = array_slice($uri, array_search('textes', $uri) + 1, 3);
|
372 |
}
|
375 |
}
|
Line 373... |
Line 376... |
373 |
|
376 |
|
374 |
// supprime l'index du tableau des paramètres si sa valeur ne correspond pas
|
377 |
// supprime l'index du tableau des paramètres si sa valeur ne correspond pas
|
Line 441... |
Line 444... |
441 |
|
444 |
|
442 |
// getNN* renvoient le num_nom passé comme segment d'URI:
|
445 |
// getNN* renvoient le num_nom passé comme segment d'URI:
|
443 |
// - soit un id selon coste (num_nom dans coste_v2_00)
|
446 |
// - soit un id selon coste (num_nom dans coste_v2_00)
|
444 |
// - soit un id selon bdtfx (num_nom dans bdtfx_v2_00)
|
447 |
// - soit un id selon bdtfx (num_nom dans bdtfx_v2_00)
|
445 |
// ou bien l'extrait du pattern bdtfx.nn:(#id)
|
448 |
// ou bien l'extrait du pattern bdtfx.nn:(#id)
|
446 |
$ids_coste = array_filter(array_map(array(__CLASS__, 'getNNCoste'), explode(',', $uri[0])));
|
449 |
$ids_coste_nn = array_filter(array_map(array(__CLASS__, 'getNNCoste'), explode(',', $uri[0])));
|
- |
|
450 |
$ids_bdtfx_nn = array_filter(array_map(array(__CLASS__, 'getNNBdtfx'), explode(',', $uri[0])));
|
Line 447... |
Line 451... |
447 |
$ids_bdtfx = array_filter(array_map(array(__CLASS__, 'getNNBdtfx'), explode(',', $uri[0])));
|
451 |
$ids_bdtfx_nt = array_filter(array_map(array(__CLASS__, 'getNTBdtfx'), explode(',', $uri[0])));
|
448 |
|
452 |
|
449 |
// en cas d'échec (tous les id sont invalides), bail-out
|
453 |
// en cas d'échec (tous les id sont invalides), bail-out
|
450 |
if(!$ids_bdtfx && !$ids_coste) {
|
454 |
if(!$ids_bdtfx_nt && !$ids_bdtfx_nn && !$ids_coste_nn) {
|
451 |
// http_response_code(500);
|
455 |
// http_response_code(500);
|
Line 452... |
Line 456... |
452 |
throw new Exception('not supported', 500);
|
456 |
throw new Exception('not supported', 500);
|
453 |
}
|
457 |
}
|
- |
|
458 |
|
454 |
|
459 |
return array(
|
455 |
return array(
|
460 |
'coste.nn' => array_slice($ids_coste_nn, 0, intval(_COSTE_TEXTE_MAX_RESULT_LIMIT / 2) ),
|
456 |
'coste' => array_slice($ids_coste, 0, intval(_COSTE_TEXTE_MAX_RESULT_LIMIT / 2) ),
|
461 |
'bdtfx.nn' => array_slice($ids_bdtfx_nn, 0, intval(_COSTE_TEXTE_MAX_RESULT_LIMIT / 2) ),
|
Line 457... |
Line 462... |
457 |
'bdtfx' => array_slice($ids_bdtfx, 0, intval(_COSTE_TEXTE_MAX_RESULT_LIMIT / 2) )
|
462 |
'bdtfx.nt' => array_slice($ids_bdtfx_nt, 0, intval(_COSTE_TEXTE_MAX_RESULT_LIMIT / 2) )
|
458 |
);
|
463 |
);
|
Line 510... |
Line 515... |
510 |
if(strpos($refnn, 'bdtfx.nn:') !== 0) return FALSE;
|
515 |
if(strpos($refnn, 'bdtfx.nn:') !== 0) return FALSE;
|
511 |
$t = intval(str_replace('bdtfx.nn:', '', $refnn));
|
516 |
$t = intval(str_replace('bdtfx.nn:', '', $refnn));
|
512 |
if($t >= 1 && $t < _COSTE_TEXTE_MAX_BDTFX_NN) return $t;
|
517 |
if($t >= 1 && $t < _COSTE_TEXTE_MAX_BDTFX_NN) return $t;
|
513 |
return FALSE;
|
518 |
return FALSE;
|
514 |
}
|
519 |
}
|
- |
|
520 |
|
- |
|
521 |
static function getNTBdtfx($refnt) {
|
- |
|
522 |
if(strpos($refnt, 'bdtfx.nt:') !== 0) return FALSE;
|
- |
|
523 |
$t = intval(str_replace('bdtfx.nt:', '', $refnt));
|
- |
|
524 |
if($t >= 1 && $t < _COSTE_TEXTE_MAX_BDTFX_NT) return $t;
|
- |
|
525 |
return FALSE;
|
- |
|
526 |
}
|
515 |
}
|
527 |
}
|