Agenda: Refactor to save invitations and subscriptions - refs BT#20946

pull/4863/head
Angel Fernando Quiroz Campos 2 years ago
parent 0fb496d46a
commit 3fbd99d52c
  1. 35
      main/inc/lib/agenda.lib.php

@ -3147,7 +3147,7 @@ class Agenda
if ($allowCollectiveInvitations && $allowEventSubscriptions && !$personalEvent) { if ($allowCollectiveInvitations && $allowEventSubscriptions && !$personalEvent) {
$form->addRadio( $form->addRadio(
'invitation_type', 'invitation_type',
get_lang('Allow'), get_lang('Allowed'),
[ [
'invitations' => get_lang('Invitations'), 'invitations' => get_lang('Invitations'),
'subscriptions' => get_lang('Subscriptions'), 'subscriptions' => get_lang('Subscriptions'),
@ -3204,13 +3204,13 @@ class Agenda
{ {
$invitees = []; $invitees = [];
$isCollective = false; $isCollective = false;
$allowInvitees = true; $withInvitation = false;
if ($personalEvent) { if ($personalEvent) {
$eventInvitation = $personalEvent->getInvitation(); $eventInvitation = $personalEvent->getInvitation();
$allowInvitees = !$eventInvitation instanceof AgendaEventSubscription; $withInvitation = !($eventInvitation instanceof AgendaEventSubscription);
if ($eventInvitation && $allowInvitees) { if ($withInvitation) {
foreach ($eventInvitation->getInvitees() as $invitee) { foreach ($eventInvitation->getInvitees() as $invitee) {
$inviteeUser = $invitee->getUser(); $inviteeUser = $invitee->getUser();
@ -3221,9 +3221,8 @@ class Agenda
$isCollective = $personalEvent->isCollective(); $isCollective = $personalEvent->isCollective();
} }
if ($allowInvitees) {
$form->addHtml( $form->addHtml(
'<div id="invitations-block">' '<div id="invitations-block" style="display: '.($withInvitation ? 'block;' : 'none;').'">'
); );
$form->addHeader(get_lang('Invitations')); $form->addHeader(get_lang('Invitations'));
$form->addSelectAjax( $form->addSelectAjax(
@ -3244,31 +3243,29 @@ class Agenda
'collective' => $isCollective 'collective' => $isCollective
]); ]);
} }
}
private function addSubscriptionFields(FormValidator $form, ?PersonalAgenda $personalEvent) private function addSubscriptionFields(FormValidator $form, ?PersonalAgenda $personalEvent)
{ {
$subscribers = []; $subscribers = [];
$allowSubscribers = true; $withSubscription = false;
$maxSubscriptions = 0;
$groupId = null;
if ($personalEvent) { if ($personalEvent) {
$eventInvitation = $personalEvent->getInvitation(); $eventInvitation = $personalEvent->getInvitation();
$allowSubscribers = $eventInvitation instanceof AgendaEventSubscription; $withSubscription = $eventInvitation instanceof AgendaEventSubscription;
$maxSubscriptions = $withSubscription ? $eventInvitation->getMaxAttendees() : 0;
$groupId = $personalEvent->getSubscriptionItemId();
$subscribers = self::getInviteesForPersonalEvent($personalEvent->getId(), AgendaEventSubscriber::class); $subscribers = self::getInviteesForPersonalEvent($personalEvent->getId(), AgendaEventSubscriber::class);
$subscribers = array_combine( $subscribers = array_combine(
array_column($subscribers, 'id'), array_column($subscribers, 'id'),
array_column($subscribers, 'name') array_column($subscribers, 'name')
); );
$form->setDefaults([
'subscribers' => array_keys($subscribers),
]);
} }
if ($allowSubscribers) {
$form->addHtml( $form->addHtml(
'<div id="subscriptions-block">' '<div id="subscriptions-block" style="display: '.($withSubscription ? 'block;' : 'none;').'">'
); );
$form->addHeader(get_lang('Subscriptions')); $form->addHeader(get_lang('Subscriptions'));
$form->addSelect( $form->addSelect(
@ -3319,14 +3316,11 @@ class Agenda
['multiple' => 'multiple'] ['multiple' => 'multiple']
); );
/** @var AgendaEventSubscription $subscription */
$subscription = $personalEvent->getInvitation();
$form->setDefaults([ $form->setDefaults([
'max_subscriptions' => $subscription->getMaxAttendees(), 'subscribers' => array_keys($subscribers),
'max_subscriptions' => $maxSubscriptions,
]); ]);
$groupId = $personalEvent->getSubscriptionItemId();
if ($groupId) { if ($groupId) {
$objUserGroup = new UserGroup(); $objUserGroup = new UserGroup();
@ -3334,7 +3328,6 @@ class Agenda
$slctItem->addOption($groupInfo['name'], $groupId); $slctItem->addOption($groupInfo['name'], $groupId);
} }
}
$form->addHtml('</div>'); $form->addHtml('</div>');
} }

Loading…
Cancel
Save