0byt3m1n1
Path:
/
data
/
applications
/
aps
/
tikiwiki
/
7.0-0
/
standard
/
htdocs
/
lib
/
ical
/
iCal
/
[
Home
]
File: Property.php
<?php /* PHP iCal Interface Library Copyright (C) 2005 Gregory Szorc <gregory.szorc@case.edu> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ /** * iCal (RFC 2245) class definition * * PHP version 5 * * @package iCal * @subpackage Parser * @author Gregory Szorc <gregory.szorc@case.edu> * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 */ /** * Properties store data in File_iCal_ValueDataType objects, so we need to include them */ require_once('ValueDataType.php'); /** * Properties make up the components of iCal files * * Every line in an iCal file is basically a property. Properties consist of * a name, optional parameters, and value(s). * * The base property class is abstract because every property type is different. If new properties * are to be defined, they should derive from this base class for compatibility with the parser. * * @category File * @package iCal */ abstract class File_iCal_Property { protected $_name; protected $_params = array(); protected $_values = array(); protected $_parameters_allowed = array(); //list of allowed parameters protected $_parameters_single = array(); //parameters only allowed once protected $_parameters_multiple = array();//parameters allowed multiple times protected $_parameters_exclusive = array(); //array of arrays containing parameters that can't coexist protected $_parameters_joint = array(); //array of arrays containing parameters that must coexist protected $_parameters_required = array(); protected $_value_separator; public function __construct($valuestring, $param_array) { $this->_parameters_allowed = array_merge($this->_parameters_single, $this->_parameters_multiple); if (is_array($param_array)) { foreach ($param_array as $p) { if (is_a($p, "File_iCal_Parameter")) { if (in_array($p->getName(), $this->_parameters_allowed)) { $this->_params[] = $p; } else { trigger_error("The parameter ".$p->getName()." is not allowed in this property type\n", E_USER_WARNING); } } else { trigger_error("Parameter passed to property is not a parameter object", E_USER_ERROR); } } } else { trigger_error("2nd parameter of property constructor must be an array", E_USER_ERROR); } } /* * Returns the value of the first value * * Can be used as a shortcut when you don't want to deal with multiple values or parameters */ public function getValue() { return $this->_values[0]; } public function getValues() { return $this->_values; } public function getParams() { return $this->_params; } public function getName() { return $this->_name; } public function getLine() { $cl = new File_iCal_ContentLine($this); $r = $cl->getLine(); unset($cl); return $r; } public function getValueSeparator() { return $this->_value_separator; } //this should be overwrote in child classes, if necessary public function addValue($v) { $return = false; switch (gettype($v)) { case "string": $this->_values[] = new File_iCal_ValueDataType_Text($v); $return = true; break; default: } return $return; } static public function getClassName($name) { $name = strtoupper($name); switch ($name) { case "PRODID": return "File_iCal_Property_ProductIdentifier"; case "VERSION": return "File_iCal_Property_Version"; case "CALSCALE": return "File_iCal_Property_Calscale"; case "METHOD": return "File_iCal_Property_Method"; case "SUMMARY": return "File_iCal_Property_Summary"; case "LOCATION": return "File_iCal_Property_Location"; case "DTSTART": return "File_iCal_Property_DateTimeStart"; case "UID": return "File_iCal_Property_UID"; case "DTSTAMP": return "File_iCal_Property_DateTimeStamp"; case "COMPLETED": return "File_iCal_Property_DateTimeCompleted"; case "SEQUENCE": return "File_iCal_Property_SequenceNumber"; case "STATUS": return "File_iCal_Property_Status"; case "DESCRIPTION": return "File_iCal_Property_Description"; case "EXDATE": return "File_iCal_Property_ExceptionDateTimes"; case "RRULE": return "File_iCal_Property_RecurrenceRule"; case "TZID": return "File_iCal_Property_TimeZoneIdentifier"; case "LAST-MODIFIED": return "File_iCal_Property_LastModified"; case "RECURRENCE-ID": return "File_iCal_Property_RecurrenceID"; case "ATTACH": return "File_iCal_Property_Attachment"; case "CATEGORIES": return "File_iCal_Property_Categories"; case "CLASS": return "File_iCal_Property_Classification"; case "COMMENT": return "File_iCal_Property_Comment"; case "GEO": return "File_iCal_Property_GeographicPosition"; case "PERCENT-COMPLETE": return "File_iCal_Property_PercentComplete"; case "PRIORITY": return "File_iCal_Property_Priority"; case "RESOURCES": return "File_iCal_Property_Resources"; case "DTEND": return "File_iCal_Property_DateTimeEnd"; case "DUE": return "File_iCal_Property_DateTimeDue"; case "DURATION": return "File_iCal_Property_Duration"; case "FREEBUSY": return "File_iCal_Property_FreeBusyTime"; case "TRANSP": return "File_iCal_Property_TimeTransparency"; case "TZNAME": return "File_iCal_Property_TimeZoneName"; case "TZOFFSETFROM": return "File_iCal_Property_TimeZoneOffsetFrom"; case "TZOFFSETTO": return "File_iCal_Property_TimeZoneOffsetTo"; case "TZURL": return "File_iCal_Property_TimeZoneURL"; case "ATTENDEE": return "File_iCal_Property_Attendee"; case "CONTACT": return "File_iCal_Property_Contact"; case "ORGANIZER": return "File_iCal_Property_Organizer"; case "RELATED-TO": return "File_iCal_Property_RelatedTo"; case "URL": return "File_iCal_Property_URL"; case "EXRULE": return "File_iCal_Property_ExceptionRule"; case "RDATE": return "File_iCal_Property_RecurrenceDateTimes"; case "ACTION": return "File_iCal_Property_Action"; case "REPEAT": return "File_iCal_Property_RepeatCount"; case "TRIGGER": return "File_iCal_Property_Trigger"; case "CREATED": return "File_iCal_Property_DateTimeCreated"; case "REQUEST-STATUS": return "File_iCal_Property_RequestStatus"; default: trigger_error("Unknown propert name specified", E_USER_WARNING); } } static public function getProperty($name, $params, $value) { //internally, we have already checked validity of the contentline $name = strtoupper($name); switch ($name) { case "BEGIN": case "END": return new File_iCal_Property_NonStandard($value, $params, $name); case "PRODID": return new File_iCal_Property_ProductIdentifier($value, $params); case "X-WR-CALNAME": return new File_iCal_Property_NonStandard($value, $params,$name); case "VERSION": return new File_iCal_Property_Version($value, $params); case "CALSCALE": return new File_iCal_Property_CalendarScale($value, $params); case "METHOD": return new File_iCal_Property_Method($value, $params); case "SUMMARY": return new File_iCal_Property_Summary($value, $params); case "LOCATION": return new File_iCal_Property_Location($value, $params); case "DTSTART": return new File_iCal_Property_DateTimeStart($value, $params); case "X-WR-RELCALID": return new File_iCal_Property_NonStandard($value, $params,$name); case "UID": return new File_iCal_Property_UID($value, $params); case "DTSTAMP": return new File_iCal_Property_DateTimeStamp($value, $params); case "COMPLETED": return new File_iCal_Property_DateTimeCompleted($value, $params); case "SEQUENCE": return new File_iCal_Property_SequenceNumber($value, $params); case "STATUS": return new File_iCal_Property_Status($value, $params); case "DESCRIPTION": return new File_iCal_Property_Description($value, $params); case "EXDATE": return new File_iCal_Property_ExceptionDateTimes($value, $params); case "RRULE": return new File_iCal_Property_RecurrenceRule($value, $params); case "X-WR-TIMEZONE": return new File_iCal_Property_NonStandard($value, $params,$name); case "TZID": return new File_iCal_Property_TimeZoneIdentifier($value, $params); case "LAST-MODIFIED": return new File_iCal_Property_LastModified($value, $params); case "RECURRENCE-ID": return new File_iCal_Property_RecurrenceID($value, $params); case "ATTACH": return new File_iCal_Property_Attachment($value, $params); case "CATEGORIES": return new File_iCal_Property_Categories($value, $params); case "CLASS": return new File_iCal_Property_Classification($value, $params); case "COMMENT": return new File_iCal_Property_Comment($value, $params); case "GEO": return new File_iCal_Property_GeographicPosition($value, $params); case "PERCENT-COMPLETE": return new File_iCal_Property_PercentComplete($value, $params); case "PRIORITY": return new File_iCal_Property_Priority($value, $params); case "RESOURCES": return new File_iCal_Property_Resources($value, $params); case "DTEND": return new File_iCal_Property_DateTimeEnd($value, $params); case "DUE": return new File_iCal_Property_DateTimeDue($value, $params); case "DURATION": return new File_iCal_Property_Duration($value, $params); case "FREEBUSY": return new File_iCal_Property_FreeBusyTime($value, $params); case "TRANSP": return new File_iCal_Property_TimeTransparency($value, $params); case "TZNAME": return new File_iCal_Property_TimeZoneName($value, $params); case "TZOFFSETFROM": return new File_iCal_Property_TimeZoneOffsetFrom($value, $params); case "TZOFFSETTO": return new File_iCal_Property_TimeZoneOffsetTo($value, $params); case "TZURL": return new File_iCal_Property_TimeZoneURL($value, $params); case "ATTENDEE": return new File_iCal_Property_Attendee($value, $params); case "CONTACT": return new File_iCal_Property_Contact($value, $params); case "ORGANIZER": return new File_iCal_Property_Organizer($value, $params); case "RELATED-TO": return new File_iCal_Property_RelatedTo($value, $params); case "URL": return new File_iCal_Property_URL($value, $params); case "EXRULE": return new File_iCal_Property_ExceptionRule($value, $params); case "RDATE": return new File_iCal_Property_RecurrenceDateTimes($value, $params); case "ACTION": return new File_iCal_Property_Action($value, $params); case "REPEAT": return new File_iCal_Property_RepeatCount($value, $params); case "TRIGGER": return new File_iCal_Property_Trigger($value, $params); case "CREATED": return new File_iCal_Property_DateTimeCreated($value, $params); case "REQUEST-STATUS": return new File_iCal_Property_RequestStatus($value, $params); default: echo "Cannot get $name property yet\n"; }; } } /** * Implements a calendar scale property * * @category File * @package iCal */ class File_iCal_Property_CalendarScale extends File_iCal_Property { public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "CALSCALE"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the method property * * @category File * @package iCal */ class File_iCal_Property_Method extends File_iCal_Property { public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "METHOD"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the product identifier property * * @category File * @package iCal */ class File_iCal_Property_ProductIdentifier extends File_iCal_Property { public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "PRODID"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the version property * * @category File * @package iCal */ class File_iCal_Property_Version extends File_iCal_Property { public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "VERSION"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements a non-standard property * * @category File * @package iCal */ class File_iCal_Property_NonStandard extends File_iCal_Property { public function __construct($value, $params, $name) { parent::__construct($value, $params); $this->_name = $name; $this->_values[] = new File_iCal_ValueDataType_Text($value); } public function getValue() { return $this->_values[0]->getValue(); } } /** * Implements an attachment property * * @category File * @package iCal */ class File_iCal_Property_Attachment extends File_iCal_Property { protected $_parameters_single = array("ENCODING", "VALUE", "FMTTYPE"); protected $_parameters_multiple = array("X-"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "ATTACH"; $binary = false; foreach ($params as $p) { if (is_a($p, "File_iCal_Paramter_Value")) { if ($p->getValueString() == "BINARY") { $binary = true; } } } if ($binary) { $this->_values[] = new File_iCal_ValueDataType_Binary($value); } else { $this->_values[] = new File_iCal_ValueDataType_URI($value); } } } /** * Implements a category property * * @category File * @package iCal */ class File_iCal_Property_Categories extends File_iCal_Property { protected $_parameters_single = array("LANGUAGE"); protected $_parameters_multiple = array("X-"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "CATEGORIES"; //there can be multiple categories specified!!! $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the classification property * * @category File * @package iCal */ class File_iCal_Property_Classification extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "CLASS"; switch (strtoupper($value)) { case "PUBLIC": case "PRIVATE": case "CONFIDENTIAL": $this->_values[] = new File_iCal_ValueDataType_Text($value); break; default: trigger_error("Classification property encountered an unknown value", E_USER_WARNING); } } } /** * Implements the comment property * * @category File * @package iCal */ class File_iCal_Property_Comment extends File_iCal_Property { protected $_parameters_single = array("ALTREP", "LANGUAGE"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "COMMENT"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the description property * * @category File * @package iCal */ class File_iCal_Property_Description extends File_iCal_Property { protected $_parameters_single = array("ALTREP", "LANGUAGE"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "DESCRIPTION"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the geographic position property * * @category File * @package iCal */ class File_iCal_Property_GeographicPosition extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "GEO"; trigger_error("GEO property is not yet supported", E_USER_WARNING); } } /** * Implements the location property * * @category File * @package iCal */ class File_iCal_Property_Location extends File_iCal_Property { protected $_parameters_single = array("ALTREP", "LANGUAGE"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "LOCATION"; $v = $value; $this->_values[] = new File_iCal_ValueDataType_Text($v); } } /** * Implements the percent complete property * * @category File * @package iCal */ class File_iCal_Property_PercentComplete extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "PERCENT-COMPLETE"; $this->_values[] = new File_iCal_ValueDataType_Integer($v); } } /** * Implements the priority property * * @category File * @package iCal */ class File_iCal_Property_Priority extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "PRIORITY"; $this->_values[] = new File_iCal_ValueDataType_Integer($value); } } /** * Implements the resource properts * * @category File * @package iCal */ class File_iCal_Property_Resources extends File_iCal_Property { protected $_parameters_single = array("ALTREP", "LANGUAGE"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "RESOURCES"; //multiple resources can be specified! $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the status property * * @category File * @package iCal */ class File_iCal_Property_Status extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "STATUS"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the summary property * * @category File * @package iCal */ class File_iCal_Property_Summary extends File_iCal_Property { protected $_parameters_single = array("ALTREP", "LANGUAGE"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "SUMMARY"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the date/time completed property * * @category File * @package iCal */ class File_iCal_Property_DateTimeCompleted extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "COMPLETED"; $this->_values[] = new File_iCal_ValueDataType_DateTime($value); } } /** * Implements the date/time end proeprty * * @category File * @package iCal */ class File_iCal_Property_DateTimeEnd extends File_iCal_Property { protected $_parameters_single = array("VALUE", "TZID"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "DTEND"; $type = "DATE-TIME"; foreach ($params as $p) { if (is_a($p, "File_iCal_Parameter_Value")) { if ($p->getValuesString() == "DATE") { $type = "DATE"; } } } if ($type == "DATE") { $this->_values[] = new File_iCal_ValueDataType_Date($value); } else if ($type == "DATE-TIME") { $this->_values[] = new File_iCal_ValueDataType_DateTime($value); } } } /** * Implements the date/time due property * * @category File * @package iCal */ class File_iCal_Property_DateTimeDue extends File_iCal_Property { protected $_parameters_single = array("VALUE", "TZID"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "DUE"; $type = "DATE-TIME"; foreach ($params as $p) { if (is_a($p, "File_iCal_Parameter_Value")) { if ($p->getValuesString() == "DATE") { $type = "DATE"; } } } if ($type == "DATE") { $this->_values[] = new File_iCal_ValueDataType_Date($value); } else if ($type == "DATE-TIME") { $this->_values[] = new File_iCal_ValueDataType_DateTime($value); } } } /** * Implements the date/time start property * * @category File * @package iCal */ class File_iCal_Property_DateTimeStart extends File_iCal_Property { protected $_parameters_single = array("VALUE", "TZID"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "DTSTART"; $type = "DATE-TIME"; foreach ($params as $p) { if (is_a($p, "File_iCal_Parameter_Value")) { if ($p->getValuesString() == "DATE") { $type = "DATE"; } } } if ($type == "DATE") { $this->_values[] = new File_iCal_ValueDataType_Date($value); } else if ($type == "DATE-TIME") { $this->_values[] = new File_iCal_ValueDataType_DateTime($value); } } } /** * Implements the duration property * * @category File * @package iCal */ class File_iCal_Property_Duration extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "DURATION"; $this->_values[] = new File_iCal_ValueDataType_Duration($value); } } /** * Implements the freebusy time type property * * @category File * @package iCal */ class File_iCal_Property_FreeBusyTime extends File_iCal_Property { protected $_parameters_single = array("FBTYPE"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "FREEBUSY"; $this->_values[] = new File_iCal_ValueDataType_PeriodOfTime($value); } } /** * Implements the time transparency property * * @category File * @package iCal */ class File_iCal_Property_TimeTransparency extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "TRANSP"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the time zone identifier property * * @category File * @package iCal */ class File_iCal_Property_TimeZoneIdentifier extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "TZID"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the time zone name property * * @category File * @package iCal */ class File_iCal_Property_TimeZoneName extends File_iCal_Property { protected $_parameters_single = array("LANGUAGE"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "TZNAME"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * implements the timezone offset from property * * @category File * @package iCal */ class File_iCal_Property_TimeZoneOffsetFrom extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "TZOFFSETFROM"; $this->_values[] = new File_iCal_ValueDataType_UTCOffset($value); } } /** * Implements the timezone offset to property * * @category File * @package iCal */ class File_iCal_Property_TimeZoneOffsetTo extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "TZOFFSETTO"; $this->_values[] = new File_iCal_ValueDataType_UTCOffset($value); } } /** * Implements the timezone url property * * @category File * @package iCal */ class File_iCal_Property_TimeZoneURL extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "TZURL"; $this->_values[] = new File_iCal_ValueDataType_URI($value); } } /** * Implements the attendee property * * @category File * @package iCal */ class File_iCal_Property_Attendee extends File_iCal_Property { protected $_parameters_single = array("CUTYPE", "MEMBER", "ROLE", "PARTSTAT", "RSVP", "DELEGATED-TO", "DELEGATED-FROM", "SENT-BY", "CN", "DIR", "LANGUAGE"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "ATTENDEE"; $this->_values[] = new File_iCal_ValueDataType_CalendarUserAddress($value); } } /** * Implements the contact property * * @category File * @package iCal */ class File_iCal_Property_Contact extends File_iCal_Property { protected $_parameters_single = array("ALTREP", "LANGUAGE"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "CONTACT"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the organizer property * * @category File * @package iCal */ class File_iCal_Property_Organizer extends File_iCal_Property { protected $_parameters_single = array("CN", "DIR", "SENT-BY", "LANGUAGE"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "ORGANIZER"; $this->_values[] = new File_iCal_ValueDataType_CalendarUserAddress($value); } } /** * Implements the recurrence id property * * @category File * @package iCal */ class File_iCal_Property_RecurrenceID extends File_iCal_Property { protected $_parameters_single = array("VALUE", "TZID", "RANGE"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "RECURRENCE-ID"; $type = "DATE-TIME"; foreach ($params as $p) { if (is_a($p, "File_iCal_Parameter_Value")) { if ($p->getValuesString() == "DATE") { $type = "DATE"; } } } if ($type == "DATE") { $this->_values[] = new File_iCal_ValueDataType_Date($value); } else if ($type == "DATE-TIME") { $this->_values[] = new File_iCal_ValueDataType_DateTime($value); } } } /** * Implements the related-to property * * @category File * @package iCal */ class File_iCal_Property_RelatedTo extends File_iCal_Property { protected $_parameters_single = array("RELTYPE"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "RELATED-TO"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the URL property * * @category File * @package iCal */ class File_iCal_Property_URL extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "URL"; $this->_values[] = new File_iCal_ValueDataType_URI($value); } } /** * Implements the UID property * * @category File * @package iCal */ class File_iCal_Property_UID extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "UID"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements exception date/time property * * @category File * @package iCal */ class File_iCal_Property_ExceptionDateTimes extends File_iCal_Property { protected $_parameters_single = array("VALUE", "TZID"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "EXDATE"; $type = "DATE-TIME"; foreach ($params as $p) { if (is_a($p, "File_iCal_Paramter_Value")) { if ($p->getValueString() == "DATE") { $type = "DATE"; } } } if ($type == "DATE") { $this->_values[] = new File_iCal_ValueDataType_Date($value); } else if ($type == "DATE-TIME") { $this->_values[] = new File_iCal_ValueDataType_DateTime($value); } } } /** * Implements the exception rule property * * @category File * @package iCal */ class File_iCal_Property_ExceptionRule extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "EXRULE"; $this->_values[] = new File_iCal_ValueDataType_RecurrenceRule($value); } } /** * Implements the recurrence date/time property * * @category File * @package iCal */ class File_iCal_Property_RecurrenceDateTimes extends File_iCal_Property { protected $_parameters_single = array("VALUE", "TZID"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "RDATE"; $type = "DATE-TIME"; foreach ($params as $p) { if (is_a($p, "File_iCal_Paramter_Value")) { if ($p->getValueString() == "DATE") { $type = "DATE"; } else if ($p->getValueString() == "PERIOD") { $type = "PERIOD"; } } } if ($type == "DATE") { $this->_values[] = new File_iCal_ValueDataType_Date($value); } else if ($type == "DATE-TIME") { $this->_values[] = new File_iCal_ValueDataType_DateTime($value); } else if ($type == "PERIOD") { $this->_values[] = new File_iCal_ValueDataType_PeriodOfTime($value); } } } /** * Implements the recurrence rule property * * @category File * @package iCal */ class File_iCal_Property_RecurrenceRule extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "RRULE"; $this->_values[] = new File_iCal_ValueDataType_RecurrenceRule($value); } } /** * Implements the action property * * @category File * @package iCal */ class File_iCal_Property_Action extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "ACTION"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } } /** * Implements the repeat conut property * * @category File * @package iCal */ class File_iCal_Property_RepeatCount extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "REPEAT"; $this->_values[] = new File_iCal_ValueDataType_Integer($value); } } /** * Implements the trigger property * * @category File * @package iCal */ class File_iCal_Property_Trigger extends File_iCal_Property { protected $_parameters_single = array("VALUE", "RELATED"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "TRIGGER"; $type = "DURATION"; foreach ($params as $p) { if (is_a($p, "File_iCal_Paramter_Value")) { if ($p->getValueString() == "DATE-TIME") { $type = "DATE-TIME"; } } } if ($type == "DURATION") { $this->_values[] = new File_iCal_ValueDataType_Duration($value); } else if ($type == "DATE-TIME") { $this->_values[] = new File_iCal_ValueDataType_DateTime($value); } } } /** * Implements date/time created property * * @category File * @package iCal */ class File_iCal_Property_DateTimeCreated extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "CREATED"; $this->_values[] = new File_iCal_ValueDataType_DateTime($value); } } /** * Implements the date/time stamp property * * @category File * @package iCal */ class File_iCal_Property_DateTimeStamp extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "DTSTAMP"; $this->_values[] = new File_iCal_ValueDataType_DateTime($value); } } /** * Implements the last modified property * * @category File * @package iCal */ class File_iCal_Property_LastModified extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "LAST-MODIFIED"; $this->_value[] = new File_iCal_ValueDataType_DateTime($value); } } /** * Implements the sequence number property * * @category File * @package iCal */ class File_iCal_Property_SequenceNumber extends File_iCal_Property { protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "SEQUENCE"; $this->_values[] = new File_iCal_ValueDataType_Integer($value); } } /** * Implements the request status property * * @category File * @package iCal */ class File_iCal_Property_RequestStatus extends File_iCal_Property { protected $_parameters_single = array("LANGUAGE"); protected $_parameters_multiple = array("X-*"); public function __construct($value, $params) { parent::__construct($value, $params); $this->_name = "REQUEST-STATUS"; $this->_values[] = new File_iCal_ValueDataType_Text($value); } }