X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins%2Fspip-bonux-3%2Fspip_bonux_fonctions.php;fp=www%2Fplugins%2Fspip-bonux-3%2Fspip_bonux_fonctions.php;h=d383bbe26467c3176b0b17eb810cd5d5401f0b5c;hb=c0f18416f529232b5555c6410a8765a5125ebcd3;hp=c3b741146a8ac5db7adccdcaec55ea659fbe6f00;hpb=50522c53acc9e61a4a7de3a1890c4ba93e2f61b4;p=lhc%2Fweb%2Fwww.git diff --git a/www/plugins/spip-bonux-3/spip_bonux_fonctions.php b/www/plugins/spip-bonux-3/spip_bonux_fonctions.php index c3b74114..d383bbe2 100644 --- a/www/plugins/spip-bonux-3/spip_bonux_fonctions.php +++ b/www/plugins/spip-bonux-3/spip_bonux_fonctions.php @@ -2,12 +2,15 @@ /** * Plugin Spip-Bonux * Le plugin qui lave plus SPIP que SPIP - * (c) 2008 Mathieu Marcillaud, Cedric Morin, Romy Tetue + * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue * Licence GPL - * + * */ -if (!defined('_ECRIRE_INC_VERSION')) return; +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + include_spip('public/spip_bonux_criteres'); include_spip('public/spip_bonux_balises'); @@ -19,27 +22,112 @@ include_spip('public/spip_bonux_balises'); * @param string $class * @return string */ -function tag_img($img,$alt="",$class=""){ +function tag_img($img, $alt = '', $class = '') { $balise_img = chercher_filtre('balise_img'); - return $balise_img($img,$alt,$class); + + return $balise_img($img, $alt, $class); } -function previsu_verifier_cle_temporaire($cle){ +function previsu_verifier_cle_temporaire($cle) { $validite = 12; // validite de 12h maxi $old = 0; + do { - $date = date('Y-m-d H',strtotime("-$old hour")); - if ($cle==previsu_cle_temporaire($date)) + $date = date('Y-m-d H', strtotime("-$old hour")); + if ($cle == previsu_cle_temporaire($date)) { return true; - } while ($old++<$validite); + } + } while ($old++ < $validite); + return false; } -function previsu_cle_temporaire($date=null){ + +function previsu_cle_temporaire($date = null) { include_spip('inc/securiser_action'); - if (!$date) $date = date('Y-m-d H'); + + if (!$date) { + $date = date('Y-m-d H'); + } + $url = self(); $cle = md5($url.$date.secret_du_site()); + return $cle; } -?> +if (!function_exists('push_table_valeur')) { +/** + * Filtre ajoutant une valeur à la fin d'une liste, possiblement dans une clé d'un tableau (comme table_valeur()). + * + * Attention, cette fonction est bien un "push", c'est-à-dire qu'elle ajoute un élément à la fin d'une liste. + * + * #TABLEAU|push_table_valeur{a/b/c, valeur, #CONDITION} + * - si la clé "c" est une liste : on ajoute "valeur" à la fin + * - si la clé "c" n'existe pas : on crée une liste et on met la première valeur dedans + * - si la clé "c" est un scalaire : on ne fait rien + * - si les clés autres que la dernière n'existent pas : on en fait des tableaux en cascade + * + * @see table_valeur + * @filtre + * @param array|object|string $table + * Table ou objet dont on veut modifier ou augmenter une des clés/propriétés. Peut être une chaîne à désérialiser contenant ce tableau ou cet objet. + * @param string $chemin + * Une suite de clés ou de propriétés d'objet, séparées par le caractère "/" : un/element/ici + * @param mixed $valeur + * Une valeur à ajouter au paramètre précédent. + * @param mixed $condition=true + * Une valeur quelconque qui sera testée de manière booléenne pour savoir si on fait le traitement ou pas. + * Cela allège l'écriture si l'ajout de valeur ne doit se faire que sous condition, notamment que s'il y a une valeur à ajouter. + * @param string $cle_finale + * Une clé dans laquelle placer la valeur si précisée + * @return array|object + * Retourne le tableau ou l'objet initial, modifié suivant les paramètres. + */ +function push_table_valeur($table, $chemin, $valeur, $condition = true, $cle_finale = false) { + // Si la condition est fausse, on ne fait rien du tout + if ($condition) { + $table = is_string($table) ? @unserialize($table) : $table; + $element_a_modifier =& $table; + + // S'il y a un emplacement donné, on cherche si c'est un tableau + if ($chemin and is_string($chemin) and $chemin = explode('/', $chemin) and is_array($chemin)) { + $i = 0; + foreach ($chemin as $cle) { + $i += 1; + // On ne fait que s'il la clé vaut quelque chose + if ($cle !== '') { + // Si c'est un tableau, on vérifie si la clé existe + if (is_array($element_a_modifier)) { + // Si la clé n'existe pas : on met un tableau vide qui se remplira + if (!isset($element_a_modifier[$cle])) { + $element_a_modifier[$cle] = array(); + } + $element_a_modifier =& $element_a_modifier[$cle]; + } elseif (is_object($element_a_modifier)) { + // Si c'est un objet on vérifie si la propriété existe + // Si la propriété n'existe pas : on met un tableau vide qui se remplira + if (!isset($element_a_modifier->$cle)) { + $element_a_modifier->$cle = array(); + } + $element_a_modifier =& $element_a_modifier->$cle; + } + } + } + } + + // Maintenant on est au bon endroit de ce qu'on veut modifier : + + // Si l'élément à modifier est bien un tableau : on push la valeur dedans + if (is_array($element_a_modifier)) { + if ($cle_finale and is_string($cle_finale)) { + $element_a_modifier[$cle_finale] = $valeur; + } else { + array_push($element_a_modifier, $valeur); + } + } + // Sinon (si c'est un scalaire) on ne fait rien et il faudra utiliser set_table_valeur() par exemple + } + + return $table; +} +}