ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
Sabre\VObject\Parser\MimeDir Class Reference

MimeDir parser. More...

+ Inheritance diagram for Sabre\VObject\Parser\MimeDir:
+ Collaboration diagram for Sabre\VObject\Parser\MimeDir:

Public Member Functions

 parse ($input=null, $options=0)
 Parses an iCalendar or vCard file. More...
 
 setCharset ($charset)
 By default all input will be assumed to be UTF-8. More...
 
 setInput ($input)
 Sets the input buffer. More...
 
- Public Member Functions inherited from Sabre\VObject\Parser\Parser
 __construct ($input=null, $options=0)
 Creates the parser. More...
 
 parse ($input=null, $options=0)
 This method starts the parsing process. More...
 
 setInput ($input)
 Sets the input data. More...
 

Static Public Member Functions

static unescapeValue ($input, $delimiter=';')
 Unescapes a property value. More...
 

Protected Member Functions

 parseDocument ()
 Parses an entire document. More...
 
 parseLine ($line)
 Parses a line, and if it hits a component, it will also attempt to parse the entire component. More...
 
 readLine ()
 Reads a single line from the buffer. More...
 
 readProperty ($line)
 Reads a property or component from a line. More...
 

Protected Attributes

 $input
 
 $root
 
 $charset = 'UTF-8'
 
 $lineBuffer
 
 $lineIndex = 0
 The real current line number. More...
 
 $startLine = 0
 
 $rawLine
 
- Protected Attributes inherited from Sabre\VObject\Parser\Parser
 $options
 

Static Protected Attributes

static $SUPPORTED_CHARSETS
 The list of character sets we support when decoding. More...
 

Private Member Functions

 unescapeParam ($input)
 Unescapes a parameter value. More...
 
 extractQuotedPrintableValue ()
 Gets the full quoted printable value. More...
 

Additional Inherited Members

- Data Fields inherited from Sabre\VObject\Parser\Parser
const OPTION_FORGIVING = 1
 Turning on this option makes the parser more forgiving. More...
 
const OPTION_IGNORE_INVALID_LINES = 2
 If this option is turned on, any lines we cannot parse will be ignored by the reader. More...
 

Detailed Description

MimeDir parser.

This class parses iCalendar 2.0 and vCard 2.1, 3.0 and 4.0 files. This parser will return one of the following two objects from the parse method:

Sabre\VObject\Component\VCalendar Sabre\VObject\Component\VCard

Author
Evert Pot (http://evertpot.com/) @license http://sabre.io/license/ Modified BSD License

Definition at line 25 of file MimeDir.php.

Member Function Documentation

◆ extractQuotedPrintableValue()

Sabre\VObject\Parser\MimeDir::extractQuotedPrintableValue ( )
private

Gets the full quoted printable value.

We need a special method for this, because newlines have both a meaning in vCards, and in QuotedPrintable.

This method does not do any decoding.

Returns
string

Definition at line 661 of file MimeDir.php.

661 {
662
663 // We need to parse the raw line again to get the start of the value.
664 //
665 // We are basically looking for the first colon (:), but we need to
666 // skip over the parameters first, as they may contain one.
667 $regex = '/^
668 (?: [^:])+ # Anything but a colon
669 (?: "[^"]")* # A parameter in double quotes
670 : # start of the value we really care about
671 (.*)$
672 /xs';
673
674 preg_match($regex, $this->rawLine, $matches);
675
676 $value = $matches[1];
677 // Removing the first whitespace character from every line. Kind of
678 // like unfolding, but we keep the newline.
679 $value = str_replace("\n ", "\n", $value);
680
681 // Microsoft products don't always correctly fold lines, they may be
682 // missing a whitespace. So if 'forgiving' is turned on, we will take
683 // those as well.
684 if ($this->options & self::OPTION_FORGIVING) {
685 while (substr($value, -1) === '=') {
686 // Reading the line
687 $this->readLine();
688 // Grabbing the raw form
689 $value .= "\n" . $this->rawLine;
690 }
691 }
692
693 return $value;
694
695 }
readLine()
Reads a single line from the buffer.
Definition: MimeDir.php:284

References Sabre\VObject\Parser\MimeDir\$rawLine, and Sabre\VObject\Parser\MimeDir\readLine().

Referenced by Sabre\VObject\Parser\MimeDir\readProperty().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parse()

Sabre\VObject\Parser\MimeDir::parse (   $input = null,
  $options = 0 
)

Parses an iCalendar or vCard file.

Pass a stream or a string. If null is parsed, the existing buffer is used.

Parameters
string | resource | null$input
int$options
Returns
Sabre\VObject\Document

Reimplemented from Sabre\VObject\Parser\Parser.

Definition at line 77 of file MimeDir.php.

77 {
78
79 $this->root = null;
80
81 if (!is_null($input)) {
82 $this->setInput($input);
83 }
84
85 if (0 !== $options) {
86 $this->options = $options;
87 }
88
89 $this->parseDocument();
90
91 return $this->root;
92
93 }
setInput($input)
Sets the input buffer.
Definition: MimeDir.php:123
parseDocument()
Parses an entire document.
Definition: MimeDir.php:148

References Sabre\VObject\Parser\MimeDir\$input, Sabre\VObject\Parser\Parser\$options, Sabre\VObject\Parser\MimeDir\$root, Sabre\VObject\Parser\MimeDir\parseDocument(), and Sabre\VObject\Parser\MimeDir\setInput().

+ Here is the call graph for this function:

◆ parseDocument()

Sabre\VObject\Parser\MimeDir::parseDocument ( )
protected

Parses an entire document.

Returns
void

Definition at line 148 of file MimeDir.php.

148 {
149
150 $line = $this->readLine();
151
152 // BOM is ZERO WIDTH NO-BREAK SPACE (U+FEFF).
153 // It's 0xEF 0xBB 0xBF in UTF-8 hex.
154 if (3 <= strlen($line)
155 && ord($line[0]) === 0xef
156 && ord($line[1]) === 0xbb
157 && ord($line[2]) === 0xbf) {
158 $line = substr($line, 3);
159 }
160
161 switch (strtoupper($line)) {
162 case 'BEGIN:VCALENDAR' :
163 $class = VCalendar::$componentMap['VCALENDAR'];
164 break;
165 case 'BEGIN:VCARD' :
166 $class = VCard::$componentMap['VCARD'];
167 break;
168 default :
169 throw new ParseException('This parser only supports VCARD and VCALENDAR files');
170 }
171
172 $this->root = new $class([], false);
173
174 while (true) {
175
176 // Reading until we hit END:
177 $line = $this->readLine();
178 if (strtoupper(substr($line, 0, 4)) === 'END:') {
179 break;
180 }
181 $result = $this->parseLine($line);
182 if ($result) {
183 $this->root->add($result);
184 }
185
186 }
187
188 $name = strtoupper(substr($line, 4));
189 if ($name !== $this->root->name) {
190 throw new ParseException('Invalid MimeDir file. expected: "END:' . $this->root->name . '" got: "END:' . $name . '"');
191 }
192
193 }
$result
parseLine($line)
Parses a line, and if it hits a component, it will also attempt to parse the entire component.
Definition: MimeDir.php:203

References Sabre\VObject\Component\VCalendar\$componentMap, Sabre\VObject\Component\VCard\$componentMap, $name, $result, Sabre\VObject\Parser\MimeDir\parseLine(), and Sabre\VObject\Parser\MimeDir\readLine().

Referenced by Sabre\VObject\Parser\MimeDir\parse().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseLine()

Sabre\VObject\Parser\MimeDir::parseLine (   $line)
protected

Parses a line, and if it hits a component, it will also attempt to parse the entire component.

Parameters
string$lineUnfolded line
Returns
Node

Definition at line 203 of file MimeDir.php.

203 {
204
205 // Start of a new component
206 if (strtoupper(substr($line, 0, 6)) === 'BEGIN:') {
207
208 $component = $this->root->createComponent(substr($line, 6), [], false);
209
210 while (true) {
211
212 // Reading until we hit END:
213 $line = $this->readLine();
214 if (strtoupper(substr($line, 0, 4)) === 'END:') {
215 break;
216 }
217 $result = $this->parseLine($line);
218 if ($result) {
219 $component->add($result);
220 }
221
222 }
223
224 $name = strtoupper(substr($line, 4));
225 if ($name !== $component->name) {
226 throw new ParseException('Invalid MimeDir file. expected: "END:' . $component->name . '" got: "END:' . $name . '"');
227 }
228
229 return $component;
230
231 } else {
232
233 // Property reader
234 $property = $this->readProperty($line);
235 if (!$property) {
236 // Ignored line
237 return false;
238 }
239 return $property;
240
241 }
242
243 }
readProperty($line)
Reads a property or component from a line.
Definition: MimeDir.php:337

References $name, $result, Sabre\VObject\Parser\MimeDir\parseLine(), Sabre\VObject\Parser\MimeDir\readLine(), and Sabre\VObject\Parser\MimeDir\readProperty().

Referenced by Sabre\VObject\Parser\MimeDir\parseDocument(), and Sabre\VObject\Parser\MimeDir\parseLine().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ readLine()

Sabre\VObject\Parser\MimeDir::readLine ( )
protected

Reads a single line from the buffer.

This method strips any newlines and also takes care of unfolding.

Exceptions

Sabre\VObject\EofException

Returns
string

Definition at line 284 of file MimeDir.php.

284 {
285
286 if (!\is_null($this->lineBuffer)) {
288 $this->lineBuffer = null;
289 } else {
290 do {
291 $eof = \feof($this->input);
292
293 $rawLine = \fgets($this->input);
294
295 if ($eof || (\feof($this->input) && $rawLine === false)) {
296 throw new EofException('End of document reached prematurely');
297 }
298 if ($rawLine === false) {
299 throw new ParseException('Error reading from input stream');
300 }
301 $rawLine = \rtrim($rawLine, "\r\n");
302 } while ($rawLine === ''); // Skipping empty lines
303 $this->lineIndex++;
304 }
305 $line = $rawLine;
306
307 $this->startLine = $this->lineIndex;
308
309 // Looking ahead for folded lines.
310 while (true) {
311
312 $nextLine = \rtrim(\fgets($this->input), "\r\n");
313 $this->lineIndex++;
314 if (!$nextLine) {
315 break;
316 }
317 if ($nextLine[0] === "\t" || $nextLine[0] === " ") {
318 $curLine = \substr($nextLine, 1);
319 $line .= $curLine;
320 $rawLine .= "\n " . $curLine;
321 } else {
322 $this->lineBuffer = $nextLine;
323 break;
324 }
325
326 }
327 $this->rawLine = $rawLine;
328 return $line;
329
330 }
$lineIndex
The real current line number.
Definition: MimeDir.php:258
input
Definition: langcheck.php:166

References Sabre\VObject\Parser\MimeDir\$lineBuffer, Sabre\VObject\Parser\MimeDir\$lineIndex, Sabre\VObject\Parser\MimeDir\$rawLine, and input.

Referenced by Sabre\VObject\Parser\MimeDir\extractQuotedPrintableValue(), Sabre\VObject\Parser\MimeDir\parseDocument(), and Sabre\VObject\Parser\MimeDir\parseLine().

+ Here is the caller graph for this function:

◆ readProperty()

Sabre\VObject\Parser\MimeDir::readProperty (   $line)
protected

Reads a property or component from a line.

Returns
void

Looping through all the tokens.

Note that we are looping through them in reverse order, because if a sub-pattern matched, the subsequent named patterns will not show up in the result.

Definition at line 337 of file MimeDir.php.

337 {
338
339 if ($this->options & self::OPTION_FORGIVING) {
340 $propNameToken = 'A-Z0-9\-\._\\/';
341 } else {
342 $propNameToken = 'A-Z0-9\-\.';
343 }
344
345 $paramNameToken = 'A-Z0-9\-';
346 $safeChar = '^";:,';
347 $qSafeChar = '^"';
348
349 $regex = "/
350 ^(?P<name> [$propNameToken]+ ) (?=[;:]) # property name
351 |
352 (?<=:)(?P<propValue> .+)$ # property value
353 |
354 ;(?P<paramName> [$paramNameToken]+) (?=[=;:]) # parameter name
355 |
356 (=|,)(?P<paramValue> # parameter value
357 (?: [$safeChar]*) |
358 \"(?: [$qSafeChar]+)\"
359 ) (?=[;:,])
360 /xi";
361
362 //echo $regex, "\n"; die();
363 preg_match_all($regex, $line, $matches, PREG_SET_ORDER);
364
365 $property = [
366 'name' => null,
367 'parameters' => [],
368 'value' => null
369 ];
370
371 $lastParam = null;
372
380 foreach ($matches as $match) {
381
382 if (isset($match['paramValue'])) {
383 if ($match['paramValue'] && $match['paramValue'][0] === '"') {
384 $value = substr($match['paramValue'], 1, -1);
385 } else {
386 $value = $match['paramValue'];
387 }
388
389 $value = $this->unescapeParam($value);
390
391 if (is_null($lastParam)) {
392 throw new ParseException('Invalid Mimedir file. Line starting at ' . $this->startLine . ' did not follow iCalendar/vCard conventions');
393 }
394 if (is_null($property['parameters'][$lastParam])) {
395 $property['parameters'][$lastParam] = $value;
396 } elseif (is_array($property['parameters'][$lastParam])) {
397 $property['parameters'][$lastParam][] = $value;
398 } else {
399 $property['parameters'][$lastParam] = [
400 $property['parameters'][$lastParam],
401 $value
402 ];
403 }
404 continue;
405 }
406 if (isset($match['paramName'])) {
407 $lastParam = strtoupper($match['paramName']);
408 if (!isset($property['parameters'][$lastParam])) {
409 $property['parameters'][$lastParam] = null;
410 }
411 continue;
412 }
413 if (isset($match['propValue'])) {
414 $property['value'] = $match['propValue'];
415 continue;
416 }
417 if (isset($match['name']) && $match['name']) {
418 $property['name'] = strtoupper($match['name']);
419 continue;
420 }
421
422 // @codeCoverageIgnoreStart
423 throw new \LogicException('This code should not be reachable');
424 // @codeCoverageIgnoreEnd
425
426 }
427
428 if (is_null($property['value'])) {
429 $property['value'] = '';
430 }
431 if (!$property['name']) {
432 if ($this->options & self::OPTION_IGNORE_INVALID_LINES) {
433 return false;
434 }
435 throw new ParseException('Invalid Mimedir file. Line starting at ' . $this->startLine . ' did not follow iCalendar/vCard conventions');
436 }
437
438 // vCard 2.1 states that parameters may appear without a name, and only
439 // a value. We can deduce the value based on it's name.
440 //
441 // Our parser will get those as parameters without a value instead, so
442 // we're filtering these parameters out first.
443 $namedParameters = [];
444 $namelessParameters = [];
445
446 foreach ($property['parameters'] as $name => $value) {
447 if (!is_null($value)) {
448 $namedParameters[$name] = $value;
449 } else {
450 $namelessParameters[] = $name;
451 }
452 }
453
454 $propObj = $this->root->createProperty($property['name'], null, $namedParameters);
455
456 foreach ($namelessParameters as $namelessParameter) {
457 $propObj->add(null, $namelessParameter);
458 }
459
460 if (strtoupper($propObj['ENCODING']) === 'QUOTED-PRINTABLE') {
461 $propObj->setQuotedPrintableValue($this->extractQuotedPrintableValue());
462 } else {
464 if ($this->root->getDocumentType() === Document::VCARD21 && isset($propObj['CHARSET'])) {
465 // vCard 2.1 allows the character set to be specified per property.
466 $charset = (string)$propObj['CHARSET'];
467 }
468 switch (strtolower($charset)) {
469 case 'utf-8' :
470 break;
471 case 'iso-8859-1' :
472 $property['value'] = utf8_encode($property['value']);
473 break;
474 case 'windows-1252' :
475 $property['value'] = mb_convert_encoding($property['value'], 'UTF-8', $charset);
476 break;
477 default :
478 throw new ParseException('Unsupported CHARSET: ' . $propObj['CHARSET']);
479 }
480 $propObj->setRawMimeDirValue($property['value']);
481 }
482
483 return $propObj;
484
485 }
const VCARD21
vCard 2.1.
Definition: Document.php:39
extractQuotedPrintableValue()
Gets the full quoted printable value.
Definition: MimeDir.php:661
unescapeParam($input)
Unescapes a parameter value.
Definition: MimeDir.php:629

References Sabre\VObject\Parser\MimeDir\$charset, $name, Sabre\VObject\Parser\MimeDir\extractQuotedPrintableValue(), Sabre\VObject\Parser\MimeDir\unescapeParam(), and Sabre\VObject\Document\VCARD21.

Referenced by Sabre\VObject\Parser\MimeDir\parseLine().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setCharset()

Sabre\VObject\Parser\MimeDir::setCharset (   $charset)

By default all input will be assumed to be UTF-8.

However, both iCalendar and vCard might be encoded using different character sets. The character set is usually set in the mime-type.

If this is the case, use setEncoding to specify that a different encoding will be used. If this is set, the parser will automatically convert all incoming data to UTF-8.

Parameters
string$charset

Definition at line 107 of file MimeDir.php.

107 {
108
109 if (!in_array($charset, self::$SUPPORTED_CHARSETS)) {
110 throw new \InvalidArgumentException('Unsupported encoding. (Supported encodings: ' . implode(', ', self::$SUPPORTED_CHARSETS) . ')');
111 }
112 $this->charset = $charset;
113
114 }

References Sabre\VObject\Parser\MimeDir\$charset.

◆ setInput()

Sabre\VObject\Parser\MimeDir::setInput (   $input)

Sets the input buffer.

Must be a string or stream.

Parameters
resource | string$input
Returns
void

Reimplemented from Sabre\VObject\Parser\Parser.

Definition at line 123 of file MimeDir.php.

123 {
124
125 // Resetting the parser
126 $this->lineIndex = 0;
127 $this->startLine = 0;
128
129 if (is_string($input)) {
130 // Convering to a stream.
131 $stream = fopen('php://temp', 'r+');
132 fwrite($stream, $input);
133 rewind($stream);
134 $this->input = $stream;
135 } elseif (is_resource($input)) {
136 $this->input = $input;
137 } else {
138 throw new \InvalidArgumentException('This parser can only read from strings or streams.');
139 }
140
141 }
$stream
PHP stream implementation.

References Sabre\VObject\Parser\MimeDir\$input, GuzzleHttp\Psr7\$stream, and input.

Referenced by Sabre\VObject\Parser\MimeDir\parse().

+ Here is the caller graph for this function:

◆ unescapeParam()

Sabre\VObject\Parser\MimeDir::unescapeParam (   $input)
private

Unescapes a parameter value.

vCard 2.1:

  • Does not mention a mechanism for this. In addition, double quotes are never used to wrap values.
  • This means that parameters can simply not contain colons or semi-colons.

vCard 3.0 (rfc2425, rfc2426):

  • Parameters may be surrounded by double quotes.
  • If this is not the case, semi-colon, colon and comma may simply not occur (the comma used for multiple parameter values though).
  • If it is surrounded by double-quotes, it may simply not contain double-quotes.
  • This means that a parameter can in no case encode double-quotes, or newlines.

vCard 4.0 (rfc6350)

  • Behavior seems to be identical to vCard 3.0

iCalendar 2.0 (rfc5545)

  • Behavior seems to be identical to vCard 3.0

Parameter escaping mechanism (rfc6868) :

  • This rfc describes a new way to escape parameter values.
  • New-line is encoded as ^n
  • ^ is encoded as ^^.
  • " is encoded as ^'
Parameters
string$input
Returns
void

Definition at line 629 of file MimeDir.php.

629 {
630
631 return
632 preg_replace_callback(
633 '#(\^(\^|n|\'))#',
634 function($matches) {
635 switch ($matches[2]) {
636 case 'n' :
637 return "\n";
638 case '^' :
639 return '^';
640 case '\'' :
641 return '"';
642
643 // @codeCoverageIgnoreStart
644 }
645 // @codeCoverageIgnoreEnd
646 },
647 $input
648 );
649 }

References Sabre\VObject\Parser\MimeDir\$input.

Referenced by Sabre\VObject\Parser\MimeDir\readProperty().

+ Here is the caller graph for this function:

◆ unescapeValue()

static Sabre\VObject\Parser\MimeDir::unescapeValue (   $input,
  $delimiter = ';' 
)
static

Unescapes a property value.

vCard 2.1 says:

  • Semi-colons must be escaped in some property values, specifically ADR, ORG and N.
  • Semi-colons must be escaped in parameter values, because semi-colons are also use to separate values.
  • No mention of escaping backslashes with another backslash.
  • newlines are not escaped either, instead QUOTED-PRINTABLE is used to span values over more than 1 line.

vCard 3.0 says:

  • (rfc2425) Backslashes, newlines (
    or \N) and comma's must be escaped, all time time.
  • Comma's are used for delimeters in multiple values
  • (rfc2426) Adds to to this that the semi-colon MUST also be escaped, as in some properties semi-colon is used for separators.
  • Properties using semi-colons: N, ADR, GEO, ORG
  • Both ADR and N's individual parts may be broken up further with a comma.
  • Properties using commas: NICKNAME, CATEGORIES

vCard 4.0 (rfc6350) says:

  • Commas must be escaped.
  • Semi-colons may be escaped, an unescaped semi-colon may be a delimiter, depending on the property.
  • Backslashes must be escaped
  • Newlines must be escaped as either \N or
    .
  • Some compound properties may contain multiple parts themselves, so a comma within a semi-colon delimited property may also be unescaped to denote multiple parts within the compound property.
  • Text-properties using semi-colons: N, ADR, ORG, CLIENTPIDMAP.
  • Text-properties using commas: NICKNAME, RELATED, CATEGORIES, PID.

Even though the spec says that commas must always be escaped, the example for GEO in Section 6.5.2 seems to violate this.

iCalendar 2.0 (rfc5545) says:

  • Commas or semi-colons may be used as delimiters, depending on the property.
  • Commas, semi-colons, backslashes, newline (\N or
    ) are always escaped, unless they are delimiters.
  • Colons shall not be escaped.
  • Commas can be considered the 'default delimiter' and is described as the delimiter in cases where the order of the multiple values is insignificant.
  • Semi-colons are described as the delimiter for 'structured values'. They are specifically used in Semi-colons are used as a delimiter in REQUEST-STATUS, RRULE, GEO and EXRULE. EXRULE is deprecated however.

Now for the parameters

If delimiter is not set (null) this method will just return a string. If it's a comma or a semi-colon the string will be split on those characters, and always return an array.

Parameters
string$input
string$delimiter
Returns
string|string[]

Definition at line 549 of file MimeDir.php.

549 {
550
551 $regex = '# (?: (\\\\ (?: \\\\ | N | n | ; | , ) )';
552 if ($delimiter) {
553 $regex .= ' | (' . $delimiter . ')';
554 }
555 $regex .= ') #x';
556
557 $matches = preg_split($regex, $input, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
558
559 $resultArray = [];
560 $result = '';
561
562 foreach ($matches as $match) {
563
564 switch ($match) {
565 case '\\\\' :
566 $result .= '\\';
567 break;
568 case '\N' :
569 case '\n' :
570 $result .= "\n";
571 break;
572 case '\;' :
573 $result .= ';';
574 break;
575 case '\,' :
576 $result .= ',';
577 break;
578 case $delimiter :
579 $resultArray[] = $result;
580 $result = '';
581 break;
582 default :
583 $result .= $match;
584 break;
585
586 }
587
588 }
589
590 $resultArray[] = $result;
591 return $delimiter ? $resultArray : $result;
592
593 }
echo;exit;}function LogoutNotification($SessionID){ global $ilDB;$q="SELECT session_id, data FROM usr_session WHERE expires > (\w+)\|/" PREG_SPLIT_NO_EMPTY PREG_SPLIT_DELIM_CAPTURE
$delimiter
Definition: showstats.php:16

References $delimiter, Sabre\VObject\Parser\MimeDir\$input, $result, and PREG_SPLIT_DELIM_CAPTURE.

Referenced by Sabre\VObject\Property\Text\setRawMimeDirValue().

+ Here is the caller graph for this function:

Field Documentation

◆ $charset

Sabre\VObject\Parser\MimeDir::$charset = 'UTF-8'
protected

◆ $input

◆ $lineBuffer

Sabre\VObject\Parser\MimeDir::$lineBuffer
protected

Definition at line 253 of file MimeDir.php.

Referenced by Sabre\VObject\Parser\MimeDir\readLine().

◆ $lineIndex

Sabre\VObject\Parser\MimeDir::$lineIndex = 0
protected

The real current line number.

Definition at line 258 of file MimeDir.php.

Referenced by Sabre\VObject\Parser\MimeDir\readLine().

◆ $rawLine

Sabre\VObject\Parser\MimeDir::$rawLine
protected

◆ $root

Sabre\VObject\Parser\MimeDir::$root
protected

Definition at line 39 of file MimeDir.php.

Referenced by Sabre\VObject\Parser\MimeDir\parse().

◆ $startLine

Sabre\VObject\Parser\MimeDir::$startLine = 0
protected

Definition at line 266 of file MimeDir.php.

◆ $SUPPORTED_CHARSETS

Sabre\VObject\Parser\MimeDir::$SUPPORTED_CHARSETS
staticprotected
Initial value:
= [
'UTF-8',
'ISO-8859-1',
'Windows-1252',
]

The list of character sets we support when decoding.

This would be a const expression but for now we need to support PHP 5.5

Definition at line 60 of file MimeDir.php.


The documentation for this class was generated from the following file: