Ignore .meta.php
authorTim Düsterhus <timwolla@arcor.de>
Thu, 9 Feb 2012 17:05:11 +0000 (18:05 +0100)
committerTim Düsterhus <timwolla@arcor.de>
Thu, 9 Feb 2012 17:05:11 +0000 (18:05 +0100)
wcfsetup/install/files/lib/acp/page/CacheListPage.class.php

index e046a95ef289045e9df1d116e0ce9a17e4a2ce6b..89180ae405d3783037f81e5e90006376fa76b1a8 100755 (executable)
@@ -1,13 +1,16 @@
 <?php
 namespace wcf\acp\page;
+use wcf\system\menu\acp\ACPMenu;
 use wcf\page\AbstractPage;
+use wcf\system\database\util\PreparedStatementConditionBuilder;
 use wcf\system\cache\source\MemcacheAdapter;
 use wcf\system\cache\CacheHandler;
-use wcf\system\database\util\PreparedStatementConditionBuilder;
-use wcf\system\menu\acp\ACPMenu;
+use wcf\system\exception\SystemException;
 use wcf\system\package\PackageDependencyHandler;
+use wcf\system\Regex;
 use wcf\system\WCF;
 use wcf\util\FileUtil;
+use wcf\util\DirectoryUtil;
 
 /**
  * Shows a list of all cache resources.
@@ -72,25 +75,31 @@ class CacheListPage extends AbstractPage {
                );
                
                $_this = $this;
-               $readFileCache = function($cacheDir) use ($_this) {
+               $readFileCache = function($cacheDir, Regex $ignore = null) use ($_this) {
                        $_this->caches[$cacheDir] = array();
                        
                        // get files in cache directory
-                       $files = glob($cacheDir.'/*.php');
+                       try {
+                               $directoryUtil = DirectoryUtil::getInstance($cacheDir);
+                       }
+                       catch(SystemException $e) {
+                               return;
+                       }
+                       $files = $directoryUtil->getFileObjects(SORT_ASC, new Regex('\.php$'));
                        // get additional file information
                        if (is_array($files)) {
                                foreach ($files as $file) {
-                                       $filesize = filesize($file);
+                                       if ($ignore !== null) if ($ignore->match($file)) continue;
                                        $_this->caches[$cacheDir][] = array(
-                                               'filename' => basename($file),
-                                               'filesize' => $filesize,
-                                               'mtime' => filemtime($file),
-                                               'perm' => substr(sprintf('%o', fileperms($file)), -3),
-                                               'writable' => is_writable($file)
+                                               'filename' => $file->getBasename(),
+                                               'filesize' => $file->getSize(),
+                                               'mtime' => $file->getMtime(),
+                                               'perm' => substr(sprintf('%o', $file->getPerms()), -3),
+                                               'writable' => $file->isWritable()
                                        );
                                        
                                        $_this->cacheData['files']++;
-                                       $_this->cacheData['size'] += $filesize;
+                                       $_this->cacheData['size'] += $file->getSize();
                                }
                        }
                };
@@ -176,8 +185,8 @@ class CacheListPage extends AbstractPage {
                }
                
                $readFileCache(WCF_DIR.'language');
-               $readFileCache(WCF_DIR.'templates/compiled');
-               $readFileCache(WCF_DIR.'acp/templates/compiled');
+               $readFileCache(WCF_DIR.'templates/compiled', new Regex('\.meta\.php$'));
+               $readFileCache(WCF_DIR.'acp/templates/compiled', new Regex('\.meta\.php$'));
        }
        
        /**