]> git.mxchange.org Git - friendica.git/commitdiff
Moved acitivites
authorMichael <heluecht@pirati.ca>
Wed, 24 Nov 2021 07:06:28 +0000 (07:06 +0000)
committerMichael <heluecht@pirati.ca>
Wed, 24 Nov 2021 07:06:28 +0000 (07:06 +0000)
include/api.php
src/DI.php
src/Factory/Api/Friendica/Activities.php
tests/legacy/ApiTest.php

index 8db59070b55b11733ccd4f8f2ee11a4227931bf0..b93fa39d57bff1e11e7d720d61edd71e40eb76db 100644 (file)
@@ -49,7 +49,6 @@ use Friendica\Network\HTTPException\NotFoundException;
 use Friendica\Network\HTTPException\TooManyRequestsException;
 use Friendica\Network\HTTPException\UnauthorizedException;
 use Friendica\Object\Image;
-use Friendica\Protocol\Activity;
 use Friendica\Security\BasicAuth;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Images;
@@ -245,83 +244,6 @@ function api_format_messages($item, $recipient, $sender)
        return $ret;
 }
 
-/**
- * return likes, dislikes and attend status for item
- *
- * @param array  $item array
- * @param string $type Return type (atom, rss, xml, json)
- *
- * @return array
- *            likes => int count,
- *            dislikes => int count
- * @throws BadRequestException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws UnauthorizedException
- */
-function api_format_items_activities($item, $type = "json")
-{
-       $activities = [
-               'like' => [],
-               'dislike' => [],
-               'attendyes' => [],
-               'attendno' => [],
-               'attendmaybe' => [],
-               'announce' => [],
-       ];
-
-       $condition = ['uid' => $item['uid'], 'thr-parent' => $item['uri'], 'gravity' => GRAVITY_ACTIVITY];
-       $ret = Post::selectForUser($item['uid'], ['author-id', 'verb'], $condition);
-
-       while ($parent_item = Post::fetch($ret)) {
-               // not used as result should be structured like other user data
-               //builtin_activity_puller($i, $activities);
-
-               // get user data and add it to the array of the activity
-               $user = DI::twitterUser()->createFromContactId($parent_item['author-id'], $item['uid'])->toArray();
-               switch ($parent_item['verb']) {
-                       case Activity::LIKE:
-                               $activities['like'][] = $user;
-                               break;
-                       case Activity::DISLIKE:
-                               $activities['dislike'][] = $user;
-                               break;
-                       case Activity::ATTEND:
-                               $activities['attendyes'][] = $user;
-                               break;
-                       case Activity::ATTENDNO:
-                               $activities['attendno'][] = $user;
-                               break;
-                       case Activity::ATTENDMAYBE:
-                               $activities['attendmaybe'][] = $user;
-                               break;
-                       case Activity::ANNOUNCE:
-                               $activities['announce'][] = $user;
-                               break;
-                       default:
-                               break;
-               }
-       }
-
-       DBA::close($ret);
-
-       if ($type == "xml") {
-               $xml_activities = [];
-               foreach ($activities as $k => $v) {
-                       // change xml element from "like" to "friendica:like"
-                       $xml_activities["friendica:".$k] = $v;
-                       // add user data into xml output
-                       $k_user = 0;
-                       foreach ($v as $user) {
-                               $xml_activities["friendica:".$k][$k_user++.":user"] = $user;
-                       }
-               }
-               $activities = $xml_activities;
-       }
-
-       return $activities;
-}
-
 /**
  *
  * @param string $acl_string
@@ -643,7 +565,7 @@ function prepare_photo_data($type, $scale, $photo_id, $uid)
                throw new NotFoundException('Photo-related item not found.');
        }
 
-       $data['photo']['friendica_activities'] = api_format_items_activities($item, $type);
+       $data['photo']['friendica_activities'] = DI::friendicaActivities()->createFromUriId($item['uri-id'], $item['uid'], $type);
 
        // retrieve comments on photo
        $condition = ["`parent` = ? AND `uid` = ? AND `gravity` IN (?, ?)",
index 1531988aafac7d1d4afdaec49049edbd038e62e1..b40222237b9c6e9498f4592e7b56cfb344f3b1f6 100644 (file)
@@ -270,6 +270,14 @@ abstract class DI
        // "Factory" namespace instances
        //
 
+       /**
+        * @return Factory\Api\Friendica\Activities
+        */
+       public static function friendicaActivities()
+       {
+               return self::$dice->create(Factory\Api\Friendica\Activities::class);
+       }
+
        /**
         * @return Factory\Api\Mastodon\Account
         */
index c55649e9b419df726041dfeede61d8d0271b83c0..06d9cfd6dbd74c42b8bdb6f7c97d187326671e4b 100644 (file)
@@ -50,7 +50,7 @@ class Activities extends BaseFactory
         * @return Array
         * @throws HTTPException\InternalServerErrorException
         */
-       public function createFromUriId(int $uriId, int $uid): array
+       public function createFromUriId(int $uriId, int $uid, $type = 'json'): array
        {
                $activities = [
                        'like'        => [],
@@ -94,6 +94,20 @@ class Activities extends BaseFactory
 
                DBA::close($ret);
 
+               if ($type == 'xml') {
+                       $xml_activities = [];
+                       foreach ($activities as $k => $v) {
+                               // change xml element from "like" to "friendica:like"
+                               $xml_activities["friendica:".$k] = $v;
+                               // add user data into xml output
+                               $k_user = 0;
+                               foreach ($v as $user) {
+                                       $xml_activities['friendica:' . $k][$k_user++ . ':user'] = $user;
+                               }
+                       }
+                       $activities = $xml_activities;
+               }
+       
                return $activities;
        }
 }
index e8d1a928d91e4cc602460c715f6623662a81b7f5..6657644f8c59a8abe88eb295c2504ed1827cb791 100644 (file)
@@ -2162,8 +2162,8 @@ class ApiTest extends FixtureTest
         */
        public function testApiFormatItemsActivities()
        {
-               $item   = ['uid' => 0, 'uri' => ''];
-               $result = api_format_items_activities($item);
+               $item   = ['uid' => 0, 'uri-id' => 1];
+               $result = DI::friendicaActivities()->createFromUriId($item['uri-id'], $item['uid']);
                self::assertArrayHasKey('like', $result);
                self::assertArrayHasKey('dislike', $result);
                self::assertArrayHasKey('attendyes', $result);
@@ -2178,8 +2178,8 @@ class ApiTest extends FixtureTest
         */
        public function testApiFormatItemsActivitiesWithXml()
        {
-               $item   = ['uid' => 0, 'uri' => ''];
-               $result = api_format_items_activities($item, 'xml');
+               $item   = ['uid' => 0, 'uri-id' => 1];
+               $result = DI::friendicaActivities()->createFromUriId($item['uri-id'], $item['uid'], 'xml');
                self::assertArrayHasKey('friendica:like', $result);
                self::assertArrayHasKey('friendica:dislike', $result);
                self::assertArrayHasKey('friendica:attendyes', $result);