[Pkg-owncloud-commits] [php-sabre-vobject] 133/341: Fix <rdate />.

David Prévot taffit at moszumanska.debian.org
Tue Aug 11 13:35:41 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository php-sabre-vobject.

commit 0169f69432a625efdab212ffef44a3b02764ca23
Author: Ivan Enderlin <ivan.enderlin at hoa-project.net>
Date:   Thu Jan 15 15:25:14 2015 +0100

    Fix <rdate />.
---
 lib/Parser/XML.php               |  21 +++++-
 tests/VObject/Parser/XmlTest.php | 146 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 166 insertions(+), 1 deletion(-)

diff --git a/lib/Parser/XML.php b/lib/Parser/XML.php
index 852daf0..3eac6f3 100644
--- a/lib/Parser/XML.php
+++ b/lib/Parser/XML.php
@@ -169,13 +169,32 @@ class XML extends Parser {
                             case 'resources':
                             case 'freebusy':
                             case 'exdate':
-                            case 'rdate':
                                 foreach ($xmlProperty['value'] as $specialChild) {
                                     $propertyValue[static::getTagName($specialChild['name'])]
                                         = $specialChild['value'];
                                 }
                                 break;
 
+                            case 'rdate':
+                                $propertyType = 'date-time';
+
+                                foreach ($xmlProperty['value'] as $specialChild) {
+
+                                    $tagName = static::getTagName($specialChild['name']);
+
+                                    if ('period' === $tagName) {
+
+                                        $propertyParameters['value'] = 'PERIOD';
+                                        $propertyValue[]             = implode('/', $specialChild['value']);
+
+                                    }
+                                    else {
+                                        $propertyValue[] = $specialChild['value'];
+                                    }
+                                }
+
+                                break;
+
                             case 'period':
                                 $propertyType  = 'period';
                                 $propertyValue = [implode('/', $xmlProperty['value'])];
diff --git a/tests/VObject/Parser/XmlTest.php b/tests/VObject/Parser/XmlTest.php
index 58924dd..b988102 100644
--- a/tests/VObject/Parser/XmlTest.php
+++ b/tests/VObject/Parser/XmlTest.php
@@ -971,6 +971,152 @@ XML
 
     }
 
+    function testRDateWithDateTime() {
+
+        $this->assertXCalEqualsToICal(
+<<<XML
+<?xml version="1.0" encoding="utf-8"?>
+            <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
+             <vcalendar>
+              <properties>
+               <rdate>
+                <date-time>2008-02-05T19:12:24Z</date-time>
+               </rdate>
+              </properties>
+             </vcalendar>
+            </icalendar>
+XML
+,
+            'BEGIN:VCALENDAR' . CRLF .
+            'RDATE:20080205T191224Z' . CRLF .
+            'END:VCALENDAR' . CRLF
+        );
+
+        $this->assertXCalEqualsToICal(
+<<<XML
+<?xml version="1.0" encoding="utf-8"?>
+            <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
+             <vcalendar>
+              <properties>
+               <rdate>
+                <date-time>2008-02-05T19:12:24Z</date-time>
+                <date-time>2009-02-05T19:12:24Z</date-time>
+               </rdate>
+              </properties>
+             </vcalendar>
+            </icalendar>
+XML
+,
+            'BEGIN:VCALENDAR' . CRLF .
+            'RDATE:20080205T191224Z,20090205T191224Z' . CRLF .
+            'END:VCALENDAR' . CRLF
+        );
+
+    }
+
+    function testRDateWithDate() {
+
+        $this->assertXCalEqualsToICal(
+<<<XML
+<?xml version="1.0" encoding="utf-8"?>
+            <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
+             <vcalendar>
+              <properties>
+               <rdate>
+                <date>2008-10-06</date>
+               </rdate>
+              </properties>
+             </vcalendar>
+            </icalendar>
+XML
+,
+            'BEGIN:VCALENDAR' . CRLF .
+            'RDATE:20081006' . CRLF .
+            'END:VCALENDAR' . CRLF
+        );
+
+        $this->assertXCalEqualsToICal(
+<<<XML
+<?xml version="1.0" encoding="utf-8"?>
+            <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
+             <vcalendar>
+              <properties>
+               <rdate>
+                <date>2008-10-06</date>
+                <date>2009-10-06</date>
+                <date>2010-10-06</date>
+               </rdate>
+              </properties>
+             </vcalendar>
+            </icalendar>
+XML
+,
+            'BEGIN:VCALENDAR' . CRLF .
+            'RDATE:20081006,20091006,20101006' . CRLF .
+            'END:VCALENDAR' . CRLF
+        );
+
+    }
+
+    function testRDateWithPeriod() {
+
+        $this->assertXCalEqualsToICal(
+<<<XML
+<?xml version="1.0" encoding="utf-8"?>
+            <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
+             <vcalendar>
+              <properties>
+               <rdate>
+                <parameters>
+                 <tzid><text>US/Eastern</text></tzid>
+                </parameters>
+                <period>
+                 <start>2006-01-02T15:00:00</start>
+                 <duration>PT2H</duration>
+                </period>
+               </rdate>
+              </properties>
+             </vcalendar>
+            </icalendar>
+XML
+,
+            'BEGIN:VCALENDAR' . CRLF .
+            'RDATE;TZID=US/Eastern;VALUE=PERIOD:20060102T150000/PT2H' . CRLF .
+            'END:VCALENDAR' . CRLF
+        );
+
+        $this->assertXCalEqualsToICal(
+<<<XML
+<?xml version="1.0" encoding="utf-8"?>
+            <icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">
+             <vcalendar>
+              <properties>
+               <rdate>
+                <parameters>
+                 <tzid><text>US/Eastern</text></tzid>
+                </parameters>
+                <period>
+                 <start>2006-01-02T15:00:00</start>
+                 <duration>PT2H</duration>
+                </period>
+                <period>
+                 <start>2008-01-02T15:00:00</start>
+                 <duration>PT1H</duration>
+                </period>
+               </rdate>
+              </properties>
+             </vcalendar>
+            </icalendar>
+XML
+,
+            'BEGIN:VCALENDAR' . CRLF .
+            'RDATE;TZID=US/Eastern;VALUE=PERIOD:20060102T150000/PT2H,20080102T150000/PT1' . CRLF .
+            ' H' . CRLF .
+            'END:VCALENDAR' . CRLF
+        );
+
+    }
+
     protected function assertXCalEqualsToICal($xcal, $ical) {
 
         $component = VObject\Reader::readXML($xcal);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/php-sabre-vobject.git



More information about the Pkg-owncloud-commits mailing list