Après passage en SPIP 3, je me retrouve avec un petit problème.
Soit une table additionnelle crée par un plugin.
Cette table comprends un champs ‘annee’.
Une boucle <BOUCLE_test(OBJETS){annee=2012}>#ANNEE</BOUCLE_test> ne fonctionne plus correctement.
Un tour sur le débuggeur. La requête SQL produite est :
Au passage, une astuce trouvée pour régler (au moins temporairement le souci) :
function zotspip_post_boucle ($boucle) {
if ($boucle->id_table == ‘zitems’) {
$boucle->where = replaceTree (‘YEAR(zitems.date)’,‘zitems.annee’,$boucle->where);
}
return $boucle;
}
// Source: http://kvz.io/blog/2008/09/05/php-recursive-str-replace-replacetree/
function replaceTree($search="", $replace="", $array=false, $keys_too=false)
{
if (!is_array($array)) {
// Regular replace
return str_replace($search, $replace, $array);
}
$newArr = array();
foreach ($array as $k=>$v) {
// Replace keys as well?
$add_key = $k;
if ($keys_too) {
$add_key = str_replace($search, $replace, $k);
}
// Recurse
$newArr[$add_key] = replaceTree($search, $replace, $v, $keys_too);
}
return $newArr;
}