Verzeichnisstruktur phpBB-3.1.0
- Veröffentlicht
- 27.10.2014
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
DirectoryResource.php
001 <?php
002
003 /*
004 * This file is part of the Symfony package.
005 *
006 * (c) Fabien Potencier <fabien@symfony.com>
007 *
008 * For the full copyright and license information, please view the LICENSE
009 * file that was distributed with this source code.
010 */
011
012 namespace Symfony\Component\Config\Resource;
013
014 /**
015 * DirectoryResource represents a resources stored in a subdirectory tree.
016 *
017 * @author Fabien Potencier <fabien@symfony.com>
018 */
019 class DirectoryResource implements ResourceInterface, \Serializable
020 {
021 private $resource;
022 private $pattern;
023
024 /**
025 * Constructor.
026 *
027 * @param string $resource The file path to the resource
028 * @param string $pattern A pattern to restrict monitored files
029 */
030 public function __construct($resource, $pattern = null)
031 {
032 $this->resource = $resource;
033 $this->pattern = $pattern;
034 }
035
036 /**
037 * Returns a string representation of the Resource.
038 *
039 * @return string A string representation of the Resource
040 */
041 public function __toString()
042 {
043 return (string) $this->resource;
044 }
045
046 /**
047 * Returns the resource tied to this Resource.
048 *
049 * @return mixed The resource
050 */
051 public function getResource()
052 {
053 return $this->resource;
054 }
055
056 public function getPattern()
057 {
058 return $this->pattern;
059 }
060
061 /**
062 * Returns true if the resource has not been updated since the given timestamp.
063 *
064 * @param int $timestamp The last time the resource was loaded
065 *
066 * @return bool true if the resource has not been updated, false otherwise
067 */
068 public function isFresh($timestamp)
069 {
070 if (!is_dir($this->resource)) {
071 return false;
072 }
073
074 $newestMTime = filemtime($this->resource);
075 foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->resource), \RecursiveIteratorIterator::SELF_FIRST) as $file) {
076 // if regex filtering is enabled only check matching files
077 if ($this->pattern && $file->isFile() && !preg_match($this->pattern, $file->getBasename())) {
078 continue;
079 }
080
081 // always monitor directories for changes, except the .. entries
082 // (otherwise deleted files wouldn't get detected)
083 if ($file->isDir() && '/..' === substr($file, -3)) {
084 continue;
085 }
086
087 $newestMTime = max($file->getMTime(), $newestMTime);
088 }
089
090 return $newestMTime < $timestamp;
091 }
092
093 public function serialize()
094 {
095 return serialize(array($this->resource, $this->pattern));
096 }
097
098 public function unserialize($serialized)
099 {
100 list($this->resource, $this->pattern) = unserialize($serialized);
101 }
102 }
103