diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2019-08-06 13:10:04 +0200 |
---|---|---|
committer | Georg Ehrke <developer@georgehrke.com> | 2019-08-14 09:42:24 +0200 |
commit | 22f29d8e54be32fe44e5d715aa8ae0dbaf558229 (patch) | |
tree | 1f595758ae4a9846f63ac3526d0089963876d25d /apps/dav/lib | |
parent | 5f3d0a61eaff919a448e6513a5079856e5105058 (diff) | |
download | nextcloud-server-22f29d8e54be32fe44e5d715aa8ae0dbaf558229.tar.gz nextcloud-server-22f29d8e54be32fe44e5d715aa8ae0dbaf558229.zip |
Add DB mapper and Entity
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'apps/dav/lib')
-rw-r--r-- | apps/dav/lib/CalDAV/Proxy/Proxy.php | 44 | ||||
-rw-r--r-- | apps/dav/lib/CalDAV/Proxy/ProxyMapper.php | 65 |
2 files changed, 109 insertions, 0 deletions
diff --git a/apps/dav/lib/CalDAV/Proxy/Proxy.php b/apps/dav/lib/CalDAV/Proxy/Proxy.php new file mode 100644 index 00000000000..1df97dee19e --- /dev/null +++ b/apps/dav/lib/CalDAV/Proxy/Proxy.php @@ -0,0 +1,44 @@ +<?php +declare(strict_types=1); +/** + * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl> + * + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\DAV\CalDAV\Delegation; + +use OCA\DAV\CalDAV\ProxyMapper; +use OCP\AppFramework\Db\Entity; + +class Proxy extends Entity { + + /** @var string */ + protected $ownerId; + /** @var string */ + protected $proxyId; + /** @var int */ + private $permissions; + + public function __construct() { + $this->addType('ownerId', 'string'); + $this->addType('proxyId', 'string'); + $this->addType('permissions', 'int'); + } +} diff --git a/apps/dav/lib/CalDAV/Proxy/ProxyMapper.php b/apps/dav/lib/CalDAV/Proxy/ProxyMapper.php new file mode 100644 index 00000000000..d3657b306a9 --- /dev/null +++ b/apps/dav/lib/CalDAV/Proxy/ProxyMapper.php @@ -0,0 +1,65 @@ +<?php +declare(strict_types=1); +/** + * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl> + * + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\DAV\CalDAV; + +use OCA\DAV\CalDAV\Delegation\Proxy; +use OCP\AppFramework\Db\QBMapper; +use OCP\IDBConnection; + +class ProxyMapper extends QBMapper { + + const PERMISSION_READ = 1; + const PERMISSION_WRITE = 2; + + public function __construct(IDBConnection $db) { + parent::__construct($db, 'dav_cal_proxy', Proxy::class); + } + + /** + * @param string $proxyId The userId that can act as a proxy for the resulting calendars + */ + public function getProxiesFor(string $proxyId): array { + $qb = $this->db->getQueryBuilder(); + + $qb->select('*') + ->from($this->getTableName()) + ->where($qb->expr()->eq('proxy_id', $qb->createNamedParameter($proxyId))); + + return $this->findEntities($qb); + } + + /** + * @param string $ownerId The userId that has the resulting proxies for their calendars + */ + public function getProxiesOf(string $ownerId): array { + $qb = $this->db->getQueryBuilder(); + + $qb->select('*') + ->from($this->getTableName()) + ->where($qb->expr()->eq('owner_id', $qb->createNamedParameter($ownerId))); + + return $this->findEntities($qb); + } +} |