* %s8: code de trace eventuel avant le retour
**/
define('CODE_CORPS_BOUCLE', '%s
+ if (defined("_BOUCLE_PROFILER")) $timer = time()+microtime();
$t0 = "";
// REQUETE
$iter = IterFactory::create(
%s
%s$iter->free();
}%s
+ if (defined("_BOUCLE_PROFILER")
+ AND 1000*($timer = (time()+microtime())-$timer) > _BOUCLE_PROFILER)
+ spip_log(intval(1000*$timer)."ms %s","profiler");
return $t0;'
);
$init_lang,
$corps,
$fin_lang,
- $trace
+ $trace,
+ 'BOUCLE'.$id_boucle .' @ '.($boucle->descr['sourcefile'])
);
# var_dump($a);exit;
case 'idiome':
$l = array();
+ $code = '';
foreach ($p->arg as $k => $v) {
- if ($k) $l[]= _q($k).' => '.calculer_liste($v,$p->descr,$boucles,$id_boucle);
+ $_v = calculer_liste($v, $descr, $boucles, $id_boucle);
+ if ($k) {
+ $l[] = _q($k) . ' => ' . $_v;
+ } else {
+ $code = $_v;
+ }
+ }
+ // Si le module n'est pas fourni, l'expliciter sauf si calculé
+ if ($p->module) {
+ $m = $p->module .':'.$p->nom_champ;
+ } elseif ($p->nom_champ) {
+ $m = MODULES_IDIOMES .':'.$p->nom_champ;
+ } else {
+ $m = '';
}
- $l = !$l ? '' : (", array(".implode(",\n",$l).")");
- $code = "_T('" . $p->module . ":" .$p->nom_champ . "'$l)";
+ $code = (!$code ? "'$m'" :
+ ($m ? "'$m' . $code" :
+ ("(strpos(\$x=$code, ':') ? \$x : ('" . MODULES_IDIOMES . ":' . \$x))")))
+ . (!$l ? '' : (", array(" . implode(",\n", $l) . ")"));
+ $code = "_T($code)";
if ($p->param) {
$p->id_boucle = $id_boucle;
$p->boucles = &$boucles;