1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\CalDAV; 4*a1a3b679SAndreas Boehleruse Sabre\VObject; 5*a1a3b679SAndreas Boehleruse Sabre\DAV; 6*a1a3b679SAndreas Boehler 7*a1a3b679SAndreas Boehlerclass CalendarQueryValidatorTest extends \PHPUnit_Framework_TestCase { 8*a1a3b679SAndreas Boehler 9*a1a3b679SAndreas Boehler function testTopLevelFail() { 10*a1a3b679SAndreas Boehler 11*a1a3b679SAndreas Boehler $validator = new CalendarQueryValidator(); 12*a1a3b679SAndreas Boehler $vcal = <<<ICS 13*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 14*a1a3b679SAndreas BoehlerBEGIN:VEVENT 15*a1a3b679SAndreas BoehlerEND:VEVENT 16*a1a3b679SAndreas BoehlerEND:VCALENDAR 17*a1a3b679SAndreas BoehlerICS; 18*a1a3b679SAndreas Boehler $vcal = VObject\Reader::read($vcal); 19*a1a3b679SAndreas Boehler $this->assertFalse($validator->validate($vcal, ['name' => 'VFOO'])); 20*a1a3b679SAndreas Boehler 21*a1a3b679SAndreas Boehler } 22*a1a3b679SAndreas Boehler 23*a1a3b679SAndreas Boehler /** 24*a1a3b679SAndreas Boehler * @dataProvider provider 25*a1a3b679SAndreas Boehler */ 26*a1a3b679SAndreas Boehler function testValid($icalObject, $filters, $outcome) { 27*a1a3b679SAndreas Boehler 28*a1a3b679SAndreas Boehler $validator = new CalendarQueryValidator(); 29*a1a3b679SAndreas Boehler 30*a1a3b679SAndreas Boehler // Wrapping filter in a VCALENDAR component filter, as this is always 31*a1a3b679SAndreas Boehler // there anyway. 32*a1a3b679SAndreas Boehler $filters = array( 33*a1a3b679SAndreas Boehler 'name' => 'VCALENDAR', 34*a1a3b679SAndreas Boehler 'comp-filters' => array($filters), 35*a1a3b679SAndreas Boehler 'prop-filters' => array(), 36*a1a3b679SAndreas Boehler 'is-not-defined' => false, 37*a1a3b679SAndreas Boehler 'time-range' => null, 38*a1a3b679SAndreas Boehler ); 39*a1a3b679SAndreas Boehler 40*a1a3b679SAndreas Boehler $vObject = VObject\Reader::read($icalObject); 41*a1a3b679SAndreas Boehler 42*a1a3b679SAndreas Boehler switch($outcome) { 43*a1a3b679SAndreas Boehler case 0 : 44*a1a3b679SAndreas Boehler $this->assertFalse($validator->validate($vObject, $filters)); 45*a1a3b679SAndreas Boehler break; 46*a1a3b679SAndreas Boehler case 1 : 47*a1a3b679SAndreas Boehler $this->assertTrue($validator->validate($vObject, $filters)); 48*a1a3b679SAndreas Boehler break; 49*a1a3b679SAndreas Boehler case -1 : 50*a1a3b679SAndreas Boehler try { 51*a1a3b679SAndreas Boehler $validator->validate($vObject, $filters); 52*a1a3b679SAndreas Boehler $this->fail('This test was supposed to fail'); 53*a1a3b679SAndreas Boehler } catch (\Exception $e) { 54*a1a3b679SAndreas Boehler // We need to test something to be valid for phpunit strict 55*a1a3b679SAndreas Boehler // mode. 56*a1a3b679SAndreas Boehler $this->assertTrue(true); 57*a1a3b679SAndreas Boehler } 58*a1a3b679SAndreas Boehler break; 59*a1a3b679SAndreas Boehler 60*a1a3b679SAndreas Boehler } 61*a1a3b679SAndreas Boehler 62*a1a3b679SAndreas Boehler } 63*a1a3b679SAndreas Boehler 64*a1a3b679SAndreas Boehler function provider() { 65*a1a3b679SAndreas Boehler 66*a1a3b679SAndreas Boehler $blob1 = <<<yow 67*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 68*a1a3b679SAndreas BoehlerBEGIN:VEVENT 69*a1a3b679SAndreas BoehlerSUMMARY:hi 70*a1a3b679SAndreas BoehlerEND:VEVENT 71*a1a3b679SAndreas BoehlerEND:VCALENDAR 72*a1a3b679SAndreas Boehleryow; 73*a1a3b679SAndreas Boehler 74*a1a3b679SAndreas Boehler $blob2 = <<<yow 75*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 76*a1a3b679SAndreas BoehlerBEGIN:VEVENT 77*a1a3b679SAndreas BoehlerSUMMARY:hi 78*a1a3b679SAndreas BoehlerBEGIN:VALARM 79*a1a3b679SAndreas BoehlerACTION:DISPLAY 80*a1a3b679SAndreas BoehlerEND:VALARM 81*a1a3b679SAndreas BoehlerEND:VEVENT 82*a1a3b679SAndreas BoehlerEND:VCALENDAR 83*a1a3b679SAndreas Boehleryow; 84*a1a3b679SAndreas Boehler 85*a1a3b679SAndreas Boehler $blob3 = <<<yow 86*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 87*a1a3b679SAndreas BoehlerBEGIN:VEVENT 88*a1a3b679SAndreas BoehlerSUMMARY:hi 89*a1a3b679SAndreas BoehlerDTSTART;VALUE=DATE:20110704 90*a1a3b679SAndreas BoehlerEND:VEVENT 91*a1a3b679SAndreas BoehlerEND:VCALENDAR 92*a1a3b679SAndreas Boehleryow; 93*a1a3b679SAndreas Boehler $blob4 = <<<yow 94*a1a3b679SAndreas BoehlerBEGIN:VCARD 95*a1a3b679SAndreas BoehlerVERSION:3.0 96*a1a3b679SAndreas BoehlerFN:Evert 97*a1a3b679SAndreas BoehlerEND:VCARD 98*a1a3b679SAndreas Boehleryow; 99*a1a3b679SAndreas Boehler 100*a1a3b679SAndreas Boehler $blob5 = <<<yow 101*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 102*a1a3b679SAndreas BoehlerBEGIN:VEVENT 103*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 104*a1a3b679SAndreas BoehlerDTEND:20110102T120000Z 105*a1a3b679SAndreas BoehlerEND:VEVENT 106*a1a3b679SAndreas BoehlerEND:VCALENDAR 107*a1a3b679SAndreas Boehleryow; 108*a1a3b679SAndreas Boehler 109*a1a3b679SAndreas Boehler $blob6 = <<<yow 110*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 111*a1a3b679SAndreas BoehlerBEGIN:VEVENT 112*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 113*a1a3b679SAndreas BoehlerDURATION:PT5H 114*a1a3b679SAndreas BoehlerEND:VEVENT 115*a1a3b679SAndreas BoehlerEND:VCALENDAR 116*a1a3b679SAndreas Boehleryow; 117*a1a3b679SAndreas Boehler 118*a1a3b679SAndreas Boehler $blob7 = <<<yow 119*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 120*a1a3b679SAndreas BoehlerBEGIN:VEVENT 121*a1a3b679SAndreas BoehlerDTSTART;VALUE=DATE:20110101 122*a1a3b679SAndreas BoehlerEND:VEVENT 123*a1a3b679SAndreas BoehlerEND:VCALENDAR 124*a1a3b679SAndreas Boehleryow; 125*a1a3b679SAndreas Boehler 126*a1a3b679SAndreas Boehler $blob8 = <<<yow 127*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 128*a1a3b679SAndreas BoehlerBEGIN:VEVENT 129*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 130*a1a3b679SAndreas BoehlerEND:VEVENT 131*a1a3b679SAndreas BoehlerEND:VCALENDAR 132*a1a3b679SAndreas Boehleryow; 133*a1a3b679SAndreas Boehler 134*a1a3b679SAndreas Boehler $blob9 = <<<yow 135*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 136*a1a3b679SAndreas BoehlerBEGIN:VTODO 137*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 138*a1a3b679SAndreas BoehlerDURATION:PT1H 139*a1a3b679SAndreas BoehlerEND:VTODO 140*a1a3b679SAndreas BoehlerEND:VCALENDAR 141*a1a3b679SAndreas Boehleryow; 142*a1a3b679SAndreas Boehler $blob10 = <<<yow 143*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 144*a1a3b679SAndreas BoehlerBEGIN:VTODO 145*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 146*a1a3b679SAndreas BoehlerDUE:20110101T130000Z 147*a1a3b679SAndreas BoehlerEND:VTODO 148*a1a3b679SAndreas BoehlerEND:VCALENDAR 149*a1a3b679SAndreas Boehleryow; 150*a1a3b679SAndreas Boehler $blob11 = <<<yow 151*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 152*a1a3b679SAndreas BoehlerBEGIN:VTODO 153*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 154*a1a3b679SAndreas BoehlerEND:VTODO 155*a1a3b679SAndreas BoehlerEND:VCALENDAR 156*a1a3b679SAndreas Boehleryow; 157*a1a3b679SAndreas Boehler 158*a1a3b679SAndreas Boehler $blob12 = <<<yow 159*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 160*a1a3b679SAndreas BoehlerBEGIN:VTODO 161*a1a3b679SAndreas BoehlerDUE:20110101T130000Z 162*a1a3b679SAndreas BoehlerEND:VTODO 163*a1a3b679SAndreas BoehlerEND:VCALENDAR 164*a1a3b679SAndreas Boehleryow; 165*a1a3b679SAndreas Boehler 166*a1a3b679SAndreas Boehler $blob13 = <<<yow 167*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 168*a1a3b679SAndreas BoehlerBEGIN:VTODO 169*a1a3b679SAndreas BoehlerCOMPLETED:20110101T130000Z 170*a1a3b679SAndreas BoehlerCREATED:20110101T110000Z 171*a1a3b679SAndreas BoehlerEND:VTODO 172*a1a3b679SAndreas BoehlerEND:VCALENDAR 173*a1a3b679SAndreas Boehleryow; 174*a1a3b679SAndreas Boehler 175*a1a3b679SAndreas Boehler $blob14 = <<<yow 176*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 177*a1a3b679SAndreas BoehlerBEGIN:VTODO 178*a1a3b679SAndreas BoehlerCOMPLETED:20110101T130000Z 179*a1a3b679SAndreas BoehlerEND:VTODO 180*a1a3b679SAndreas BoehlerEND:VCALENDAR 181*a1a3b679SAndreas Boehleryow; 182*a1a3b679SAndreas Boehler 183*a1a3b679SAndreas Boehler $blob15 = <<<yow 184*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 185*a1a3b679SAndreas BoehlerBEGIN:VTODO 186*a1a3b679SAndreas BoehlerCREATED:20110101T110000Z 187*a1a3b679SAndreas BoehlerEND:VTODO 188*a1a3b679SAndreas BoehlerEND:VCALENDAR 189*a1a3b679SAndreas Boehleryow; 190*a1a3b679SAndreas Boehler 191*a1a3b679SAndreas Boehler 192*a1a3b679SAndreas Boehler $blob16 = <<<yow 193*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 194*a1a3b679SAndreas BoehlerBEGIN:VTODO 195*a1a3b679SAndreas BoehlerEND:VTODO 196*a1a3b679SAndreas BoehlerEND:VCALENDAR 197*a1a3b679SAndreas Boehleryow; 198*a1a3b679SAndreas Boehler 199*a1a3b679SAndreas Boehler $blob17 = <<<yow 200*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 201*a1a3b679SAndreas BoehlerBEGIN:VJOURNAL 202*a1a3b679SAndreas BoehlerEND:VJOURNAL 203*a1a3b679SAndreas BoehlerEND:VCALENDAR 204*a1a3b679SAndreas Boehleryow; 205*a1a3b679SAndreas Boehler 206*a1a3b679SAndreas Boehler $blob18 = <<<yow 207*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 208*a1a3b679SAndreas BoehlerBEGIN:VJOURNAL 209*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 210*a1a3b679SAndreas BoehlerEND:VJOURNAL 211*a1a3b679SAndreas BoehlerEND:VCALENDAR 212*a1a3b679SAndreas Boehleryow; 213*a1a3b679SAndreas Boehler 214*a1a3b679SAndreas Boehler $blob19 = <<<yow 215*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 216*a1a3b679SAndreas BoehlerBEGIN:VJOURNAL 217*a1a3b679SAndreas BoehlerDTSTART;VALUE=DATE:20110101 218*a1a3b679SAndreas BoehlerEND:VJOURNAL 219*a1a3b679SAndreas BoehlerEND:VCALENDAR 220*a1a3b679SAndreas Boehleryow; 221*a1a3b679SAndreas Boehler 222*a1a3b679SAndreas Boehler $blob20 = <<<yow 223*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 224*a1a3b679SAndreas BoehlerBEGIN:VFREEBUSY 225*a1a3b679SAndreas BoehlerEND:VFREEBUSY 226*a1a3b679SAndreas BoehlerEND:VCALENDAR 227*a1a3b679SAndreas Boehleryow; 228*a1a3b679SAndreas Boehler 229*a1a3b679SAndreas Boehler $blob21 = <<<yow 230*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 231*a1a3b679SAndreas BoehlerBEGIN:VEVENT 232*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 233*a1a3b679SAndreas BoehlerBEGIN:VALARM 234*a1a3b679SAndreas BoehlerTRIGGER:-PT1H 235*a1a3b679SAndreas BoehlerEND:VALARM 236*a1a3b679SAndreas BoehlerEND:VEVENT 237*a1a3b679SAndreas BoehlerEND:VCALENDAR 238*a1a3b679SAndreas Boehleryow; 239*a1a3b679SAndreas Boehler 240*a1a3b679SAndreas Boehler $blob22 = <<<yow 241*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 242*a1a3b679SAndreas BoehlerBEGIN:VEVENT 243*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 244*a1a3b679SAndreas BoehlerBEGIN:VALARM 245*a1a3b679SAndreas BoehlerTRIGGER;VALUE=DURATION:-PT1H 246*a1a3b679SAndreas BoehlerEND:VALARM 247*a1a3b679SAndreas BoehlerEND:VEVENT 248*a1a3b679SAndreas BoehlerEND:VCALENDAR 249*a1a3b679SAndreas Boehleryow; 250*a1a3b679SAndreas Boehler 251*a1a3b679SAndreas Boehler $blob23 = <<<yow 252*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 253*a1a3b679SAndreas BoehlerBEGIN:VEVENT 254*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 255*a1a3b679SAndreas BoehlerBEGIN:VALARM 256*a1a3b679SAndreas BoehlerTRIGGER;VALUE=DURATION;RELATED=END:-PT1H 257*a1a3b679SAndreas BoehlerEND:VALARM 258*a1a3b679SAndreas BoehlerEND:VEVENT 259*a1a3b679SAndreas BoehlerEND:VCALENDAR 260*a1a3b679SAndreas Boehleryow; 261*a1a3b679SAndreas Boehler 262*a1a3b679SAndreas Boehler $blob24 = <<<yow 263*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 264*a1a3b679SAndreas BoehlerBEGIN:VEVENT 265*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 266*a1a3b679SAndreas BoehlerDTEND:20110101T130000Z 267*a1a3b679SAndreas BoehlerBEGIN:VALARM 268*a1a3b679SAndreas BoehlerTRIGGER;VALUE=DURATION;RELATED=END:-PT2H 269*a1a3b679SAndreas BoehlerEND:VALARM 270*a1a3b679SAndreas BoehlerEND:VEVENT 271*a1a3b679SAndreas BoehlerEND:VCALENDAR 272*a1a3b679SAndreas Boehleryow; 273*a1a3b679SAndreas Boehler 274*a1a3b679SAndreas Boehler $blob25 = <<<yow 275*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 276*a1a3b679SAndreas BoehlerBEGIN:VEVENT 277*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 278*a1a3b679SAndreas BoehlerDURATION:PT1H 279*a1a3b679SAndreas BoehlerBEGIN:VALARM 280*a1a3b679SAndreas BoehlerTRIGGER;VALUE=DURATION;RELATED=END:-PT2H 281*a1a3b679SAndreas BoehlerEND:VALARM 282*a1a3b679SAndreas BoehlerEND:VEVENT 283*a1a3b679SAndreas BoehlerEND:VCALENDAR 284*a1a3b679SAndreas Boehleryow; 285*a1a3b679SAndreas Boehler 286*a1a3b679SAndreas Boehler $blob26 = <<<yow 287*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 288*a1a3b679SAndreas BoehlerBEGIN:VEVENT 289*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 290*a1a3b679SAndreas BoehlerDURATION:PT1H 291*a1a3b679SAndreas BoehlerBEGIN:VALARM 292*a1a3b679SAndreas BoehlerTRIGGER;VALUE=DATE-TIME:20110101T110000Z 293*a1a3b679SAndreas BoehlerEND:VALARM 294*a1a3b679SAndreas BoehlerEND:VEVENT 295*a1a3b679SAndreas BoehlerEND:VCALENDAR 296*a1a3b679SAndreas Boehleryow; 297*a1a3b679SAndreas Boehler 298*a1a3b679SAndreas Boehler 299*a1a3b679SAndreas Boehler $blob27 = <<<yow 300*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 301*a1a3b679SAndreas BoehlerBEGIN:VTODO 302*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 303*a1a3b679SAndreas BoehlerDUE:20110101T130000Z 304*a1a3b679SAndreas BoehlerBEGIN:VALARM 305*a1a3b679SAndreas BoehlerTRIGGER;VALUE=DURATION;RELATED=END:-PT2H 306*a1a3b679SAndreas BoehlerEND:VALARM 307*a1a3b679SAndreas BoehlerEND:VTODO 308*a1a3b679SAndreas BoehlerEND:VCALENDAR 309*a1a3b679SAndreas Boehleryow; 310*a1a3b679SAndreas Boehler 311*a1a3b679SAndreas Boehler $blob28 = <<<yow 312*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 313*a1a3b679SAndreas BoehlerBEGIN:VJOURNAL 314*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 315*a1a3b679SAndreas BoehlerBEGIN:VALARM 316*a1a3b679SAndreas BoehlerTRIGGER;VALUE=DURATION;RELATED=END:-PT2H 317*a1a3b679SAndreas BoehlerEND:VALARM 318*a1a3b679SAndreas BoehlerEND:VJOURNAL 319*a1a3b679SAndreas BoehlerEND:VCALENDAR 320*a1a3b679SAndreas Boehleryow; 321*a1a3b679SAndreas Boehler 322*a1a3b679SAndreas Boehler $blob29 = <<<yow 323*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 324*a1a3b679SAndreas BoehlerBEGIN:VEVENT 325*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 326*a1a3b679SAndreas BoehlerDURATION:PT1H 327*a1a3b679SAndreas BoehlerBEGIN:VALARM 328*a1a3b679SAndreas BoehlerTRIGGER;VALUE=DATE-TIME:20110101T090000Z 329*a1a3b679SAndreas BoehlerREPEAT:2 330*a1a3b679SAndreas BoehlerDURATION:PT1H 331*a1a3b679SAndreas BoehlerEND:VALARM 332*a1a3b679SAndreas BoehlerEND:VEVENT 333*a1a3b679SAndreas BoehlerEND:VCALENDAR 334*a1a3b679SAndreas Boehleryow; 335*a1a3b679SAndreas Boehler 336*a1a3b679SAndreas Boehler $blob30 = <<<yow 337*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 338*a1a3b679SAndreas BoehlerBEGIN:VEVENT 339*a1a3b679SAndreas BoehlerDTSTART:20110101T120000Z 340*a1a3b679SAndreas BoehlerDURATION:PT1H 341*a1a3b679SAndreas BoehlerBEGIN:VALARM 342*a1a3b679SAndreas BoehlerTRIGGER;VALUE=DATE-TIME:20110101T090000Z 343*a1a3b679SAndreas BoehlerDURATION:PT1H 344*a1a3b679SAndreas BoehlerEND:VALARM 345*a1a3b679SAndreas BoehlerEND:VEVENT 346*a1a3b679SAndreas BoehlerEND:VCALENDAR 347*a1a3b679SAndreas Boehleryow; 348*a1a3b679SAndreas Boehler 349*a1a3b679SAndreas Boehler $blob31 = <<<yow 350*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 351*a1a3b679SAndreas BoehlerBEGIN:VEVENT 352*a1a3b679SAndreas BoehlerUID:foobar 353*a1a3b679SAndreas BoehlerDTSTART:20080101T120000Z 354*a1a3b679SAndreas BoehlerDURATION:PT1H 355*a1a3b679SAndreas BoehlerRRULE:FREQ=YEARLY 356*a1a3b679SAndreas BoehlerEND:VEVENT 357*a1a3b679SAndreas BoehlerEND:VCALENDAR 358*a1a3b679SAndreas Boehleryow; 359*a1a3b679SAndreas Boehler 360*a1a3b679SAndreas Boehler $blob32 = <<<yow 361*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 362*a1a3b679SAndreas BoehlerBEGIN:VEVENT 363*a1a3b679SAndreas BoehlerUID:foobar 364*a1a3b679SAndreas BoehlerDTSTART:20080102T120000Z 365*a1a3b679SAndreas BoehlerDURATION:PT1H 366*a1a3b679SAndreas BoehlerRRULE:FREQ=YEARLY 367*a1a3b679SAndreas BoehlerEND:VEVENT 368*a1a3b679SAndreas BoehlerEND:VCALENDAR 369*a1a3b679SAndreas Boehleryow; 370*a1a3b679SAndreas Boehler $blob33 = <<<yow 371*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 372*a1a3b679SAndreas BoehlerBEGIN:VEVENT 373*a1a3b679SAndreas BoehlerUID:foobar 374*a1a3b679SAndreas BoehlerDTSTART;VALUE=DATE:20120628 375*a1a3b679SAndreas BoehlerRRULE:FREQ=DAILY 376*a1a3b679SAndreas BoehlerEND:VEVENT 377*a1a3b679SAndreas BoehlerEND:VCALENDAR 378*a1a3b679SAndreas Boehleryow; 379*a1a3b679SAndreas Boehler $blob34 = <<<yow 380*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 381*a1a3b679SAndreas BoehlerBEGIN:VEVENT 382*a1a3b679SAndreas BoehlerUID:foobar 383*a1a3b679SAndreas BoehlerDTSTART;VALUE=DATE:20120628 384*a1a3b679SAndreas BoehlerRRULE:FREQ=DAILY 385*a1a3b679SAndreas BoehlerBEGIN:VALARM 386*a1a3b679SAndreas BoehlerTRIGGER:P52W 387*a1a3b679SAndreas BoehlerEND:VALARM 388*a1a3b679SAndreas BoehlerEND:VEVENT 389*a1a3b679SAndreas BoehlerEND:VCALENDAR 390*a1a3b679SAndreas Boehleryow; 391*a1a3b679SAndreas Boehler 392*a1a3b679SAndreas Boehler $filter1 = array( 393*a1a3b679SAndreas Boehler 'name' => 'VEVENT', 394*a1a3b679SAndreas Boehler 'comp-filters' => array(), 395*a1a3b679SAndreas Boehler 'prop-filters' => array(), 396*a1a3b679SAndreas Boehler 'is-not-defined' => false, 397*a1a3b679SAndreas Boehler 'time-range' => null, 398*a1a3b679SAndreas Boehler ); 399*a1a3b679SAndreas Boehler $filter2 = $filter1; 400*a1a3b679SAndreas Boehler $filter2['name'] = 'VTODO'; 401*a1a3b679SAndreas Boehler 402*a1a3b679SAndreas Boehler $filter3 = $filter1; 403*a1a3b679SAndreas Boehler $filter3['is-not-defined'] = true; 404*a1a3b679SAndreas Boehler 405*a1a3b679SAndreas Boehler $filter4 = $filter1; 406*a1a3b679SAndreas Boehler $filter4['name'] = 'VTODO'; 407*a1a3b679SAndreas Boehler $filter4['is-not-defined'] = true; 408*a1a3b679SAndreas Boehler 409*a1a3b679SAndreas Boehler $filter5 = $filter1; 410*a1a3b679SAndreas Boehler $filter5['comp-filters'] = array( 411*a1a3b679SAndreas Boehler array( 412*a1a3b679SAndreas Boehler 'name' => 'VALARM', 413*a1a3b679SAndreas Boehler 'is-not-defined' => false, 414*a1a3b679SAndreas Boehler 'comp-filters' => array(), 415*a1a3b679SAndreas Boehler 'prop-filters' => array(), 416*a1a3b679SAndreas Boehler 'time-range' => null, 417*a1a3b679SAndreas Boehler ), 418*a1a3b679SAndreas Boehler ); 419*a1a3b679SAndreas Boehler $filter6 = $filter1; 420*a1a3b679SAndreas Boehler $filter6['prop-filters'] = array( 421*a1a3b679SAndreas Boehler array( 422*a1a3b679SAndreas Boehler 'name' => 'SUMMARY', 423*a1a3b679SAndreas Boehler 'is-not-defined' => false, 424*a1a3b679SAndreas Boehler 'param-filters' => array(), 425*a1a3b679SAndreas Boehler 'time-range' => null, 426*a1a3b679SAndreas Boehler 'text-match' => null, 427*a1a3b679SAndreas Boehler ), 428*a1a3b679SAndreas Boehler ); 429*a1a3b679SAndreas Boehler $filter7 = $filter6; 430*a1a3b679SAndreas Boehler $filter7['prop-filters'][0]['name'] = 'DESCRIPTION'; 431*a1a3b679SAndreas Boehler 432*a1a3b679SAndreas Boehler $filter8 = $filter6; 433*a1a3b679SAndreas Boehler $filter8['prop-filters'][0]['is-not-defined'] = true; 434*a1a3b679SAndreas Boehler 435*a1a3b679SAndreas Boehler $filter9 = $filter7; 436*a1a3b679SAndreas Boehler $filter9['prop-filters'][0]['is-not-defined'] = true; 437*a1a3b679SAndreas Boehler 438*a1a3b679SAndreas Boehler $filter10 = $filter5; 439*a1a3b679SAndreas Boehler $filter10['prop-filters'] = $filter6['prop-filters']; 440*a1a3b679SAndreas Boehler 441*a1a3b679SAndreas Boehler // Param filters 442*a1a3b679SAndreas Boehler $filter11 = $filter1; 443*a1a3b679SAndreas Boehler $filter11['prop-filters'] = array( 444*a1a3b679SAndreas Boehler array( 445*a1a3b679SAndreas Boehler 'name' => 'DTSTART', 446*a1a3b679SAndreas Boehler 'is-not-defined' => false, 447*a1a3b679SAndreas Boehler 'param-filters' => array( 448*a1a3b679SAndreas Boehler array( 449*a1a3b679SAndreas Boehler 'name' => 'VALUE', 450*a1a3b679SAndreas Boehler 'is-not-defined' => false, 451*a1a3b679SAndreas Boehler 'text-match' => null, 452*a1a3b679SAndreas Boehler ), 453*a1a3b679SAndreas Boehler ), 454*a1a3b679SAndreas Boehler 'time-range' => null, 455*a1a3b679SAndreas Boehler 'text-match' => null, 456*a1a3b679SAndreas Boehler ), 457*a1a3b679SAndreas Boehler ); 458*a1a3b679SAndreas Boehler 459*a1a3b679SAndreas Boehler $filter12 = $filter11; 460*a1a3b679SAndreas Boehler $filter12['prop-filters'][0]['param-filters'][0]['name'] = 'TZID'; 461*a1a3b679SAndreas Boehler 462*a1a3b679SAndreas Boehler $filter13 = $filter11; 463*a1a3b679SAndreas Boehler $filter13['prop-filters'][0]['param-filters'][0]['is-not-defined'] = true; 464*a1a3b679SAndreas Boehler 465*a1a3b679SAndreas Boehler $filter14 = $filter12; 466*a1a3b679SAndreas Boehler $filter14['prop-filters'][0]['param-filters'][0]['is-not-defined'] = true; 467*a1a3b679SAndreas Boehler 468*a1a3b679SAndreas Boehler // Param text filter 469*a1a3b679SAndreas Boehler $filter15 = $filter11; 470*a1a3b679SAndreas Boehler $filter15['prop-filters'][0]['param-filters'][0]['text-match'] = array( 471*a1a3b679SAndreas Boehler 'collation' => 'i;ascii-casemap', 472*a1a3b679SAndreas Boehler 'value' => 'dAtE', 473*a1a3b679SAndreas Boehler 'negate-condition' => false, 474*a1a3b679SAndreas Boehler ); 475*a1a3b679SAndreas Boehler $filter16 = $filter15; 476*a1a3b679SAndreas Boehler $filter16['prop-filters'][0]['param-filters'][0]['text-match']['collation'] = 'i;octet'; 477*a1a3b679SAndreas Boehler 478*a1a3b679SAndreas Boehler $filter17 = $filter15; 479*a1a3b679SAndreas Boehler $filter17['prop-filters'][0]['param-filters'][0]['text-match']['negate-condition'] = true; 480*a1a3b679SAndreas Boehler 481*a1a3b679SAndreas Boehler $filter18 = $filter15; 482*a1a3b679SAndreas Boehler $filter18['prop-filters'][0]['param-filters'][0]['text-match']['negate-condition'] = true; 483*a1a3b679SAndreas Boehler $filter18['prop-filters'][0]['param-filters'][0]['text-match']['collation'] = 'i;octet'; 484*a1a3b679SAndreas Boehler 485*a1a3b679SAndreas Boehler // prop + text 486*a1a3b679SAndreas Boehler $filter19 = $filter5; 487*a1a3b679SAndreas Boehler $filter19['comp-filters'][0]['prop-filters'] = array( 488*a1a3b679SAndreas Boehler array( 489*a1a3b679SAndreas Boehler 'name' => 'action', 490*a1a3b679SAndreas Boehler 'is-not-defined' => false, 491*a1a3b679SAndreas Boehler 'time-range' => null, 492*a1a3b679SAndreas Boehler 'param-filters' => array(), 493*a1a3b679SAndreas Boehler 'text-match' => array( 494*a1a3b679SAndreas Boehler 'collation' => 'i;ascii-casemap', 495*a1a3b679SAndreas Boehler 'value' => 'display', 496*a1a3b679SAndreas Boehler 'negate-condition' => false, 497*a1a3b679SAndreas Boehler ), 498*a1a3b679SAndreas Boehler ), 499*a1a3b679SAndreas Boehler ); 500*a1a3b679SAndreas Boehler 501*a1a3b679SAndreas Boehler // Time range 502*a1a3b679SAndreas Boehler $filter20 = array( 503*a1a3b679SAndreas Boehler 'name' => 'VEVENT', 504*a1a3b679SAndreas Boehler 'comp-filters' => array(), 505*a1a3b679SAndreas Boehler 'prop-filters' => array(), 506*a1a3b679SAndreas Boehler 'is-not-defined' => false, 507*a1a3b679SAndreas Boehler 'time-range' => array( 508*a1a3b679SAndreas Boehler 'start' => new \DateTime('2011-01-01 10:00:00', new \DateTimeZone('GMT')), 509*a1a3b679SAndreas Boehler 'end' => new \DateTime('2011-01-01 13:00:00', new \DateTimeZone('GMT')), 510*a1a3b679SAndreas Boehler ), 511*a1a3b679SAndreas Boehler ); 512*a1a3b679SAndreas Boehler // Time range, no end date 513*a1a3b679SAndreas Boehler $filter21 = $filter20; 514*a1a3b679SAndreas Boehler $filter21['time-range']['end'] = null; 515*a1a3b679SAndreas Boehler 516*a1a3b679SAndreas Boehler // Time range, no start date 517*a1a3b679SAndreas Boehler $filter22 = $filter20; 518*a1a3b679SAndreas Boehler $filter22['time-range']['start'] = null; 519*a1a3b679SAndreas Boehler 520*a1a3b679SAndreas Boehler // Time range, other dates 521*a1a3b679SAndreas Boehler $filter23 = $filter20; 522*a1a3b679SAndreas Boehler $filter23['time-range'] = array( 523*a1a3b679SAndreas Boehler 'start' => new \DateTime('2011-02-01 10:00:00', new \DateTimeZone('GMT')), 524*a1a3b679SAndreas Boehler 'end' => new \DateTime('2011-02-01 13:00:00', new \DateTimeZone('GMT')), 525*a1a3b679SAndreas Boehler ); 526*a1a3b679SAndreas Boehler // Time range 527*a1a3b679SAndreas Boehler $filter24 = array( 528*a1a3b679SAndreas Boehler 'name' => 'VTODO', 529*a1a3b679SAndreas Boehler 'comp-filters' => array(), 530*a1a3b679SAndreas Boehler 'prop-filters' => array(), 531*a1a3b679SAndreas Boehler 'is-not-defined' => false, 532*a1a3b679SAndreas Boehler 'time-range' => array( 533*a1a3b679SAndreas Boehler 'start' => new \DateTime('2011-01-01 12:45:00', new \DateTimeZone('GMT')), 534*a1a3b679SAndreas Boehler 'end' => new \DateTime('2011-01-01 13:15:00', new \DateTimeZone('GMT')), 535*a1a3b679SAndreas Boehler ), 536*a1a3b679SAndreas Boehler ); 537*a1a3b679SAndreas Boehler // Time range, other dates (1 month in the future) 538*a1a3b679SAndreas Boehler $filter25 = $filter24; 539*a1a3b679SAndreas Boehler $filter25['time-range'] = array( 540*a1a3b679SAndreas Boehler 'start' => new \DateTime('2011-02-01 10:00:00', new \DateTimeZone('GMT')), 541*a1a3b679SAndreas Boehler 'end' => new \DateTime('2011-02-01 13:00:00', new \DateTimeZone('GMT')), 542*a1a3b679SAndreas Boehler ); 543*a1a3b679SAndreas Boehler $filter26 = $filter24; 544*a1a3b679SAndreas Boehler $filter26['time-range'] = array( 545*a1a3b679SAndreas Boehler 'start' => new \DateTime('2011-01-01 11:45:00', new \DateTimeZone('GMT')), 546*a1a3b679SAndreas Boehler 'end' => new \DateTime('2011-01-01 12:15:00', new \DateTimeZone('GMT')), 547*a1a3b679SAndreas Boehler ); 548*a1a3b679SAndreas Boehler 549*a1a3b679SAndreas Boehler // Time range for VJOURNAL 550*a1a3b679SAndreas Boehler $filter27 = array( 551*a1a3b679SAndreas Boehler 'name' => 'VJOURNAL', 552*a1a3b679SAndreas Boehler 'comp-filters' => array(), 553*a1a3b679SAndreas Boehler 'prop-filters' => array(), 554*a1a3b679SAndreas Boehler 'is-not-defined' => false, 555*a1a3b679SAndreas Boehler 'time-range' => array( 556*a1a3b679SAndreas Boehler 'start' => new \DateTime('2011-01-01 12:45:00', new \DateTimeZone('GMT')), 557*a1a3b679SAndreas Boehler 'end' => new \DateTime('2011-01-01 13:15:00', new \DateTimeZone('GMT')), 558*a1a3b679SAndreas Boehler ), 559*a1a3b679SAndreas Boehler ); 560*a1a3b679SAndreas Boehler $filter28 = $filter27; 561*a1a3b679SAndreas Boehler $filter28['time-range'] = array( 562*a1a3b679SAndreas Boehler 'start' => new \DateTime('2011-01-01 11:45:00', new \DateTimeZone('GMT')), 563*a1a3b679SAndreas Boehler 'end' => new \DateTime('2011-01-01 12:15:00', new \DateTimeZone('GMT')), 564*a1a3b679SAndreas Boehler ); 565*a1a3b679SAndreas Boehler // Time range for VFREEBUSY 566*a1a3b679SAndreas Boehler $filter29 = array( 567*a1a3b679SAndreas Boehler 'name' => 'VFREEBUSY', 568*a1a3b679SAndreas Boehler 'comp-filters' => array(), 569*a1a3b679SAndreas Boehler 'prop-filters' => array(), 570*a1a3b679SAndreas Boehler 'is-not-defined' => false, 571*a1a3b679SAndreas Boehler 'time-range' => array( 572*a1a3b679SAndreas Boehler 'start' => new \DateTime('2011-01-01 12:45:00', new \DateTimeZone('GMT')), 573*a1a3b679SAndreas Boehler 'end' => new \DateTime('2011-01-01 13:15:00', new \DateTimeZone('GMT')), 574*a1a3b679SAndreas Boehler ), 575*a1a3b679SAndreas Boehler ); 576*a1a3b679SAndreas Boehler // Time range filter on property 577*a1a3b679SAndreas Boehler $filter30 = array( 578*a1a3b679SAndreas Boehler 'name' => 'VEVENT', 579*a1a3b679SAndreas Boehler 'comp-filters' => array(), 580*a1a3b679SAndreas Boehler 'prop-filters' => array( 581*a1a3b679SAndreas Boehler array( 582*a1a3b679SAndreas Boehler 'name' => 'DTSTART', 583*a1a3b679SAndreas Boehler 'is-not-defined' => false, 584*a1a3b679SAndreas Boehler 'param-filters' => array(), 585*a1a3b679SAndreas Boehler 'time-range' => array( 586*a1a3b679SAndreas Boehler 'start' => new \DateTime('2011-01-01 10:00:00', new \DateTimeZone('GMT')), 587*a1a3b679SAndreas Boehler 'end' => new \DateTime('2011-01-01 13:00:00', new \DateTimeZone('GMT')), 588*a1a3b679SAndreas Boehler ), 589*a1a3b679SAndreas Boehler 'text-match' => null, 590*a1a3b679SAndreas Boehler ), 591*a1a3b679SAndreas Boehler ), 592*a1a3b679SAndreas Boehler 'is-not-defined' => false, 593*a1a3b679SAndreas Boehler 'time-range' => null, 594*a1a3b679SAndreas Boehler ); 595*a1a3b679SAndreas Boehler 596*a1a3b679SAndreas Boehler // Time range for alarm 597*a1a3b679SAndreas Boehler $filter31 = array( 598*a1a3b679SAndreas Boehler 'name' => 'VEVENT', 599*a1a3b679SAndreas Boehler 'prop-filters' => array(), 600*a1a3b679SAndreas Boehler 'comp-filters' => array( 601*a1a3b679SAndreas Boehler array( 602*a1a3b679SAndreas Boehler 'name' => 'VALARM', 603*a1a3b679SAndreas Boehler 'is-not-defined' => false, 604*a1a3b679SAndreas Boehler 'comp-filters' => array(), 605*a1a3b679SAndreas Boehler 'prop-filters' => array(), 606*a1a3b679SAndreas Boehler 'time-range' => array( 607*a1a3b679SAndreas Boehler 'start' => new \DateTime('2011-01-01 10:45:00', new \DateTimeZone('GMT')), 608*a1a3b679SAndreas Boehler 'end' => new \DateTime('2011-01-01 11:15:00', new \DateTimeZone('GMT')), 609*a1a3b679SAndreas Boehler ), 610*a1a3b679SAndreas Boehler 'text-match' => null, 611*a1a3b679SAndreas Boehler ), 612*a1a3b679SAndreas Boehler ), 613*a1a3b679SAndreas Boehler 'is-not-defined' => false, 614*a1a3b679SAndreas Boehler 'time-range' => null, 615*a1a3b679SAndreas Boehler ); 616*a1a3b679SAndreas Boehler $filter32 = $filter31; 617*a1a3b679SAndreas Boehler $filter32['comp-filters'][0]['time-range'] = array( 618*a1a3b679SAndreas Boehler 'start' => new \DateTime('2011-01-01 11:45:00', new \DateTimeZone('GMT')), 619*a1a3b679SAndreas Boehler 'end' => new \DateTime('2011-01-01 12:15:00', new \DateTimeZone('GMT')), 620*a1a3b679SAndreas Boehler ); 621*a1a3b679SAndreas Boehler 622*a1a3b679SAndreas Boehler $filter33 = $filter31; 623*a1a3b679SAndreas Boehler $filter33['name'] = 'VTODO'; 624*a1a3b679SAndreas Boehler $filter34 = $filter32; 625*a1a3b679SAndreas Boehler $filter34['name'] = 'VTODO'; 626*a1a3b679SAndreas Boehler $filter35 = $filter31; 627*a1a3b679SAndreas Boehler $filter35['name'] = 'VJOURNAL'; 628*a1a3b679SAndreas Boehler $filter36 = $filter32; 629*a1a3b679SAndreas Boehler $filter36['name'] = 'VJOURNAL'; 630*a1a3b679SAndreas Boehler 631*a1a3b679SAndreas Boehler // Time range filter on non-datetime property 632*a1a3b679SAndreas Boehler $filter37 = array( 633*a1a3b679SAndreas Boehler 'name' => 'VEVENT', 634*a1a3b679SAndreas Boehler 'comp-filters' => array(), 635*a1a3b679SAndreas Boehler 'prop-filters' => array( 636*a1a3b679SAndreas Boehler array( 637*a1a3b679SAndreas Boehler 'name' => 'SUMMARY', 638*a1a3b679SAndreas Boehler 'is-not-defined' => false, 639*a1a3b679SAndreas Boehler 'param-filters' => array(), 640*a1a3b679SAndreas Boehler 'time-range' => array( 641*a1a3b679SAndreas Boehler 'start' => new \DateTime('2011-01-01 10:00:00', new \DateTimeZone('GMT')), 642*a1a3b679SAndreas Boehler 'end' => new \DateTime('2011-01-01 13:00:00', new \DateTimeZone('GMT')), 643*a1a3b679SAndreas Boehler ), 644*a1a3b679SAndreas Boehler 'text-match' => null, 645*a1a3b679SAndreas Boehler ), 646*a1a3b679SAndreas Boehler ), 647*a1a3b679SAndreas Boehler 'is-not-defined' => false, 648*a1a3b679SAndreas Boehler 'time-range' => null, 649*a1a3b679SAndreas Boehler ); 650*a1a3b679SAndreas Boehler 651*a1a3b679SAndreas Boehler $filter38 = array( 652*a1a3b679SAndreas Boehler 'name' => 'VEVENT', 653*a1a3b679SAndreas Boehler 'comp-filters' => array(), 654*a1a3b679SAndreas Boehler 'prop-filters' => array(), 655*a1a3b679SAndreas Boehler 'is-not-defined' => false, 656*a1a3b679SAndreas Boehler 'time-range' => array( 657*a1a3b679SAndreas Boehler 'start' => new \DateTime('2012-07-01 00:00:00', new \DateTimeZone('UTC')), 658*a1a3b679SAndreas Boehler 'end' => new \DateTime('2012-08-01 00:00:00', new \DateTimeZone('UTC')), 659*a1a3b679SAndreas Boehler ) 660*a1a3b679SAndreas Boehler ); 661*a1a3b679SAndreas Boehler $filter39 = array( 662*a1a3b679SAndreas Boehler 'name' => 'VEVENT', 663*a1a3b679SAndreas Boehler 'comp-filters' => array( 664*a1a3b679SAndreas Boehler array( 665*a1a3b679SAndreas Boehler 'name' => 'VALARM', 666*a1a3b679SAndreas Boehler 'comp-filters' => array(), 667*a1a3b679SAndreas Boehler 'prop-filters' => array(), 668*a1a3b679SAndreas Boehler 'is-not-defined' => false, 669*a1a3b679SAndreas Boehler 'time-range' => array( 670*a1a3b679SAndreas Boehler 'start' => new \DateTime('2012-09-01 00:00:00', new \DateTimeZone('UTC')), 671*a1a3b679SAndreas Boehler 'end' => new \DateTime('2012-10-01 00:00:00', new \DateTimeZone('UTC')), 672*a1a3b679SAndreas Boehler ) 673*a1a3b679SAndreas Boehler ), 674*a1a3b679SAndreas Boehler ), 675*a1a3b679SAndreas Boehler 'prop-filters' => array(), 676*a1a3b679SAndreas Boehler 'is-not-defined' => false, 677*a1a3b679SAndreas Boehler 'time-range' => null, 678*a1a3b679SAndreas Boehler ); 679*a1a3b679SAndreas Boehler 680*a1a3b679SAndreas Boehler return array( 681*a1a3b679SAndreas Boehler 682*a1a3b679SAndreas Boehler // Component check 683*a1a3b679SAndreas Boehler 684*a1a3b679SAndreas Boehler array($blob1, $filter1, 1), 685*a1a3b679SAndreas Boehler array($blob1, $filter2, 0), 686*a1a3b679SAndreas Boehler array($blob1, $filter3, 0), 687*a1a3b679SAndreas Boehler array($blob1, $filter4, 1), 688*a1a3b679SAndreas Boehler 689*a1a3b679SAndreas Boehler // Subcomponent check (4) 690*a1a3b679SAndreas Boehler array($blob1, $filter5, 0), 691*a1a3b679SAndreas Boehler array($blob2, $filter5, 1), 692*a1a3b679SAndreas Boehler 693*a1a3b679SAndreas Boehler // Property checki (6) 694*a1a3b679SAndreas Boehler array($blob1, $filter6, 1), 695*a1a3b679SAndreas Boehler array($blob1, $filter7, 0), 696*a1a3b679SAndreas Boehler array($blob1, $filter8, 0), 697*a1a3b679SAndreas Boehler array($blob1, $filter9, 1), 698*a1a3b679SAndreas Boehler 699*a1a3b679SAndreas Boehler // Subcomponent + property (10) 700*a1a3b679SAndreas Boehler array($blob2, $filter10, 1), 701*a1a3b679SAndreas Boehler 702*a1a3b679SAndreas Boehler // Param filter (11) 703*a1a3b679SAndreas Boehler array($blob3, $filter11, 1), 704*a1a3b679SAndreas Boehler array($blob3, $filter12, 0), 705*a1a3b679SAndreas Boehler array($blob3, $filter13, 0), 706*a1a3b679SAndreas Boehler array($blob3, $filter14, 1), 707*a1a3b679SAndreas Boehler 708*a1a3b679SAndreas Boehler // Param + text (15) 709*a1a3b679SAndreas Boehler array($blob3, $filter15, 1), 710*a1a3b679SAndreas Boehler array($blob3, $filter16, 0), 711*a1a3b679SAndreas Boehler array($blob3, $filter17, 0), 712*a1a3b679SAndreas Boehler array($blob3, $filter18, 1), 713*a1a3b679SAndreas Boehler 714*a1a3b679SAndreas Boehler // Prop + text (19) 715*a1a3b679SAndreas Boehler array($blob2, $filter19, 1), 716*a1a3b679SAndreas Boehler 717*a1a3b679SAndreas Boehler // Incorrect object (vcard) (20) 718*a1a3b679SAndreas Boehler array($blob4, $filter1, -1), 719*a1a3b679SAndreas Boehler 720*a1a3b679SAndreas Boehler // Time-range for event (21) 721*a1a3b679SAndreas Boehler array($blob5, $filter20, 1), 722*a1a3b679SAndreas Boehler array($blob6, $filter20, 1), 723*a1a3b679SAndreas Boehler array($blob7, $filter20, 1), 724*a1a3b679SAndreas Boehler array($blob8, $filter20, 1), 725*a1a3b679SAndreas Boehler 726*a1a3b679SAndreas Boehler array($blob5, $filter21, 1), 727*a1a3b679SAndreas Boehler array($blob5, $filter22, 1), 728*a1a3b679SAndreas Boehler 729*a1a3b679SAndreas Boehler array($blob5, $filter23, 0), 730*a1a3b679SAndreas Boehler array($blob6, $filter23, 0), 731*a1a3b679SAndreas Boehler array($blob7, $filter23, 0), 732*a1a3b679SAndreas Boehler array($blob8, $filter23, 0), 733*a1a3b679SAndreas Boehler 734*a1a3b679SAndreas Boehler // Time-range for todo (31) 735*a1a3b679SAndreas Boehler array($blob9, $filter24, 1), 736*a1a3b679SAndreas Boehler array($blob9, $filter25, 0), 737*a1a3b679SAndreas Boehler array($blob9, $filter26, 1), 738*a1a3b679SAndreas Boehler array($blob10, $filter24, 1), 739*a1a3b679SAndreas Boehler array($blob10, $filter25, 0), 740*a1a3b679SAndreas Boehler array($blob10, $filter26, 1), 741*a1a3b679SAndreas Boehler 742*a1a3b679SAndreas Boehler array($blob11, $filter24, 0), 743*a1a3b679SAndreas Boehler array($blob11, $filter25, 0), 744*a1a3b679SAndreas Boehler array($blob11, $filter26, 1), 745*a1a3b679SAndreas Boehler 746*a1a3b679SAndreas Boehler array($blob12, $filter24, 1), 747*a1a3b679SAndreas Boehler array($blob12, $filter25, 0), 748*a1a3b679SAndreas Boehler array($blob12, $filter26, 0), 749*a1a3b679SAndreas Boehler 750*a1a3b679SAndreas Boehler array($blob13, $filter24, 1), 751*a1a3b679SAndreas Boehler array($blob13, $filter25, 0), 752*a1a3b679SAndreas Boehler array($blob13, $filter26, 1), 753*a1a3b679SAndreas Boehler 754*a1a3b679SAndreas Boehler array($blob14, $filter24, 1), 755*a1a3b679SAndreas Boehler array($blob14, $filter25, 0), 756*a1a3b679SAndreas Boehler array($blob14, $filter26, 0), 757*a1a3b679SAndreas Boehler 758*a1a3b679SAndreas Boehler array($blob15, $filter24, 1), 759*a1a3b679SAndreas Boehler array($blob15, $filter25, 1), 760*a1a3b679SAndreas Boehler array($blob15, $filter26, 1), 761*a1a3b679SAndreas Boehler 762*a1a3b679SAndreas Boehler array($blob16, $filter24, 1), 763*a1a3b679SAndreas Boehler array($blob16, $filter25, 1), 764*a1a3b679SAndreas Boehler array($blob16, $filter26, 1), 765*a1a3b679SAndreas Boehler 766*a1a3b679SAndreas Boehler // Time-range for journals (55) 767*a1a3b679SAndreas Boehler array($blob17, $filter27, 0), 768*a1a3b679SAndreas Boehler array($blob17, $filter28, 0), 769*a1a3b679SAndreas Boehler array($blob18, $filter27, 0), 770*a1a3b679SAndreas Boehler array($blob18, $filter28, 1), 771*a1a3b679SAndreas Boehler array($blob19, $filter27, 1), 772*a1a3b679SAndreas Boehler array($blob19, $filter28, 1), 773*a1a3b679SAndreas Boehler 774*a1a3b679SAndreas Boehler // Time-range for free-busy (61) 775*a1a3b679SAndreas Boehler array($blob20, $filter29, -1), 776*a1a3b679SAndreas Boehler 777*a1a3b679SAndreas Boehler // Time-range on property (62) 778*a1a3b679SAndreas Boehler array($blob5, $filter30, 1), 779*a1a3b679SAndreas Boehler array($blob3, $filter37, -1), 780*a1a3b679SAndreas Boehler array($blob3, $filter30, 0), 781*a1a3b679SAndreas Boehler 782*a1a3b679SAndreas Boehler // Time-range on alarm in vevent (65) 783*a1a3b679SAndreas Boehler array($blob21, $filter31, 1), 784*a1a3b679SAndreas Boehler array($blob21, $filter32, 0), 785*a1a3b679SAndreas Boehler array($blob22, $filter31, 1), 786*a1a3b679SAndreas Boehler array($blob22, $filter32, 0), 787*a1a3b679SAndreas Boehler array($blob23, $filter31, 1), 788*a1a3b679SAndreas Boehler array($blob23, $filter32, 0), 789*a1a3b679SAndreas Boehler array($blob24, $filter31, 1), 790*a1a3b679SAndreas Boehler array($blob24, $filter32, 0), 791*a1a3b679SAndreas Boehler array($blob25, $filter31, 1), 792*a1a3b679SAndreas Boehler array($blob25, $filter32, 0), 793*a1a3b679SAndreas Boehler array($blob26, $filter31, 1), 794*a1a3b679SAndreas Boehler array($blob26, $filter32, 0), 795*a1a3b679SAndreas Boehler 796*a1a3b679SAndreas Boehler // Time-range on alarm for vtodo (77) 797*a1a3b679SAndreas Boehler array($blob27, $filter33, 1), 798*a1a3b679SAndreas Boehler array($blob27, $filter34, 0), 799*a1a3b679SAndreas Boehler 800*a1a3b679SAndreas Boehler // Time-range on alarm for vjournal (79) 801*a1a3b679SAndreas Boehler array($blob28, $filter35, -1), 802*a1a3b679SAndreas Boehler array($blob28, $filter36, -1), 803*a1a3b679SAndreas Boehler 804*a1a3b679SAndreas Boehler // Time-range on alarm with duration (81) 805*a1a3b679SAndreas Boehler array($blob29, $filter31, 1), 806*a1a3b679SAndreas Boehler array($blob29, $filter32, 0), 807*a1a3b679SAndreas Boehler array($blob30, $filter31, 0), 808*a1a3b679SAndreas Boehler array($blob30, $filter32, 0), 809*a1a3b679SAndreas Boehler 810*a1a3b679SAndreas Boehler // Time-range with RRULE (85) 811*a1a3b679SAndreas Boehler array($blob31, $filter20, 1), 812*a1a3b679SAndreas Boehler array($blob32, $filter20, 0), 813*a1a3b679SAndreas Boehler 814*a1a3b679SAndreas Boehler // Bug reported on mailing list, related to all-day events (87) 815*a1a3b679SAndreas Boehler //array($blob33, $filter38, 1), 816*a1a3b679SAndreas Boehler 817*a1a3b679SAndreas Boehler // Event in timerange, but filtered alarm is in the far future (88). 818*a1a3b679SAndreas Boehler array($blob34, $filter39, 0), 819*a1a3b679SAndreas Boehler ); 820*a1a3b679SAndreas Boehler 821*a1a3b679SAndreas Boehler } 822*a1a3b679SAndreas Boehler 823*a1a3b679SAndreas Boehler} 824