From 5f1b190ba9e2d3781c203c13740b361abe38ffcd Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 21 Apr 2015 13:25:42 -0600 Subject: [PATCH 1/3] rework to only check .md files --- system/src/Grav/Common/Filesystem/Folder.php | 9 +++------ .../Filesystem/RecursiveFileFilterIterator.php | 13 ++++++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/system/src/Grav/Common/Filesystem/Folder.php b/system/src/Grav/Common/Filesystem/Folder.php index 3d30d12eb..c839d02aa 100644 --- a/system/src/Grav/Common/Filesystem/Folder.php +++ b/system/src/Grav/Common/Filesystem/Folder.php @@ -44,15 +44,12 @@ abstract class Folder { $last_modified = 0; - $dirItr = new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS); - $filterItr = new RecursiveFileFilterIterator($dirItr); - $itr = new \RecursiveIteratorIterator($filterItr, \RecursiveIteratorIterator::SELF_FIRST); + $dirItr = new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS); + $itrItr = new \RecursiveIteratorIterator($dirItr, \RecursiveIteratorIterator::SELF_FIRST); + $itr = new RecursiveFileFilterIterator($itrItr); /** @var \RecursiveDirectoryIterator $file */ foreach ($itr as $file) { - if ($file->isDir()) { - continue; - } $file_modified = $file->getMTime(); if ($file_modified > $last_modified) { $last_modified = $file_modified; diff --git a/system/src/Grav/Common/Filesystem/RecursiveFileFilterIterator.php b/system/src/Grav/Common/Filesystem/RecursiveFileFilterIterator.php index be9667c3b..dcf1c640d 100644 --- a/system/src/Grav/Common/Filesystem/RecursiveFileFilterIterator.php +++ b/system/src/Grav/Common/Filesystem/RecursiveFileFilterIterator.php @@ -1,13 +1,16 @@ current()->getFilename(), self::$FILTERS, true); + // Ensure only valid file names are skipped + $current = $this->current()->getFilename(); + $accept = Utils::endsWith($current, '.md'); + + return $accept; } } From 1c1bf86e9a093530332f7133c0816727ccd4a4f4 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 21 Apr 2015 13:55:53 -0600 Subject: [PATCH 2/3] more optimizations.. using regexiterator now --- system/src/Grav/Common/Filesystem/Folder.php | 8 +++++--- .../Filesystem/RecursiveFileFilterIterator.php | 16 ---------------- 2 files changed, 5 insertions(+), 19 deletions(-) delete mode 100644 system/src/Grav/Common/Filesystem/RecursiveFileFilterIterator.php diff --git a/system/src/Grav/Common/Filesystem/Folder.php b/system/src/Grav/Common/Filesystem/Folder.php index c839d02aa..69725018b 100644 --- a/system/src/Grav/Common/Filesystem/Folder.php +++ b/system/src/Grav/Common/Filesystem/Folder.php @@ -42,14 +42,16 @@ abstract class Folder */ public static function lastModifiedFile($path) { + // pipe separated list of extensions to search for + $extensions = 'md|yaml'; $last_modified = 0; $dirItr = new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS); - $itrItr = new \RecursiveIteratorIterator($dirItr, \RecursiveIteratorIterator::SELF_FIRST); - $itr = new RecursiveFileFilterIterator($itrItr); + $itrDir = new \RecursiveIteratorIterator($dirItr, \RecursiveIteratorIterator::SELF_FIRST); + $itr = new \RegexIterator($itrDir, '/^.+\.'.$extensions.'$/i'); /** @var \RecursiveDirectoryIterator $file */ - foreach ($itr as $file) { + foreach ($itr as $filepath => $file) { $file_modified = $file->getMTime(); if ($file_modified > $last_modified) { $last_modified = $file_modified; diff --git a/system/src/Grav/Common/Filesystem/RecursiveFileFilterIterator.php b/system/src/Grav/Common/Filesystem/RecursiveFileFilterIterator.php deleted file mode 100644 index dcf1c640d..000000000 --- a/system/src/Grav/Common/Filesystem/RecursiveFileFilterIterator.php +++ /dev/null @@ -1,16 +0,0 @@ -current()->getFilename(); - $accept = Utils::endsWith($current, '.md'); - - return $accept; - } -} From c368fbcda9dd8f79224df6810afe2b0d09b7df9c Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 21 Apr 2015 14:08:00 -0600 Subject: [PATCH 3/3] tweaks --- system/src/Grav/Common/Filesystem/Folder.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/system/src/Grav/Common/Filesystem/Folder.php b/system/src/Grav/Common/Filesystem/Folder.php index 69725018b..9355038b8 100644 --- a/system/src/Grav/Common/Filesystem/Folder.php +++ b/system/src/Grav/Common/Filesystem/Folder.php @@ -42,13 +42,13 @@ abstract class Folder */ public static function lastModifiedFile($path) { - // pipe separated list of extensions to search for + // pipe separated list of extensions to search for changes with $extensions = 'md|yaml'; $last_modified = 0; $dirItr = new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS); - $itrDir = new \RecursiveIteratorIterator($dirItr, \RecursiveIteratorIterator::SELF_FIRST); - $itr = new \RegexIterator($itrDir, '/^.+\.'.$extensions.'$/i'); + $itrItr = new \RecursiveIteratorIterator($dirItr, \RecursiveIteratorIterator::SELF_FIRST); + $itr = new \RegexIterator($itrItr, '/^.+\.'.$extensions.'$/i'); /** @var \RecursiveDirectoryIterator $file */ foreach ($itr as $filepath => $file) {