]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Properly parse incoming bookmarks
authorMikael Nordfeldth <mmn@hethane.se>
Fri, 24 Jun 2016 11:51:40 +0000 (13:51 +0200)
committerMikael Nordfeldth <mmn@hethane.se>
Fri, 24 Jun 2016 11:51:40 +0000 (13:51 +0200)
lib/activityobject.php
plugins/Bookmark/classes/Bookmark.php

index ca6390b725331704f878d152367f1a3fb8c0cead..d211136d3ce72c4adc9bfb347d3d57bf9e878357 100644 (file)
@@ -28,9 +28,7 @@
  * @link      http://status.net/
  */
 
-if (!defined('STATUSNET')) {
-    exit(1);
-}
+if (!defined('GNUSOCIAL')) { exit(1); }
 
 require_once(INSTALLDIR.'/lib/activitystreamjsondocument.php');
 
@@ -269,6 +267,22 @@ class ActivityObject
         if (empty($this->id) && !empty($this->link)) { // fallback if there's no ID
             $this->id = $this->link;
         }
+
+        $els = $element->childNodes;
+        $out = array();
+
+        for ($i = 0; $i < $els->length; $i++) {
+            $link = $els->item($i);
+            if ($link->localName == ActivityUtils::LINK && $link->namespaceURI == ActivityUtils::ATOM) {
+                $attrs = array();
+                foreach ($link->attributes as $attrName=>$attrNode) {
+                    $attrs[$attrName] = $attrNode->nodeValue;
+                }
+                $this->extra[] = [$link->localName,
+                                    $attrs,
+                                    $link->nodeValue];
+            }
+        }
     }
 
     // @todo FIXME: rationalize with Activity::_fromRssItem()
index b593bc1909cef57d26f34d70656fe133fbe82a1e..02b4d3d2e3d5559726ba33ac7aecbc9ce9dca2ff 100644 (file)
@@ -162,19 +162,19 @@ class Bookmark extends Managed_DataObject
         $url = null;
         // each extra element is array('tagname', array('attr'=>'val', ...), 'content')
         foreach ($actobj->extra as $extra) {
-            if ($extra[1]['rel'] !== 'related') {
+            if ($extra[0] !== ActivityUtils::LINK || $extra[1][ActivityUtils::REL] !== 'related') {
                 continue;
             }
-            if ($url===null && strlen($extra[1]['href'])>0) {
-                $url = $extra[1]['href'];
+            if ($url===null && strlen($extra[1][ActivityUtils::HREF])>0) {
+                $url = $extra[1][ActivityUtils::HREF];
             } elseif ($url !== null) {
                 // TRANS: Client exception thrown when a bookmark is formatted incorrectly.
-                throw new ClientException(sprintf(_m('Expected exactly 1 link rel=related in a Bookmark, got %1$d.'), count($relLinkEls)));
+                throw new ClientException(sprintf(_m('Expected exactly 1 link rel=related in a Bookmark, got more than that.')));
             }
         }
         if (is_null($url)) {
             // TRANS: Client exception thrown when a bookmark is formatted incorrectly.
-            throw new ClientException(sprintf(_m('Expected exactly 1 link rel=related in a Bookmark, got %1$d.'), count($relLinkEls)));
+            throw new ClientException(sprintf(_m('Expected exactly 1 link rel=related in a Bookmark, got 0.')));
         }
 
         if (!strlen($actobj->title)) {