function box_lister_skins()
{
    $skins = array('none' => array('nom' => _T('mediabox:label_aucun_style')));
    $maxfiles = 1000;
    $liste_fichiers = array();
    $recurs = array();
    foreach (creer_chemin() as $d) {
        $f = $d . "colorbox/";
        if (@is_dir($f)) {
            $liste = preg_files($f, "colorbox[.]css\$", $maxfiles - count($liste_fichiers), $recurs);
            foreach ($liste as $chemin) {
                $nom = substr(dirname($chemin), strlen($f));
                // ne prendre que les fichiers pas deja trouves
                // car find_in_path prend le premier qu'il trouve,
                // les autres sont donc masques
                if (!isset($liste_fichiers[$nom])) {
                    $liste_fichiers[$nom] = $chemin;
                }
            }
        }
    }
    foreach ($liste_fichiers as $short => $fullpath) {
        $skins[$short] = array('nom' => basename($short));
        if (file_exists($f = dirname($fullpath) . "/vignette.jpg")) {
            $skins[$short]['img'] = $f;
        }
    }
    return $skins;
}
示例#2
0
文件: cfg.php 项目: pcrest/eludis
function liste_cfg($dir = '')
{
    // Faire la liste des éléments qui ont un cfg ; ca peut etre des plugins
    // mais aussi des squelettes ou n'importe quoi
    $liste = array();
    // tous les repertoires
    if (!$dir) {
        foreach (creer_chemin() as $dir) {
            if (basename($dir) != 'cfg') {
                $liste = array_merge($liste, preg_files($dir . 'fonds/', '/cfg_.*html$'));
            }
        }
        // ou seulement celui demande
    } else {
        $dir = rtrim(rtrim($dir), '/') . '/';
        $liste = preg_files($dir . 'fonds/', '/cfg_.*html$');
    }
    if ($liste) {
        $l = array();
        foreach ($liste as $cfg) {
            $fonds = substr(basename($cfg, '.html'), 4);
            $l[$fonds] = $cfg;
        }
        ksort($l);
        return $l;
    }
}
示例#3
0
/**
 * Rechercher tous les lang/file dans le path
 * qui seront ensuite chargés dans l'ordre du path
 *
 * Version dédiée et optimisée pour cet usage de find_in_path
 *
 * @see find_in_path()
 *
 * @staticvar array $dirs
 *
 * @param string $file
 *     Nom du fichier cherché, tel que `mots_fr.php`
 * @param string $dirname
 *     Nom du répertoire de recherche
 * @return array
 *     Liste des fichiers de langue trouvés, dans l'ordre des chemins
 */
function find_langs_in_path($file, $dirname = 'lang')
{
    static $dirs = array();
    $liste = array();
    foreach (creer_chemin() as $dir) {
        if (!isset($dirs[$a = $dir . $dirname])) {
            $dirs[$a] = is_dir($a) || !$a;
        }
        if ($dirs[$a]) {
            if (is_readable($a .= $file)) {
                $liste[] = $a;
            }
        }
    }
    return array_reverse($liste);
}
function autoriser_squelette_voir_dist($faire, $type, $file, $qui, $opt) {
	if (!preg_match(",[.]("._SE_EXTENSIONS.")$,ims",$file)
		OR strpos(substr($file,strlen(_DIR_RACINE)),'../')!==FALSE
		OR substr($file,0,1)=='/')
		return false;
  if (!autoriser('skeleditor','','',$qui))
		return false;

	$dirs = creer_chemin();
	foreach($dirs as $d){
		if (strncmp($d,$file,strlen($d))==0)
			return true;
	}

  return false;
}
示例#5
0
/**
 * Lister les install de presta
 * @return array
 */
function bank_lister_instal_prestas()
{
    $liste_prestas = array();
    $recurs = array();
    $maxfiles = 10000;
    $dir = 'presta/';
    // Parcourir le chemin
    foreach (creer_chemin() as $d) {
        $f = $d . $dir;
        if (@is_dir($f)) {
            $liste = preg_files($f, "/install[.]php\$", $maxfiles - count($liste_prestas), $recurs);
            foreach ($liste as $chemin) {
                $liste_prestas[] = dirname(substr($chemin, strlen($f)));
            }
        }
    }
    return $liste_prestas;
}
示例#6
0
文件: bank.php 项目: nursit/bank
/**
 * Retourner la liste des prestataires connus
 */
function bank_lister_prestas()
{
    static $prestas = null;
    if (is_array($prestas)) {
        return $prestas;
    }
    $prestas = array();
    $regexp = "(abonnement|acte)\\.php\$";
    foreach (creer_chemin() as $d) {
        $f = $d . "presta/";
        if (@is_dir($f)) {
            $all = preg_files($f, $regexp);
            foreach ($all as $a) {
                $a = explode("/presta/", $a);
                $a = end($a);
                $a = explode("/", $a);
                if (count($a) == 3 and $a[1] = "payer") {
                    $prestas[reset($a)] = true;
                }
            }
        }
    }
    ksort($prestas);
    // a la fin
    foreach (array("cheque", "virement", "simu") as $m) {
        if (isset($prestas[$m])) {
            unset($prestas[$m]);
            $prestas[$m] = true;
        }
    }
    if (isset($prestas['gratuit'])) {
        unset($prestas['gratuit']);
    }
    $prestas = array_keys($prestas);
    return $prestas;
}
示例#7
0
/**
 * Trouve tous les fichiers du path correspondants à un pattern
 *
 * Pour un nom de fichier donné, ne retourne que le premier qui sera trouvé
 * par un `find_in_path()`
 *
 * @api
 * @uses creer_chemin()
 * @uses preg_files()
 *
 * @param string $dir
 * @param string $pattern
 * @param bool $recurs
 * @return array
 */
function find_all_in_path($dir, $pattern, $recurs = false)
{
    $liste_fichiers = array();
    $maxfiles = 10000;
    // Parcourir le chemin
    foreach (creer_chemin() as $d) {
        $f = $d . $dir;
        if (@is_dir($f)) {
            $liste = preg_files($f, $pattern, $maxfiles - count($liste_fichiers), $recurs === true ? array() : $recurs);
            foreach ($liste as $chemin) {
                $nom = basename($chemin);
                // ne prendre que les fichiers pas deja trouves
                // car find_in_path prend le premier qu'il trouve,
                // les autres sont donc masques
                if (!isset($liste_fichiers[$nom])) {
                    $liste_fichiers[$nom] = $chemin;
                }
            }
        }
    }
    return $liste_fichiers;
}
示例#8
0
/**
 * Faire la liste des librairies disponibles
 * 
 * @return array
 *     Tableau (nom de la lib => repertoire , ...)
 */
function liste_librairies()
{
    $libs = array();
    foreach (array_reverse(creer_chemin()) as $d) {
        if (is_dir($dir = $d . 'lib/') and $t = @opendir($dir)) {
            while (($f = readdir($t)) !== false) {
                if ($f[0] != '.' and is_dir("{$dir}/{$f}")) {
                    $libs[$f] = $dir;
                }
            }
        }
    }
    return $libs;
}
示例#9
0
/**
 * retrouver le chemin dont il vient pour extraire la racine
 * permet aussi de s'assurer que le fichier qu'on copie provient uniquement
 * du path, et pas d'autre part sur le serveur
 *
 * @param string $source
 * @return string
 */
function skeleditor_nom_copie($source){
	$file = "";
	// cas particulier des squelettes obtenus par scaffolding
	if (strncmp($source,_DIR_CACHE."scaffold/",$l=strlen(_DIR_CACHE."scaffold/"))==0)
		return substr($source,$l);
	$spip_path = creer_chemin();
	$spip_path = array_diff($spip_path, array(_DIR_RACINE));
	$spip_path[] = _DIR_RACINE;
	foreach($spip_path as $dir) {
		if (strncmp($source,$dir,strlen($dir))==0){
			$file = substr($source,strlen($dir));
			break;
		}
	}
	return $file;
}
/**
 * Faire un find_in_path en cherchant un fichier .less ou .css
 * et en prenant le plus prioritaire des deux
 * ce qui permet de surcharger un .css avec un .less ou le contraire
 * Si ils sont dans le meme repertoire, c'est le .css qui est prioritaire,
 * par soucis de rapidite
 *
 * @param string $less_file
 * @param string $css_file
 * @return string
 */
function lesscss_find_less_or_css_in_path($less_file, $css_file)
{
    $l = find_in_path($less_file);
    $c = $f = trouver_fond($css_file);
    if (!$c) {
        $c = find_in_path($css_file);
    }
    if (!$l) {
        // passer le host en contexte pour differencier les CSS en fonction du HOST car il est inscrit en url absolue
        // dans les chemins d'urls
        return $f ? produire_fond_statique($css_file, array('format' => 'css', 'host' => $_SERVER['HTTP_HOST'])) : $c;
    } elseif (!$c) {
        return $l;
    }
    // on a un less et un css en concurence
    // prioriser en fonction de leur position dans le path
    $path = creer_chemin();
    foreach ($path as $dir) {
        // css prioritaire
        if (strncmp($c, $dir . $css_file, strlen($dir . $css_file)) == 0) {
            // passer le host en contexte pour differencier les CSS en fonction du HOST car il est inscrit en url absolue
            // dans les chemins d'urls
            return $f ? produire_fond_statique($css_file, array('format' => 'css', 'host' => $_SERVER['HTTP_HOST'])) : $c;
        }
        if ($l == $dir . $less_file) {
            return $l;
        }
    }
    // on ne doit jamais arriver la !
    spip_log('Resolution chemin less/css impossible', _LOG_CRITIQUE);
    debug_print_backtrace();
    die('Erreur fatale, je suis perdu');
}
示例#11
0
文件: plugin.php 项目: rhertzog/lcs
function plugins_liste_librairies() {
	$libs = array();
	foreach (array_reverse(creer_chemin()) as $d) {
		if (is_dir($dir = $d.'lib/')
		AND $t = @opendir($dir)) {
			while (($f = readdir($t)) !== false) {
				if ($f[0] != '.'
				AND is_dir("$dir/$f"))
					$libs[$f] = $dir;
			}
		}
	}
	return $libs;
}