Signed-off-by: Gary Kim <gary@garykim.dev>tags/v19.0.0beta1
/** @var IConfig */ | /** @var IConfig */ | ||||
private $config; | private $config; | ||||
/** @var IL10N */ | |||||
protected $l10n; | |||||
/** | /** | ||||
* Calendar constructor. | * Calendar constructor. | ||||
* | * | ||||
} | } | ||||
$this->config = $config; | $this->config = $config; | ||||
$this->l10n = $l10n; | |||||
} | } | ||||
/** | /** | ||||
$obj['acl'] = $this->getChildACL(); | $obj['acl'] = $this->getChildACL(); | ||||
return new CalendarObject($this->caldavBackend, $this->calendarInfo, $obj); | |||||
return new CalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj); | |||||
} | } | ||||
continue; | continue; | ||||
} | } | ||||
$obj['acl'] = $this->getChildACL(); | $obj['acl'] = $this->getChildACL(); | ||||
$children[] = new CalendarObject($this->caldavBackend, $this->calendarInfo, $obj); | |||||
$children[] = new CalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj); | |||||
} | } | ||||
return $children; | return $children; | ||||
continue; | continue; | ||||
} | } | ||||
$obj['acl'] = $this->getChildACL(); | $obj['acl'] = $this->getChildACL(); | ||||
$children[] = new CalendarObject($this->caldavBackend, $this->calendarInfo, $obj); | |||||
$children[] = new CalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj); | |||||
} | } | ||||
return $children; | return $children; | ||||
/** | /** | ||||
* @copyright Copyright (c) 2016, ownCloud, Inc. | * @copyright Copyright (c) 2016, ownCloud, Inc. | ||||
* @copyright Copyright (c) 2017, Georg Ehrke | * @copyright Copyright (c) 2017, Georg Ehrke | ||||
* @copyright Copyright (c) 2020, Gary Kim <gary@garykim.dev> | |||||
* | * | ||||
* @author Georg Ehrke <oc.list@georgehrke.com> | * @author Georg Ehrke <oc.list@georgehrke.com> | ||||
* @author Thomas Müller <thomas.mueller@tmit.eu> | * @author Thomas Müller <thomas.mueller@tmit.eu> | ||||
* @author Gary Kim <gary@garykim.dev> | |||||
* | * | ||||
* @license AGPL-3.0 | * @license AGPL-3.0 | ||||
* | * | ||||
namespace OCA\DAV\CalDAV; | namespace OCA\DAV\CalDAV; | ||||
use OCP\IL10N; | |||||
use Sabre\VObject\Component; | use Sabre\VObject\Component; | ||||
use Sabre\VObject\Property; | use Sabre\VObject\Property; | ||||
use Sabre\VObject\Reader; | use Sabre\VObject\Reader; | ||||
class CalendarObject extends \Sabre\CalDAV\CalendarObject { | class CalendarObject extends \Sabre\CalDAV\CalendarObject { | ||||
/** @var IL10N */ | |||||
protected $l10n; | |||||
/** | /** | ||||
* CalendarObject constructor. | * CalendarObject constructor. | ||||
* | * | ||||
* @param CalDavBackend $caldavBackend | * @param CalDavBackend $caldavBackend | ||||
* @param IL10N $l10n | |||||
* @param array $calendarInfo | * @param array $calendarInfo | ||||
* @param array $objectData | * @param array $objectData | ||||
*/ | */ | ||||
public function __construct(CalDavBackend $caldavBackend, array $calendarInfo, | |||||
public function __construct(CalDavBackend $caldavBackend, IL10N $l10n, | |||||
array $calendarInfo, | |||||
array $objectData) { | array $objectData) { | ||||
parent::__construct($caldavBackend, $calendarInfo, $objectData); | parent::__construct($caldavBackend, $calendarInfo, $objectData); | ||||
if ($this->isShared()) { | if ($this->isShared()) { | ||||
unset($this->objectData['size']); | unset($this->objectData['size']); | ||||
} | } | ||||
$this->l10n = $l10n; | |||||
} | } | ||||
/** | /** | ||||
* @param Component\VCalendar $vObject | * @param Component\VCalendar $vObject | ||||
* @return void | * @return void | ||||
*/ | */ | ||||
private static function createConfidentialObject(Component\VCalendar $vObject) { | |||||
private function createConfidentialObject(Component\VCalendar $vObject) { | |||||
/** @var Component $vElement */ | /** @var Component $vElement */ | ||||
$vElement = null; | $vElement = null; | ||||
if(isset($vObject->VEVENT)) { | if(isset($vObject->VEVENT)) { | ||||
case 'UID': | case 'UID': | ||||
break; | break; | ||||
case 'SUMMARY': | case 'SUMMARY': | ||||
$property->setValue('Busy'); | |||||
$property->setValue($this->l10n->t('Busy')); | |||||
break; | break; | ||||
default: | default: | ||||
$vElement->__unset($property->name); | $vElement->__unset($property->name); |
} | } | ||||
$obj['acl'] = $this->getChildACL(); | $obj['acl'] = $this->getChildACL(); | ||||
return new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj); | |||||
return new PublicCalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj); | |||||
} | } | ||||
/** | /** | ||||
continue; | continue; | ||||
} | } | ||||
$obj['acl'] = $this->getChildACL(); | $obj['acl'] = $this->getChildACL(); | ||||
$children[] = new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj); | |||||
$children[] = new PublicCalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj); | |||||
} | } | ||||
return $children; | return $children; | ||||
} | } | ||||
continue; | continue; | ||||
} | } | ||||
$obj['acl'] = $this->getChildACL(); | $obj['acl'] = $this->getChildACL(); | ||||
$children[] = new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj); | |||||
$children[] = new PublicCalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj); | |||||
} | } | ||||
return $children; | return $children; | ||||
} | } |
<?php | <?php | ||||
/** | /** | ||||
* @copyright Copyright (c) 2016, ownCloud, Inc. | * @copyright Copyright (c) 2016, ownCloud, Inc. | ||||
* @copyright Copyright (c) 2020, Gary Kim <gary@garykim.dev> | |||||
* | * | ||||
* @author Georg Ehrke <oc.list@georgehrke.com> | * @author Georg Ehrke <oc.list@georgehrke.com> | ||||
* @author Joas Schilling <coding@schilljs.com> | * @author Joas Schilling <coding@schilljs.com> | ||||
* @author Morris Jobke <hey@morrisjobke.de> | * @author Morris Jobke <hey@morrisjobke.de> | ||||
* @author Roeland Jago Douma <roeland@famdouma.nl> | * @author Roeland Jago Douma <roeland@famdouma.nl> | ||||
* @author Thomas Müller <thomas.mueller@tmit.eu> | * @author Thomas Müller <thomas.mueller@tmit.eu> | ||||
* @author Gary Kim <gary@garykim.dev> | |||||
* | * | ||||
* @license AGPL-3.0 | * @license AGPL-3.0 | ||||
* | * | ||||
$c->delete(); | $c->delete(); | ||||
} | } | ||||
public function testDeleteFromGroup() { | public function testDeleteFromGroup() { | ||||
$this->expectException(\Sabre\DAV\Exception\Forbidden::class); | $this->expectException(\Sabre\DAV\Exception\Forbidden::class); | ||||
} else { | } else { | ||||
$this->assertEquals('Test Event', $event->VEVENT->SUMMARY->getValue()); | $this->assertEquals('Test Event', $event->VEVENT->SUMMARY->getValue()); | ||||
} | } | ||||
// Test l10n | |||||
$l10n = $this->createMock(IL10N::class); | |||||
if ($isShared) { | |||||
$l10n->expects($this->once()) | |||||
->method('t') | |||||
->with('Busy') | |||||
->willReturn("Translated busy"); | |||||
} else { | |||||
$l10n->expects($this->never()); | |||||
} | |||||
$c = new Calendar($backend, $calendarInfo, $l10n, $this->config); | |||||
$calData = $c->getChild('event-1')->get(); | |||||
$event = Reader::read($calData); | |||||
if ($isShared) { | |||||
$this->assertEquals('Translated busy', $event->VEVENT->SUMMARY->getValue()); | |||||
} else { | |||||
$this->assertEquals('Test Event', $event->VEVENT->SUMMARY->getValue()); | |||||
} | |||||
} | } | ||||
public function providesConfidentialClassificationData() { | public function providesConfidentialClassificationData() { |