Add Pico::getFilesGlob() method

This commit is contained in:
Daniel Rudolf 2016-12-12 20:36:46 +01:00
parent 586d792c32
commit eec1d625c4
No known key found for this signature in database
GPG key ID: A061F02CD8DE4538

View file

@ -650,13 +650,9 @@ class Pico
}
// merge $config of config/*.config.php files
$configFiles = glob($this->getConfigDir() . '?*.config.php', GLOB_MARK);
if ($configFiles) {
foreach ($configFiles as $configFile) {
if (substr($configFile, -1) !== '/') {
$this->config += $includeClosure($configFile);
}
}
$configFiles = $this->getFilesGlob($this->getConfigDir() . '?*.config.php');
foreach ($configFiles as $configFile) {
$this->config += $includeClosure($configFile);
}
// merge default config
@ -1856,6 +1852,39 @@ class Pico
return $result;
}
/**
* Returns all files in a directory matching a libc glob() pattern
*
* @see https://secure.php.net/manual/en/function.glob.php
* PHP's glob() function
* @param string $pattern the pattern to search for; see PHP's glob()
* function for details
* @param int $order specify whether and how files should be sorted;
* use Pico::SORT_ASC for a alphabetical ascending order (this is the
* default behaviour), Pico::SORT_DESC for a descending order or
* Pico::SORT_NONE to leave the result unsorted
* @return array list of found files
*/
public function getFilesGlob($pattern, $order = self::SORT_ASC)
{
$result = array();
$sortFlag = ($order === self::SORT_NONE) ? GLOB_NOSORT : 0;
$files = glob($pattern, GLOB_MARK | $sortFlag);
if ($files) {
foreach ($files as $file) {
// exclude dirs and files ending with a ~ (vim/nano backup) or # (emacs backup)
if (in_array(substr($file, -1), array('/', '~', '#'))) {
continue;
}
$result[] = $file;
}
}
return ($order === self::SORT_DESC) ? array_reverse($result) : $result;
}
/**
* Makes a relative path absolute to Pico's root dir
*