annotate vendor/sabre/vobject/lib/Splitter/VCard.php @ 41:d2414df68d78

Updated by Alex S Grebenschikov (www.poralix.com) to make it compatible with RoundCube 1.3.0
author Charlie Root
date Fri, 24 Jan 2025 14:20:15 -0500
parents 430dbd5346f7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
1 <?php
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
2
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
3 namespace Sabre\VObject\Splitter;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
4
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
5 use
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
6 Sabre\VObject,
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
7 Sabre\VObject\Parser\MimeDir;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
8
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
9 /**
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
10 * Splitter
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
11 *
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
12 * This class is responsible for splitting up VCard objects.
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
13 *
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
14 * It is assumed that the input stream contains 1 or more VCARD objects. This
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
15 * class checks for BEGIN:VCARD and END:VCARD and parses each encountered
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
16 * component individually.
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
17 *
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
18 * @copyright Copyright (C) 2011-2015 fruux GmbH (https://fruux.com/).
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
19 * @author Dominik Tobschall
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
20 * @author Armin Hackmann
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
21 * @license http://sabre.io/license/ Modified BSD License
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
22 */
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
23 class VCard implements SplitterInterface {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
24
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
25 /**
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
26 * File handle
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
27 *
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
28 * @var resource
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
29 */
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
30 protected $input;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
31
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
32 /**
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
33 * Persistent parser
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
34 *
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
35 * @var MimeDir
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
36 */
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
37 protected $parser;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
38
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
39 /**
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
40 * Constructor
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
41 *
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
42 * The splitter should receive an readable file stream as it's input.
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
43 *
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
44 * @param resource $input
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
45 * @param int $options Parser options, see the OPTIONS constants.
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
46 */
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
47 public function __construct($input, $options = 0) {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
48
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
49 $this->input = $input;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
50 $this->parser = new MimeDir($input, $options);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
51
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
52 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
53
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
54 /**
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
55 * Every time getNext() is called, a new object will be parsed, until we
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
56 * hit the end of the stream.
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
57 *
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
58 * When the end is reached, null will be returned.
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
59 *
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
60 * @return Sabre\VObject\Component|null
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
61 */
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
62 public function getNext() {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
63
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
64 try {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
65 $object = $this->parser->parse();
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
66
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
67 if (!$object instanceof VObject\Component\VCard) {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
68 throw new VObject\ParseException('The supplied input contained non-VCARD data.');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
69 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
70
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
71 } catch (VObject\EofException $e) {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
72 return null;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
73 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
74
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
75 return $object;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
76
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
77 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
78
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
79 }