aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2018-01-10 11:20:21 +0100
committerJoas Schilling <coding@schilljs.com>2018-01-10 11:20:21 +0100
commit3af6d112ce9253e0bbb6e545c767253bd251d9a8 (patch)
treedd55694ba532253cc4217fc7d073d7534e26a32d
parentda030b667d3ca8cbae8f02a72b2b2249a52b2e1a (diff)
downloadnextcloud-server-3af6d112ce9253e0bbb6e545c767253bd251d9a8.tar.gz
nextcloud-server-3af6d112ce9253e0bbb6e545c767253bd251d9a8.zip
Add events for favorites
Signed-off-by: Joas Schilling <coding@schilljs.com>
-rw-r--r--apps/files/lib/AppInfo/Application.php5
-rw-r--r--apps/files/lib/Service/TagService.php16
-rw-r--r--apps/files/tests/Service/TagServiceTest.php8
3 files changed, 25 insertions, 4 deletions
diff --git a/apps/files/lib/AppInfo/Application.php b/apps/files/lib/AppInfo/Application.php
index 7042af10ca2..e55d1c549a5 100644
--- a/apps/files/lib/AppInfo/Application.php
+++ b/apps/files/lib/AppInfo/Application.php
@@ -81,13 +81,14 @@ class Application extends App {
$container->registerService('Tagger', function(IContainer $c) {
return $c->query('ServerContainer')->getTagManager()->load('files');
});
- $container->registerService('TagService', function(IContainer $c) {
+ $container->registerService('TagService', function(IContainer $c) use ($server) {
$homeFolder = $c->query('ServerContainer')->getUserFolder();
return new TagService(
$c->query('ServerContainer')->getUserSession(),
$c->query('ServerContainer')->getActivityManager(),
$c->query('Tagger'),
- $homeFolder
+ $homeFolder,
+ $server->getEventDispatcher()
);
});
diff --git a/apps/files/lib/Service/TagService.php b/apps/files/lib/Service/TagService.php
index d812b16c30e..7437f0c31ad 100644
--- a/apps/files/lib/Service/TagService.php
+++ b/apps/files/lib/Service/TagService.php
@@ -31,6 +31,8 @@ use OCP\Files\Folder;
use OCP\ITags;
use OCP\IUser;
use OCP\IUserSession;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\EventDispatcher\GenericEvent;
/**
* Service class to manage tags on files.
@@ -45,23 +47,28 @@ class TagService {
private $tagger;
/** @var Folder */
private $homeFolder;
+ /** @var EventDispatcherInterface */
+ private $dispatcher;
/**
* @param IUserSession $userSession
* @param IManager $activityManager
* @param ITags $tagger
* @param Folder $homeFolder
+ * @param EventDispatcherInterface $dispatcher
*/
public function __construct(
IUserSession $userSession,
IManager $activityManager,
ITags $tagger,
- Folder $homeFolder
+ Folder $homeFolder,
+ EventDispatcherInterface $dispatcher
) {
$this->userSession = $userSession;
$this->activityManager = $activityManager;
$this->tagger = $tagger;
$this->homeFolder = $homeFolder;
+ $this->dispatcher = $dispatcher;
}
/**
@@ -114,6 +121,13 @@ class TagService {
return;
}
+ $eventName = $addToFavorite ? 'addFavorite' : 'removeFavorite';
+ $this->dispatcher->dispatch(self::class . '::' . $eventName, new GenericEvent(null, [
+ 'userId' => $user->getUID(),
+ 'fileId' => $fileId,
+ 'path' => $path,
+ ]));
+
$event = $this->activityManager->generateEvent();
try {
$event->setApp('files')
diff --git a/apps/files/tests/Service/TagServiceTest.php b/apps/files/tests/Service/TagServiceTest.php
index 1c4ac2328ec..4e2aeb84246 100644
--- a/apps/files/tests/Service/TagServiceTest.php
+++ b/apps/files/tests/Service/TagServiceTest.php
@@ -28,6 +28,7 @@ use OC\Tags;
use OCA\Files\Service\TagService;
use OCP\Activity\IManager;
use OCP\IUserSession;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
/**
* Class TagServiceTest
@@ -54,6 +55,9 @@ class TagServiceTest extends \Test\TestCase {
*/
private $root;
+ /** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject */
+ private $dispatcher;
+
/**
* @var \OCA\Files\Service\TagService|\PHPUnit_Framework_MockObject_MockObject
*/
@@ -66,7 +70,7 @@ class TagServiceTest extends \Test\TestCase {
protected function setUp() {
parent::setUp();
- $this->user = $this->getUniqueID('user');
+ $this->user = static::getUniqueID('user');
$this->activityManager = $this->createMock(IManager::class);
\OC::$server->getUserManager()->createUser($this->user, 'test');
\OC_User::setUserId($this->user);
@@ -83,6 +87,7 @@ class TagServiceTest extends \Test\TestCase {
->will($this->returnValue($user));
$this->root = \OC::$server->getUserFolder();
+ $this->dispatcher = $this->createMock(EventDispatcherInterface::class);
$this->tagger = \OC::$server->getTagManager()->load('files');
$this->tagService = $this->getTagService(['addActivity']);
@@ -99,6 +104,7 @@ class TagServiceTest extends \Test\TestCase {
$this->activityManager,
$this->tagger,
$this->root,
+ $this->dispatcher,
])
->setMethods($methods)
->getMock();