sharees = $sharees; } /** * Returns the list of users, as it was passed to the constructor. * * @return array */ public function getValue() { return $this->sharees; } /** * The xmlSerialize method 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 XmlSerializable 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. */ public function xmlSerialize(Writer $writer) { $cs = '{'.Plugin::NS_CALENDARSERVER.'}'; foreach ($this->sharees as $sharee) { if (DAV\Sharing\Plugin::ACCESS_SHAREDOWNER === $sharee->access) { $writer->startElement($cs.'organizer'); } else { $writer->startElement($cs.'user'); switch ($sharee->inviteStatus) { case DAV\Sharing\Plugin::INVITE_ACCEPTED: $writer->writeElement($cs.'invite-accepted'); break; case DAV\Sharing\Plugin::INVITE_DECLINED: $writer->writeElement($cs.'invite-declined'); break; case DAV\Sharing\Plugin::INVITE_NORESPONSE: $writer->writeElement($cs.'invite-noresponse'); break; case DAV\Sharing\Plugin::INVITE_INVALID: $writer->writeElement($cs.'invite-invalid'); break; } $writer->startElement($cs.'access'); switch ($sharee->access) { case DAV\Sharing\Plugin::ACCESS_READWRITE: $writer->writeElement($cs.'read-write'); break; case DAV\Sharing\Plugin::ACCESS_READ: $writer->writeElement($cs.'read'); break; } $writer->endElement(); // access } $href = new DAV\Xml\Property\Href($sharee->href); $href->xmlSerialize($writer); if (isset($sharee->properties['{DAV:}displayname'])) { $writer->writeElement($cs.'common-name', $sharee->properties['{DAV:}displayname']); } if ($sharee->comment) { $writer->writeElement($cs.'summary', $sharee->comment); } $writer->endElement(); // organizer or user } } }