]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/OStatus/classes/Ostatus_profile.php
OStatus queue handler uses Notice->getAttentionProfiles()
[quix0rs-gnu-social.git] / plugins / OStatus / classes / Ostatus_profile.php
index fa6170cfdf1bccd468282e8ae4e5c738e0698208..d36cbe21d66c902579e680224cfa2d0a967da3d5 100644 (file)
@@ -376,6 +376,7 @@ class Ostatus_profile extends Managed_DataObject
     public function notifyDeferred($entry, $actor)
     {
         if ($this->salmonuri) {
+            common_debug("OSTATUS: user {$actor->getNickname()} ({$actor->getID()}) wants to ping {$this->localProfile()->getNickname()} on {$this->salmonuri}");
             $data = array('salmonuri' => $this->salmonuri,
                           'entry' => $this->notifyPrepXml($entry),
                           'actor' => $actor->getID(),
@@ -444,10 +445,7 @@ class Ostatus_profile extends Managed_DataObject
             return;
         }
 
-        for ($i = 0; $i < $entries->length; $i++) {
-            $entry = $entries->item($i);
-            $this->processEntry($entry, $feed, $source);
-        }
+        $this->processEntries($entries, $feed, $source);
     }
 
     public function processRssFeed(DOMElement $rss, $source)
@@ -465,9 +463,21 @@ class Ostatus_profile extends Managed_DataObject
 
         $items = $channel->getElementsByTagName('item');
 
-        for ($i = 0; $i < $items->length; $i++) {
-            $item = $items->item($i);
-            $this->processEntry($item, $channel, $source);
+        $this->processEntries($items, $channel, $source);
+    }
+
+    public function processEntries(DOMNodeList $entries, DOMElement $feed, $source)
+    {
+        for ($i = 0; $i < $entries->length; $i++) {
+            $entry = $entries->item($i);
+            try {
+                $this->processEntry($entry, $feed, $source);
+            } catch (AlreadyFulfilledException $e) {
+                common_debug('We already had this entry: '.$e->getMessage());
+            } catch (ServerException $e) {
+                // FIXME: This should be UnknownUriException and the ActivityUtils:: findLocalObject should only test one URI
+                common_log(LOG_ERR, 'Entry threw exception while processing a feed from '.$source.': '.$e->getMessage());
+            }
         }
     }
 
@@ -480,14 +490,14 @@ class Ostatus_profile extends Managed_DataObject
      *
      * @return Notice Notice representing the new (or existing) activity
      */
-    public function processEntry($entry, $feed, $source)
+    public function processEntry(DOMElement $entry, DOMElement $feed, $source)
     {
         $activity = new Activity($entry, $feed);
         return $this->processActivity($activity, $source);
     }
 
     // TODO: Make this throw an exception
-    public function processActivity($activity, $source)
+    public function processActivity(Activity $activity, $source)
     {
         $notice = null;