Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5978599
FileList.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
FileList.php
View Options
<?php
/**
* Class to retrieve a filtered file list.
*
* @author Juliette Reinders Folmer <phpcs_nospam@adviesenzo.nl>
* @copyright 2019 Juliette Reinders Folmer. All rights reserved.
* @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
*/
namespace
PHP_CodeSniffer\Tests
;
use
RecursiveDirectoryIterator
;
use
RecursiveIteratorIterator
;
use
RegexIterator
;
class
FileList
{
/**
* The path to the project root directory.
*
* @var string
*/
protected
$rootPath
;
/**
* Recursive directory iterator.
*
* @var \DirectoryIterator
*/
public
$fileIterator
;
/**
* Base regex to use if no filter regex is provided.
*
* Matches based on:
* - File path starts with the project root (replacement done in constructor).
* - Don't match .git/ files.
* - Don't match dot files, i.e. "." or "..".
* - Don't match backup files.
* - Match everything else in a case-insensitive manner.
*
* @var string
*/
private
$baseRegex
=
'`^%s(?!
\.
git/)(?!(.*/)?
\.
+$)(?!.*
\.
(bak|orig)).*$`Dix'
;
/**
* Constructor.
*
* @param string $directory The directory to examine.
* @param string $rootPath Path to the project root.
* @param string $filter PCRE regular expression to filter the file list with.
*/
public
function
__construct
(
$directory
,
$rootPath
=
''
,
$filter
=
''
)
{
$this
->
rootPath
=
$rootPath
;
$directory
=
new
RecursiveDirectoryIterator
(
$directory
,
RecursiveDirectoryIterator
::
UNIX_PATHS
);
$flattened
=
new
RecursiveIteratorIterator
(
$directory
,
RecursiveIteratorIterator
::
LEAVES_ONLY
,
RecursiveIteratorIterator
::
CATCH_GET_CHILD
);
if
(
$filter
===
''
)
{
$filter
=
sprintf
(
$this
->
baseRegex
,
preg_quote
(
$this
->
rootPath
));
}
$this
->
fileIterator
=
new
RegexIterator
(
$flattened
,
$filter
);
return
$this
;
}
//end __construct()
/**
* Retrieve the filtered file list as an array.
*
* @return array
*/
public
function
getList
()
{
$fileList
=
[];
foreach
(
$this
->
fileIterator
as
$file
)
{
$fileList
[]
=
str_replace
(
$this
->
rootPath
,
''
,
$file
);
}
return
$fileList
;
}
//end getList()
}
//end class
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Oct 3, 20:28 (4 d, 11 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
d0/e9/9a6f3f605cf05c599f1a1cff2ddc
Default Alt Text
FileList.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment