]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Try to get only immediate children (again)
authorEvan Prodromou <evan@status.net>
Tue, 19 Jul 2011 20:38:58 +0000 (16:38 -0400)
committerEvan Prodromou <evan@status.net>
Tue, 19 Jul 2011 20:38:58 +0000 (16:38 -0400)
lib/activity.php
lib/activityutils.php

index 12ea53a9fefdc02fddc6257c8876f1693dc66d5b..1582a2019e45f0460df21eaa44d09e82e350806f 100644 (file)
@@ -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) {
index 59f7cdcf3a987d9290609e163427f639bdd5678a..c2c239f1d3cc68ef32872da97835f7d8ec58710c 100644 (file)
@@ -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
      *