Mercurial > hg > rc1
comparison vendor/pear/crypt_gpg/Crypt/GPG/UserId.php @ 0:1e000243b222
vanilla 1.3.3 distro, I hope
author | Charlie Root |
---|---|
date | Thu, 04 Jan 2018 15:50:29 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1e000243b222 |
---|---|
1 <?php | |
2 | |
3 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ | |
4 | |
5 /** | |
6 * Contains a data class representing a GPG user id | |
7 * | |
8 * PHP version 5 | |
9 * | |
10 * LICENSE: | |
11 * | |
12 * This library is free software; you can redistribute it and/or modify | |
13 * it under the terms of the GNU Lesser General Public License as | |
14 * published by the Free Software Foundation; either version 2.1 of the | |
15 * License, or (at your option) any later version. | |
16 * | |
17 * This library is distributed in the hope that it will be useful, | |
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
20 * Lesser General Public License for more details. | |
21 * | |
22 * You should have received a copy of the GNU Lesser General Public | |
23 * License along with this library; if not, see | |
24 * <http://www.gnu.org/licenses/> | |
25 * | |
26 * @category Encryption | |
27 * @package Crypt_GPG | |
28 * @author Michael Gauthier <mike@silverorange.com> | |
29 * @copyright 2008-2010 silverorange | |
30 * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 | |
31 * @link http://pear.php.net/package/Crypt_GPG | |
32 */ | |
33 | |
34 // {{{ class Crypt_GPG_UserId | |
35 | |
36 /** | |
37 * A class for GPG user id information | |
38 * | |
39 * This class is used to store the results of the {@link Crypt_GPG::getKeys()} | |
40 * method. User id objects are members of a {@link Crypt_GPG_Key} object. | |
41 * | |
42 * @category Encryption | |
43 * @package Crypt_GPG | |
44 * @author Michael Gauthier <mike@silverorange.com> | |
45 * @copyright 2008-2010 silverorange | |
46 * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 | |
47 * @link http://pear.php.net/package/Crypt_GPG | |
48 * @see Crypt_GPG::getKeys() | |
49 * @see Crypt_GPG_Key::getUserIds() | |
50 */ | |
51 class Crypt_GPG_UserId | |
52 { | |
53 // {{{ class properties | |
54 | |
55 /** | |
56 * The name field of this user id | |
57 * | |
58 * @var string | |
59 */ | |
60 private $_name = ''; | |
61 | |
62 /** | |
63 * The comment field of this user id | |
64 * | |
65 * @var string | |
66 */ | |
67 private $_comment = ''; | |
68 | |
69 /** | |
70 * The email field of this user id | |
71 * | |
72 * @var string | |
73 */ | |
74 private $_email = ''; | |
75 | |
76 /** | |
77 * Whether or not this user id is revoked | |
78 * | |
79 * @var boolean | |
80 */ | |
81 private $_isRevoked = false; | |
82 | |
83 /** | |
84 * Whether or not this user id is valid | |
85 * | |
86 * @var boolean | |
87 */ | |
88 private $_isValid = true; | |
89 | |
90 // }}} | |
91 // {{{ __construct() | |
92 | |
93 /** | |
94 * Creates a new user id | |
95 * | |
96 * User ids can be initialized from an array of named values. Available | |
97 * names are: | |
98 * | |
99 * - <kbd>string name</kbd> - the name field of the user id. | |
100 * - <kbd>string comment</kbd> - the comment field of the user id. | |
101 * - <kbd>string email</kbd> - the email field of the user id. | |
102 * - <kbd>boolean valid</kbd> - whether or not the user id is valid. | |
103 * - <kbd>boolean revoked</kbd> - whether or not the user id is revoked. | |
104 * | |
105 * @param Crypt_GPG_UserId|string|array $userId optional. Either an | |
106 * existing user id object, which is copied; a user id string, which | |
107 * is parsed; or an array of initial values. | |
108 */ | |
109 public function __construct($userId = null) | |
110 { | |
111 // parse from string | |
112 if (is_string($userId)) { | |
113 $userId = self::parse($userId); | |
114 } | |
115 | |
116 // copy from object | |
117 if ($userId instanceof Crypt_GPG_UserId) { | |
118 $this->_name = $userId->_name; | |
119 $this->_comment = $userId->_comment; | |
120 $this->_email = $userId->_email; | |
121 $this->_isRevoked = $userId->_isRevoked; | |
122 $this->_isValid = $userId->_isValid; | |
123 } | |
124 | |
125 // initialize from array | |
126 if (is_array($userId)) { | |
127 if (array_key_exists('name', $userId)) { | |
128 $this->setName($userId['name']); | |
129 } | |
130 | |
131 if (array_key_exists('comment', $userId)) { | |
132 $this->setComment($userId['comment']); | |
133 } | |
134 | |
135 if (array_key_exists('email', $userId)) { | |
136 $this->setEmail($userId['email']); | |
137 } | |
138 | |
139 if (array_key_exists('revoked', $userId)) { | |
140 $this->setRevoked($userId['revoked']); | |
141 } | |
142 | |
143 if (array_key_exists('valid', $userId)) { | |
144 $this->setValid($userId['valid']); | |
145 } | |
146 } | |
147 } | |
148 | |
149 // }}} | |
150 // {{{ getName() | |
151 | |
152 /** | |
153 * Gets the name field of this user id | |
154 * | |
155 * @return string the name field of this user id. | |
156 */ | |
157 public function getName() | |
158 { | |
159 return $this->_name; | |
160 } | |
161 | |
162 // }}} | |
163 // {{{ getComment() | |
164 | |
165 /** | |
166 * Gets the comments field of this user id | |
167 * | |
168 * @return string the comments field of this user id. | |
169 */ | |
170 public function getComment() | |
171 { | |
172 return $this->_comment; | |
173 } | |
174 | |
175 // }}} | |
176 // {{{ getEmail() | |
177 | |
178 /** | |
179 * Gets the email field of this user id | |
180 * | |
181 * @return string the email field of this user id. | |
182 */ | |
183 public function getEmail() | |
184 { | |
185 return $this->_email; | |
186 } | |
187 | |
188 // }}} | |
189 // {{{ isRevoked() | |
190 | |
191 /** | |
192 * Gets whether or not this user id is revoked | |
193 * | |
194 * @return boolean true if this user id is revoked and false if it is not. | |
195 */ | |
196 public function isRevoked() | |
197 { | |
198 return $this->_isRevoked; | |
199 } | |
200 | |
201 // }}} | |
202 // {{{ isValid() | |
203 | |
204 /** | |
205 * Gets whether or not this user id is valid | |
206 * | |
207 * @return boolean true if this user id is valid and false if it is not. | |
208 */ | |
209 public function isValid() | |
210 { | |
211 return $this->_isValid; | |
212 } | |
213 | |
214 // }}} | |
215 // {{{ __toString() | |
216 | |
217 /** | |
218 * Gets a string representation of this user id | |
219 * | |
220 * The string is formatted as: | |
221 * <b><kbd>name (comment) <email-address></kbd></b>. | |
222 * | |
223 * @return string a string representation of this user id. | |
224 */ | |
225 public function __toString() | |
226 { | |
227 $components = array(); | |
228 | |
229 if (mb_strlen($this->_name, '8bit') > 0) { | |
230 $components[] = $this->_name; | |
231 } | |
232 | |
233 if (mb_strlen($this->_comment, '8bit') > 0) { | |
234 $components[] = '(' . $this->_comment . ')'; | |
235 } | |
236 | |
237 if (mb_strlen($this->_email, '8bit') > 0) { | |
238 $components[] = '<' . $this->_email. '>'; | |
239 } | |
240 | |
241 return implode(' ', $components); | |
242 } | |
243 | |
244 // }}} | |
245 // {{{ setName() | |
246 | |
247 /** | |
248 * Sets the name field of this user id | |
249 * | |
250 * @param string $name the name field of this user id. | |
251 * | |
252 * @return Crypt_GPG_UserId the current object, for fluent interface. | |
253 */ | |
254 public function setName($name) | |
255 { | |
256 $this->_name = strval($name); | |
257 return $this; | |
258 } | |
259 | |
260 // }}} | |
261 // {{{ setComment() | |
262 | |
263 /** | |
264 * Sets the comment field of this user id | |
265 * | |
266 * @param string $comment the comment field of this user id. | |
267 * | |
268 * @return Crypt_GPG_UserId the current object, for fluent interface. | |
269 */ | |
270 public function setComment($comment) | |
271 { | |
272 $this->_comment = strval($comment); | |
273 return $this; | |
274 } | |
275 | |
276 // }}} | |
277 // {{{ setEmail() | |
278 | |
279 /** | |
280 * Sets the email field of this user id | |
281 * | |
282 * @param string $email the email field of this user id. | |
283 * | |
284 * @return Crypt_GPG_UserId the current object, for fluent interface. | |
285 */ | |
286 public function setEmail($email) | |
287 { | |
288 $this->_email = strval($email); | |
289 return $this; | |
290 } | |
291 | |
292 // }}} | |
293 // {{{ setRevoked() | |
294 | |
295 /** | |
296 * Sets whether or not this user id is revoked | |
297 * | |
298 * @param boolean $isRevoked whether or not this user id is revoked. | |
299 * | |
300 * @return Crypt_GPG_UserId the current object, for fluent interface. | |
301 */ | |
302 public function setRevoked($isRevoked) | |
303 { | |
304 $this->_isRevoked = ($isRevoked) ? true : false; | |
305 return $this; | |
306 } | |
307 | |
308 // }}} | |
309 // {{{ setValid() | |
310 | |
311 /** | |
312 * Sets whether or not this user id is valid | |
313 * | |
314 * @param boolean $isValid whether or not this user id is valid. | |
315 * | |
316 * @return Crypt_GPG_UserId the current object, for fluent interface. | |
317 */ | |
318 public function setValid($isValid) | |
319 { | |
320 $this->_isValid = ($isValid) ? true : false; | |
321 return $this; | |
322 } | |
323 | |
324 // }}} | |
325 // {{{ parse() | |
326 | |
327 /** | |
328 * Parses a user id object from a user id string | |
329 * | |
330 * A user id string is of the form: | |
331 * <b><kbd>name (comment) <email-address></kbd></b> with the <i>comment</i> | |
332 * and <i>email-address</i> fields being optional. | |
333 * | |
334 * @param string $string the user id string to parse. | |
335 * | |
336 * @return Crypt_GPG_UserId the user id object parsed from the string. | |
337 */ | |
338 public static function parse($string) | |
339 { | |
340 $userId = new Crypt_GPG_UserId(); | |
341 $name = ''; | |
342 $email = ''; | |
343 $comment = ''; | |
344 | |
345 // get email address from end of string if it exists | |
346 $matches = array(); | |
347 if (preg_match('/^(.*?)<([^>]+)>$/', $string, $matches) === 1) { | |
348 $string = trim($matches[1]); | |
349 $email = $matches[2]; | |
350 } | |
351 | |
352 // get comment from end of string if it exists | |
353 $matches = array(); | |
354 if (preg_match('/^(.+?) \(([^\)]+)\)$/', $string, $matches) === 1) { | |
355 $string = $matches[1]; | |
356 $comment = $matches[2]; | |
357 } | |
358 | |
359 // there can be an email without a name | |
360 if (!$email && preg_match('/^[\S]+@[\S]+$/', $string, $matches) === 1) { | |
361 $email = $string; | |
362 } else { | |
363 $name = $string; | |
364 } | |
365 | |
366 $userId->setName($name); | |
367 $userId->setComment($comment); | |
368 $userId->setEmail($email); | |
369 | |
370 return $userId; | |
371 } | |
372 | |
373 // }}} | |
374 } | |
375 | |
376 // }}} | |
377 | |
378 ?> |