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