uawdijnntqw1x1x1
IP : 216.73.217.34
Hostname : webm019.cluster129.gra.hosting.ovh.net
Kernel : Linux webm019.cluster129.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
OS : Linux
PATH:
/
home
/
checkyd
/
www
/
local
/
.
/
..
/
plugins
/
auto
/
..
/
auto
/
cfg
/
cfg_fonctions.php
/
/
<?php /** * Plugin générique de configuration pour SPIP * * @license GNU/GPL * @package plugins * @subpackage cfg * @category outils * @copyright (c) toggg, marcimat 2007-2008 * @link http://www.spip-contrib.net/ * @version $Id$ */ if (!defined("_ECRIRE_INC_VERSION")) return; # CONFIG /** * #CONFIG retourne lire_config() * * Le 3eme argument permet de controler la serialisation du resultat * (mais ne sert que pour le depot 'meta') qui doit parfois deserialiser * * ex: |in_array{#CONFIG{toto,#ARRAY,1}}. * * Ceci n'affecte pas d'autres depots et |in_array{#CONFIG{toto/,#ARRAY}} sera equivalent * car du moment qu'il y a un /, c'est le depot 'metapack' qui est appelle. * * @param Object $p Arbre syntaxique du compilo * @return Object */ if (!function_exists('balise_CONFIG')) { function balise_CONFIG($p) { if (!$arg = interprete_argument_balise(1,$p)) { $arg = "''"; } $sinon = interprete_argument_balise(2,$p); $unserialize = sinon(interprete_argument_balise(3,$p),"false"); $p->code = 'lire_config(' . $arg . ',' . ($sinon && $sinon != "''" ? $sinon : 'null') . ',' . $unserialize . ')'; return $p; } } # CFG_CHEMIN /** * La balise CFG_CHEMIN retourne le chemin d'une image stockee * par cfg. * * cfg stocke : 'config/vue/champ.ext' (ce qu'affiche #CONFIG)<br> * #cfg_chemin retourne l'adresse complete : 'IMG/config/vue/champ.ext' * * @param Object $p Arbre syntaxique du compilo * @return Object */ function balise_CFG_CHEMIN_dist($p) { if (!$arg = interprete_argument_balise(1,$p)) { $arg = "''"; } $sinon = interprete_argument_balise(2,$p); $p->code = '($l = lire_config(' . $arg . ',' . ($sinon && $sinon != "''" ? $sinon : 'null') . ')) ? _DIR_IMG . $l : null'; return $p; } /** * #EDIT_CONFIG : Pour jouer avec les Crayons et les configurations * * <code> * <div class="#EDIT_CONFIG{plugin/casier/cle}"> * #CONFIG{plugin/casier/cle} * </div> * </code> * * @param <type> $p * @return <type> */ function balise_EDIT_CONFIG_dist($p) { $config = interprete_argument_balise(1,$p); $instance = interprete_argument_balise(2,$p); $instance = $instance ? $instance : "'0'"; $p->code = 'classe_config_crayon('.$config.', '.$instance.')'; $p->statut = 'php'; $p->interdire_scripts = false; return $p; } /** * Classe qui sera utilisé pour CFG dans le bloc éditable par Crayon * * @param string $config * @param string $instance * @return string */ function classe_config_crayon($config, $instance) { // pour n'avoir que des caracteres alphanumeriques, // on transforme "depot::plugin/casier/cle" en "depot___plugin__casier__cle" $config = cfg_config2crayon($config); // return 'crayon composant-'.$composant.'-'.$instance.' type_pinceau'; return 'crayon config-'.$config.'-'.$instance . ' type_config'; } /** * Outil de manipulation des classes * * @param string $config classe pour CFG * @return string classe pour Crayon */ function cfg_config2crayon($config) {return str_replace(array('::','/'), array('___','__'), $config);} /** * Outil de manipulation des classes * * @param string $crayon classe pour Crayon * @return string classe pour CFG */ function cfg_crayon2config($crayon) {return str_replace(array('___','__'), array('::','/'), $crayon);} /** * autorisation de configurer * * @param string $faire * @param string $type * @param string $id * @param string $qui * @param string $opt * @return boolean */ function autoriser_config_crayonner_dist($faire, $type, $id, $qui, $opt) { return autoriser('configurer', $type, $id, $qui, $opt); } /** * autorisation de crayonner * * @param string $faire * @param string $type * @param string $id * @param string $qui * @param string $opt * @return boolean */ function autoriser_config_modifier_dist($faire, $type, $id, $qui, $opt) { return autoriser('crayonner', $type, $id, $qui, $opt); } # CFG_ARBO /** * Affiche une arborescence du contenu d'un #CONFIG * * - #CFG_ARBO, * - #CFG_ARBO{ma_meta}, * - #CFG_ARBO{~toto}, * - #CFG_ARBO{ma_meta/mon_casier}, * - #CFG_ARBO{ma_table:mon_id/mon_champ} * * @param Object $p * @return Object */ function balise_CFG_ARBO_dist($p) { if (!$arg = interprete_argument_balise(1,$p)) { $arg = "''"; } $p->interdire_scripts = false; $p->code = 'cfg_affiche_arborescence(' . $arg . ')'; return $p; } /** * Fonction utilisée par le compilo pour {@see balise_CFG_ARBO_dist} : * affiche l'arborescence qui est calculée par {@see cfg_affiche_sous_arborescence} * * @param string $cfg nom de la table meta * @return string code html en sortie */ function cfg_affiche_arborescence($cfg='') { $sortie = ''; $hash = substr(md5(rand()*rand()),0,6); // integration du css // Suppression de cette inclusion des css arbo au profit d'une inclusion d'un fichier cfg.css dans le header prive // $sortie .= "<style type='text/css'>\n" // . ".cfg_arbo{}\n" // . ".cfg_arbo h5{padding:0.2em 0.2em; margin:0.2em 0; cursor:pointer;}\n" // . ".cfg_arbo ul{border:1px solid #ccc; margin:0; padding:0.2em 0.5em; list-style-type:none;}\n" // . "</style>\n"; // integration du js $sortie .= "<script type='text/javascript'><!-- jQuery(document).ready(function(){ function cfg_arbo(){ jQuery('#cfg_arbo_$hash ul').hide(); jQuery('#cfg_arbo_$hash h5 strong').remove(); jQuery('#cfg_arbo_$hash h5') .prepend('<strong>[+] <\/strong>') .unbind().toggle( function () { jQuery(this).children('strong').text('[-] '); jQuery(this).next('ul').show(); }, function () { jQuery(this).children('strong').text('[+] '); jQuery(this).next('ul').hide(); }); } setTimeout(cfg_arbo,100); }); // --></script>\n"; $tableau = lire_config($cfg); if ($c = @unserialize($tableau)) $tableau = $c; if (empty($cfg)) $cfg = 'spip_meta'; // parcours des donnees $sortie .= "<div class='cfg_arbo' id='cfg_arbo_$hash'>\n" . cfg_affiche_sous_arborescence($cfg, $tableau) . "\n</div>\n"; return $sortie; } /** * Calcul récursif de l'arborescence des configurations * * @param string $nom nom de la table meta * @param Array $tableau configuration * @return string code html en sortie */ function cfg_affiche_sous_arborescence($nom, $tableau){ $sortie = "\n<h5>$nom</h5>\n"; $sortie .= "\n<ul>"; if (is_array($tableau)){ ksort($tableau); foreach ($tableau as $tab=>$val){ if (is_array($val)) $sortie .= "<li>" . cfg_affiche_sous_arborescence($tab, $val) . "</li>"; elseif (false !== $v = @unserialize($val)) $sortie .= "<li>" . cfg_affiche_sous_arborescence($tab, $v) . "</li>"; else $sortie .= "<li>$tab = " . htmlentities($val, ENT_COMPAT, $GLOBALS['meta']['charset']) ."</li>\n"; } } else { $sortie .= "<li>$nom = " . htmlentities($val, ENT_COMPAT, $GLOBALS['meta']['charset']) . "</li>"; } $sortie .= "</ul>\n"; return $sortie; } if (!function_exists('filtre_cle_dist')) { /** * Cette fonction retourne une valeur dans un tableau arborescent * en indiquant la cle souhaitee. On descend dans la profondeur de * l'arborescence du tableau par des slash. * Si on donne un chaine serialisee en entree a la place d'un tableau, * la fonction tente de la deserialiser. * * Exemples : * $x = array("a1"=>array("b1"=>array("c1"=>3), "b2"=>4), "a2"=>8); * filtre_cle_dist($x, "a2") = 8 * filtre_cle_dist($x, "a1") = array("b1"=>array("c1"=>3), "b2"=>4) * filtre_cle_dist($x, "a1/b2") = 4 * filtre_cle_dist($x, "a1/b1/c1") = 3 * * Depuis un squelette SPIP : [(#TABLEAU|cle{a1/b1/c1})] * * @param array/string $tab : tableau ou tableau serialise * @param string $chemin : chemin d'acces a une valeur du tableau tel que "cleA/cleB/cleC" * @param string $defaut : valeur a retourner par defaut, si la cle n'est pas trouvee * * @return la valeur correspondant a la cle demandee, $defaut sinon **/ function filtre_cle_dist($tab, $chemin, $defaut=null) { if (!$tab) { return $defaut; } if (!is_array($tab)) { if (!is_string($tab) or !$tab = @unserialize($tab) or !is_array($tab) ) { return $defaut; } } $position = &$tab; $chemins = explode('/', $chemin); foreach ($chemins as $cle) { if (!isset($position[$cle])) { return $defaut; } $position = $position[$cle]; } return $position; } } ?>
/home/checkyd/www/local/./../plugins/auto/../auto/cfg/cfg_fonctions.php