/** * Parse the events in an <entry> section * @param \DOMElement $entry * @param string $currentUserId The current user ID as extracted from the <entry> part * @return array(Event) */ protected function extractEvents(\DOMElement $entry, $currentUserId) { $events = array(); $domEvents = $entry->getElementsByTagName('event'); foreach ($domEvents as $domEvent) { $event = new Event(); $event->setType($this->extractEventType($domEvent)); $date = $this->getDomElement($domEvent, 'eventdate', 'The event date was not found while building the event journal:\\n' . $this->getEventDom($domEvent)); $event->setUserId($currentUserId); // The timestamps in Java contain milliseconds, it's not the case in PHP // so we strip millis from the response $event->setDate(substr($date->nodeValue, 0, -3)); $id = $this->getDomElement($domEvent, 'eventidentifier'); if ($id) { $event->setIdentifier($id->nodeValue); } $href = $this->getDomElement($domEvent, 'href'); if ($href) { $path = str_replace($this->workspaceRootUri, '', $href->nodeValue); if (substr($path, -1) === '/') { // Jackrabbit might return paths with trailing slashes. Eliminate them if present. $path = substr($path, 0, -1); } $event->setPath($path); } $nodeType = $this->getDomElement($domEvent, 'eventprimarynodetype'); if ($nodeType) { $event->setNodeType($nodeType->nodeValue); } $userData = $this->getDomElement($domEvent, 'eventuserdata'); if ($userData) { $event->setUserData($userData->nodeValue); } $eventInfos = $this->getDomElement($domEvent, 'eventinfo'); if ($eventInfos) { foreach ($eventInfos->childNodes as $info) { if ($info->nodeType == XML_ELEMENT_NODE) { $event->addInfo($info->tagName, $info->nodeValue); } } } $events[] = $event; } return $events; }