$value) { if (!property_exists($this, $key)) { throw new \InvalidArgumentException('Unknown option: ' . $key); } $this->$key = $value; } } /** * The xmlSerialize metod is called during xml writing. * * Use the $writer argument to write its own xml serialization. * * An important note: do _not_ create a parent element. Any element * implementing XmlSerializble should only ever write what's considered * its 'inner xml'. * * The parent of the current element is responsible for writing a * containing element. * * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. * * @param Writer $writer * @return void */ function xmlSerialize(Writer $writer) { $writer->writeElement('{' . CalDAV\Plugin::NS_CALENDARSERVER . '}invite-reply'); } /** * This method serializes the entire notification, as it is used in the * response body. * * @param Writer $writer * @return void */ function xmlSerializeFull(Writer $writer) { $cs = '{' . CalDAV\Plugin::NS_CALENDARSERVER . '}'; $this->dtStamp->setTimezone(new \DateTimezone('GMT')); $writer->writeElement($cs . 'dtstamp', $this->dtStamp->format('Ymd\\THis\\Z')); $writer->startElement($cs . 'invite-reply'); $writer->writeElement($cs . 'uid', $this->id); $writer->writeElement($cs . 'in-reply-to', $this->inReplyTo); $writer->writeElement('{DAV:}href', $this->href); switch ($this->type) { case SharingPlugin::STATUS_ACCEPTED : $writer->writeElement($cs . 'invite-accepted'); break; case SharingPlugin::STATUS_DECLINED : $writer->writeElement($cs . 'invite-declined'); break; } $writer->writeElement($cs . 'hosturl', [ '{DAV:}href' => $writer->contextUri . $this->hostUrl ]); if ($this->summary) { $writer->writeElement($cs . 'summary', $this->summary); } $writer->endElement(); // invite-reply } /** * Returns a unique id for this notification * * This is just the base url. This should generally be some kind of unique * id. * * @return string */ function getId() { return $this->id; } /** * Returns the ETag for this notification. * * The ETag must be surrounded by literal double-quotes. * * @return string */ function getETag() { return $this->etag; } }