/**
* 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;
}