Skip to content

Commit

Permalink
Add all properties while creating a subscription (#25318) (#25335)
Browse files Browse the repository at this point in the history
Fixes #24469
  • Loading branch information
DeepDiver1975 committed Jul 21, 2016
1 parent 1550ae9 commit 9f21176
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 10 deletions.
23 changes: 14 additions & 9 deletions apps/dav/lib/CalDAV/CalDavBackend.php
Expand Up @@ -1079,22 +1079,27 @@ function createSubscription($principalUri, $uri, array $properties) {
'lastmodified' => time(),
];

foreach($this->subscriptionPropertyMap as $xmlName=>$dbName) {
if (isset($properties[$xmlName])) {
$propertiesBoolean = ['striptodos', 'stripalarms', 'stripattachments'];

foreach($this->subscriptionPropertyMap as $xmlName=>$dbName) {
if (array_key_exists($xmlName, $properties)) {
$values[$dbName] = $properties[$xmlName];
$fieldNames[] = $dbName;
if (in_array($dbName, $propertiesBoolean)) {
$values[$dbName] = true;
}
}
}

$valuesToInsert = array();

$query = $this->db->getQueryBuilder();

foreach (array_keys($values) as $name) {
$valuesToInsert[$name] = $query->createNamedParameter($values[$name]);
}

$query->insert('calendarsubscriptions')
->values([
'principaluri' => $query->createNamedParameter($values['principaluri']),
'uri' => $query->createNamedParameter($values['uri']),
'source' => $query->createNamedParameter($values['source']),
'lastmodified' => $query->createNamedParameter($values['lastmodified']),
])
->values($valuesToInsert)
->execute();

return $this->db->lastInsertId('*PREFIX*calendarsubscriptions');
Expand Down
8 changes: 7 additions & 1 deletion apps/dav/tests/unit/CalDAV/CalDavBackendTest.php
Expand Up @@ -333,15 +333,20 @@ public function testSyncSupport() {

public function testSubscriptions() {
$id = $this->backend->createSubscription(self::UNIT_TEST_USER, 'Subscription', [
'{http://calendarserver.org/ns/}source' => new Href('test-source')
'{http://calendarserver.org/ns/}source' => new Href('test-source'),
'{http://apple.com/ns/ical/}calendar-color' => '#1C4587',
'{http://calendarserver.org/ns/}subscribed-strip-todos' => ''
]);

$subscriptions = $this->backend->getSubscriptionsForUser(self::UNIT_TEST_USER);
$this->assertEquals(1, count($subscriptions));
$this->assertEquals('#1C4587', $subscriptions[0]['{http://apple.com/ns/ical/}calendar-color']);
$this->assertEquals(true, $subscriptions[0]['{http://calendarserver.org/ns/}subscribed-strip-todos']);
$this->assertEquals($id, $subscriptions[0]['id']);

$patch = new PropPatch([
'{DAV:}displayname' => 'Unit test',
'{http://apple.com/ns/ical/}calendar-color' => '#ac0606',
]);
$this->backend->updateSubscription($id, $patch);
$patch->commit();
Expand All @@ -350,6 +355,7 @@ public function testSubscriptions() {
$this->assertEquals(1, count($subscriptions));
$this->assertEquals($id, $subscriptions[0]['id']);
$this->assertEquals('Unit test', $subscriptions[0]['{DAV:}displayname']);
$this->assertEquals('#ac0606', $subscriptions[0]['{http://apple.com/ns/ical/}calendar-color']);

$this->backend->deleteSubscription($id);
$subscriptions = $this->backend->getSubscriptionsForUser(self::UNIT_TEST_USER);
Expand Down

0 comments on commit 9f21176

Please sign in to comment.