summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@owncloud.com>2016-02-01 17:26:42 +0100
committerArthur Schiwon <blizzz@owncloud.com>2016-02-01 17:43:13 +0100
commit29f57eb85c3c481b0e75a2b71dcc8714e30084ff (patch)
treeeb7752afb372840ace96d70934b2087ae92c84ef
parentb1c8b077b089f2182e98d24282d4db7913df9e00 (diff)
downloadnextcloud-server-29f57eb85c3c481b0e75a2b71dcc8714e30084ff.tar.gz
nextcloud-server-29f57eb85c3c481b0e75a2b71dcc8714e30084ff.zip
set read marker via proppatch against entity
-rw-r--r--apps/dav/lib/comments/entitycollection.php38
-rw-r--r--apps/dav/tests/unit/comments/entitycollection.php3
-rw-r--r--apps/dav/tests/unit/comments/entitytypecollection.php3
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
);
}