mirror of
https://github.com/nextcloud/server.git
synced 2026-06-10 17:23:59 -04:00
Add scheduling backend
This commit is contained in:
parent
23e7a62717
commit
867fd94dc6
2 changed files with 68 additions and 4 deletions
|
|
@ -982,7 +982,26 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
|
|||
* @return array
|
||||
*/
|
||||
function getSchedulingObject($principalUri, $objectUri) {
|
||||
// TODO: Implement getSchedulingObject() method.
|
||||
$query = $this->db->getQueryBuilder();
|
||||
$stmt = $query->select(['uri', 'calendardata', 'lastmodified', 'etag', 'size'])
|
||||
->from('schedulingobjects')
|
||||
->where($query->expr()->eq('principaluri', $query->createNamedParameter($principalUri)))
|
||||
->andWhere($query->expr()->eq('uri', $query->createNamedParameter($objectUri)))
|
||||
->execute();
|
||||
|
||||
$row = $stmt->fetch(\PDO::FETCH_ASSOC);
|
||||
|
||||
if(!$row) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return [
|
||||
'uri' => $row['uri'],
|
||||
'calendardata' => $row['calendardata'],
|
||||
'lastmodified' => $row['lastmodified'],
|
||||
'etag' => '"' . $row['etag'] . '"',
|
||||
'size' => (int)$row['size'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -997,7 +1016,24 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
|
|||
* @return array
|
||||
*/
|
||||
function getSchedulingObjects($principalUri) {
|
||||
// TODO: Implement getSchedulingObjects() method.
|
||||
$query = $this->db->getQueryBuilder();
|
||||
$stmt = $query->select(['uri', 'calendardata', 'lastmodified', 'etag', 'size'])
|
||||
->from('schedulingobjects')
|
||||
->where($query->expr()->eq('principaluri', $query->createNamedParameter($principalUri)))
|
||||
->execute();
|
||||
|
||||
$result = [];
|
||||
foreach($stmt->fetchAll(\PDO::FETCH_ASSOC) as $row) {
|
||||
$result[] = [
|
||||
'calendardata' => $row['calendardata'],
|
||||
'uri' => $row['uri'],
|
||||
'lastmodified' => $row['lastmodified'],
|
||||
'etag' => '"' . $row['etag'] . '"',
|
||||
'size' => (int)$row['size'],
|
||||
];
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1008,7 +1044,11 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
|
|||
* @return void
|
||||
*/
|
||||
function deleteSchedulingObject($principalUri, $objectUri) {
|
||||
// TODO: Implement deleteSchedulingObject() method.
|
||||
$query = $this->db->getQueryBuilder();
|
||||
$query->delete('schedulingobjects')
|
||||
->where($query->expr()->eq('principaluri', $query->createNamedParameter($principalUri)))
|
||||
->andWhere($query->expr()->eq('uri', $query->createNamedParameter($objectUri)))
|
||||
->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1020,7 +1060,17 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
|
|||
* @return void
|
||||
*/
|
||||
function createSchedulingObject($principalUri, $objectUri, $objectData) {
|
||||
// TODO: Implement createSchedulingObject() method.
|
||||
$query = $this->db->getQueryBuilder();
|
||||
$query->insert('schedulingobjects')
|
||||
->values([
|
||||
'principaluri' => $query->createNamedParameter($principalUri),
|
||||
'calendardata' => $query->createNamedParameter($objectData),
|
||||
'uri' => $query->createNamedParameter($objectUri),
|
||||
'lastmodified' => $query->createNamedParameter(time()),
|
||||
'etag' => $query->createNamedParameter(md5($objectData)),
|
||||
'size' => $query->createNamedParameter(strlen($objectData))
|
||||
])
|
||||
->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -322,4 +322,18 @@ EOD;
|
|||
$this->assertEquals(0, count($subscriptions));
|
||||
}
|
||||
|
||||
public function testScheduling() {
|
||||
$this->backend->createSchedulingObject(self::UNIT_TEST_USER, 'Sample Schedule', '');
|
||||
|
||||
$sos = $this->backend->getSchedulingObjects(self::UNIT_TEST_USER);
|
||||
$this->assertEquals(1, count($sos));
|
||||
|
||||
$so = $this->backend->getSchedulingObject(self::UNIT_TEST_USER, 'Sample Schedule');
|
||||
$this->assertNotNull($so);
|
||||
|
||||
$this->backend->deleteSchedulingObject(self::UNIT_TEST_USER, 'Sample Schedule');
|
||||
|
||||
$sos = $this->backend->getSchedulingObjects(self::UNIT_TEST_USER);
|
||||
$this->assertEquals(0, count($sos));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue