blob: 7a8718c0013d8bca5e9ff2bf7a7667163515d501 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
<?php
namespace Sabre\VObject\Splitter;
use Sabre\VObject;
/**
* Splitter
*
* This class is responsible for splitting up VCard objects.
*
* It is assumed that the input stream contains 1 or more VCARD objects. This
* class checks for BEGIN:VCARD and END:VCARD and parses each encountered
* component individually.
*
* @copyright Copyright (C) 2007-2013 fruux GmbH (https://fruux.com/).
* @author Dominik Tobschall
* @author Armin Hackmann
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
*/
class VCard implements SplitterInterface {
/**
* File handle
*
* @var resource
*/
protected $input;
/**
* Constructor
*
* The splitter should receive an readable file stream as it's input.
*
* @param resource $input
*/
public function __construct($input) {
$this->input = $input;
}
/**
* Every time getNext() is called, a new object will be parsed, until we
* hit the end of the stream.
*
* When the end is reached, null will be returned.
*
* @return Sabre\VObject\Component|null
*/
public function getNext() {
$vcard = '';
do {
if (feof($this->input)) {
return false;
}
$line = fgets($this->input);
$vcard .= $line;
} while(strtoupper(substr($line,0,4))!=="END:");
$object = VObject\Reader::read($vcard);
if($object->name !== 'VCARD') {
throw new \InvalidArgumentException("Thats no vCard!", 1);
}
return $object;
}
}
|