Chris@0
|
1 <?php
|
Chris@0
|
2 /**
|
Chris@0
|
3 * Zend Framework (http://framework.zend.com/)
|
Chris@0
|
4 *
|
Chris@0
|
5 * @link http://github.com/zendframework/zf2 for the canonical source repository
|
Chris@0
|
6 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
Chris@0
|
7 * @license http://framework.zend.com/license/new-bsd New BSD License
|
Chris@0
|
8 */
|
Chris@0
|
9
|
Chris@0
|
10 namespace Zend\Feed\Writer;
|
Chris@0
|
11
|
Chris@0
|
12 use DateTime;
|
Chris@17
|
13 use DateTimeInterface;
|
Chris@0
|
14 use Zend\Feed\Uri;
|
Chris@0
|
15
|
Chris@0
|
16 /**
|
Chris@0
|
17 */
|
Chris@0
|
18 class Deleted
|
Chris@0
|
19 {
|
Chris@0
|
20 /**
|
Chris@0
|
21 * Internal array containing all data associated with this entry or item.
|
Chris@0
|
22 *
|
Chris@0
|
23 * @var array
|
Chris@0
|
24 */
|
Chris@0
|
25 protected $data = [];
|
Chris@0
|
26
|
Chris@0
|
27 /**
|
Chris@0
|
28 * Holds the value "atom" or "rss" depending on the feed type set when
|
Chris@0
|
29 * when last exported.
|
Chris@0
|
30 *
|
Chris@0
|
31 * @var string
|
Chris@0
|
32 */
|
Chris@0
|
33 protected $type = null;
|
Chris@0
|
34
|
Chris@0
|
35 /**
|
Chris@0
|
36 * Set the feed character encoding
|
Chris@0
|
37 *
|
Chris@0
|
38 * @param $encoding
|
Chris@0
|
39 * @throws Exception\InvalidArgumentException
|
Chris@0
|
40 * @return string|null
|
Chris@0
|
41 * @return Deleted
|
Chris@0
|
42 */
|
Chris@0
|
43 public function setEncoding($encoding)
|
Chris@0
|
44 {
|
Chris@12
|
45 if (empty($encoding) || ! is_string($encoding)) {
|
Chris@0
|
46 throw new Exception\InvalidArgumentException('Invalid parameter: parameter must be a non-empty string');
|
Chris@0
|
47 }
|
Chris@0
|
48 $this->data['encoding'] = $encoding;
|
Chris@0
|
49
|
Chris@0
|
50 return $this;
|
Chris@0
|
51 }
|
Chris@0
|
52
|
Chris@0
|
53 /**
|
Chris@0
|
54 * Get the feed character encoding
|
Chris@0
|
55 *
|
Chris@0
|
56 * @return string|null
|
Chris@0
|
57 */
|
Chris@0
|
58 public function getEncoding()
|
Chris@0
|
59 {
|
Chris@12
|
60 if (! array_key_exists('encoding', $this->data)) {
|
Chris@0
|
61 return 'UTF-8';
|
Chris@0
|
62 }
|
Chris@0
|
63 return $this->data['encoding'];
|
Chris@0
|
64 }
|
Chris@0
|
65
|
Chris@0
|
66 /**
|
Chris@0
|
67 * Unset a specific data point
|
Chris@0
|
68 *
|
Chris@0
|
69 * @param string $name
|
Chris@0
|
70 * @return Deleted
|
Chris@0
|
71 */
|
Chris@0
|
72 public function remove($name)
|
Chris@0
|
73 {
|
Chris@0
|
74 if (isset($this->data[$name])) {
|
Chris@0
|
75 unset($this->data[$name]);
|
Chris@0
|
76 }
|
Chris@0
|
77
|
Chris@0
|
78 return $this;
|
Chris@0
|
79 }
|
Chris@0
|
80
|
Chris@0
|
81 /**
|
Chris@0
|
82 * Set the current feed type being exported to "rss" or "atom". This allows
|
Chris@0
|
83 * other objects to gracefully choose whether to execute or not, depending
|
Chris@0
|
84 * on their appropriateness for the current type, e.g. renderers.
|
Chris@0
|
85 *
|
Chris@0
|
86 * @param string $type
|
Chris@0
|
87 * @return Deleted
|
Chris@0
|
88 */
|
Chris@0
|
89 public function setType($type)
|
Chris@0
|
90 {
|
Chris@0
|
91 $this->type = $type;
|
Chris@0
|
92 return $this;
|
Chris@0
|
93 }
|
Chris@0
|
94
|
Chris@0
|
95 /**
|
Chris@0
|
96 * Retrieve the current or last feed type exported.
|
Chris@0
|
97 *
|
Chris@0
|
98 * @return string Value will be "rss" or "atom"
|
Chris@0
|
99 */
|
Chris@0
|
100 public function getType()
|
Chris@0
|
101 {
|
Chris@0
|
102 return $this->type;
|
Chris@0
|
103 }
|
Chris@0
|
104
|
Chris@0
|
105 /**
|
Chris@0
|
106 * Set reference
|
Chris@0
|
107 *
|
Chris@0
|
108 * @param $reference
|
Chris@0
|
109 * @throws Exception\InvalidArgumentException
|
Chris@0
|
110 * @return Deleted
|
Chris@0
|
111 */
|
Chris@0
|
112 public function setReference($reference)
|
Chris@0
|
113 {
|
Chris@12
|
114 if (empty($reference) || ! is_string($reference)) {
|
Chris@0
|
115 throw new Exception\InvalidArgumentException('Invalid parameter: reference must be a non-empty string');
|
Chris@0
|
116 }
|
Chris@0
|
117 $this->data['reference'] = $reference;
|
Chris@0
|
118
|
Chris@0
|
119 return $this;
|
Chris@0
|
120 }
|
Chris@0
|
121
|
Chris@0
|
122 /**
|
Chris@0
|
123 * @return string
|
Chris@0
|
124 */
|
Chris@0
|
125 public function getReference()
|
Chris@0
|
126 {
|
Chris@12
|
127 if (! array_key_exists('reference', $this->data)) {
|
Chris@0
|
128 return;
|
Chris@0
|
129 }
|
Chris@0
|
130 return $this->data['reference'];
|
Chris@0
|
131 }
|
Chris@0
|
132
|
Chris@0
|
133 /**
|
Chris@0
|
134 * Set when
|
Chris@0
|
135 *
|
Chris@17
|
136 * @param null|int|DateTimeInterface $date
|
Chris@0
|
137 * @throws Exception\InvalidArgumentException
|
Chris@0
|
138 * @return Deleted
|
Chris@0
|
139 */
|
Chris@0
|
140 public function setWhen($date = null)
|
Chris@0
|
141 {
|
Chris@0
|
142 if ($date === null) {
|
Chris@0
|
143 $date = new DateTime();
|
Chris@17
|
144 }
|
Chris@17
|
145 if (is_int($date)) {
|
Chris@0
|
146 $date = new DateTime('@' . $date);
|
Chris@17
|
147 }
|
Chris@17
|
148 if (! $date instanceof DateTimeInterface) {
|
Chris@0
|
149 throw new Exception\InvalidArgumentException('Invalid DateTime object or UNIX Timestamp'
|
Chris@0
|
150 . ' passed as parameter');
|
Chris@0
|
151 }
|
Chris@0
|
152 $this->data['when'] = $date;
|
Chris@0
|
153
|
Chris@0
|
154 return $this;
|
Chris@0
|
155 }
|
Chris@0
|
156
|
Chris@0
|
157 /**
|
Chris@0
|
158 * @return DateTime
|
Chris@0
|
159 */
|
Chris@0
|
160 public function getWhen()
|
Chris@0
|
161 {
|
Chris@12
|
162 if (! array_key_exists('when', $this->data)) {
|
Chris@0
|
163 return;
|
Chris@0
|
164 }
|
Chris@0
|
165 return $this->data['when'];
|
Chris@0
|
166 }
|
Chris@0
|
167
|
Chris@0
|
168 /**
|
Chris@0
|
169 * Set by
|
Chris@0
|
170 *
|
Chris@0
|
171 * @param array $by
|
Chris@0
|
172 * @throws Exception\InvalidArgumentException
|
Chris@0
|
173 * @return Deleted
|
Chris@0
|
174 */
|
Chris@0
|
175 public function setBy(array $by)
|
Chris@0
|
176 {
|
Chris@0
|
177 $author = [];
|
Chris@12
|
178 if (! array_key_exists('name', $by)
|
Chris@0
|
179 || empty($by['name'])
|
Chris@12
|
180 || ! is_string($by['name'])
|
Chris@0
|
181 ) {
|
Chris@0
|
182 throw new Exception\InvalidArgumentException('Invalid parameter: author array must include a'
|
Chris@0
|
183 . ' "name" key with a non-empty string value');
|
Chris@0
|
184 }
|
Chris@0
|
185 $author['name'] = $by['name'];
|
Chris@0
|
186 if (isset($by['email'])) {
|
Chris@12
|
187 if (empty($by['email']) || ! is_string($by['email'])) {
|
Chris@0
|
188 throw new Exception\InvalidArgumentException('Invalid parameter: "email" array'
|
Chris@0
|
189 . ' value must be a non-empty string');
|
Chris@0
|
190 }
|
Chris@0
|
191 $author['email'] = $by['email'];
|
Chris@0
|
192 }
|
Chris@0
|
193 if (isset($by['uri'])) {
|
Chris@0
|
194 if (empty($by['uri'])
|
Chris@12
|
195 || ! is_string($by['uri'])
|
Chris@12
|
196 || ! Uri::factory($by['uri'])->isValid()
|
Chris@0
|
197 ) {
|
Chris@0
|
198 throw new Exception\InvalidArgumentException('Invalid parameter: "uri" array value must'
|
Chris@0
|
199 . ' be a non-empty string and valid URI/IRI');
|
Chris@0
|
200 }
|
Chris@0
|
201 $author['uri'] = $by['uri'];
|
Chris@0
|
202 }
|
Chris@0
|
203 $this->data['by'] = $author;
|
Chris@0
|
204
|
Chris@0
|
205 return $this;
|
Chris@0
|
206 }
|
Chris@0
|
207
|
Chris@0
|
208 /**
|
Chris@0
|
209 * @return string
|
Chris@0
|
210 */
|
Chris@0
|
211 public function getBy()
|
Chris@0
|
212 {
|
Chris@12
|
213 if (! array_key_exists('by', $this->data)) {
|
Chris@0
|
214 return;
|
Chris@0
|
215 }
|
Chris@0
|
216 return $this->data['by'];
|
Chris@0
|
217 }
|
Chris@0
|
218
|
Chris@0
|
219 /**
|
Chris@0
|
220 * @param string $comment
|
Chris@0
|
221 * @return Deleted
|
Chris@0
|
222 */
|
Chris@0
|
223 public function setComment($comment)
|
Chris@0
|
224 {
|
Chris@0
|
225 $this->data['comment'] = $comment;
|
Chris@0
|
226 return $this;
|
Chris@0
|
227 }
|
Chris@0
|
228
|
Chris@0
|
229 /**
|
Chris@0
|
230 * @return string
|
Chris@0
|
231 */
|
Chris@0
|
232 public function getComment()
|
Chris@0
|
233 {
|
Chris@12
|
234 if (! array_key_exists('comment', $this->data)) {
|
Chris@0
|
235 return;
|
Chris@0
|
236 }
|
Chris@0
|
237 return $this->data['comment'];
|
Chris@0
|
238 }
|
Chris@0
|
239 }
|