Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
0bf16497
Commit
0bf16497
authored
Aug 19, 2014
by
Klimov Paul
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Convert 'caseless' option into 'caseSensitive' option at `yii\helpers\BaseFileHelper::findFiles()`
parent
6461523a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
18 additions
and
15 deletions
+18
-15
CHANGELOG.md
framework/CHANGELOG.md
+1
-1
BaseFileHelper.php
framework/helpers/BaseFileHelper.php
+14
-11
FileHelperTest.php
tests/unit/framework/helpers/FileHelperTest.php
+3
-3
No files found.
framework/CHANGELOG.md
View file @
0bf16497
...
...
@@ -185,7 +185,7 @@ Yii Framework 2 Change Log
-
Enh #4636: Added
`yii\web\Response::setDownloadHeaders()`
(pawzar)
-
Enh #4644: Added
`yii\db\Schema::createColumnSchema()`
to be able to customize column schema used (mcd-php)
-
Enh #4656: HtmlPurifier helper config can now be a closure to change the purifier config object after it was created (Alex-Code)
-
Enh #4062: Added 'case
less
' option to
`yii\helpers\BaseFileHelper::findFiles()`
(klimov-paul)
-
Enh #4062: Added 'case
Sensitive
' option to
`yii\helpers\BaseFileHelper::findFiles()`
(klimov-paul)
-
Enh #4691: Encoding on
`ActiveForm`
and
`ActiveField`
validation errors is now configurable (Alex-Code)
-
Enh #4740: Added
`yii\web\Session::addFlash()`
(restyler)
-
Enh: Added support for using sub-queries when building a DB query with
`IN`
condition (qiangxue)
...
...
framework/helpers/BaseFileHelper.php
View file @
0bf16497
...
...
@@ -26,7 +26,7 @@ class BaseFileHelper
const
PATTERN_ENDSWITH
=
4
;
const
PATTERN_MUSTBEDIR
=
8
;
const
PATTERN_NEGATIVE
=
16
;
const
PATTERN_CASE
LESS
=
32
;
const
PATTERN_CASE
_INSENSITIVE
=
32
;
/**
...
...
@@ -228,7 +228,7 @@ class BaseFileHelper
* apply to file paths only. For example, '/a/b' matches all file paths ending with '/a/b';
* and '.svn/' matches directory paths ending with '.svn'. Note, the '/' characters in a pattern matches
* both '/' and '\' in the paths.
* - case
less: boolean, whether patterns specified at "only" or "except" should be case insensitive. Defaults to fals
e.
* - case
Sensitive: boolean, whether patterns specified at "only" or "except" should be case sensitive. Defaults to tru
e.
* - recursive: boolean, whether the files under the subdirectories should also be copied. Defaults to true.
* - beforeCopy: callback, a PHP callback that is called before copying each sub-directory or file.
* If the callback returns false, the copy operation for the sub-directory or file will be cancelled.
...
...
@@ -346,7 +346,7 @@ class BaseFileHelper
* - only: array, list of patterns that the file paths should match if they are to be returned. Directory paths are not checked against them.
* Same pattern matching rules as in the "except" option are used.
* If a file path matches a pattern in both "only" and "except", it will NOT be returned.
* - case
less: boolean, whether patterns specified at "only" or "except" should be case insensitive. Defaults to fals
e.
* - case
Sensitive: boolean, whether patterns specified at "only" or "except" should be case sensitive. Defaults to tru
e.
* - recursive: boolean, whether the files under the subdirectories should also be looked for. Defaults to true.
* @return array files found under the directory. The file list is sorted.
* @throws InvalidParamException if the dir is invalid.
...
...
@@ -478,7 +478,7 @@ class BaseFileHelper
}
$fnmatchFlags
=
0
;
if
(
$flags
&
self
::
PATTERN_CASE
LESS
)
{
if
(
$flags
&
self
::
PATTERN_CASE
_INSENSITIVE
)
{
$fnmatchFlags
|=
FNM_CASEFOLD
;
}
...
...
@@ -532,7 +532,7 @@ class BaseFileHelper
}
$fnmatchFlags
=
FNM_PATHNAME
;
if
(
$flags
&
self
::
PATTERN_CASE
LESS
)
{
if
(
$flags
&
self
::
PATTERN_CASE
_INSENSITIVE
)
{
$fnmatchFlags
|=
FNM_CASEFOLD
;
}
...
...
@@ -584,11 +584,11 @@ class BaseFileHelper
/**
* Processes the pattern, stripping special characters like / and ! from the beginning and settings flags instead.
* @param string $pattern
* @param boolean $case
Less
* @param boolean $case
Sensitive
* @throws \yii\base\InvalidParamException
* @return array with keys: (string) pattern, (int) flags, (int|boolean)firstWildcard
*/
private
static
function
parseExcludePattern
(
$pattern
,
$case
Less
)
private
static
function
parseExcludePattern
(
$pattern
,
$case
Sensitive
)
{
if
(
!
is_string
(
$pattern
))
{
throw
new
InvalidParamException
(
'Exclude/include pattern must be a string.'
);
...
...
@@ -600,8 +600,8 @@ class BaseFileHelper
'firstWildcard'
=>
false
,
];
if
(
$caseLess
)
{
$result
[
'flags'
]
|=
self
::
PATTERN_CASE
LESS
;
if
(
!
$caseSensitive
)
{
$result
[
'flags'
]
|=
self
::
PATTERN_CASE
_INSENSITIVE
;
}
if
(
!
isset
(
$pattern
[
0
]))
{
...
...
@@ -651,17 +651,20 @@ class BaseFileHelper
*/
private
static
function
normalizeOptions
(
array
$options
)
{
if
(
!
array_key_exists
(
'caseSensitive'
,
$options
))
{
$options
[
'caseSensitive'
]
=
true
;
}
if
(
isset
(
$options
[
'except'
]))
{
foreach
(
$options
[
'except'
]
as
$key
=>
$value
)
{
if
(
is_string
(
$value
))
{
$options
[
'except'
][
$key
]
=
self
::
parseExcludePattern
(
$value
,
!
empty
(
$options
[
'caseless'
])
);
$options
[
'except'
][
$key
]
=
self
::
parseExcludePattern
(
$value
,
$options
[
'caseSensitive'
]
);
}
}
}
if
(
isset
(
$options
[
'only'
]))
{
foreach
(
$options
[
'only'
]
as
$key
=>
$value
)
{
if
(
is_string
(
$value
))
{
$options
[
'only'
][
$key
]
=
self
::
parseExcludePattern
(
$value
,
!
empty
(
$options
[
'caseless'
])
);
$options
[
'only'
][
$key
]
=
self
::
parseExcludePattern
(
$value
,
$options
[
'caseSensitive'
]
);
}
}
}
...
...
tests/unit/framework/helpers/FileHelperTest.php
View file @
0bf16497
...
...
@@ -410,7 +410,7 @@ class FileHelperTest extends TestCase
/**
* @depends testFindFilesExclude
*/
public
function
testFindFilesCase
Less
()
public
function
testFindFilesCase
Sensitive
()
{
$dirName
=
'test_dir'
;
$this
->
createFileStructure
([
...
...
@@ -424,14 +424,14 @@ class FileHelperTest extends TestCase
$options
=
[
'except'
=>
[
'*.txt'
],
'case
less'
=>
tru
e
'case
Sensitive'
=>
fals
e
];
$foundFiles
=
FileHelper
::
findFiles
(
$dirName
,
$options
);
$this
->
assertCount
(
0
,
$foundFiles
);
$options
=
[
'only'
=>
[
'*.txt'
],
'case
less'
=>
tru
e
'case
Sensitive'
=>
fals
e
];
$foundFiles
=
FileHelper
::
findFiles
(
$dirName
,
$options
);
$this
->
assertCount
(
2
,
$foundFiles
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment