From c3c5a9974d6959cf92bc501ebe6b37860a57694a Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Sat, 9 Jan 2016 14:36:47 +0100 Subject: [PATCH] Do proper fromUri lookup on groups too --- classes/Notice.php | 4 +--- classes/Profile.php | 5 +++++ plugins/OStatus/OStatusPlugin.php | 14 ++++++++++---- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/classes/Notice.php b/classes/Notice.php index 6781918be4..b7378711f5 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -974,8 +974,6 @@ class Notice extends Managed_DataObject // reasonably handle notifications themselves. if (ActivityUtils::compareVerbs($stored->verb, array(ActivityVerb::POST))) { - $stored->saveAttentions($act->context->attention); - if (!empty($tags)) { $stored->saveKnownTags($tags); } else { @@ -984,7 +982,7 @@ class Notice extends Managed_DataObject // Note: groups may save tags, so must be run after tags are saved // to avoid errors on duplicates. - // Note: groups should always be set. + $stored->saveAttentions($act->context->attention); if (!empty($urls)) { $stored->saveKnownUrls($urls); diff --git a/classes/Profile.php b/classes/Profile.php index e8470d96c5..9c334fd923 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -1555,6 +1555,11 @@ class Profile extends Managed_DataObject $user = User::getKV('uri', $uri); if ($user instanceof User) { $profile = $user->getProfile(); + } else { + $group = User_group::getKV('uri', $uri); + if ($group instanceof User_group) { + $profile = $group->getProfile(); + } } Event::handle('EndGetProfileFromURI', array($uri, $profile)); } diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php index c3307f23cb..7c509f0641 100644 --- a/plugins/OStatus/OStatusPlugin.php +++ b/plugins/OStatus/OStatusPlugin.php @@ -1265,17 +1265,23 @@ class OStatusPlugin extends Plugin function onStartGetProfileFromURI($uri, &$profile) { // Don't want to do Web-based discovery on our own server, - // so we check locally first. + // so we check locally first. This duplicates the functionality + // in the Profile class, since the plugin always runs before + // that local lookup, but since we return false it won't run double. $user = User::getKV('uri', $uri); - - if (!empty($user)) { + if ($user instanceof User) { $profile = $user->getProfile(); return false; + } else { + $group = User_group::getKV('uri', $uri); + if ($group instanceof User_group) { + $profile = $group->getProfile(); + return false; + } } // Now, check remotely - try { $oprofile = Ostatus_profile::ensureProfileURI($uri); $profile = $oprofile->localProfile();