| | <?php |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | namespace Eluceo\iCal\Component; |
| |
|
| | use Eluceo\iCal\Component; |
| | use Eluceo\iCal\PropertyBag; |
| |
|
| | class Calendar extends Component |
| | { |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | const METHOD_PUBLISH = 'PUBLISH'; |
| | const METHOD_REQUEST = 'REQUEST'; |
| | const METHOD_REPLY = 'REPLY'; |
| | const METHOD_ADD = 'ADD'; |
| | const METHOD_CANCEL = 'CANCEL'; |
| | const METHOD_REFRESH = 'REFRESH'; |
| | const METHOD_COUNTER = 'COUNTER'; |
| | const METHOD_DECLINECOUNTER = 'DECLINECOUNTER'; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | const CALSCALE_GREGORIAN = 'GREGORIAN'; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | protected $prodId = null; |
| | protected $method = null; |
| | protected $name = null; |
| | protected $description = null; |
| | protected $timezone = null; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | protected $calendarScale = null; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | protected $forceInspectOrOpen = false; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | protected $calId = null; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | protected $publishedTTL = null; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | protected $calendarColor = null; |
| |
|
| | public function __construct($prodId) |
| | { |
| | if (empty($prodId)) { |
| | throw new \UnexpectedValueException('PRODID cannot be empty'); |
| | } |
| |
|
| | $this->prodId = $prodId; |
| | } |
| |
|
| | |
| | |
| | |
| | public function getType() |
| | { |
| | return 'VCALENDAR'; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function setMethod($method) |
| | { |
| | $this->method = $method; |
| |
|
| | return $this; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function setName($name) |
| | { |
| | $this->name = $name; |
| |
|
| | return $this; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function setDescription($description) |
| | { |
| | $this->description = $description; |
| |
|
| | return $this; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function setTimezone($timezone) |
| | { |
| | $this->timezone = $timezone; |
| |
|
| | return $this; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function setCalendarColor($calendarColor) |
| | { |
| | $this->calendarColor = $calendarColor; |
| |
|
| | return $this; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function setCalendarScale($calendarScale) |
| | { |
| | $this->calendarScale = $calendarScale; |
| |
|
| | return $this; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function setForceInspectOrOpen($forceInspectOrOpen) |
| | { |
| | $this->forceInspectOrOpen = $forceInspectOrOpen; |
| |
|
| | return $this; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function setCalId($calId) |
| | { |
| | $this->calId = $calId; |
| |
|
| | return $this; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function setPublishedTTL($ttl) |
| | { |
| | $this->publishedTTL = $ttl; |
| |
|
| | return $this; |
| | } |
| |
|
| | |
| | |
| | |
| | public function buildPropertyBag() |
| | { |
| | $propertyBag = new PropertyBag(); |
| | $propertyBag->set('VERSION', '2.0'); |
| | $propertyBag->set('PRODID', $this->prodId); |
| |
|
| | if ($this->method) { |
| | $propertyBag->set('METHOD', $this->method); |
| | } |
| |
|
| | if ($this->calendarColor) { |
| | $propertyBag->set('X-APPLE-CALENDAR-COLOR', $this->calendarColor); |
| | $propertyBag->set('X-OUTLOOK-COLOR', $this->calendarColor); |
| | $propertyBag->set('X-FUNAMBOL-COLOR', $this->calendarColor); |
| | } |
| |
|
| | if ($this->calendarScale) { |
| | $propertyBag->set('CALSCALE', $this->calendarScale); |
| | $propertyBag->set('X-MICROSOFT-CALSCALE', $this->calendarScale); |
| | } |
| |
|
| | if ($this->name) { |
| | $propertyBag->set('X-WR-CALNAME', $this->name); |
| | } |
| |
|
| | if ($this->description) { |
| | $propertyBag->set('X-WR-CALDESC', $this->description); |
| | } |
| |
|
| | if ($this->timezone) { |
| | if ($this->timezone instanceof Timezone) { |
| | $propertyBag->set('X-WR-TIMEZONE', $this->timezone->getZoneIdentifier()); |
| | $this->addComponent($this->timezone); |
| | } else { |
| | $propertyBag->set('X-WR-TIMEZONE', $this->timezone); |
| | $this->addComponent(new Timezone($this->timezone)); |
| | } |
| | } |
| |
|
| | if ($this->forceInspectOrOpen) { |
| | $propertyBag->set('X-MS-OLK-FORCEINSPECTOROPEN', $this->forceInspectOrOpen); |
| | } |
| |
|
| | if ($this->calId) { |
| | $propertyBag->set('X-WR-RELCALID', $this->calId); |
| | } |
| |
|
| | if ($this->publishedTTL) { |
| | $propertyBag->set('X-PUBLISHED-TTL', $this->publishedTTL); |
| | } |
| |
|
| | return $propertyBag; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function addEvent(Event $event) |
| | { |
| | $this->addComponent($event); |
| | } |
| |
|
| | |
| | |
| | |
| | public function getProdId() |
| | { |
| | return $this->prodId; |
| | } |
| |
|
| | public function getMethod() |
| | { |
| | return $this->method; |
| | } |
| | } |
| |
|