]> source.dussan.org Git - nextcloud-server.git/commitdiff
Move files filter to IFilter
authorJoas Schilling <coding@schilljs.com>
Fri, 21 Oct 2016 09:50:28 +0000 (11:50 +0200)
committerJoas Schilling <coding@schilljs.com>
Wed, 16 Nov 2016 08:25:44 +0000 (09:25 +0100)
Signed-off-by: Joas Schilling <coding@schilljs.com>
apps/files/appinfo/info.xml
apps/files/lib/Activity.php
apps/files/lib/Activity/Filter/FileChanges.php [new file with mode: 0644]

index 0bf4388b395384fc82cd86944a9e181bdb869446..85d0bb167bd74ac04d35c9c6496f6f558dbb632d 100644 (file)
                <user>user-files</user>
        </documentation>
 
+       <activity>
+               <filters>
+                       <filter>OCA\Files\Activity\Filter\FileChanges</filter>
+               </filters>
+       </activity>
+
        <background-jobs>
                <job>OCA\Files\BackgroundJob\ScanFiles</job>
                <job>OCA\Files\BackgroundJob\DeleteOrphanedItems</job>
index 25146456b4c169b1a81074021cdc5f1422f1d57d..6c465943e310340a4a4233dc824add34939ecc9f 100644 (file)
@@ -336,14 +336,7 @@ class Activity implements IExtension {
                                        'url' => $this->URLGenerator->linkToRoute('activity.Activities.showList', ['filter' => self::FILTER_FAVORITES]),
                                ],
                        ],
-                       'apps' => [
-                               self::FILTER_FILES => [
-                                       'id' => self::FILTER_FILES,
-                                       'icon' => 'icon-files-dark',
-                                       'name' => (string) $this->l->t('File changes'),
-                                       'url' => $this->URLGenerator->linkToRoute('activity.Activities.showList', ['filter' => self::FILTER_FILES]),
-                               ],
-                       ],
+                       'apps' => [],
                ];
        }
 
@@ -354,7 +347,7 @@ class Activity implements IExtension {
         * @return boolean
         */
        public function isFilterValid($filterValue) {
-               return $filterValue === self::FILTER_FILES || $filterValue === self::FILTER_FAVORITES;
+               return $filterValue === self::FILTER_FAVORITES;
        }
 
        /**
@@ -366,7 +359,7 @@ class Activity implements IExtension {
         * @return array|false
         */
        public function filterNotificationTypes($types, $filter) {
-               if ($filter === self::FILTER_FILES || $filter === self::FILTER_FAVORITES) {
+               if ($filter === self::FILTER_FAVORITES) {
                        return array_intersect([
                                self::TYPE_SHARE_CREATED,
                                self::TYPE_SHARE_CHANGED,
@@ -388,11 +381,6 @@ class Activity implements IExtension {
         */
        public function getQueryForFilter($filter) {
                $user = $this->activityManager->getCurrentUserId();
-               // Display actions from all files
-               if ($filter === self::FILTER_FILES) {
-                       return ['`app` = ?', [self::APP_FILES]];
-               }
-
                if (!$user) {
                        // Remaining filters only work with a user/token
                        return false;
diff --git a/apps/files/lib/Activity/Filter/FileChanges.php b/apps/files/lib/Activity/Filter/FileChanges.php
new file mode 100644 (file)
index 0000000..2c1807f
--- /dev/null
@@ -0,0 +1,95 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Files\Activity\Filter;
+
+
+use OCP\Activity\IFilter;
+use OCP\IL10N;
+use OCP\IURLGenerator;
+
+class FileChanges implements IFilter {
+
+       /** @var IL10N */
+       protected $l;
+
+       /** @var IURLGenerator */
+       protected $url;
+
+       public function __construct(IL10N $l, IURLGenerator $url) {
+               $this->l = $l;
+               $this->url = $url;
+       }
+
+       /**
+        * @return string Lowercase a-z only identifier
+        * @since 9.2.0
+        */
+       public function getIdentifier() {
+               return 'files';
+       }
+
+       /**
+        * @return string A translated string
+        * @since 9.2.0
+        */
+       public function getName() {
+               return $this->l->t('File changes');
+       }
+
+       /**
+        * @return int
+        * @since 9.2.0
+        */
+       public function getPriority() {
+               return 30;
+       }
+
+       /**
+        * @return string Full URL to an icon, empty string when none is given
+        * @since 9.2.0
+        */
+       public function getIcon() {
+               return $this->url->getAbsoluteURL($this->url->imagePath('core', 'places/files-dark.svg'));
+       }
+
+       /**
+        * @param string[] $types
+        * @return string[] An array of allowed apps from which activities should be displayed
+        * @since 9.2.0
+        */
+       public function filterTypes(array $types) {
+               return array_intersect([
+                       'file_created',
+                       'file_changed',
+                       'file_deleted',
+                       'file_restored',
+               ], $types);
+       }
+
+       /**
+        * @return string[] An array of allowed apps from which activities should be displayed
+        * @since 9.2.0
+        */
+       public function allowedApps() {
+               return ['files'];
+       }
+}