function configuration_type_urls_dist() { if ($GLOBALS['type_urls'] != 'page') // fixe par mes_options return ''; $dispo = array(); foreach (find_all_in_path('urls/', '\w+\.php$', array()) as $f) { $r = basename($f, '.php'); if ($r == 'index' OR strncmp('generer_',$r,8)==0) continue; include_once $f; $exemple = 'URLS_' . strtoupper($r) . '_EXEMPLE'; $exemple = defined($exemple) ? constant($exemple) : '?'; $dispo[$r] = "<em>$r</em> — <tt>" . $exemple . '</tt>'; } $res = "<p class='verdana2'>" . _T('texte_type_urls') . "</p>" . "<div class='verdana2'>" . afficher_choix('type_urls', $GLOBALS['meta']['type_urls'], $dispo) . "</div>" . "<p><em>" . _T('texte_type_urls_attention', array('htaccess' => '<tt>.htaccess</tt>')) . "</em></p>"; $res = '<br />'.debut_cadre_trait_couleur("", true, "", _T('titre_type_urls').aide("confurl")) . ajax_action_post('configurer', 'type_urls', 'config_fonctions', '', $res) . fin_cadre_trait_couleur(true); return ajax_action_greffe("configurer-type_urls", '', $res); }
/** * Liste toutes les vérifications possibles * * @param string $repertoire * Dans quel repertoire chercher les yaml. * * @return Retourne un tableau listant les vérifications et leurs options */ function verifier_lister_disponibles($repertoire='verifier'){ static $verifications = array(); if (!isset($verifications[$repertoire])) { $verifications[$repertoire] = array(); $liste = find_all_in_path("$repertoire/", '.+[.]yaml$'); if (count($liste)){ foreach ($liste as $fichier=>$chemin){ $type = preg_replace(',[.]yaml$,i', '', $fichier); $dossier = str_replace($fichier, '', $chemin); // On ne garde que les vérifications qui ont bien la fonction ! if (charger_fonction($type, $repertoire, true) and ( is_array($verif = verifier_charger_infos($type, $repertoire)) ) ) { $verifications[$repertoire][$type] = $verif; } } } } return $verifications[$repertoire]; }
function selecteur_lister_objets($whitelist = array(), $blacklist = array()) { $liste = find_all_in_path('formulaires/selecteur/', 'hierarchie-[\\w]+[.]html$'); $objets_selectionner = array(); foreach ($liste as $fichier => $chemin) { $objets_selectionner[] = preg_replace('/^hierarchie-([\\w]+)[.]html$/', '$1', $fichier); } // S'il y a une whitelist on ne garde que ce qui est dedans if (!empty($whitelist)) { $whitelist = array_map('table_objet', $whitelist); $objets_selectionner = array_intersect($objets_selectionner, $whitelist); } // On supprime ce qui est dans la blacklist $blacklist = array_map('table_objet', $blacklist); // On enlève toujours la racine $blacklist[] = 'racine'; $objets_selectionner = array_diff($objets_selectionner, $blacklist); // Ensuite on cherche ce qu'on doit afficher : au moins ceux qu'on peut sélectionner $objets_afficher = $objets_selectionner; // Il faut alors chercher d'éventuels parents obligatoires : // lister-trucs-bidules.html => on doit afficher des "trucs" pour trouver des "bidules" $liste = find_all_in_path('formulaires/selecteur/', 'lister-[\\w]+-[\\w]+[.]html$'); foreach ($liste as $fichier => $chemin) { preg_match('/^lister-([\\w]+)-([\\w]+)[.]html$/', $fichier, $captures); $parent = $captures[1]; $type = $captures[2]; // Si le type fait partie de ce qu'on veut sélectionner alors on ajoute le parent à l'affichage if (in_array($type, $objets_selectionner)) { $objets_afficher[] = $parent; } } $objets = array('selectionner' => array_unique($objets_selectionner), 'afficher' => array_unique($objets_afficher)); return $objets; }
function cextras_types_formulaires(){ $types = array(); // saisies de ce plugin $saisies = find_all_in_path('extra-saisies/','.*\.html$'); $noms = array(); foreach($saisies as $saisie) { $type = basename($saisie,'.html'); $noms['interne/'.$type] = _T('cextras:type', array('type' => $type)); } $types[_T('iextras:saisies_champs_extras')] = $noms; if (_CHAMPS_EXTRAS_SAISIES_EXTERNES) { // plugin saisies (attention au chemin "/saisies/saisies/_base.html") $saisies = find_all_in_path('saisies/','/([^_/]{1}[^/]*)\.html$'); $noms = array(); foreach($saisies as $saisie) { $type = basename($saisie,'.html'); $noms['externe/'.$type] = _T('cextras:type', array('type' => $type)); } $types[_T('iextras:saisies_saisies')] = $noms; } return $types; }
function snippets_liste_imports($table){ $pattern = $table; if (substr($table,0,5)=="spip_") $table = substr($table,5); $pattern = ".*[.]xml$"; $snippets = find_all_in_path("snippets/$table/",$pattern); return $snippets; }
function type_urls_lister() { $dispo = array(); foreach (find_all_in_path('urls/', '\\w+\\.php$', array()) as $f) { $r = basename($f, '.php'); if ($r == 'index' or strncmp('generer_', $r, 8) == 0 or $r == "standard") { continue; } include_once $f; $exemple = 'URLS_' . strtoupper($r) . '_EXEMPLE'; $exemple = defined($exemple) ? constant($exemple) : '?'; $dispo[_T("urls:titre_type_{$r}")] = array($r, _T("urls:titre_type_{$r}"), $exemple); } ksort($dispo); return $dispo; }
/** * Initialisation des listes de langues * * Initialise les métas : * - langues_proposees : liste des traductions disponibles * - langue_site : langue par défaut du site * * Lorsque ces métas n'existent pas encore (c'est à dire à l'installation), * elles sont calculées en obtenant la liste des langues * dans les fichiers de lang * * @return void **/ function init_langues() { // liste des langues dans les meta, sauf a l'install $all_langs = @$GLOBALS['meta']['langues_proposees']; $tout = array(); if (!$all_langs) { // trouver tous les modules lang/spip_xx.php $modules = find_all_in_path("lang/", "/spip_([a-z_]+)\\.php[3]?\$"); foreach ($modules as $name => $path) { if (preg_match(',^spip_([a-z_]+)\\.php[3]?$,', $name, $regs)) { $tout[] = $regs[1]; } } sort($tout); $tout = join(',', $tout); // Si les langues n'ont pas change, ne rien faire if ($tout != $all_langs) { $GLOBALS['meta']['langues_proposees'] = $tout; include_spip('inc/meta'); ecrire_meta('langues_proposees', $tout); } } if (!isset($GLOBALS['meta']['langue_site'])) { // Initialisation : le francais si dispo, sinon la premiere langue trouvee $GLOBALS['meta']['langue_site'] = $tout = (!$all_langs or strpos(',' . _LANGUE_PAR_DEFAUT . ',', ",{$all_langs},") !== false) ? _LANGUE_PAR_DEFAUT : substr($all_langs, 0, strpos($all_langs, ',')); ecrire_meta('langue_site', $tout); } }
/** * Retourne la liste des barres d'outils connues * * @return array/false : tableau des noms de barres trouvees */ function barre_outils_liste(){ static $sets = -1; if ($sets !== -1) return $sets; // on recupere l'ensemble des barres d'outils connues if (!$sets = find_all_in_path('barre_outils/','.*[.]php') or !is_array($sets)) { spip_log("[Scandale] Porte Plume ne trouve pas de barre d'outils !"); $sets = false; return $sets; } foreach($sets as $fichier=>$adresse) { $sets[$fichier] = substr($fichier,0,-4); // juste le nom } return $sets; }
function info_progression_etape($en_cours, $phase, $dir, $erreur = false) { //$en_cours = _request('etape')?_request('etape'):""; $liste = find_all_in_path($dir, $phase . '(([0-9])+|fin)[.]php$'); $debut = 1; $etat = "ok"; $last = count($liste); // $texte_etat = array('ok'=>'OK','encours'=>_T('en_cours'),'todo'=>_T('todo')); $intitule_etat["etape_"][1] = typo(_T('info_connexion_base_donnee')); $intitule_etat["etape_"][2] = typo(_T('menu_aide_installation_choix_base')); $intitule_etat["etape_"][3] = typo(_T('info_informations_personnelles')); $intitule_etat["etape_"][4] = typo(_T('info_derniere_etape')); $intitule_etat["etape_ldap"][1] = typo(_T('titre_connexion_ldap')); $intitule_etat["etape_ldap"][2] = typo(_T('titre_connexion_ldap')); $intitule_etat["etape_ldap"][3] = typo(_T('info_chemin_acces_1')); $intitule_etat["etape_ldap"][4] = typo(_T('info_reglage_ldap')); $intitule_etat["etape_ldap"][5] = typo(_T('info_ldap_ok')); // $aff_etapes = "<span id='etapes'>"; $aff_etapes = "<ul id='infos_etapes' class='infos_{$phase}{$en_cours}'>"; foreach ($liste as $etape => $fichier) { if ($debut < $last) { if ($debut == $en_cours && $erreur) { $class = "on erreur"; } else { if ($debut == $en_cours) { $class = "on"; } else { if ($debut > $en_cours) { $class = "prochains"; } else { $class = "valides"; } } } $aff_etapes .= "<li class='{$class}'><div class='fond'>"; $aff_etapes .= $debut == $en_cours ? "<strong>" : ''; $aff_etapes .= "<em>" . _T('etape') . " </em><span class='numero_etape'>{$debut}</span><em> : </em>"; $aff_etapes .= $intitule_etat["{$phase}"][$debut]; $aff_etapes .= $debut == $en_cours ? "</strong>" : ''; $aff_etapes .= "</div></li>"; } $debut++; } $aff_etapes .= "</ul>"; $aff_etapes .= "<br class='nettoyeur' />\n"; return $aff_etapes; }
function lister_configurer($exclure = array()) { return array(); // lister les pages de config deja dans les menus $deja = array(); foreach ($exclure as $id => $b) { $url = $b['url'] ? $b['url'] : $id; if (!$b['url'] or !isset($exclure[$url])) { if (strncmp($url, 'configurer_', 11) == 0) { $deja[$url] = $b; } elseif ($b['url'] == 'configurer' and preg_match(',cfg=([a-z0-9_]+),i', $b['args'], $match)) { $deja["configurer_" . $match[1]] = $b; } } } $exclure = $exclure + $deja; $icone_defaut = "images/configuration-16.png"; $liste = array(); $skels = array(); $forms = array(); // trouver toutes les pages configurer_xxx de l'espace prive // et construire un tableau des entrees qui ne sont pas dans $deja $pages = find_all_in_path("prive/squelettes/contenu/", "configurer_.*[.]" . _EXTENSION_SQUELETTES . '$'); foreach ($pages as $page) { $configurer = basename($page, "." . _EXTENSION_SQUELETTES); if (!isset($exclure[$configurer])) { $liste[$configurer] = array('parent' => 'bando_configuration', 'url' => $configurer, 'titre' => _T("configurer:{$configurer}_titre"), 'icone' => find_in_theme($i = "images/{$configurer}-16.png") ? $i : $icone_defaut); } $skels[$configurer] = $page; } // analyser la liste des $skels pour voir les #FORMULAIRE_CONFIGURER_ inclus foreach ($skels as $file) { $forms = array_merge($forms, lister_formulaires_configurer($file)); } $forms = array_flip($forms); // trouver tous les formulaires/configurer_ // et construire un tableau des entrees $pages = find_all_in_path("formulaires/", "configurer_.*[.]" . _EXTENSION_SQUELETTES . '$'); foreach ($pages as $page) { $configurer = basename($page, "." . _EXTENSION_SQUELETTES); if (!isset($forms[$configurer]) and !isset($liste[$configurer]) and !isset($exclure[$configurer])) { $liste[$configurer] = array('parent' => 'bando_configuration', 'url' => 'configurer', 'args' => 'cfg=' . substr($configurer, 11), 'titre' => _T("configurer:{$configurer}_titre"), 'icone' => find_in_theme($i = "images/{$configurer}-16.png") ? $i : $icone_defaut); } } return $liste; }
function tous_les_fonds($dir,$pattern){ $liste = find_all_in_path($dir,$pattern); foreach($liste as $k=>$v) $liste[$k] = $dir . basename($v,'.html'); return $liste; }
/** * Liste tous les groupes de saisies configurables (ayant une description). * * @return array Un tableau listant des saisies et leurs options */ function saisies_groupes_lister_disponibles($saisies_repertoire = "saisies") { static $saisies = null; if (is_null($saisies)) { $saisies = array(); $liste = find_all_in_path("$saisies_repertoire/", '.+[.]yaml$'); if (count($liste)) { foreach ($liste as $fichier => $chemin) { $type_saisie = preg_replace(',[.]yaml$,i', '', $fichier); $dossier = str_replace($fichier, '', $chemin); // On ne garde que les saisies qui ont bien le HTML avec ! if (is_array($saisie = saisies_charger_infos($type_saisie,$saisies_repertoire))) { $saisies[$type_saisie] = $saisie; } } } } return $saisies; }
/** * Liste toutes les saisies configurables (ayant une description) * * @return array Un tableau listant des saisies et leurs options */ function saisies_lister_disponibles() { static $saisies = null; if (is_null($saisies)) { $saisies = array(); $liste = find_all_in_path('saisies/', '.+[.]yaml$'); if (count($liste)) { foreach ($liste as $fichier => $chemin) { $type_saisie = preg_replace(',[.]yaml$,i', '', $fichier); $dossier = str_replace($fichier, '', $chemin); // On ne garde que les saisies qui ont bien le HTML avec ! if (file_exists("{$dossier}{$type_saisie}.html") and is_array($saisie = saisies_charger_infos($type_saisie))) { $saisies[$type_saisie] = $saisie; } } } } return $saisies; }
/** * Lister les compositions disponibles : toutes ou pour un type donne * Si informer est a false, on ne charge pas les infos du xml * * @param string $type * @param bool $informer * @return array */ function compositions_lister_disponibles($type, $informer=true){ include_spip('inc/compositions'); $type_match = ""; if (strlen($type)){ $type = objet_type($type); // securite $type_match = $type; } else { // _ pour le cas des groupe_mots $type_match = "[a-z0-9_]+"; } // rechercher les skel du type article-truc.html // truc ne doit pas commencer par un chiffre pour eviter de confondre avec article-12.html $match = "($type_match)("._COMPOSITIONS_MATCH.")?[.]html$"; // lister les compositions disponibles $liste = find_all_in_path(compositions_chemin(),$match); $res = array(); if (count($liste)){ foreach($liste as $s) { $base = preg_replace(',[.]html$,i','',$s); if (preg_match(",$match,ims",basename($s),$regs) AND ($composition = !$informer OR $composition = compositions_charger_infos($base))) { $regs = array_pad($regs, 4, null); $res[$regs[1]][$regs[3]] = $composition; // retenir les skels qui ont un xml associe } } } // Pipeline compositions_lister_disponibles $res = pipeline('compositions_lister_disponibles',array( 'args'=>array('type' => $type,'informer' => $informer), 'data'=> $res ) ); return $res; }
/** * Recupere la liste des config de barres TinyMCE disponibles * => liste des squelettes 'fonds/tinymce_XXX.html' */ function tinymce_listerfondsconfig() { $liste_squelettes = find_all_in_path('', 'fonds/tinymce/(.*)', true); $liste_fonds = array(); foreach ($liste_squelettes as $name => $path) { $liste_fonds[] = str_replace('.html', '', $name); } return $liste_fonds; }
function get_liste_fonts() { return array_keys(find_all_in_path('polices/', '\w+\.ttf$')); }
'nom' => 'select_max_auteurs', 'format' => _format_NOMBRE, 'defaut' => 30, 'code:%s<>30' => "define('_SPIP_SELECT_MAX_AUTEURS', %s);" )); // Recuperer tous les outils (et leurs variables) de la forme outils/toto_config.xml foreach (find_all_in_path('outils/', '\w+_config\.xml$') as $f) { add_outils_xml($f); } // Recuperer tous les outils de la forme outils/monoutil_config.php // y compris les lames perso dont on met le nom en italiques global $outils; foreach (find_all_in_path('outils/', '\w+_config\.php$') as $f) if(preg_match(',^([^.]*)_config$,', basename($f, '.php'),$regs)){ if($outil = charger_fonction($regs[0], 'outils')) $outil(preg_match(',couteau_suisse/outils/,', $f)); /*else { // compatibilite ... include $f; if(function_exists($cs_temp=$regs[1].'_add_outil')) { $cs_temp = $cs_temp(); $cs_temp['id'] = $regs[1]; add_outil($cs_temp); } }*/ if(isset($outils[$regs[1]]) && strpos($f, '/couteau_suisse/outils/'.$regs[1])===false) $outils[$regs[1]]['perso'] = 1; }
function spiplistes_liste_des_patrons ($chemin) { $liste_patrons = find_all_in_path($chemin, "[.]html$"); $result = array(); foreach($liste_patrons as $key => $value) { if ( !preg_match("=\.[a-z][a-z]\.html$=", $value) && !preg_match("=_texte\.html$=", $value) && !preg_match("=_texte\.[a-z][a-z]\.html$=", $value) ) { $result[] = basename($value, ".html"); } } sort($result); return($result); }