Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2019-01-24 18:52:38 +0300
committerJoas Schilling <coding@schilljs.com>2019-01-24 18:52:38 +0300
commitabd305eff5904a10218d559f596c80c08e2b9c4e (patch)
treed8c242f381c9c7009ba72870ad2889dd2a476cde
parent82b5828e3773f08a845a2a1d9a69247ec605f2d8 (diff)
Remove legacy activity stuff
Signed-off-by: Joas Schilling <coding@schilljs.com>
-rw-r--r--lib/composer/composer/autoload_classmap.php2
-rw-r--r--lib/composer/composer/autoload_static.php2
-rw-r--r--lib/private/Activity/LegacyFilter.php110
-rw-r--r--lib/private/Activity/LegacySetting.php125
-rw-r--r--lib/private/Activity/Manager.php369
-rw-r--r--lib/public/Activity/IExtension.php127
-rw-r--r--lib/public/Activity/IManager.php147
-rw-r--r--tests/lib/Activity/ManagerTest.php259
8 files changed, 67 insertions, 1074 deletions
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 26aee010519..37d36e4fc1a 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -407,8 +407,6 @@ return array(
'OC\\Accounts\\Hooks' => $baseDir . '/lib/private/Accounts/Hooks.php',
'OC\\Activity\\Event' => $baseDir . '/lib/private/Activity/Event.php',
'OC\\Activity\\EventMerger' => $baseDir . '/lib/private/Activity/EventMerger.php',
- 'OC\\Activity\\LegacyFilter' => $baseDir . '/lib/private/Activity/LegacyFilter.php',
- 'OC\\Activity\\LegacySetting' => $baseDir . '/lib/private/Activity/LegacySetting.php',
'OC\\Activity\\Manager' => $baseDir . '/lib/private/Activity/Manager.php',
'OC\\AllConfig' => $baseDir . '/lib/private/AllConfig.php',
'OC\\AppConfig' => $baseDir . '/lib/private/AppConfig.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 64eb952d2c6..09e24155a46 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -437,8 +437,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Accounts\\Hooks' => __DIR__ . '/../../..' . '/lib/private/Accounts/Hooks.php',
'OC\\Activity\\Event' => __DIR__ . '/../../..' . '/lib/private/Activity/Event.php',
'OC\\Activity\\EventMerger' => __DIR__ . '/../../..' . '/lib/private/Activity/EventMerger.php',
- 'OC\\Activity\\LegacyFilter' => __DIR__ . '/../../..' . '/lib/private/Activity/LegacyFilter.php',
- 'OC\\Activity\\LegacySetting' => __DIR__ . '/../../..' . '/lib/private/Activity/LegacySetting.php',
'OC\\Activity\\Manager' => __DIR__ . '/../../..' . '/lib/private/Activity/Manager.php',
'OC\\AllConfig' => __DIR__ . '/../../..' . '/lib/private/AllConfig.php',
'OC\\AppConfig' => __DIR__ . '/../../..' . '/lib/private/AppConfig.php',
diff --git a/lib/private/Activity/LegacyFilter.php b/lib/private/Activity/LegacyFilter.php
deleted file mode 100644
index 9beffc1f3a7..00000000000
--- a/lib/private/Activity/LegacyFilter.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
- *
- * @author 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 OC\Activity;
-
-use OCP\Activity\IFilter;
-use OCP\Activity\IManager;
-
-class LegacyFilter implements IFilter {
-
- /** @var IManager */
- protected $manager;
- /** @var string */
- protected $identifier;
- /** @var string */
- protected $name;
- /** @var bool */
- protected $isTopFilter;
-
- /**
- * LegacySetting constructor.
- *
- * @param IManager $manager
- * @param string $identifier
- * @param string $name
- * @param bool $isTopFilter
- */
- public function __construct(IManager $manager,
- $identifier,
- $name,
- $isTopFilter) {
- $this->manager = $manager;
- $this->identifier = $identifier;
- $this->name = $name;
- $this->isTopFilter = $isTopFilter;
- }
-
- /**
- * @return string Lowercase a-z and underscore only identifier
- * @since 11.0.0
- */
- public function getIdentifier() {
- return $this->identifier;
- }
-
- /**
- * @return string A translated string
- * @since 11.0.0
- */
- public function getName() {
- return $this->name;
- }
-
- /**
- * @return int whether the filter should be rather on the top or bottom of
- * the admin section. The filters are arranged in ascending order of the
- * priority values. It is required to return a value between 0 and 100.
- * @since 11.0.0
- */
- public function getPriority() {
- return $this->isTopFilter ? 40 : 50;
- }
-
- /**
- * @return string Full URL to an icon, empty string when none is given
- * @since 11.0.0
- */
- public function getIcon() {
- // Old API was CSS class, so we can not use this...
- return '';
- }
-
- /**
- * @param string[] $types
- * @return string[] An array of allowed apps from which activities should be displayed
- * @since 11.0.0
- */
- public function filterTypes(array $types) {
- return $this->manager->filterNotificationTypes($types, $this->getIdentifier());
- }
-
- /**
- * @return string[] An array of allowed apps from which activities should be displayed
- * @since 11.0.0
- */
- public function allowedApps() {
- return [];
- }
-}
-
diff --git a/lib/private/Activity/LegacySetting.php b/lib/private/Activity/LegacySetting.php
deleted file mode 100644
index 7d08533aef5..00000000000
--- a/lib/private/Activity/LegacySetting.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
- *
- * @author 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 OC\Activity;
-
-use OCP\Activity\ISetting;
-
-class LegacySetting implements ISetting {
-
- /** @var string */
- protected $identifier;
- /** @var string */
- protected $name;
- /** @var bool */
- protected $canChangeStream;
- /** @var bool */
- protected $isDefaultEnabledStream;
- /** @var bool */
- protected $canChangeMail;
- /** @var bool */
- protected $isDefaultEnabledMail;
-
- /**
- * LegacySetting constructor.
- *
- * @param string $identifier
- * @param string $name
- * @param bool $canChangeStream
- * @param bool $isDefaultEnabledStream
- * @param bool $canChangeMail
- * @param bool $isDefaultEnabledMail
- */
- public function __construct($identifier,
- $name,
- $canChangeStream,
- $isDefaultEnabledStream,
- $canChangeMail,
- $isDefaultEnabledMail) {
- $this->identifier = $identifier;
- $this->name = $name;
- $this->canChangeStream = $canChangeStream;
- $this->isDefaultEnabledStream = $isDefaultEnabledStream;
- $this->canChangeMail = $canChangeMail;
- $this->isDefaultEnabledMail = $isDefaultEnabledMail;
- }
-
- /**
- * @return string Lowercase a-z and underscore only identifier
- * @since 11.0.0
- */
- public function getIdentifier() {
- return $this->identifier;
- }
-
- /**
- * @return string A translated string
- * @since 11.0.0
- */
- public function getName() {
- return $this->name;
- }
-
- /**
- * @return int whether the filter should be rather on the top or bottom of
- * the admin section. The filters are arranged in ascending order of the
- * priority values. It is required to return a value between 0 and 100.
- * @since 11.0.0
- */
- public function getPriority() {
- return 70;
- }
-
- /**
- * @return bool True when the option can be changed for the stream
- * @since 11.0.0
- */
- public function canChangeStream() {
- return $this->canChangeStream;
- }
-
- /**
- * @return bool True when the option can be changed for the stream
- * @since 11.0.0
- */
- public function isDefaultEnabledStream() {
- return $this->isDefaultEnabledStream;
- }
-
- /**
- * @return bool True when the option can be changed for the mail
- * @since 11.0.0
- */
- public function canChangeMail() {
- return $this->canChangeMail;
- }
-
- /**
- * @return bool True when the option can be changed for the stream
- * @since 11.0.0
- */
- public function isDefaultEnabledMail() {
- return $this->isDefaultEnabledMail;
- }
-}
-
diff --git a/lib/private/Activity/Manager.php b/lib/private/Activity/Manager.php
index 9e70b6f465a..3381c23e31c 100644
--- a/lib/private/Activity/Manager.php
+++ b/lib/private/Activity/Manager.php
@@ -28,7 +28,6 @@ namespace OC\Activity;
use OCP\Activity\IConsumer;
use OCP\Activity\IEvent;
-use OCP\Activity\IExtension;
use OCP\Activity\IFilter;
use OCP\Activity\IManager;
use OCP\Activity\IProvider;
@@ -64,14 +63,6 @@ class Manager implements IManager {
/** @var string */
protected $currentUserId;
- /**
- * constructor of the controller
- *
- * @param IRequest $request
- * @param IUserSession $session
- * @param IConfig $config
- * @param IValidator $validator
- */
public function __construct(IRequest $request,
IUserSession $session,
IConfig $config,
@@ -88,29 +79,10 @@ class Manager implements IManager {
/** @var IConsumer[] */
private $consumers = array();
- /** @var \Closure[] */
- private $extensionsClosures = array();
-
- /** @var IExtension[] */
- private $extensions = array();
-
- /** @var array list of filters "name" => "is valid" */
- protected $validFilters = array(
- 'all' => true,
- 'by' => true,
- 'self' => true,
- );
-
- /** @var array list of type icons "type" => "css class" */
- protected $typeIcons = array();
-
- /** @var array list of special parameters "app" => ["text" => ["parameter" => "type"]] */
- protected $specialParameters = array();
-
/**
* @return \OCP\Activity\IConsumer[]
*/
- protected function getConsumers() {
+ protected function getConsumers(): array {
if (!empty($this->consumers)) {
return $this->consumers;
}
@@ -129,27 +101,6 @@ class Manager implements IManager {
}
/**
- * @return \OCP\Activity\IExtension[]
- */
- protected function getExtensions() {
- if (!empty($this->extensions)) {
- return $this->extensions;
- }
-
- $this->extensions = [];
- foreach($this->extensionsClosures as $extension) {
- $e = $extension();
- if ($e instanceof IExtension) {
- $this->extensions[] = $e;
- } else {
- throw new \InvalidArgumentException('The given extension does not implement the \OCP\Activity\IExtension interface');
- }
- }
-
- return $this->extensions;
- }
-
- /**
* Generates a new IEvent object
*
* Make sure to call at least the following methods before sending it to the
@@ -161,7 +112,7 @@ class Manager implements IManager {
*
* @return IEvent
*/
- public function generateEvent() {
+ public function generateEvent(): IEvent {
return new Event($this->validator);
}
@@ -177,7 +128,7 @@ class Manager implements IManager {
* @param IEvent $event
* @throws \BadMethodCallException if required values have not been set
*/
- public function publish(IEvent $event) {
+ public function publish(IEvent $event): void {
if ($event->getAuthor() === '') {
if ($this->session->getUser() instanceof IUser) {
$event->setAuthor($this->session->getUser()->getUID());
@@ -205,38 +156,22 @@ class Manager implements IManager {
*
* @param \Closure $callable
*/
- public function registerConsumer(\Closure $callable) {
+ public function registerConsumer(\Closure $callable): void {
$this->consumersClosures[] = $callable;
$this->consumers = [];
}
- /**
- * In order to improve lazy loading a closure can be registered which will be called in case
- * activity consumers are actually requested
- *
- * $callable has to return an instance of OCA\Activity\IExtension
- *
- * @param \Closure $callable
- */
- public function registerExtension(\Closure $callable) {
- $this->extensionsClosures[] = $callable;
- $this->extensions = [];
- }
-
/** @var string[] */
protected $filterClasses = [];
/** @var IFilter[] */
protected $filters = [];
- /** @var bool */
- protected $loadedLegacyFilters = false;
-
/**
* @param string $filter Class must implement OCA\Activity\IFilter
* @return void
*/
- public function registerFilter($filter) {
+ public function registerFilter(string $filter): void {
$this->filterClasses[$filter] = false;
}
@@ -244,24 +179,7 @@ class Manager implements IManager {
* @return IFilter[]
* @throws \InvalidArgumentException
*/
- public function getFilters() {
- if (!$this->loadedLegacyFilters) {
- $legacyFilters = $this->getNavigation();
-
- foreach ($legacyFilters['top'] as $filter => $data) {
- $this->filters[$filter] = new LegacyFilter(
- $this, $filter, $data['name'], true
- );
- }
-
- foreach ($legacyFilters['apps'] as $filter => $data) {
- $this->filters[$filter] = new LegacyFilter(
- $this, $filter, $data['name'], false
- );
- }
- $this->loadedLegacyFilters = true;
- }
-
+ public function getFilters(): array {
foreach ($this->filterClasses as $class => $false) {
/** @var IFilter $filter */
$filter = \OC::$server->query($class);
@@ -283,7 +201,7 @@ class Manager implements IManager {
* @throws \InvalidArgumentException when the filter was not found
* @since 11.0.0
*/
- public function getFilterById($id) {
+ public function getFilterById(string $id): IFilter {
$filters = $this->getFilters();
if (isset($filters[$id])) {
@@ -303,7 +221,7 @@ class Manager implements IManager {
* @param string $provider Class must implement OCA\Activity\IProvider
* @return void
*/
- public function registerProvider($provider) {
+ public function registerProvider(string $provider): void {
$this->providerClasses[$provider] = false;
}
@@ -311,7 +229,7 @@ class Manager implements IManager {
* @return IProvider[]
* @throws \InvalidArgumentException
*/
- public function getProviders() {
+ public function getProviders(): array {
foreach ($this->providerClasses as $class => $false) {
/** @var IProvider $provider */
$provider = \OC::$server->query($class);
@@ -333,14 +251,11 @@ class Manager implements IManager {
/** @var ISetting[] */
protected $settings = [];
- /** @var bool */
- protected $loadedLegacyTypes = false;
-
/**
* @param string $setting Class must implement OCA\Activity\ISetting
* @return void
*/
- public function registerSetting($setting) {
+ public function registerSetting(string $setting): void {
$this->settingsClasses[$setting] = false;
}
@@ -348,32 +263,7 @@ class Manager implements IManager {
* @return ISetting[]
* @throws \InvalidArgumentException
*/
- public function getSettings() {
- if (!$this->loadedLegacyTypes) {
- $l = \OC::$server->getL10N('core');
- $legacyTypes = $this->getNotificationTypes($l->getLanguageCode());
- $streamTypes = $this->getDefaultTypes(IExtension::METHOD_STREAM);
- $mailTypes = $this->getDefaultTypes(IExtension::METHOD_MAIL);
- foreach ($legacyTypes as $type => $data) {
- if (is_string($data)) {
- $desc = $data;
- $canChangeStream = true;
- $canChangeMail = true;
- } else {
- $desc = $data['desc'];
- $canChangeStream = in_array(IExtension::METHOD_STREAM, $data['methods']);
- $canChangeMail = in_array(IExtension::METHOD_MAIL, $data['methods']);
- }
-
- $this->settings[$type] = new LegacySetting(
- $type, $desc,
- $canChangeStream, in_array($type, $streamTypes),
- $canChangeMail, in_array($type, $mailTypes)
- );
- }
- $this->loadedLegacyTypes = true;
- }
-
+ public function getSettings(): array {
foreach ($this->settingsClasses as $class => $false) {
/** @var ISetting $setting */
$setting = \OC::$server->query($class);
@@ -395,7 +285,7 @@ class Manager implements IManager {
* @throws \InvalidArgumentException when the setting was not found
* @since 11.0.0
*/
- public function getSettingById($id) {
+ public function getSettingById(string $id): ISetting {
$settings = $this->getSettings();
if (isset($settings[$id])) {
@@ -405,127 +295,46 @@ class Manager implements IManager {
throw new \InvalidArgumentException('Requested setting does not exist');
}
- /**
- * @param string $type
- * @return string
- */
- public function getTypeIcon($type) {
- if (isset($this->typeIcons[$type])) {
- return $this->typeIcons[$type];
- }
-
- foreach ($this->getExtensions() as $c) {
- $icon = $c->getTypeIcon($type);
- if (is_string($icon)) {
- $this->typeIcons[$type] = $icon;
- return $icon;
- }
- }
-
- $this->typeIcons[$type] = '';
- return '';
- }
/**
* @param string $type
- * @param string $id
+ * @param int $id
*/
- public function setFormattingObject($type, $id) {
+ public function setFormattingObject(string $type, int $id): void {
$this->formattingObjectType = $type;
- $this->formattingObjectId = (string) $id;
+ $this->formattingObjectId = $id;
}
/**
* @return bool
*/
- public function isFormattingFilteredObject() {
+ public function isFormattingFilteredObject(): bool {
return $this->formattingObjectType !== null && $this->formattingObjectId !== null
&& $this->formattingObjectType === $this->request->getParam('object_type')
- && $this->formattingObjectId === $this->request->getParam('object_id');
+ && $this->formattingObjectId === (int) $this->request->getParam('object_id');
}
/**
* @param bool $status Set to true, when parsing events should not use SVG icons
*/
- public function setRequirePNG($status) {
+ public function setRequirePNG(bool $status): void {
$this->requirePNG = $status;
}
/**
* @return bool
*/
- public function getRequirePNG() {
+ public function getRequirePNG(): bool {
return $this->requirePNG;
}
/**
- * @param string $app
- * @param string $text
- * @param array $params
- * @param boolean $stripPath
- * @param boolean $highlightParams
- * @param string $languageCode
- * @return string|false
- */
- public function translate($app, $text, $params, $stripPath, $highlightParams, $languageCode) {
- foreach ($this->getExtensions() as $c) {
- $translation = $c->translate($app, $text, $params, $stripPath, $highlightParams, $languageCode);
- if (is_string($translation)) {
- return $translation;
- }
- }
-
- return false;
- }
-
- /**
- * @param string $app
- * @param string $text
- * @return array|false
- */
- public function getSpecialParameterList($app, $text) {
- if (isset($this->specialParameters[$app][$text])) {
- return $this->specialParameters[$app][$text];
- }
-
- if (!isset($this->specialParameters[$app])) {
- $this->specialParameters[$app] = array();
- }
-
- foreach ($this->getExtensions() as $c) {
- $specialParameter = $c->getSpecialParameterList($app, $text);
- if (is_array($specialParameter)) {
- $this->specialParameters[$app][$text] = $specialParameter;
- return $specialParameter;
- }
- }
-
- $this->specialParameters[$app][$text] = false;
- return false;
- }
-
- /**
- * @param array $activity
- * @return integer|false
- */
- public function getGroupParameter($activity) {
- foreach ($this->getExtensions() as $c) {
- $parameter = $c->getGroupParameter($activity);
- if ($parameter !== false) {
- return $parameter;
- }
- }
-
- return false;
- }
-
- /**
* Set the user we need to use
*
* @param string|null $currentUserId
* @throws \UnexpectedValueException If the user is invalid
*/
- public function setCurrentUserId($currentUserId) {
+ public function setCurrentUserId(string $currentUserId = null): void {
if (!is_string($currentUserId) && $currentUserId !== null) {
throw new \UnexpectedValueException('The given current user is invalid');
}
@@ -540,14 +349,16 @@ class Manager implements IManager {
* @return string
* @throws \UnexpectedValueException If the token is invalid, does not exist or is not unique
*/
- public function getCurrentUserId() {
+ public function getCurrentUserId(): string {
if ($this->currentUserId !== null) {
return $this->currentUserId;
- } else if (!$this->session->isLoggedIn()) {
+ }
+
+ if (!$this->session->isLoggedIn()) {
return $this->getUserFromToken();
- } else {
- return $this->session->getUser()->getUID();
}
+
+ return $this->session->getUser()->getUID();
}
/**
@@ -556,7 +367,7 @@ class Manager implements IManager {
* @return string
* @throws \UnexpectedValueException If the token is invalid, does not exist or is not unique
*/
- protected function getUserFromToken() {
+ protected function getUserFromToken(): string {
$token = (string) $this->request->getParam('token', '');
if (strlen($token) !== 30) {
throw new \UnexpectedValueException('The token is invalid');
@@ -573,130 +384,4 @@ class Manager implements IManager {
return array_shift($users);
}
- /**
- * @return array
- * @deprecated 11.0.0 - Use getFilters() instead
- */
- public function getNavigation() {
- $entries = array(
- 'apps' => array(),
- 'top' => array(),
- );
- foreach ($this->getExtensions() as $c) {
- $additionalEntries = $c->getNavigation();
- if (is_array($additionalEntries)) {
- $entries['apps'] = array_merge($entries['apps'], $additionalEntries['apps']);
- $entries['top'] = array_merge($entries['top'], $additionalEntries['top']);
- }
- }
-
- return $entries;
- }
-
- /**
- * @param string $filterValue
- * @return boolean
- * @deprecated 11.0.0 - Use getFilterById() instead
- */
- public function isFilterValid($filterValue) {
- if (isset($this->validFilters[$filterValue])) {
- return $this->validFilters[$filterValue];
- }
-
- foreach ($this->getExtensions() as $c) {
- if ($c->isFilterValid($filterValue) === true) {
- $this->validFilters[$filterValue] = true;
- return true;
- }
- }
-
- $this->validFilters[$filterValue] = false;
- return false;
- }
-
- /**
- * @param array $types
- * @param string $filter
- * @return array
- * @deprecated 11.0.0 - Use getFilterById()->filterTypes() instead
- */
- public function filterNotificationTypes($types, $filter) {
- if (!$this->isFilterValid($filter)) {
- return $types;
- }
-
- foreach ($this->getExtensions() as $c) {
- $result = $c->filterNotificationTypes($types, $filter);
- if (is_array($result)) {
- $types = $result;
- }
- }
- return $types;
- }
-
- /**
- * @param string $filter
- * @return array
- * @deprecated 11.0.0 - Use getFilterById() instead
- */
- public function getQueryForFilter($filter) {
- if (!$this->isFilterValid($filter)) {
- return [null, null];
- }
-
- $conditions = array();
- $parameters = array();
-
- foreach ($this->getExtensions() as $c) {
- $result = $c->getQueryForFilter($filter);
- if (is_array($result)) {
- list($condition, $parameter) = $result;
- if ($condition && is_array($parameter)) {
- $conditions[] = $condition;
- $parameters = array_merge($parameters, $parameter);
- }
- }
- }
-
- if (empty($conditions)) {
- return array(null, null);
- }
-
- return array(' and ((' . implode(') or (', $conditions) . '))', $parameters);
- }
-
- /**
- * Will return additional notification types as specified by other apps
- *
- * @param string $languageCode
- * @return array
- * @deprecated 11.0.0 - Use getSettings() instead
- */
- public function getNotificationTypes($languageCode) {
- $notificationTypes = $sharingNotificationTypes = [];
- foreach ($this->getExtensions() as $c) {
- $result = $c->getNotificationTypes($languageCode);
- if (is_array($result)) {
- $notificationTypes = array_merge($notificationTypes, $result);
- }
- }
-
- return array_merge($sharingNotificationTypes, $notificationTypes);
- }
-
- /**
- * @param string $method
- * @return array
- * @deprecated 11.0.0 - Use getSettings()->isDefaulEnabled<method>() instead
- */
- public function getDefaultTypes($method) {
- $defaultTypes = array();
- foreach ($this->getExtensions() as $c) {
- $types = $c->getDefaultTypes($method);
- if (is_array($types)) {
- $defaultTypes = array_merge($types, $defaultTypes);
- }
- }
- return $defaultTypes;
- }
}
diff --git a/lib/public/Activity/IExtension.php b/lib/public/Activity/IExtension.php
index 321c2f03bc3..eaf425fb779 100644
--- a/lib/public/Activity/IExtension.php
+++ b/lib/public/Activity/IExtension.php
@@ -24,13 +24,6 @@
*
*/
-/**
- * Public interface of ownCloud for apps to use.
- * Activity/IExtension interface
- */
-
-// use OCP namespace for all classes that are considered public.
-// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Activity;
/**
@@ -48,124 +41,4 @@ interface IExtension {
const PRIORITY_MEDIUM = 30;
const PRIORITY_HIGH = 40;
const PRIORITY_VERYHIGH = 50;
-
- /**
- * The extension can return an array of additional notification types.
- * If no additional types are to be added false is to be returned
- *
- * @param string $languageCode
- * @return array|false Array "stringID of the type" => "translated string description for the setting"
- * or Array "stringID of the type" => [
- * 'desc' => "translated string description for the setting"
- * 'methods' => [self::METHOD_*],
- * ]
- * @since 8.0.0 - 8.2.0: Added support to allow limiting notifications to certain methods
- */
- public function getNotificationTypes($languageCode);
-
- /**
- * For a given method additional types to be displayed in the settings can be returned.
- * In case no additional types are to be added false is to be returned.
- *
- * @param string $method
- * @return array|false
- * @since 8.0.0
- */
- public function getDefaultTypes($method);
-
- /**
- * A string naming the css class for the icon to be used can be returned.
- * If no icon is known for the given type false is to be returned.
- *
- * @param string $type
- * @return string|false
- * @since 8.0.0
- */
- public function getTypeIcon($type);
-
- /**
- * The extension can translate a given message to the requested languages.
- * If no translation is available false is to be returned.
- *
- * @param string $app
- * @param string $text
- * @param array $params
- * @param boolean $stripPath
- * @param boolean $highlightParams
- * @param string $languageCode
- * @return string|false
- * @since 8.0.0
- */
- public function translate($app, $text, $params, $stripPath, $highlightParams, $languageCode);
-
- /**
- * The extension can define the type of parameters for translation
- *
- * Currently known types are:
- * * file => will strip away the path of the file and add a tooltip with it
- * * username => will add the avatar of the user
- * * email => will add a mailto link
- *
- * @param string $app
- * @param string $text
- * @return array|false
- * @since 8.0.0
- */
- public function getSpecialParameterList($app, $text);
-
- /**
- * The extension can define the parameter grouping by returning the index as integer.
- * In case no grouping is required false is to be returned.
- *
- * @param array $activity
- * @return integer|false
- * @since 8.0.0
- */
- public function getGroupParameter($activity);
-
- /**
- * The extension can define additional navigation entries. The array returned has to contain two keys 'top'
- * and 'apps' which hold arrays with the relevant entries.
- * If no further entries are to be added false is no be returned.
- *
- * @return array|false
- * @since 8.0.0
- * @deprecated 11.0.0 - Register an IFilter instead
- */
- public function getNavigation();
-
- /**
- * The extension can check if a customer filter (given by a query string like filter=abc) is valid or not.
- *
- * @param string $filterValue
- * @return boolean
- * @since 8.0.0
- * @deprecated 11.0.0 - Register an IFilter instead
- */
- public function isFilterValid($filterValue);
-
- /**
- * The extension can filter the types based on the filter if required.
- * In case no filter is to be applied false is to be returned unchanged.
- *
- * @param array $types
- * @param string $filter
- * @return array|false
- * @since 8.0.0
- * @deprecated 11.0.0 - Register an IFilter instead
- */
- public function filterNotificationTypes($types, $filter);
-
- /**
- * For a given filter the extension can specify the sql query conditions including parameters for that query.
- * In case the extension does not know the filter false is to be returned.
- * The query condition and the parameters are to be returned as array with two elements.
- * E.g. return array('`app` = ? and `message` like ?', array('mail', 'ownCloud%'));
- *
- * @param string $filter
- * @return array|false
- * @since 8.0.0
- * @deprecated 11.0.0 - Register an IFilter instead
- */
- public function getQueryForFilter($filter);
}
diff --git a/lib/public/Activity/IManager.php b/lib/public/Activity/IManager.php
index 90959a57099..b00e64f33e7 100644
--- a/lib/public/Activity/IManager.php
+++ b/lib/public/Activity/IManager.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -24,13 +25,6 @@
*
*/
-/**
- * Public interface of ownCloud for apps to use.
- * Activity/IManager interface
- */
-
-// use OCP namespace for all classes that are considered public.
-// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Activity;
/**
@@ -53,7 +47,7 @@ interface IManager {
* @return IEvent
* @since 8.2.0
*/
- public function generateEvent();
+ public function generateEvent(): IEvent;
/**
* Publish an event to the activity consumers
@@ -68,7 +62,7 @@ interface IManager {
* @throws \BadMethodCallException if required values have not been set
* @since 8.2.0
*/
- public function publish(IEvent $event);
+ public function publish(IEvent $event): void;
/**
* In order to improve lazy loading a closure can be registered which will be called in case
@@ -77,35 +71,21 @@ interface IManager {
* $callable has to return an instance of \OCP\Activity\IConsumer
*
* @param \Closure $callable
- * @return void
* @since 6.0.0
*/
- public function registerConsumer(\Closure $callable);
-
- /**
- * In order to improve lazy loading a closure can be registered which will be called in case
- * activity consumers are actually requested
- *
- * $callable has to return an instance of \OCP\Activity\IExtension
- *
- * @param \Closure $callable
- * @return void
- * @since 8.0.0
- */
- public function registerExtension(\Closure $callable);
+ public function registerConsumer(\Closure $callable): void;
/**
* @param string $filter Class must implement OCA\Activity\IFilter
- * @return void
* @since 11.0.0
*/
- public function registerFilter($filter);
+ public function registerFilter(string $filter): void;
/**
* @return IFilter[]
* @since 11.0.0
*/
- public function getFilters();
+ public function getFilters(): array;
/**
* @param string $id
@@ -113,33 +93,31 @@ interface IManager {
* @throws \InvalidArgumentException when the filter was not found
* @since 11.0.0
*/
- public function getFilterById($id);
+ public function getFilterById(string $id): IFilter;
/**
* @param string $setting Class must implement OCA\Activity\ISetting
- * @return void
* @since 11.0.0
*/
- public function registerSetting($setting);
+ public function registerSetting(string $setting): void;
/**
* @return ISetting[]
* @since 11.0.0
*/
- public function getSettings();
+ public function getSettings(): array;
/**
* @param string $provider Class must implement OCA\Activity\IProvider
- * @return void
* @since 11.0.0
*/
- public function registerProvider($provider);
+ public function registerProvider(string $provider): void;
/**
* @return IProvider[]
* @since 11.0.0
*/
- public function getProviders();
+ public function getProviders(): array;
/**
* @param string $id
@@ -147,89 +125,32 @@ interface IManager {
* @throws \InvalidArgumentException when the setting was not found
* @since 11.0.0
*/
- public function getSettingById($id);
-
- /**
- * Will return additional notification types as specified by other apps
- *
- * @param string $languageCode
- * @return array Array "stringID of the type" => "translated string description for the setting"
- * or Array "stringID of the type" => [
- * 'desc' => "translated string description for the setting"
- * 'methods' => [\OCP\Activity\IExtension::METHOD_*],
- * ]
- * @since 8.0.0 - 8.2.0: Added support to allow limiting notifications to certain methods
- * @deprecated 11.0.0 - Use getSettings() instead
- */
- public function getNotificationTypes($languageCode);
-
- /**
- * @param string $method
- * @return array
- * @since 8.0.0
- * @deprecated 11.0.0 - Use getSettings()->isDefaulEnabled<method>() instead
- */
- public function getDefaultTypes($method);
-
- /**
- * @param string $type
- * @return string
- * @since 8.0.0
- */
- public function getTypeIcon($type);
+ public function getSettingById(string $id): ISetting;
/**
* @param string $type
* @param int $id
* @since 8.2.0
*/
- public function setFormattingObject($type, $id);
+ public function setFormattingObject(string $type, int $id): void;
/**
* @return bool
* @since 8.2.0
*/
- public function isFormattingFilteredObject();
+ public function isFormattingFilteredObject(): bool;
/**
* @param bool $status Set to true, when parsing events should not use SVG icons
* @since 12.0.1
*/
- public function setRequirePNG($status);
+ public function setRequirePNG(bool $status): void;
/**
* @return bool
* @since 12.0.1
*/
- public function getRequirePNG();
-
- /**
- * @param string $app
- * @param string $text
- * @param array $params
- * @param boolean $stripPath
- * @param boolean $highlightParams
- * @param string $languageCode
- * @return string|false
- * @since 8.0.0
- */
- public function translate($app, $text, $params, $stripPath, $highlightParams, $languageCode);
-
- /**
- * @param string $app
- * @param string $text
- * @return array|false
- * @since 8.0.0
- */
- public function getSpecialParameterList($app, $text);
-
- /**
- * @param array $activity
- * @return integer|false
- * @since 8.0.0
- */
- public function getGroupParameter($activity);
-
+ public function getRequirePNG(): bool;
/**
* Set the user we need to use
@@ -238,7 +159,7 @@ interface IManager {
* @throws \UnexpectedValueException If the user is invalid
* @since 9.0.1
*/
- public function setCurrentUserId($currentUserId);
+ public function setCurrentUserId(string $currentUserId = null): void;
/**
* Get the user we need to use
@@ -249,37 +170,5 @@ interface IManager {
* @throws \UnexpectedValueException If the token is invalid, does not exist or is not unique
* @since 8.1.0
*/
- public function getCurrentUserId();
-
- /**
- * @return array
- * @since 8.0.0
- * @deprecated 11.0.0 - Use getFilters() instead
- */
- public function getNavigation();
-
- /**
- * @param string $filterValue
- * @return boolean
- * @since 8.0.0
- * @deprecated 11.0.0 - Use getFilterById() instead
- */
- public function isFilterValid($filterValue);
-
- /**
- * @param array $types
- * @param string $filter
- * @return array
- * @since 8.0.0
- * @deprecated 11.0.0 - Use getFilterById()->filterTypes() instead
- */
- public function filterNotificationTypes($types, $filter);
-
- /**
- * @param string $filter
- * @return array
- * @since 8.0.0
- * @deprecated 11.0.0 - Use getFilterById() instead
- */
- public function getQueryForFilter($filter);
+ public function getCurrentUserId(): string;
}
diff --git a/tests/lib/Activity/ManagerTest.php b/tests/lib/Activity/ManagerTest.php
index b80d6fa01b6..ba6b87ca9aa 100644
--- a/tests/lib/Activity/ManagerTest.php
+++ b/tests/lib/Activity/ManagerTest.php
@@ -1,10 +1,23 @@
<?php
/**
- * Copyright (c) 2014 Thomas Müller <deepdiver@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
+ * @copyright Copyright (c) 2014 Thomas Müller <deepdiver@owncloud.com>
+ * @copyright Copyright (c) 2019 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/>.
*
*/
@@ -46,27 +59,18 @@ class ManagerTest extends TestCase {
$this->validator
);
- $this->assertSame([], $this->invokePrivate($this->activityManager, 'getConsumers'));
- $this->assertSame([], $this->invokePrivate($this->activityManager, 'getExtensions'));
+ $this->assertSame([], self::invokePrivate($this->activityManager, 'getConsumers'));
$this->activityManager->registerConsumer(function() {
return new NoOpConsumer();
});
- $this->activityManager->registerExtension(function() {
- return new NoOpExtension();
- });
- $this->activityManager->registerExtension(function() {
- return new SimpleExtension();
- });
- $this->assertNotEmpty($this->invokePrivate($this->activityManager, 'getConsumers'));
- $this->assertNotEmpty($this->invokePrivate($this->activityManager, 'getConsumers'));
- $this->assertNotEmpty($this->invokePrivate($this->activityManager, 'getExtensions'));
- $this->assertNotEmpty($this->invokePrivate($this->activityManager, 'getExtensions'));
+ $this->assertNotEmpty(self::invokePrivate($this->activityManager, 'getConsumers'));
+ $this->assertNotEmpty(self::invokePrivate($this->activityManager, 'getConsumers'));
}
public function testGetConsumers() {
- $consumers = $this->invokePrivate($this->activityManager, 'getConsumers');
+ $consumers = self::invokePrivate($this->activityManager, 'getConsumers');
$this->assertNotEmpty($consumers);
}
@@ -79,111 +83,7 @@ class ManagerTest extends TestCase {
return new \stdClass();
});
- $this->invokePrivate($this->activityManager, 'getConsumers');
- }
-
- public function testGetExtensions() {
- $extensions = $this->invokePrivate($this->activityManager, 'getExtensions');
-
- $this->assertNotEmpty($extensions);
- }
-
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testGetExtensionsInvalidExtension() {
- $this->activityManager->registerExtension(function() {
- return new \stdClass();
- });
-
- $this->invokePrivate($this->activityManager, 'getExtensions');
- }
-
- public function testNotificationTypes() {
- $result = $this->activityManager->getNotificationTypes('en');
- $this->assertTrue(is_array($result));
- $this->assertEquals(2, sizeof($result));
- }
-
- public function testDefaultTypes() {
- $result = $this->activityManager->getDefaultTypes('stream');
- $this->assertTrue(is_array($result));
- $this->assertEquals(1, sizeof($result));
-
- $result = $this->activityManager->getDefaultTypes('email');
- $this->assertTrue(is_array($result));
- $this->assertEquals(0, sizeof($result));
- }
-
- public function testTypeIcon() {
- $result = $this->activityManager->getTypeIcon('NT1');
- $this->assertEquals('icon-nt-one', $result);
-
- $result = $this->activityManager->getTypeIcon('NT2');
- $this->assertEquals('', $result);
- }
-
- public function testTranslate() {
- $result = $this->activityManager->translate('APP0', '', array(), false, false, 'en');
- $this->assertEquals('Stupid translation', $result);
-
- $result = $this->activityManager->translate('APP1', '', array(), false, false, 'en');
- $this->assertFalse($result);
- }
-
- public function testGetSpecialParameterList() {
- $result = $this->activityManager->getSpecialParameterList('APP0', '');
- $this->assertEquals(array(0 => 'file', 1 => 'username'), $result);
-
- $result = $this->activityManager->getSpecialParameterList('APP1', '');
- $this->assertFalse($result);
- }
-
- public function testGroupParameter() {
- $result = $this->activityManager->getGroupParameter(array());
- $this->assertEquals(5, $result);
- }
-
- public function testNavigation() {
- $result = $this->activityManager->getNavigation();
- $this->assertEquals(4, sizeof($result['apps']));
- $this->assertEquals(2, sizeof($result['top']));
- }
-
- public function testIsFilterValid() {
- $result = $this->activityManager->isFilterValid('fv01');
- $this->assertTrue($result);
-
- $result = $this->activityManager->isFilterValid('InvalidFilter');
- $this->assertFalse($result);
- }
-
- public function testFilterNotificationTypes() {
- $result = $this->activityManager->filterNotificationTypes(array('NT0', 'NT1', 'NT2', 'NT3'), 'fv01');
- $this->assertTrue(is_array($result));
- $this->assertEquals(3, sizeof($result));
-
- $result = $this->activityManager->filterNotificationTypes(array('NT0', 'NT1', 'NT2', 'NT3'), 'InvalidFilter');
- $this->assertTrue(is_array($result));
- $this->assertEquals(4, sizeof($result));
- }
-
- public function testQueryForFilter() {
- // Register twice, to test the created sql part
- $this->activityManager->registerExtension(function() {
- return new SimpleExtension();
- });
-
- $result = $this->activityManager->getQueryForFilter('fv01');
- $this->assertEquals(
- array(
- ' and ((`app` = ? and `message` like ?) or (`app` = ? and `message` like ?))',
- array('mail', 'ownCloud%', 'mail', 'ownCloud%')
- ), $result
- );
-
- $result = $this->activityManager->getQueryForFilter('InvalidFilter');
- $this->assertEquals(array(null, null), $result);
+ self::invokePrivate($this->activityManager, 'getConsumers');
}
public function getUserFromTokenThrowInvalidTokenData() {
@@ -392,121 +292,6 @@ class ManagerTest extends TestCase {
}
}
-class SimpleExtension implements \OCP\Activity\IExtension {
-
- public function getNotificationTypes($languageCode) {
- return array('NT1', 'NT2');
- }
-
- public function getDefaultTypes($method) {
- if ($method === 'stream') {
- return array('DT0');
- }
-
- return array();
- }
-
- public function getTypeIcon($type) {
- if ($type === 'NT1') {
- return 'icon-nt-one';
- }
- return '';
- }
-
- public function translate($app, $text, $params, $stripPath, $highlightParams, $languageCode) {
- if ($app === 'APP0') {
- return "Stupid translation";
- }
-
- return false;
- }
-
- public function getSpecialParameterList($app, $text) {
- if ($app === 'APP0') {
- return array(0 => 'file', 1 => 'username');
- }
-
- return false;
- }
-
- public function getGroupParameter($activity) {
- return 5;
- }
-
- public function getNavigation() {
- return array(
- 'apps' => array('nav1', 'nav2', 'nav3', 'nav4'),
- 'top' => array('top1', 'top2')
- );
- }
-
- public function isFilterValid($filterValue) {
- if ($filterValue === 'fv01') {
- return true;
- }
-
- return false;
- }
-
- public function filterNotificationTypes($types, $filter) {
- if ($filter === 'fv01') {
- unset($types[0]);
- }
- return $types;
- }
-
- public function getQueryForFilter($filter) {
- if ($filter === 'fv01') {
- return array('`app` = ? and `message` like ?', array('mail', 'ownCloud%'));
- }
-
- return false;
- }
-}
-
-class NoOpExtension implements \OCP\Activity\IExtension {
-
- public function getNotificationTypes($languageCode) {
- return false;
- }
-
- public function getDefaultTypes($method) {
- return false;
- }
-
- public function getTypeIcon($type) {
- return false;
- }
-
- public function translate($app, $text, $params, $stripPath, $highlightParams, $languageCode) {
- return false;
- }
-
- public function getSpecialParameterList($app, $text) {
- return false;
- }
-
- public function getGroupParameter($activity) {
- return false;
- }
-
- public function getNavigation() {
- return false;
- }
-
- public function isFilterValid($filterValue) {
- return false;
- }
-
- public function filterNotificationTypes($types, $filter) {
- return false;
- }
-
- public function getQueryForFilter($filter) {
- return false;
- }
-}
-
class NoOpConsumer implements \OCP\Activity\IConsumer {
public function receive(\OCP\Activity\IEvent $event) {