7
|
1 <?php
|
|
2
|
|
3 namespace Sabre\VObject\Parser;
|
|
4
|
|
5 use
|
|
6 Sabre\VObject\Reader;
|
|
7
|
|
8 class QuotedPrintableTest extends \PHPUnit_Framework_TestCase {
|
|
9
|
|
10 function testReadQuotedPrintableSimple() {
|
|
11
|
|
12 $data = "BEGIN:VCARD\r\nLABEL;ENCODING=QUOTED-PRINTABLE:Aach=65n\r\nEND:VCARD";
|
|
13
|
|
14 $result = Reader::read($data);
|
|
15
|
|
16 $this->assertInstanceOf('Sabre\\VObject\\Component', $result);
|
|
17 $this->assertEquals('VCARD', $result->name);
|
|
18 $this->assertEquals(1, count($result->children()));
|
|
19 $this->assertEquals("Aachen", $this->getPropertyValue($result->label));
|
|
20
|
|
21 }
|
|
22
|
|
23 function testReadQuotedPrintableNewlineSoft() {
|
|
24
|
|
25 $data = "BEGIN:VCARD\r\nLABEL;ENCODING=QUOTED-PRINTABLE:Aa=\r\n ch=\r\n en\r\nEND:VCARD";
|
|
26 $result = Reader::read($data);
|
|
27
|
|
28 $this->assertInstanceOf('Sabre\\VObject\\Component', $result);
|
|
29 $this->assertEquals('VCARD', $result->name);
|
|
30 $this->assertEquals(1, count($result->children()));
|
|
31 $this->assertEquals("Aachen", $this->getPropertyValue($result->label));
|
|
32
|
|
33 }
|
|
34
|
|
35 function testReadQuotedPrintableNewlineHard() {
|
|
36
|
|
37 $data = "BEGIN:VCARD\r\nLABEL;ENCODING=QUOTED-PRINTABLE:Aachen=0D=0A=\r\n Germany\r\nEND:VCARD";
|
|
38 $result = Reader::read($data);
|
|
39
|
|
40 $this->assertInstanceOf('Sabre\\VObject\\Component', $result);
|
|
41 $this->assertEquals('VCARD', $result->name);
|
|
42 $this->assertEquals(1, count($result->children()));
|
|
43 $this->assertEquals("Aachen\r\nGermany", $this->getPropertyValue($result->label));
|
|
44
|
|
45
|
|
46 }
|
|
47
|
|
48 function testReadQuotedPrintableCompatibilityMS() {
|
|
49
|
|
50 $data = "BEGIN:VCARD\r\nLABEL;ENCODING=QUOTED-PRINTABLE:Aachen=0D=0A=\r\nDeutschland:okay\r\nEND:VCARD";
|
|
51 $result = Reader::read($data, Reader::OPTION_FORGIVING);
|
|
52
|
|
53 $this->assertInstanceOf('Sabre\\VObject\\Component', $result);
|
|
54 $this->assertEquals('VCARD', $result->name);
|
|
55 $this->assertEquals(1, count($result->children()));
|
|
56 $this->assertEquals("Aachen\r\nDeutschland:okay", $this->getPropertyValue($result->label));
|
|
57
|
|
58 }
|
|
59
|
|
60 function testReadQuotesPrintableCompoundValues() {
|
|
61
|
|
62 $data = <<<VCF
|
|
63 BEGIN:VCARD
|
|
64 VERSION:2.1
|
|
65 N:Doe;John;;;
|
|
66 FN:John Doe
|
|
67 ADR;WORK;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;M=C3=BCnster =
|
|
68 Str. 1;M=C3=BCnster;;48143;Deutschland
|
|
69 END:VCARD
|
|
70 VCF;
|
|
71
|
|
72 $result = Reader::read($data, Reader::OPTION_FORGIVING);
|
|
73 $this->assertEquals(array(
|
|
74 '','','Münster Str. 1','Münster','','48143','Deutschland'
|
|
75 ), $result->ADR->getParts());
|
|
76
|
|
77
|
|
78 }
|
|
79
|
|
80 private function getPropertyValue(\Sabre\VObject\Property $property) {
|
|
81
|
|
82 return (string)$property;
|
|
83
|
|
84 /*
|
|
85 $param = $property['encoding'];
|
|
86 if ($param !== null) {
|
|
87 $encoding = strtoupper((string)$param);
|
|
88 if ($encoding === 'QUOTED-PRINTABLE') {
|
|
89 $value = quoted_printable_decode($value);
|
|
90 } else {
|
|
91 throw new Exception();
|
|
92 }
|
|
93 }
|
|
94
|
|
95 $param = $property['charset'];
|
|
96 if ($param !== null) {
|
|
97 $charset = strtoupper((string)$param);
|
|
98 if ($charset !== 'UTF-8') {
|
|
99 $value = mb_convert_encoding($value, 'UTF-8', $charset);
|
|
100 }
|
|
101 } else {
|
|
102 $value = StringUtil::convertToUTF8($value);
|
|
103 }
|
|
104
|
|
105 return $value;
|
|
106 */
|
|
107 }
|
|
108 }
|