Skip to content

Commit cc65581

Browse files
authored
Merge pull request #190 from turbo124/master
Improve performance of permission checking
2 parents 17695c8 + 4ddd423 commit cc65581

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

src/Models/UpdateExecutor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public function setBasePath(string $path): self
5252
*/
5353
public function run(Release $release): bool
5454
{
55-
if (checkPermissions((new Finder())->in($this->basePath))) {
55+
if (checkPermissions($this->basePath)) {
5656
$releaseFolder = createFolderFromFile($release->getStoragePath());
5757

5858
// Move all directories first

src/helpers.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,19 @@ function dirsIntersect(array $directory, array $excludedDirs): bool
2828
*
2929
* @return bool
3030
*/
31-
function checkPermissions(Finder $directory): bool
31+
function checkPermissions(string $directory): bool
3232
{
33-
$checkPermission = true;
33+
$directoryIterator = new \RecursiveDirectoryIterator($directory);
3434

35-
collect($directory->getIterator())->each(function (SplFileInfo $file) use (&$checkPermission) {
36-
if ($file->isWritable() === false) {
37-
$checkPermission = false;
35+
foreach(new \RecursiveIteratorIterator($directoryIterator) as $file) {
36+
37+
if($file->isFile() && !$file->isWritable()){
38+
return false;
3839
}
39-
});
4040

41-
return $checkPermission;
41+
}
42+
43+
return true;
4244
}
4345
}
4446

0 commit comments

Comments
 (0)