We would end up with a Managed_DataObject if now match was found
authorMikael Nordfeldth <mmn@hethane.se>
Mon, 4 Jan 2016 01:04:18 +0000 (02:04 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Mon, 4 Jan 2016 01:04:18 +0000 (02:04 +0100)
meaning we'd return for example a Notice with empty id (translated into 0)
and thus Faves coming in from remote instances where the fave'd notice was
not found would result in faving the first Notice in a table-wide search,
i.e. often the first post on the instance.

Whoopie!

lib/activityutils.php

index c8e580825173693aa617a010ab35c27ff1914c95..8a2be350225140d6198128ad33d97a42a305c39b 100644 (file)
@@ -380,23 +380,24 @@ class ActivityUtils
     }
 
     static function findLocalObject(array $uris, $type=ActivityObject::NOTE) {
-        $object = null;
-        // TODO: Extend this in plugins etc.
-        if (Event::handle('StartFindLocalActivityObject', array($uris, $type, &$object))) {
+        $obj_class = null;
+        // TODO: Extend this in plugins etc. and describe in EVENTS.txt
+        if (Event::handle('StartFindLocalActivityObject', array($uris, $type, &$obj_class))) {
             switch (self::resolveUri($type)) {
             case ActivityObject::PERSON:
                 // GROUP will also be here in due time...
-                $object = new Profile();
+                $obj_class = 'Profile';
                 break;
             default:
-                $object = new Notice();
+                $obj_class = 'Notice';
             }
         }
+        $object = null;
         $uris = array_unique($uris);
         foreach ($uris as $uri) {
             try {
                 // the exception thrown will cancel before reaching $object
-                $object = call_user_func(array($object, 'fromUri'), $uri);
+                $object = call_user_func("{$obj_class}::fromUri", $uri);
                 break;
             } catch (UnknownUriException $e) {
                 common_debug('Could not find local activity object from uri: '.$e->object_uri);