Add useful functions to FileCollection class

This commit is contained in:
Matias Griese
2017-05-09 21:40:35 +03:00
parent 5f00e1f8ee
commit 10b4a90501

View File

@@ -25,6 +25,11 @@ class FileCollection extends AbstractLazyCollection
const INCLUDE_FOLDERS = 2;
const RECURSIVE = 4;
/**
* @var string
*/
protected $path;
/**
* @var \RecursiveDirectoryIterator|RecursiveUniformResourceIterator
*/
@@ -56,25 +61,50 @@ class FileCollection extends AbstractLazyCollection
*/
public function __construct($path, $flags = null)
{
$this->setIterator($path);
$this->path = $path;
$this->flags = (int) ($flags ?: FileCollection::INCLUDE_FILES | FileCollection::INCLUDE_FOLDERS | FileCollection::RECURSIVE);
$this->setIterator();
$this->setFilter();
$this->setObjectBuilder();
$this->setNestingLimit();
}
public function setIterator($path)
/**
* @return string
*/
public function getPath()
{
return $this->path;
}
/**
* @return int
*/
public function getFlags()
{
return $this->flags;
}
/**
* @return int
*/
public function getNestingLimit()
{
return $this->nestingLimit;
}
public function setIterator()
{
$iteratorFlags = \RecursiveDirectoryIterator::SKIP_DOTS + \FilesystemIterator::UNIX_PATHS
+ \FilesystemIterator::CURRENT_AS_SELF + \FilesystemIterator::FOLLOW_SYMLINKS;
if (strpos($path, '://')) {
if (strpos($this->path, '://')) {
/** @var UniformResourceLocator $locator */
$locator = Grav::instance()['locator'];
$this->iterator = $locator->getRecursiveIterator($path, $iteratorFlags);
$this->iterator = $locator->getRecursiveIterator($this->path, $iteratorFlags);
} else {
$this->iterator = new \RecursiveDirectoryIterator($path, $iteratorFlags);
$this->iterator = new \RecursiveDirectoryIterator($this->path, $iteratorFlags);
}
}