diff options
author | Joas Schilling <coding@schilljs.com> | 2018-01-10 11:20:21 +0100 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2018-01-10 11:20:21 +0100 |
commit | 3af6d112ce9253e0bbb6e545c767253bd251d9a8 (patch) | |
tree | dd55694ba532253cc4217fc7d073d7534e26a32d | |
parent | da030b667d3ca8cbae8f02a72b2b2249a52b2e1a (diff) | |
download | nextcloud-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.php | 5 | ||||
-rw-r--r-- | apps/files/lib/Service/TagService.php | 16 | ||||
-rw-r--r-- | apps/files/tests/Service/TagServiceTest.php | 8 |
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(); |