diff options
author | Arthur Schiwon <blizzz@owncloud.com> | 2016-02-01 17:26:42 +0100 |
---|---|---|
committer | Arthur Schiwon <blizzz@owncloud.com> | 2016-02-01 17:43:13 +0100 |
commit | 29f57eb85c3c481b0e75a2b71dcc8714e30084ff (patch) | |
tree | eb7752afb372840ace96d70934b2087ae92c84ef | |
parent | b1c8b077b089f2182e98d24282d4db7913df9e00 (diff) | |
download | nextcloud-server-29f57eb85c3c481b0e75a2b71dcc8714e30084ff.tar.gz nextcloud-server-29f57eb85c3c481b0e75a2b71dcc8714e30084ff.zip |
set read marker via proppatch against entity
-rw-r--r-- | apps/dav/lib/comments/entitycollection.php | 38 | ||||
-rw-r--r-- | apps/dav/tests/unit/comments/entitycollection.php | 3 | ||||
-rw-r--r-- | apps/dav/tests/unit/comments/entitytypecollection.php | 3 |
3 files changed, 43 insertions, 1 deletions
diff --git a/apps/dav/lib/comments/entitycollection.php b/apps/dav/lib/comments/entitycollection.php index 0cc5526c529..a55a18c00c0 100644 --- a/apps/dav/lib/comments/entitycollection.php +++ b/apps/dav/lib/comments/entitycollection.php @@ -25,7 +25,9 @@ use OCP\Comments\ICommentsManager; use OCP\Files\Folder; use OCP\ILogger; use OCP\IUserManager; +use OCP\IUserSession; use Sabre\DAV\Exception\NotFound; +use Sabre\DAV\PropPatch; /** * Class EntityCollection @@ -35,7 +37,9 @@ use Sabre\DAV\Exception\NotFound; * * @package OCA\DAV\Comments */ -class EntityCollection extends RootCollection { +class EntityCollection extends RootCollection implements \Sabre\DAV\IProperties { + const PROPERTY_NAME_READ_MARKER = '{http://owncloud.org/ns}readMarker'; + /** @var Folder */ protected $fileRoot; @@ -159,5 +163,37 @@ class EntityCollection extends RootCollection { return false; } } + + /** + * Sets the read marker to the specified date for the logged in user + * + * @param \DateTime $value + * @return bool + */ + public function setReadMarker($value) { + $dateTime = new \DateTime($value); + $user = $this->userSession->getUser(); + $this->commentsManager->setReadMark($this->name, $this->id, $dateTime, $user); + return true; + } + + /** + * @inheritdoc + */ + function propPatch(PropPatch $propPatch) { + $propPatch->handle(self::PROPERTY_NAME_READ_MARKER, [$this, 'setReadMarker']); + } + + /** + * @inheritdoc + */ + function getProperties($properties) { + $marker = null; + $user = $this->userSession->getUser(); + if(!is_null($user)) { + $marker = $this->commentsManager->getReadMark($this->name, $this->id, $user); + } + return [self::PROPERTY_NAME_READ_MARKER => $marker]; + } } diff --git a/apps/dav/tests/unit/comments/entitycollection.php b/apps/dav/tests/unit/comments/entitycollection.php index 81442c7a873..5bf155f12ba 100644 --- a/apps/dav/tests/unit/comments/entitycollection.php +++ b/apps/dav/tests/unit/comments/entitycollection.php @@ -28,6 +28,7 @@ class EntityCollection extends \Test\TestCase { protected $userManager; protected $logger; protected $collection; + protected $userSession; public function setUp() { parent::setUp(); @@ -35,6 +36,7 @@ class EntityCollection extends \Test\TestCase { $this->commentsManager = $this->getMock('\OCP\Comments\ICommentsManager'); $this->folder = $this->getMock('\OCP\Files\Folder'); $this->userManager = $this->getMock('\OCP\IUserManager'); + $this->userSession = $this->getMock('\OCP\IUserSession'); $this->logger = $this->getMock('\OCP\ILogger'); $this->collection = new \OCA\DAV\Comments\EntityCollection( @@ -43,6 +45,7 @@ class EntityCollection extends \Test\TestCase { $this->commentsManager, $this->folder, $this->userManager, + $this->userSession, $this->logger ); } diff --git a/apps/dav/tests/unit/comments/entitytypecollection.php b/apps/dav/tests/unit/comments/entitytypecollection.php index e8a88c4e2cb..f3aa2dbd71f 100644 --- a/apps/dav/tests/unit/comments/entitytypecollection.php +++ b/apps/dav/tests/unit/comments/entitytypecollection.php @@ -30,6 +30,7 @@ class EntityTypeCollection extends \Test\TestCase { protected $userManager; protected $logger; protected $collection; + protected $userSession; public function setUp() { parent::setUp(); @@ -37,6 +38,7 @@ class EntityTypeCollection extends \Test\TestCase { $this->commentsManager = $this->getMock('\OCP\Comments\ICommentsManager'); $this->folder = $this->getMock('\OCP\Files\Folder'); $this->userManager = $this->getMock('\OCP\IUserManager'); + $this->userSession = $this->getMock('\OCP\IUserSession'); $this->logger = $this->getMock('\OCP\ILogger'); $this->collection = new \OCA\DAV\Comments\EntityTypeCollection( @@ -44,6 +46,7 @@ class EntityTypeCollection extends \Test\TestCase { $this->commentsManager, $this->folder, $this->userManager, + $this->userSession, $this->logger ); } |