Version 1
[yaffs-website] / vendor / alchemy / zippy / src / Archive / Member.php
diff --git a/vendor/alchemy/zippy/src/Archive/Member.php b/vendor/alchemy/zippy/src/Archive/Member.php
new file mode 100644 (file)
index 0000000..7ae2adb
--- /dev/null
@@ -0,0 +1,147 @@
+<?php
+
+/*
+ * This file is part of Zippy.
+ *
+ * (c) Alchemy <info@alchemy.fr>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Alchemy\Zippy\Archive;
+
+use Alchemy\Zippy\Adapter\AdapterInterface;
+use Alchemy\Zippy\Adapter\Resource\ResourceInterface;
+
+/**
+ * Represents a member of an archive.
+ */
+class Member implements MemberInterface
+{
+    /**
+     * The location of the file
+     *
+     * @var string
+     */
+    private $location;
+
+    /**
+     * Tells whether the archive member is a directory or not
+     *
+     * @var bool
+     */
+    private $isDir;
+
+    /**
+     * The uncompressed size of the file
+     *
+     * @var int
+     */
+    private $size;
+
+    /**
+     * The last modified date of the file
+     *
+     * @var \DateTime
+     */
+    private $lastModifiedDate;
+
+    /**
+     * The resource to the actual archive
+     *
+     * @var string
+     */
+    private $resource;
+
+    /**
+     * An adapter
+     *
+     * @var AdapterInterface
+     */
+    private $adapter;
+
+    /**
+     * Constructor
+     *
+     * @param ResourceInterface $resource The path of the archive which contain the member
+     * @param AdapterInterface $adapter The archive adapter interface
+     * @param string $location The path of the archive member
+     * @param int $fileSize The uncompressed file size
+     * @param \DateTime $lastModifiedDate The last modified date of the member
+     * @param bool $isDir Tells whether the member is a directory or not
+     */
+    public function __construct(
+        ResourceInterface $resource,
+        AdapterInterface $adapter,
+        $location,
+        $fileSize,
+        \DateTime $lastModifiedDate,
+        $isDir
+    ) {
+        $this->resource = $resource;
+        $this->adapter = $adapter;
+        $this->location = $location;
+        $this->isDir = $isDir;
+        $this->size = $fileSize;
+        $this->lastModifiedDate = $lastModifiedDate;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getLocation()
+    {
+        return $this->location;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isDir()
+    {
+        return $this->isDir;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getLastModifiedDate()
+    {
+        return $this->lastModifiedDate;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getSize()
+    {
+        return $this->size;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function __toString()
+    {
+        return $this->location;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function extract($to = null, $overwrite = false)
+    {
+        $this->adapter->extractMembers($this->resource, $this->location, $to, (bool) $overwrite);
+
+        return new \SplFileInfo(sprintf('%s%s', rtrim(null === $to ? getcwd() : $to, '/'), $this->location));
+    }
+
+    /**
+     * @inheritdoc
+     * */
+    public function getResource()
+    {
+        return $this->resource;
+    }
+}