function cextras_types_formulaires(){ $types = array(); foreach(_chemin() as $dir) { if (@is_dir($s = $dir.'extra-saisies/')) { foreach(preg_files($s, '.*.html$') as $saisie) { $type = basename($saisie,'.html'); $types[$type] = array( 'nom' => _T('cextras:type', array('type' => $type)) ); } } } return $types; }
/** * Retourne la liste des chemins connus de SPIP, dans l'ordre de priorité * * Recalcule la liste si le nom ou liste de dossier squelettes a changé. * * @uses _chemin() * * @return array Liste de chemins **/ function creer_chemin() { $path_a = _chemin(); static $c = ''; // on calcule le chemin si le dossier skel a change if ($c != $GLOBALS['dossier_squelettes']) { // assurer le non plantage lors de la montee de version : $c = $GLOBALS['dossier_squelettes']; $path_a = _chemin(''); // forcer un recalcul du chemin } return $path_a; }
* Test unitaire des raccourcis Markdown dans SPIP * */ $test = 'tw_propre_typo'; $remonte = "../"; while (!is_dir($remonte . "ecrire")) { $remonte = "../{$remonte}"; } require $remonte . 'tests/test.inc'; find_in_path("inc/texte.php", '', true); $GLOBALS['spip_lang'] = 'fr'; // corrections typo $GLOBALS['class_spip_plus'] = ''; $GLOBALS['class_spip'] = ''; // ajouter le dossier squelettes de test au chemin _chemin(_DIR_PLUGIN_TW . "tests/squelettes/"); $notes = charger_fonction("notes", "inc"); function propre_notes($texte) { global $notes; $texte = propre($texte); if ($r = $notes(array())) { $texte .= "<div class='notes'>{$r}</div>"; $notes('', 'depiler'); $notes('', 'empiler'); } return $texte; } // // hop ! on y va //
foreach ($array1 as $key => $value){ // create new key in $array, if it is empty or not an array if (!isset($array[$key]) || (isset($array[$key]) && !is_array($array[$key]))) $array[$key] = array(); // overwrite the value in the base array if (is_array($value)) $value = recurse($array[$key], $value); $array[$key] = $value; } return $array; } // handle the arguments, merge one by one $args = func_get_args(); $array = $args[0]; if (!is_array($array)) return $array; for ($i = 1; $i < count($args); $i++) if (is_array($args[$i])) $array = recurse($array, $args[$i]); return $array; } } if (defined('_BONUX_STYLE')) _chemin(_DIR_PLUGIN_SPIP_BONUX."spip21/"); ?>
<?php if (!isset($GLOBALS['z_blocs'])) { $GLOBALS['z_blocs'] = array('content', 'aside', 'extra', 'head', 'head_js', 'header', 'footer', 'breadcrumb'); } define('_ZENGARDEN_FILTRE_THEMES', 'spipr'); define('_ALBUMS_INSERT_HEAD_CSS', false); if (defined('_SPIPR_AUTH_DEMO') ? _SPIPR_AUTH_DEMO : (isset($GLOBALS['visiteur_session']['statut']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo' and $GLOBALS['visiteur_session']['webmestre'] == 'oui')) { _chemin(_DIR_PLUGIN_SPIPR_DIST . "demo/"); }
include_spip('inc/cookie'); spip_setcookie('spip_zengarden_theme', $_COOKIE['spip_zengarden_theme'] = '', -1); } } elseif (isset($GLOBALS['meta']['zengarden_switcher']) or defined('_ZEN_VAR_THEME')) { if (!is_null($arg = _request('var_theme'))) { include_spip('inc/cookie'); if ($arg) { spip_setcookie('spip_zengarden_theme', $_COOKIE['spip_zengarden_theme'] = $arg); } else { spip_setcookie('spip_zengarden_theme', $_COOKIE['spip_zengarden_theme'] = '', -1); } } } // ajouter le theme au path if ((isset($_COOKIE['spip_zengarden_theme']) and $t = $_COOKIE['spip_zengarden_theme'] or isset($GLOBALS['meta']['zengarden_theme']) and $t = $GLOBALS['meta']['zengarden_theme']) and is_dir(_DIR_RACINE . $t)) { _chemin(_DIR_RACINE . $t); $GLOBALS['marqueur'] = (isset($GLOBALS['marqueur']) ? $GLOBALS['marqueur'] : "") . ":theme-{$t}"; // @experimental : sauver le nom du repertoire theme utilise // a defaut de connaitre le vrai prefixe if (!defined('NOM_THEME')) { define('NOM_THEME', basename($t)); } } // @experimental : balise #THEME qui retourne le nom du theme selectionne function balise_THEME_dist($p) { $p->code = champ_sql('theme', $p, "(defined('NOM_THEME') ? NOM_THEME : '')"); return $p; } } /**
/** * Transformer du LESS en CSS * Peut prendre en entree * - un fichier .css ou .less : * [(#CHEMIN{messtyles.less.css}|less_css)] * la sortie est un chemin vers un fichier CSS * - des styles inline, * pour appliquer dans une feulle less calculee : * #FILTRE{less_css} * la sortie est du style inline * * @param string $source * @return string */ function less_css($source) { static $chemin = null; // Si on n'importe pas, est-ce un fichier ? if (!preg_match(',[\\s{}],', $source) and preg_match(',\\.(less|css)$,i', $source, $r) and file_exists($source)) { static $done = array(); // ne pas essayer de compiler deux fois le meme fichier dans le meme hit // si on a echoue une fois, on echouera pareil if (isset($done[$source])) { return $done[$source]; } if (is_null($chemin)) { $chemin = _chemin(); $chemin = md5(serialize($chemin)); } // url de base de la source // qui se trouvera dans la css car url absolue des images // il faut que la css generee en depende $url_base_source = protocole_implicite(url_absolue($source)); $f = basename($source, $r[0]); $f = sous_repertoire(_DIR_VAR, 'cache-less') . preg_replace(",(.*?)(_rtl|_ltr)?\$,", "\\1-cssify-" . substr(md5("{$url_base_source}-lesscss-{$chemin}"), 0, 7) . "\\2", $f, 1) . '.css'; # si la feuille compilee est plus recente que la feuille source # l'utiliser sans rien faire, sauf si recalcul explicite $changed = false; if (@filemtime($f) < @filemtime($source)) { $changed = true; } if (!$changed and (!defined('_VAR_MODE') or _VAR_MODE != 'recalcul')) { return $f; } if (!lire_fichier($source, $contenu)) { return $source; } # compiler le LESS si besoin (ne pas generer une erreur si source vide if (!$contenu) { $contenu = "/* Source {$source} : vide */\n"; } else { $contenu = lesscss_compile($contenu, array('file' => $source)); } // si erreur de compilation on renvoit un commentaire, et il y a deja eu un log if (!$contenu) { $contenu = "/* Compilation {$source} : vide */\n"; } # passer la css en url absolue # plus la peine : le parser CSS resoud les ULRs absolues des images en meme temps qu'il les cherche dans le path # $contenu = urls_absolues_css($contenu, $url_base_source); // ecrire le fichier destination, en cas d'echec renvoyer la source // on ecrit sur un fichier if (ecrire_fichier($f . ".last", $contenu, true)) { if ($changed or md5_file($f) != md5_file($f . ".last")) { @copy($f . ".last", $f); // eviter que PHP ne reserve le vieux timestamp if (version_compare(PHP_VERSION, '5.3.0') >= 0) { clearstatcache(true, $f); } else { clearstatcache(); } } return $done[$source] = $f; } else { return $done[$source] = $source; } } $source = lesscss_compile($source); if (!$source) { return "/* Erreur compilation LESS : cf less.log */"; } else { return $source; } }
function couteau_suisse_porte_plume_lien_classe_vers_icone($flux){ global $cs_metas_pipelines; if (isset($cs_metas_pipelines['porte_plume_lien_classe_vers_icone'])) { $flux['couteau_suisse_drop'] = 'couteau-19.png'; // chemin des icones-typo de couleur _chemin(sous_repertoire(_DIR_VAR, 'couteau-suisse')); eval($cs_metas_pipelines['porte_plume_lien_classe_vers_icone']); } return $flux; }
define('_DIR_PLUGIN_FORUM', _DIR_PLUGINS_DIST . 'forum/'); define('_DIR_PLUGIN_JQUERYUI', _DIR_PLUGINS_DIST . 'jquery_ui/'); define('_DIR_PLUGIN_MEDIABOX', _DIR_PLUGINS_DIST . 'mediabox/'); define('_DIR_PLUGIN_MOTS', _DIR_PLUGINS_DIST . 'mots/'); define('_DIR_PLUGIN_ORGANISEUR', _DIR_PLUGINS_DIST . 'organiseur/'); define('_DIR_PLUGIN_PETITIONS', _DIR_PLUGINS_DIST . 'petitions/'); define('_DIR_PLUGIN_PLAN', _DIR_PLUGINS_DIST . 'plan/'); define('_DIR_PLUGIN_PORTE_PLUME', _DIR_PLUGINS_DIST . 'porte_plume/'); define('_DIR_PLUGIN_REVISIONS', _DIR_PLUGINS_DIST . 'revisions/'); define('_DIR_PLUGIN_SAFEHTML', _DIR_PLUGINS_DIST . 'safehtml/'); define('_DIR_PLUGIN_SITES', _DIR_PLUGINS_DIST . 'sites/'); define('_DIR_PLUGIN_SQUELETTES_PAR_RUBRIQUE', _DIR_PLUGINS_DIST . 'squelettes_par_rubrique/'); define('_DIR_PLUGIN_STATS', _DIR_PLUGINS_DIST . 'statistiques/'); define('_DIR_PLUGIN_SVP', _DIR_PLUGINS_DIST . 'svp/'); define('_DIR_PLUGIN_TW', _DIR_PLUGINS_DIST . 'textwheel/'); define('_DIR_PLUGIN_URLS', _DIR_PLUGINS_DIST . 'urls_etendues/'); define('_DIR_PLUGIN_VERTEBRES', _DIR_PLUGINS_DIST . 'vertebres/'); define('_DIR_PLUGIN_AHUNTSIC', _DIR_PLUGINS . 'auto/ahuntsic/v2.0.3/'); define('_DIR_PLUGIN_ITERATEURS', _DIR_RESTREINT . 'procure:iterateurs/'); define('_DIR_PLUGIN_QUEUE', _DIR_RESTREINT . 'procure:queue/'); define('_DIR_PLUGIN_JQUERY', _DIR_RESTREINT . 'procure:jquery/'); define('_DIR_PLUGIN_PHP', _DIR_RESTREINT . 'procure:php/'); define('_DIR_PLUGIN_BREVES', _DIR_PLUGINS_DIST . 'breves/'); define('_DIR_PLUGIN_COMPRESSEUR', _DIR_PLUGINS_DIST . 'compresseur/'); define('_DIR_PLUGIN_MEDIAS', _DIR_PLUGINS_DIST . 'medias/'); if (_DIR_RESTREINT) { _chemin(implode(':', array(_DIR_PLUGIN_MEDIAS, _DIR_PLUGIN_MEDIAS . 'squelettes/', _DIR_PLUGIN_COMPRESSEUR, _DIR_PLUGIN_BREVES, _DIR_PLUGIN_AHUNTSIC, _DIR_PLUGIN_VERTEBRES, _DIR_PLUGIN_URLS, _DIR_PLUGIN_TW, _DIR_PLUGIN_SVP, _DIR_PLUGIN_STATS, _DIR_PLUGIN_SQUELETTES_PAR_RUBRIQUE, _DIR_PLUGIN_SITES, _DIR_PLUGIN_SAFEHTML, _DIR_PLUGIN_REVISIONS, _DIR_PLUGIN_PORTE_PLUME, _DIR_PLUGIN_PLAN, _DIR_PLUGIN_PETITIONS, _DIR_PLUGIN_ORGANISEUR, _DIR_PLUGIN_MOTS, _DIR_PLUGIN_MEDIABOX, _DIR_PLUGIN_JQUERYUI, _DIR_PLUGIN_JQUERYUI . 'prive/', _DIR_PLUGIN_FORUM, _DIR_PLUGIN_IMAGES, _DIR_PLUGIN_DUMP, _DIR_PLUGIN_COMPAGNON))); } else { _chemin(implode(':', array(_DIR_PLUGIN_MEDIAS, _DIR_PLUGIN_MEDIAS . 'squelettes/', _DIR_PLUGIN_COMPRESSEUR, _DIR_PLUGIN_BREVES, _DIR_PLUGIN_AHUNTSIC, _DIR_PLUGIN_VERTEBRES, _DIR_PLUGIN_URLS, _DIR_PLUGIN_TW, _DIR_PLUGIN_SVP, _DIR_PLUGIN_STATS, _DIR_PLUGIN_SQUELETTES_PAR_RUBRIQUE, _DIR_PLUGIN_SITES, _DIR_PLUGIN_SAFEHTML, _DIR_PLUGIN_REVISIONS, _DIR_PLUGIN_PORTE_PLUME, _DIR_PLUGIN_PLAN, _DIR_PLUGIN_PETITIONS, _DIR_PLUGIN_ORGANISEUR, _DIR_PLUGIN_MOTS, _DIR_PLUGIN_MEDIABOX, _DIR_PLUGIN_JQUERYUI, _DIR_PLUGIN_JQUERYUI . 'prive/', _DIR_PLUGIN_FORUM, _DIR_PLUGIN_IMAGES, _DIR_PLUGIN_DUMP, _DIR_PLUGIN_COMPAGNON))); } }