diff --git a/ecrire/exec/memoriser.php b/ecrire/exec/memoriser.php index 9fb2a73ba792bc59654d346b283d77be7628b771..a64fadcdbeeb6e07297df3855a1d392b1b0b6de7 100644 --- a/ecrire/exec/memoriser.php +++ b/ecrire/exec/memoriser.php @@ -24,13 +24,9 @@ function exec_memoriser_dist() if ($res) { - foreach(unserialize($res["variables"]) as $i => $k){ $$i = $k; } - - include_spip('inc/presentation'); - - $formater_article = _request('trad') ? '' : charger_fonction('formater_article', 'inc'); - - ajax_retour(afficher_articles_trad($titre_table, $requete, $formater_article, $param, $id_ajax, $res['id_auteur'])); + include_spip('inc/presentation'); + list($t,$r,$p,$f) = unserialize($res["variables"]); + ajax_retour(afficher_articles_trad($t, $r, $f, $p, $id_ajax, $res['id_auteur'], _request('trad'))); } else spip_log("memoriser $q vide"); } diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php index b2dede36f69ce89d759ee00b53ccc564c2a6b1a0..c8fb59543d3ae7c841811847bc9d2ccc23e99a75 100644 --- a/ecrire/inc/presentation.php +++ b/ecrire/inc/presentation.php @@ -685,11 +685,9 @@ function afficher_script_statut($id, $type, $n, $img, $statut, $title, $act) // Afficher tableau d'articles // // http://doc.spip.org/@afficher_articles -function afficher_articles($titre_table, $requete, $formater_article='') { +function afficher_articles($titre, $requete, $formater_article='') { - global $options; - - if (!isset($requete['FROM'])) $requete['FROM'] = 'spip_articles AS articles'; + if (!isset($requete['FROM'])) $requete['FROM'] = 'spip_articles AS articles'; if (!isset($requete['SELECT'])) { $requete['SELECT'] = "articles.id_article, articles.titre, articles.id_rubrique, articles.statut, articles.date, articles.lang, articles.id_trad, articles.descriptif"; @@ -697,33 +695,32 @@ function afficher_articles($titre_table, $requete, $formater_article='') { if (!isset($requete['GROUP BY'])) $requete['GROUP BY'] = ''; - // memo des arguments en base pour gérer l'affichage par tranche + // memorisation des arguments pour gérer l'affichage par tranche // et/ou par langues. - $hash = "0x".substr(md5(serialize($requete) . $GLOBALS['meta']['gerer_trad'] . $titre_table), 0, 31); - $tmp_var = 't' . substr($hash, 2, 7); + $hash = substr(md5(serialize($requete) . $GLOBALS['meta']['gerer_trad'] . $titre), 0, 31); + $tmp_var = 't' . substr($hash, 0, 7); // le champ id_auteur sert finalement a memoriser le nombre de lignes // (a renommer) - $res_proch = spip_query("SELECT id_ajax_fonc, id_auteur FROM spip_ajax_fonc WHERE hash=$hash LIMIT 1"); + $res_proch = spip_query("SELECT id_ajax_fonc, id_auteur FROM spip_ajax_fonc WHERE hash=0x$hash LIMIT 1"); + if ($row = spip_fetch_array($res_proch)) { $id_ajax = $row["id_ajax_fonc"]; $cpt = $row["id_auteur"]; } else { - include_spip ('base/abstract_sql'); - $variables = serialize(array( - "param" => $tmp_var, - "requete" => $requete, - "titre_table" => $titre_table, - )); $cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : ''))); + if (!$cpt = $cpt['n']) return '' ; if (isset($requete['LIMIT'])) $cpt = min($requete['LIMIT'], $cpt); - $id_ajax = spip_abstract_insert("spip_ajax_fonc", "(variables, hash, id_auteur, date)", "(" . _q($variables) . ", $hash, $cpt, NOW())"); - } + $v = serialize(array($titre, $requete, $tmp_var, $formater_article)); + + include_spip ('base/abstract_sql'); + $id_ajax = spip_abstract_insert("spip_ajax_fonc", "(variables, hash, id_auteur, date)", "(" . _q($v) . ", 0x$hash, $cpt, NOW())"); + } $nb_aff = floor(1.5 * _TRANCHES); $deb_aff = intval(_request($tmp_var)); @@ -732,23 +729,22 @@ function afficher_articles($titre_table, $requete, $formater_article='') { $requete['SELECT'] .= ", petitions.id_article AS petition "; - if (!function_exists($formater_article)) - $formater_article = charger_fonction('formater_article', 'inc'); - return afficher_articles_trad($titre_table, $requete, $formater_article, $tmp_var, $id_ajax, $cpt); + return afficher_articles_trad($titre, $requete, $formater_article, $tmp_var, $id_ajax, $cpt); } // http://doc.spip.org/@afficher_articles_trad -function afficher_articles_trad($titre_table, $requete, $formater_article, $tmp_var, $id_ajax, $cpt) { +function afficher_articles_trad($titre_table, $requete, $formater_article, $tmp_var, $id_ajax, $cpt, $trad=0) { global $options, $spip_lang_right; - if (!$formater_article) { - $formater_article = 'afficher_articles_trad_boucle'; - $largeurs = array(11, 24, '', '1'); - $styles = array('', 'arial1', 'arial1', ''); - $icone = "langues-off-12.gif"; - $trad =0; + if ($trad) { + $formater_article = 'afficher_articles_trad_boucle'; + $largeurs = array(11, 24, '', '1'); + $styles = array('', 'arial1', 'arial1', ''); + $icone = "langues-off-12.gif"; } else { + if (!$formater_article) + $formater_article = charger_fonction('formater_article', 'inc'); if ($options == "avancees") { // Afficher le numero (JMB) $largeurs = array(11, '', 80, 100, 50); $styles = array('', 'arial2', 'arial1', 'arial1', 'arial1'); @@ -757,7 +753,6 @@ function afficher_articles_trad($titre_table, $requete, $formater_article, $tmp_ $styles = array('', 'arial2', 'arial1', 'arial1'); } $icone = 'langues-12.gif'; - $trad = 1; } $nb_aff = floor(1.5 * _TRANCHES); @@ -778,7 +773,7 @@ function afficher_articles_trad($titre_table, $requete, $formater_article, $tmp_ $texte = http_img_pack("searching.gif", "*", $style . " id='img_$tmp_var'"); if (($GLOBALS['meta']['gerer_trad'] == "oui")) { - $url= generer_url_ecrire('memoriser',"id_ajax_fonc=$id_ajax&trad=$trad"); + $url= generer_url_ecrire('memoriser',"id_ajax_fonc=$id_ajax&trad=" . (1-$trad)); $texte .= "\n<div style='float: $spip_lang_right;'><a href=\"#\"\nonclick=\"return charger_id_url('$url','$tmp_var');\">" . "<img\nsrc='". _DIR_IMG_PACK . $icone ."' /></a></div>";