]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Fix for regression with OStatus mention processing (duplicated new and old style...
authorBrion Vibber <brion@status.net>
Tue, 10 Aug 2010 20:36:38 +0000 (13:36 -0700)
committerBrion Vibber <brion@status.net>
Tue, 10 Aug 2010 20:49:11 +0000 (13:49 -0700)
classes/Notice.php
lib/activitycontext.php
plugins/OStatus/classes/Ostatus_profile.php

index 4646fc6aba2778fbb6511a826ca12fc87cf7f0d3..0eeebfadf374aa7e61c89ca7f56f524f77b15bcb 100644 (file)
@@ -485,7 +485,7 @@ class Notice extends Memcached_DataObject
     function saveKnownUrls($urls)
     {
         // @fixme validation?
-        foreach ($urls as $url) {
+        foreach (array_unique($urls) as $url) {
             File::processNew($url, $this->id);
         }
     }
@@ -893,7 +893,7 @@ class Notice extends Memcached_DataObject
         }
 
         $groups = array();
-        foreach ($group_ids as $id) {
+        foreach (array_unique($group_ids) as $id) {
             $group = User_group::staticGet('id', $id);
             if ($group) {
                 common_log(LOG_ERR, "Local delivery to group id $id, $group->nickname");
@@ -1016,7 +1016,7 @@ class Notice extends Memcached_DataObject
         }
         $sender = Profile::staticGet($this->profile_id);
 
-        foreach ($uris as $uri) {
+        foreach (array_unique($uris) as $uri) {
 
             $user = User::staticGet('uri', $uri);
 
@@ -1029,6 +1029,7 @@ class Notice extends Memcached_DataObject
 
                 $reply->notice_id  = $this->id;
                 $reply->profile_id = $user->id;
+                common_log(LOG_INFO, __METHOD__ . ": saving reply: notice $this->id to profile $user->id");
 
                 $id = $reply->insert();
             }
index 5afbb7fd28b75b4bc36315a74f1e3cecd3b3f944..09a457924963a22d3bb3bafeaf34c67a2ce00d2a 100644 (file)
@@ -71,6 +71,7 @@ class ActivityContext
 
         $links = $element->getElementsByTagNameNS(ActivityUtils::ATOM, ActivityUtils::LINK);
 
+        $attention = array();
         for ($i = 0; $i < $links->length; $i++) {
 
             $link = $links->item($i);
@@ -80,11 +81,12 @@ class ActivityContext
             // XXX: Deprecate this in favour of "mentioned" from Salmon spec
             // http://salmon-protocol.googlecode.com/svn/trunk/draft-panzer-salmon-00.html#SALR
             if ($linkRel == self::ATTENTION) {
-                $this->attention[] = $link->getAttribute(self::HREF);
+                $attention[] = $link->getAttribute(self::HREF);
             } elseif ($linkRel == self::MENTIONED) {
-                $this->attention[] = $link->getAttribute(self::HREF);
+                $attention[] = $link->getAttribute(self::HREF);
             }
         }
+        $this->attention = array_unique($attention);
     }
 
     /**
index 77a5e22cc02a2248b743def14da12b47c13bccf6..8f8eb773f87dfeec0701990db5a6dfd6c5f1fddd 100644 (file)
@@ -681,7 +681,7 @@ class Ostatus_profile extends Memcached_DataObject
         common_log(LOG_DEBUG, "Original reply recipients: " . implode(', ', $attention_uris));
         $groups = array();
         $replies = array();
-        foreach ($attention_uris as $recipient) {
+        foreach (array_unique($attention_uris) as $recipient) {
             // Is the recipient a local user?
             $user = User::staticGet('uri', $recipient);
             if ($user) {