set read marker via proppatch against entity

This commit is contained in:
Arthur Schiwon 2016-02-01 17:26:42 +01:00
parent b1c8b077b0
commit 29f57eb85c
3 changed files with 43 additions and 1 deletions

View File

@ -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];
}
}

View File

@ -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
);
}

View File

@ -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
);
}