Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/CarnetApp/CarnetNextcloud.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/nelexa/zip/src/PhpZip/Util/Iterator/IgnoreFilesRecursiveFilterIterator.php')
-rw-r--r--vendor/nelexa/zip/src/PhpZip/Util/Iterator/IgnoreFilesRecursiveFilterIterator.php70
1 files changed, 70 insertions, 0 deletions
diff --git a/vendor/nelexa/zip/src/PhpZip/Util/Iterator/IgnoreFilesRecursiveFilterIterator.php b/vendor/nelexa/zip/src/PhpZip/Util/Iterator/IgnoreFilesRecursiveFilterIterator.php
new file mode 100644
index 0000000..7781576
--- /dev/null
+++ b/vendor/nelexa/zip/src/PhpZip/Util/Iterator/IgnoreFilesRecursiveFilterIterator.php
@@ -0,0 +1,70 @@
+<?php
+
+namespace PhpZip\Util\Iterator;
+
+use PhpZip\Util\StringUtil;
+
+/**
+ * Recursive iterator for ignore files.
+ *
+ * @author Ne-Lexa alexey@nelexa.ru
+ * @license MIT
+ */
+class IgnoreFilesRecursiveFilterIterator extends \RecursiveFilterIterator
+{
+
+ /**
+ * Ignore list files
+ *
+ * @var array
+ */
+ private $ignoreFiles = ['..'];
+
+ /**
+ * @param \RecursiveIterator $iterator
+ * @param array $ignoreFiles
+ */
+ public function __construct(\RecursiveIterator $iterator, array $ignoreFiles)
+ {
+ parent::__construct($iterator);
+ $this->ignoreFiles = array_merge($this->ignoreFiles, $ignoreFiles);
+ }
+
+ /**
+ * Check whether the current element of the iterator is acceptable
+ * @link http://php.net/manual/en/filteriterator.accept.php
+ * @return bool true if the current element is acceptable, otherwise false.
+ * @since 5.1.0
+ */
+ public function accept()
+ {
+ /**
+ * @var \SplFileInfo $fileInfo
+ */
+ $fileInfo = $this->current();
+ $pathname = str_replace('\\', '/', $fileInfo->getPathname());
+ foreach ($this->ignoreFiles as $ignoreFile) {
+ // handler dir and sub dir
+ if ($fileInfo->isDir()
+ && $ignoreFile[strlen($ignoreFile) - 1] === '/'
+ && StringUtil::endsWith($pathname, substr($ignoreFile, 0, -1))
+ ) {
+ return false;
+ }
+
+ // handler filename
+ if (StringUtil::endsWith($pathname, $ignoreFile)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * @return IgnoreFilesRecursiveFilterIterator
+ */
+ public function getChildren()
+ {
+ return new self($this->getInnerIterator()->getChildren(), $this->ignoreFiles);
+ }
+}