diff --git a/apps/dav/lib/CalDAV/Calendar.php b/apps/dav/lib/CalDAV/Calendar.php index 203c998e00..e3147062b1 100644 --- a/apps/dav/lib/CalDAV/Calendar.php +++ b/apps/dav/lib/CalDAV/Calendar.php @@ -48,6 +48,9 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { /** @var IConfig */ private $config; + /** @var IL10N */ + protected $l10n; + /** * Calendar constructor. * @@ -68,6 +71,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { } $this->config = $config; + $this->l10n = $l10n; } /** @@ -289,7 +293,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { $obj['acl'] = $this->getChildACL(); - return new CalendarObject($this->caldavBackend, $this->calendarInfo, $obj); + return new CalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj); } @@ -302,7 +306,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { continue; } $obj['acl'] = $this->getChildACL(); - $children[] = new CalendarObject($this->caldavBackend, $this->calendarInfo, $obj); + $children[] = new CalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj); } return $children; @@ -317,7 +321,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { continue; } $obj['acl'] = $this->getChildACL(); - $children[] = new CalendarObject($this->caldavBackend, $this->calendarInfo, $obj); + $children[] = new CalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj); } return $children; diff --git a/apps/dav/lib/CalDAV/CalendarObject.php b/apps/dav/lib/CalDAV/CalendarObject.php index a5c6db6c3f..dd2684ffa9 100644 --- a/apps/dav/lib/CalDAV/CalendarObject.php +++ b/apps/dav/lib/CalDAV/CalendarObject.php @@ -2,9 +2,11 @@ /** * @copyright Copyright (c) 2016, ownCloud, Inc. * @copyright Copyright (c) 2017, Georg Ehrke + * @copyright Copyright (c) 2020, Gary Kim * * @author Georg Ehrke * @author Thomas Müller + * @author Gary Kim * * @license AGPL-3.0 * @@ -25,26 +27,34 @@ namespace OCA\DAV\CalDAV; +use OCP\IL10N; use Sabre\VObject\Component; use Sabre\VObject\Property; use Sabre\VObject\Reader; class CalendarObject extends \Sabre\CalDAV\CalendarObject { + /** @var IL10N */ + protected $l10n; + /** * CalendarObject constructor. * * @param CalDavBackend $caldavBackend + * @param IL10N $l10n * @param array $calendarInfo * @param array $objectData */ - public function __construct(CalDavBackend $caldavBackend, array $calendarInfo, + public function __construct(CalDavBackend $caldavBackend, IL10N $l10n, + array $calendarInfo, array $objectData) { parent::__construct($caldavBackend, $calendarInfo, $objectData); if ($this->isShared()) { unset($this->objectData['size']); } + + $this->l10n = $l10n; } /** @@ -84,7 +94,7 @@ class CalendarObject extends \Sabre\CalDAV\CalendarObject { * @param Component\VCalendar $vObject * @return void */ - private static function createConfidentialObject(Component\VCalendar $vObject) { + private function createConfidentialObject(Component\VCalendar $vObject) { /** @var Component $vElement */ $vElement = null; if(isset($vObject->VEVENT)) { @@ -109,7 +119,7 @@ class CalendarObject extends \Sabre\CalDAV\CalendarObject { case 'UID': break; case 'SUMMARY': - $property->setValue('Busy'); + $property->setValue($this->l10n->t('Busy')); break; default: $vElement->__unset($property->name); diff --git a/apps/dav/lib/CalDAV/PublicCalendar.php b/apps/dav/lib/CalDAV/PublicCalendar.php index b7ce37760a..62b07521ec 100644 --- a/apps/dav/lib/CalDAV/PublicCalendar.php +++ b/apps/dav/lib/CalDAV/PublicCalendar.php @@ -44,7 +44,7 @@ class PublicCalendar extends Calendar { } $obj['acl'] = $this->getChildACL(); - return new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj); + return new PublicCalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj); } /** @@ -58,7 +58,7 @@ class PublicCalendar extends Calendar { continue; } $obj['acl'] = $this->getChildACL(); - $children[] = new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj); + $children[] = new PublicCalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj); } return $children; } @@ -75,7 +75,7 @@ class PublicCalendar extends Calendar { continue; } $obj['acl'] = $this->getChildACL(); - $children[] = new PublicCalendarObject($this->caldavBackend, $this->calendarInfo, $obj); + $children[] = new PublicCalendarObject($this->caldavBackend, $this->l10n, $this->calendarInfo, $obj); } return $children; } diff --git a/apps/dav/tests/unit/CalDAV/CalendarTest.php b/apps/dav/tests/unit/CalDAV/CalendarTest.php index a2481e59ae..80e75beca5 100644 --- a/apps/dav/tests/unit/CalDAV/CalendarTest.php +++ b/apps/dav/tests/unit/CalDAV/CalendarTest.php @@ -1,12 +1,14 @@ * * @author Georg Ehrke * @author Joas Schilling * @author Morris Jobke * @author Roeland Jago Douma * @author Thomas Müller + * @author Gary Kim * * @license AGPL-3.0 * @@ -73,7 +75,7 @@ class CalendarTest extends TestCase { $c->delete(); } - + public function testDeleteFromGroup() { $this->expectException(\Sabre\DAV\Exception\Forbidden::class); @@ -427,6 +429,27 @@ EOD; } else { $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() {