From 106981bedfc29c15f6e9deae9d55c5eea87997db Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 7 Sep 2022 09:55:52 +0000
Subject: [PATCH] fix activity feed retrieval, fixes #1557

Closes #1557

Merge request studip/studip!979
---
 app/routes/Activity.php                       | 19 ++++++++-----------
 lib/activities/Activity.php                   |  6 +++---
 .../assets/javascripts/lib/activityfeed.js    |  2 +-
 templates/start/activityfeed.php              |  2 +-
 4 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/app/routes/Activity.php b/app/routes/Activity.php
index a37c01ec7f7..d67578418ff 100644
--- a/app/routes/Activity.php
+++ b/app/routes/Activity.php
@@ -18,7 +18,7 @@ class Activity extends \RESTAPI\RouteMap
      *
      * @param string  $user_id   the user to get the activities for
      *
-     * @return Array   the activities as array('collection' => array(...), 'pagination' => array())
+     * @return array   the activities as array('collection' => array(...), 'pagination' => array())
      */
     public function getActivities($user_id)
     {
@@ -29,11 +29,8 @@ class Activity extends \RESTAPI\RouteMap
 
         // failsafe einbauen - falls es keine älteren Aktivitäten mehr im System gibt, Abbruch!
 
-        if ($oldest_activity = \Studip\Activity\Activity::getOldestActivity()) {
-            $max_age = array_pop($oldest_activity)->mkdate;
-        } else {
-            $max_age = time();
-        }
+        $oldest_activity = \Studip\Activity\Activity::getOldestActivity();
+        $max_age = $oldest_activity ? $oldest_activity->mkdate : time();
 
 
         $contexts = [];
@@ -70,16 +67,16 @@ class Activity extends \RESTAPI\RouteMap
         $scrollfrom = \Request::int('scrollfrom', false);
         $filtertype = \Request::get('filtertype', '');
 
-        $objectType = \Request::get('object_type', '');
+        $objectType = \Request::get('object_type');
         $filter->setObjectType($objectType);
-        
-        $objectId = \Request::get('object_id', '');
+
+        $objectId = \Request::get('object_id');
         $filter->setObjectId($objectId);
 
-        $context = \Request::get('context_type', '');
+        $context = \Request::get('context_type');
         $filter->setContext($context);
 
-        $contextId = \Request::get('context_id', '');
+        $contextId = \Request::get('context_id');
         $filter->setContextId($contextId);
 
         if (!empty($filtertype)) {
diff --git a/lib/activities/Activity.php b/lib/activities/Activity.php
index b46c9b23be4..3508e5a2170 100644
--- a/lib/activities/Activity.php
+++ b/lib/activities/Activity.php
@@ -169,15 +169,15 @@ class Activity extends \SimpleORMap
     /**
      * Returns the oldest existing activity
      *
-     * @return Array
+     * @return Activity|false
      */
     public static function getOldestActivity()
     {
         $cache = \StudipCacheFactory::getCache();
-        $cache_key = 'activity/oldest_activity';
+        $cache_key = 'activity/oldest-activity';
 
         if (!$activity = unserialize($cache->read($cache_key))) {
-            $activity = self::findBySQL('1 ORDER BY mkdate ASC LIMIT 1');
+            $activity = self::findOneBySQL('1 ORDER BY mkdate ASC LIMIT 1');
 
             if (!empty($activity)) {
                 $cache->write($cache_key, serialize($activity));
diff --git a/resources/assets/javascripts/lib/activityfeed.js b/resources/assets/javascripts/lib/activityfeed.js
index a753e1d9b2d..74c27f9f260 100644
--- a/resources/assets/javascripts/lib/activityfeed.js
+++ b/resources/assets/javascripts/lib/activityfeed.js
@@ -50,7 +50,7 @@ const ActivityFeed = {
 
         STUDIP.api.GET(['user', STUDIP.ActivityFeed.user_id, 'activitystream'], {
             data: {
-                filtertype: filtertype,
+                filtertype: JSON.stringify(filtertype),
                 scrollfrom: STUDIP.ActivityFeed.scrolledfrom
             }
         }).done(function (activities) {
diff --git a/templates/start/activityfeed.php b/templates/start/activityfeed.php
index 6d86cf16fa5..a95fbb6bd9f 100644
--- a/templates/start/activityfeed.php
+++ b/templates/start/activityfeed.php
@@ -3,7 +3,7 @@
     jQuery(document).ready(function() {
         STUDIP.ActivityFeed.user_id = '<?= $user_id ?>';
         STUDIP.ActivityFeed.scrolledfrom = '<?= $scrolledfrom ?>';
-        STUDIP.ActivityFeed.filter = '<?= json_encode($config) ?>';
+        STUDIP.ActivityFeed.filter = <?= json_encode($config) ?>;
         STUDIP.ActivityFeed.init();
     });
 </script>
-- 
GitLab