Version 1
[yaffs-website] / vendor / alchemy / zippy / src / Archive / Member.php
1 <?php
2
3 /*
4  * This file is part of Zippy.
5  *
6  * (c) Alchemy <info@alchemy.fr>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Alchemy\Zippy\Archive;
13
14 use Alchemy\Zippy\Adapter\AdapterInterface;
15 use Alchemy\Zippy\Adapter\Resource\ResourceInterface;
16
17 /**
18  * Represents a member of an archive.
19  */
20 class Member implements MemberInterface
21 {
22     /**
23      * The location of the file
24      *
25      * @var string
26      */
27     private $location;
28
29     /**
30      * Tells whether the archive member is a directory or not
31      *
32      * @var bool
33      */
34     private $isDir;
35
36     /**
37      * The uncompressed size of the file
38      *
39      * @var int
40      */
41     private $size;
42
43     /**
44      * The last modified date of the file
45      *
46      * @var \DateTime
47      */
48     private $lastModifiedDate;
49
50     /**
51      * The resource to the actual archive
52      *
53      * @var string
54      */
55     private $resource;
56
57     /**
58      * An adapter
59      *
60      * @var AdapterInterface
61      */
62     private $adapter;
63
64     /**
65      * Constructor
66      *
67      * @param ResourceInterface $resource The path of the archive which contain the member
68      * @param AdapterInterface $adapter The archive adapter interface
69      * @param string $location The path of the archive member
70      * @param int $fileSize The uncompressed file size
71      * @param \DateTime $lastModifiedDate The last modified date of the member
72      * @param bool $isDir Tells whether the member is a directory or not
73      */
74     public function __construct(
75         ResourceInterface $resource,
76         AdapterInterface $adapter,
77         $location,
78         $fileSize,
79         \DateTime $lastModifiedDate,
80         $isDir
81     ) {
82         $this->resource = $resource;
83         $this->adapter = $adapter;
84         $this->location = $location;
85         $this->isDir = $isDir;
86         $this->size = $fileSize;
87         $this->lastModifiedDate = $lastModifiedDate;
88     }
89
90     /**
91      * {@inheritdoc}
92      */
93     public function getLocation()
94     {
95         return $this->location;
96     }
97
98     /**
99      * {@inheritdoc}
100      */
101     public function isDir()
102     {
103         return $this->isDir;
104     }
105
106     /**
107      * {@inheritdoc}
108      */
109     public function getLastModifiedDate()
110     {
111         return $this->lastModifiedDate;
112     }
113
114     /**
115      * {@inheritdoc}
116      */
117     public function getSize()
118     {
119         return $this->size;
120     }
121
122     /**
123      * {@inheritdoc}
124      */
125     public function __toString()
126     {
127         return $this->location;
128     }
129
130     /**
131      * {@inheritdoc}
132      */
133     public function extract($to = null, $overwrite = false)
134     {
135         $this->adapter->extractMembers($this->resource, $this->location, $to, (bool) $overwrite);
136
137         return new \SplFileInfo(sprintf('%s%s', rtrim(null === $to ? getcwd() : $to, '/'), $this->location));
138     }
139
140     /**
141      * @inheritdoc
142      * */
143     public function getResource()
144     {
145         return $this->resource;
146     }
147 }