mirror of
https://github.com/nextcloud/server.git
synced 2025-02-11 11:39:27 +00:00
107 lines
2.3 KiB
PHP
107 lines
2.3 KiB
PHP
<?php
|
|
/**
|
|
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
namespace OCA\DAV\CalDAV\Activity\Provider;
|
|
|
|
use OCA\DAV\CalDAV\CalDavBackend;
|
|
use OCP\Activity\IEvent;
|
|
use OCP\Activity\IProvider;
|
|
use OCP\IGroup;
|
|
use OCP\IGroupManager;
|
|
use OCP\IL10N;
|
|
use OCP\IURLGenerator;
|
|
use OCP\IUserManager;
|
|
|
|
abstract class Base implements IProvider {
|
|
/** @var string[] */
|
|
protected $groupDisplayNames = [];
|
|
|
|
/**
|
|
* @param IUserManager $userManager
|
|
* @param IGroupManager $groupManager
|
|
* @param IURLGenerator $url
|
|
*/
|
|
public function __construct(
|
|
protected IUserManager $userManager,
|
|
protected IGroupManager $groupManager,
|
|
protected IURLGenerator $url,
|
|
) {
|
|
}
|
|
|
|
protected function setSubjects(IEvent $event, string $subject, array $parameters): void {
|
|
$event->setRichSubject($subject, $parameters);
|
|
}
|
|
|
|
/**
|
|
* @param array $data
|
|
* @param IL10N $l
|
|
* @return array
|
|
*/
|
|
protected function generateCalendarParameter($data, IL10N $l) {
|
|
if ($data['uri'] === CalDavBackend::PERSONAL_CALENDAR_URI &&
|
|
$data['name'] === CalDavBackend::PERSONAL_CALENDAR_NAME) {
|
|
return [
|
|
'type' => 'calendar',
|
|
'id' => (string)$data['id'],
|
|
'name' => $l->t('Personal'),
|
|
];
|
|
}
|
|
|
|
return [
|
|
'type' => 'calendar',
|
|
'id' => (string)$data['id'],
|
|
'name' => $data['name'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @param int $id
|
|
* @param string $name
|
|
* @return array
|
|
*/
|
|
protected function generateLegacyCalendarParameter($id, $name) {
|
|
return [
|
|
'type' => 'calendar',
|
|
'id' => (string)$id,
|
|
'name' => $name,
|
|
];
|
|
}
|
|
|
|
protected function generateUserParameter(string $uid): array {
|
|
return [
|
|
'type' => 'user',
|
|
'id' => $uid,
|
|
'name' => $this->userManager->getDisplayName($uid) ?? $uid,
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @param string $gid
|
|
* @return array
|
|
*/
|
|
protected function generateGroupParameter($gid) {
|
|
if (!isset($this->groupDisplayNames[$gid])) {
|
|
$this->groupDisplayNames[$gid] = $this->getGroupDisplayName($gid);
|
|
}
|
|
|
|
return [
|
|
'type' => 'user-group',
|
|
'id' => $gid,
|
|
'name' => $this->groupDisplayNames[$gid],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @param string $gid
|
|
* @return string
|
|
*/
|
|
protected function getGroupDisplayName($gid) {
|
|
$group = $this->groupManager->get($gid);
|
|
if ($group instanceof IGroup) {
|
|
return $group->getDisplayName();
|
|
}
|
|
return $gid;
|
|
}
|
|
}
|