Commit 383f14c7 authored by Evan Prodromou's avatar Evan Prodromou

Try to get only immediate children (again)

parent c86f0ffa
......@@ -171,15 +171,12 @@ class Activity
// XXX: do other implied stuff here
}
$objectEls = $entry->getElementsByTagNameNS(self::SPEC, self::OBJECT);
if ($objectEls->length > 0) {
for ($i = 0; $i < $objectEls->length; $i++) {
$objectEl = $objectEls->item($i);
// Only immediate children (don't slurp embedded activities' objects!)
if ($objectEl->parentNode != $entry) {
continue;
}
// get immediate object children
$objectEls = ActivityUtils::children($entry, self::OBJECT, self::SPEC);
if (count($objectEls) > 0) {
foreach ($objectEls as $objectEl) {
// Special case for embedded activities
$objectType = ActivityUtils::childContent($objectEl, self::OBJECTTYPE, self::SPEC);
if (!empty($objectType) && $objectType == ActivityObject::ACTIVITY) {
......
......@@ -145,6 +145,34 @@ class ActivityUtils
}
}
/**
* Gets all immediate child elements with the given tag
*
* @param DOMElement $element element to pick at
* @param string $tag tag to look for
* @param string $namespace Namespace to look under
*
* @return array found element or null
*/
static function children(DOMNode $element, $tag, $namespace=self::ATOM)
{
$results = array();
$els = $element->childNodes;
if (!empty($els) && $els->length > 0) {
for ($i = 0; $i < $els->length; $i++) {
$el = $els->item($i);
if ($el->localName == $tag && $el->namespaceURI == $namespace) {
$results[] = $el;
}
}
}
return $results;
}
/**
* Grab the text content of a DOM element child of the current element
*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment