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\Files\Folder;
use OCP\ILogger; use OCP\ILogger;
use OCP\IUserManager; use OCP\IUserManager;
use OCP\IUserSession;
use Sabre\DAV\Exception\NotFound; use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\PropPatch;
/** /**
* Class EntityCollection * Class EntityCollection
@ -35,7 +37,9 @@ use Sabre\DAV\Exception\NotFound;
* *
* @package OCA\DAV\Comments * @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 */ /** @var Folder */
protected $fileRoot; protected $fileRoot;
@ -159,5 +163,37 @@ class EntityCollection extends RootCollection {
return false; 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 $userManager;
protected $logger; protected $logger;
protected $collection; protected $collection;
protected $userSession;
public function setUp() { public function setUp() {
parent::setUp(); parent::setUp();
@ -35,6 +36,7 @@ class EntityCollection extends \Test\TestCase {
$this->commentsManager = $this->getMock('\OCP\Comments\ICommentsManager'); $this->commentsManager = $this->getMock('\OCP\Comments\ICommentsManager');
$this->folder = $this->getMock('\OCP\Files\Folder'); $this->folder = $this->getMock('\OCP\Files\Folder');
$this->userManager = $this->getMock('\OCP\IUserManager'); $this->userManager = $this->getMock('\OCP\IUserManager');
$this->userSession = $this->getMock('\OCP\IUserSession');
$this->logger = $this->getMock('\OCP\ILogger'); $this->logger = $this->getMock('\OCP\ILogger');
$this->collection = new \OCA\DAV\Comments\EntityCollection( $this->collection = new \OCA\DAV\Comments\EntityCollection(
@ -43,6 +45,7 @@ class EntityCollection extends \Test\TestCase {
$this->commentsManager, $this->commentsManager,
$this->folder, $this->folder,
$this->userManager, $this->userManager,
$this->userSession,
$this->logger $this->logger
); );
} }

View File

@ -30,6 +30,7 @@ class EntityTypeCollection extends \Test\TestCase {
protected $userManager; protected $userManager;
protected $logger; protected $logger;
protected $collection; protected $collection;
protected $userSession;
public function setUp() { public function setUp() {
parent::setUp(); parent::setUp();
@ -37,6 +38,7 @@ class EntityTypeCollection extends \Test\TestCase {
$this->commentsManager = $this->getMock('\OCP\Comments\ICommentsManager'); $this->commentsManager = $this->getMock('\OCP\Comments\ICommentsManager');
$this->folder = $this->getMock('\OCP\Files\Folder'); $this->folder = $this->getMock('\OCP\Files\Folder');
$this->userManager = $this->getMock('\OCP\IUserManager'); $this->userManager = $this->getMock('\OCP\IUserManager');
$this->userSession = $this->getMock('\OCP\IUserSession');
$this->logger = $this->getMock('\OCP\ILogger'); $this->logger = $this->getMock('\OCP\ILogger');
$this->collection = new \OCA\DAV\Comments\EntityTypeCollection( $this->collection = new \OCA\DAV\Comments\EntityTypeCollection(
@ -44,6 +46,7 @@ class EntityTypeCollection extends \Test\TestCase {
$this->commentsManager, $this->commentsManager,
$this->folder, $this->folder,
$this->userManager, $this->userManager,
$this->userSession,
$this->logger $this->logger
); );
} }