Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Template] Date time #2671

Merged
merged 4 commits into from
Dec 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

namespace Claroline\AgendaBundle\Installation\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

final class Version20231207141200 extends AbstractMigration
{
public function up(Schema $schema): void
{
$this->addSql('
UPDATE `claro_template_content`
LEFT JOIN `claro_template` ct on ct.id = `claro_template_content`.`template_id`
LEFT JOIN `claro_template_type` ctt on ctt.id = ct.`claro_template_type`
SET `title` = REPLACE(`title`, \'%session_start%\', \'%session_start_datetime%\')
WHERE `title` LIKE \'%session_start%\' AND ctt.entity_name LIKE \'%training_%\'
');

$this->addSql('
UPDATE `claro_template_content`
LEFT JOIN `claro_template` ct on ct.id = `claro_template_content`.`template_id`
LEFT JOIN `claro_template_type` ctt on ctt.id = ct.`claro_template_type`
SET `content` = REPLACE(`content`, \'%session_start%\', \'%session_start_datetime%\')
WHERE `content` LIKE \'%session_start%\' AND ctt.entity_name LIKE \'%training_%\'
');
}

public function down(Schema $schema): void
{
$this->addSql('
UPDATE `claro_template_content`
LEFT JOIN `claro_template` ct on ct.id = `claro_template_content`.`template_id`
LEFT JOIN `claro_template_type` ctt on ctt.id = ct.`claro_template_type`
SET `content` = REPLACE(`content`, \'%session_start_datetime%\', \'%session_start%\')
WHERE `title` LIKE \'%session_start_datetime%\' AND ctt.entity_name LIKE \'%training_%\'
');

$this->addSql('
UPDATE `claro_template_content`
LEFT JOIN `claro_template` ct on ct.id = `claro_template_content`.`template_id`
LEFT JOIN `claro_template_type` ctt on ctt.id = ct.`claro_template_type`
SET `content` = REPLACE(`content`, \'%session_start_datetime%\', \'%session_start%\')
WHERE `content` LIKE \'%session_start_datetime%\' AND ctt.entity_name LIKE \'%training_%\'
');
}
}
59 changes: 30 additions & 29 deletions src/plugin/agenda/Messenger/SendEventInvitationHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,37 +65,38 @@ public function __invoke(SendEventInvitation $sendEventInvitation)
}
}

$placeholders = [
'first_name' => $user->getFirstName(),
'last_name' => $user->getLastName(),
'username' => $user->getUsername(),
$placeholders = array_merge([
'first_name' => $user->getFirstName(),
'last_name' => $user->getLastName(),
'username' => $user->getUsername(),

// event info
'event_name' => $event->getName(),
'event_start' => $event->getStartDate()->format('d/m/Y H:i'),
'event_end' => $event->getEndDate()->format('d/m/Y H:i'),
'event_description' => $event->getDescription(),
'event_poster' => $event->getPoster() ? '<img src="'.$this->platformManager->getUrl().'/'.$event->getPoster().'" style="max-width: 100%;"/>' : '',
'event_location_name' => $locationName,
'event_location_address' => $locationAddress,
// event info
'event_name' => $event->getName(),
'event_description' => $event->getDescription(),
'event_poster' => $event->getPoster() ? '<img src="'.$this->platformManager->getUrl().'/'.$event->getPoster().'" style="max-width: 100%;"/>' : '',
'event_location_name' => $locationName,
'event_location_address' => $locationAddress,

// set status urls
'event_join_url' => $this->router->generate(
'apiv2_event_change_invitation_status',
['id' => $invitation->getId(), 'status' => EventInvitation::JOIN],
UrlGeneratorInterface::ABSOLUTE_URL
),
'event_maybe_url' => $this->router->generate(
'apiv2_event_change_invitation_status',
['id' => $invitation->getId(), 'status' => EventInvitation::MAYBE],
UrlGeneratorInterface::ABSOLUTE_URL
),
'event_decline_url' => $this->router->generate(
'apiv2_event_change_invitation_status',
['id' => $invitation->getId(), 'status' => EventInvitation::RESIGN],
UrlGeneratorInterface::ABSOLUTE_URL
),
];
// set status urls
'event_join_url' => $this->router->generate(
'apiv2_event_change_invitation_status',
['id' => $invitation->getId(), 'status' => EventInvitation::JOIN],
UrlGeneratorInterface::ABSOLUTE_URL
),
'event_maybe_url' => $this->router->generate(
'apiv2_event_change_invitation_status',
['id' => $invitation->getId(), 'status' => EventInvitation::MAYBE],
UrlGeneratorInterface::ABSOLUTE_URL
),
'event_decline_url' => $this->router->generate(
'apiv2_event_change_invitation_status',
['id' => $invitation->getId(), 'status' => EventInvitation::RESIGN],
UrlGeneratorInterface::ABSOLUTE_URL
),
],
$this->templateManager->formatDatePlaceholder('event_start', $event->getStartDate()),
$this->templateManager->formatDatePlaceholder('event_end', $event->getEndDate())
);

if ($event->getInvitationTemplate()) {
// use custom template
Expand Down
14 changes: 12 additions & 2 deletions src/plugin/agenda/Resources/config/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,18 @@ plugin:
type: email
placeholders:
- event_name
- event_start
- event_end
- event_start_datetime_utc
- event_start_date_utc
- event_start_time_utc
- event_start_datetime
- event_start_date
- event_start_time
- event_end_datetime_utc
- event_end_date_utc
- event_end_time_utc
- event_end_datetime
- event_end_date
- event_end_time
- event_description
- event_poster
- event_location_name
Expand Down
18 changes: 15 additions & 3 deletions src/plugin/agenda/Resources/translations/template.en.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,22 @@

"event_name": "The name of the event",
"event_description_desc": "The description of the event",
"event_start_desc": "The start date of the event",
"event_end_desc": "The end date of the event",
"event_poster_desc": "The poster of the event",
"event_join_url": "URL allowing the user to indicate that he will participate in the event",
"event_maybe_url": "URL allowing the user to indicate that he may participate in the event",
"event_decline_url": "URL allowing the user to indicate that he will not participate in the event"
"event_decline_url": "URL allowing the user to indicate that he will not participate in the event",

"event_start_datetime_utc_desc" : "The start date and time of the event (UTC)",
"event_start_date_utc_desc" : "The start date of the event (UTC)",
"event_start_time_utc_desc" : "The start time of the event (UTC)",
"event_start_datetime_desc" : "The start date and time of the event",
"event_start_date_desc" : "The start date of the event",
"event_start_time_desc" : "The start time of the event",

"event_end_datetime_utc_desc" : "The end date and time of the event (UTC)",
"event_end_date_utc_desc" : "The end date of the event (UTC)",
"event_end_time_utc_desc" : "The end time of the event (UTC)",
"event_end_datetime_desc" : "The end date and time of the event",
"event_end_date_desc" : "The end date of the event",
"event_end_time_desc" : "The end time of the event"
}
32 changes: 22 additions & 10 deletions src/plugin/agenda/Resources/translations/template.fr.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
{
"event_invitation": "Invitation à un évènement",
"event_invitation_desc": "Template utilisé pour l'envoi des invitations aux évènements.",
"event_invitation": "Invitation à un événement",
"event_invitation_desc": "Template utilisé pour l'envoi des invitations aux événements.",

"event_name": "Le nom de l'évènement",
"event_description_desc": "La description de l'évènement",
"event_start_desc": "La date de début de l'évènement",
"event_end_desc": "La date de fin de l'évènement",
"event_poster_desc": "Le poster de l'évènement",
"event_join_url": "URL permettant à l'utilisateur d'indiquer qu'il participera à l'évènement",
"event_maybe_url": "URL permettant à l'utilisateur d'indiquer qu'il participera peut-être à l'évènement",
"event_decline_url": "URL permettant à l'utilisateur d'indiquer qu'il ne participera pas à l'évènement"
"event_name": "Le nom de l'événement",
"event_description_desc": "La description de l'événement",
"event_poster_desc": "Le poster de l'événement",
"event_join_url": "URL permettant à l'utilisateur d'indiquer qu'il participera à l'événement",
"event_maybe_url": "URL permettant à l'utilisateur d'indiquer qu'il participera peut-être à l'événement",
"event_decline_url": "URL permettant à l'utilisateur d'indiquer qu'il ne participera pas à l'événement",

"event_start_datetime_utc_desc" : "La date et l'heure de début de l'événement (UTC)",
"event_start_date_utc_desc" : "La date de début de l'événement (UTC)",
"event_start_time_utc_desc" : "L'heure de début de l'événement (UTC)",
"event_start_datetime_desc" : "L'heure et la date de début de l'événement",
"event_start_date_desc" : "La date de début de l'événement",
"event_start_time_desc" : "L'heure de début de l'événement",

"event_end_datetime_utc_desc" : "La date et l'heure de fin de l'événement (UTC)",
"event_end_date_utc_desc" : "La date de fin de l'événement (UTC)",
"event_end_time_utc_desc" : "L'heure de fin de l'événement (UTC)",
"event_end_datetime_desc" : "L'heure et la date de fin de l'événement",
"event_end_date_desc" : "La date de fin de l'événement",
"event_end_time_desc" : "L'heure de fin de l'événement"
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
%event_name%
<br/>
[%event_start% -> %event_end%]
[%event_start_datetime% -> %event_end_datetime%]
<br/>
<p>%event_description%</p>
<br/><br/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
%event_name%
<br/>
[%event_start% -> %event_end%]
[%event_start_datetime% -> %event_end_datetime%]
<br/>
<p>%event_description%</p>
<br/><br/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
<?php

namespace Claroline\CursusBundle\Installation\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

final class Version20231207142600 extends AbstractMigration
{
public function up(Schema $schema): void
{
$this->addSql('
UPDATE `claro_template_content`
LEFT JOIN `claro_template` ct on ct.id = `claro_template_content`.`template_id`
LEFT JOIN `claro_template_type` ctt on ctt.id = ct.`claro_template_type`
SET `title` = REPLACE(`title`, \'%event_start%\', \'%event_start_datetime%\')
WHERE `title` LIKE \'%event_start%\' AND ctt.entity_name = \'event_invitation\'
');

$this->addSql('
UPDATE `claro_template_content`
LEFT JOIN `claro_template` ct on ct.id = `claro_template_content`.`template_id`
LEFT JOIN `claro_template_type` ctt on ctt.id = ct.`claro_template_type`
SET `content` = REPLACE(`content`, \'%event_start%\', \'%event_start_datetime%\')
WHERE `content` LIKE \'%event_start%\' AND ctt.entity_name = \'event_invitation\'
');

$this->addSql('
UPDATE `claro_template_content`
LEFT JOIN `claro_template` ct on ct.id = `claro_template_content`.`template_id`
LEFT JOIN `claro_template_type` ctt on ctt.id = ct.`claro_template_type`
SET `title` = REPLACE(`title`, \'%event_end%\', \'%event_end_datetime%\')
WHERE `title` LIKE \'%event_end%\' AND ctt.entity_name = \'event_invitation\'
');

$this->addSql('
UPDATE `claro_template_content`
LEFT JOIN `claro_template` ct on ct.id = `claro_template_content`.`template_id`
LEFT JOIN `claro_template_type` ctt on ctt.id = ct.`claro_template_type`
SET `content` = REPLACE(`content`, \'%event_end%\', \'%event_end_datetime%\')
WHERE `content` LIKE \'%event_end%\' AND ctt.entity_name = \'event_invitation\'
');
}

public function down(Schema $schema): void
{
$this->addSql('
UPDATE `claro_template_content`
LEFT JOIN `claro_template` ct on ct.id = `claro_template_content`.`template_id`
LEFT JOIN `claro_template_type` ctt on ctt.id = ct.`claro_template_type`
SET `content` = REPLACE(`content`, \'%event_start_datetime%\', \'%event_start%\')
WHERE `title` LIKE \'%event_start_datetime%\' AND ctt.entity_name = \'event_invitation\'
');

$this->addSql('
UPDATE `claro_template_content`
LEFT JOIN `claro_template` ct on ct.id = `claro_template_content`.`template_id`
LEFT JOIN `claro_template_type` ctt on ctt.id = ct.`claro_template_type`
SET `content` = REPLACE(`content`, \'%event_start_datetime%\', \'%event_start%\')
WHERE `content` LIKE \'%event_start_datetime%\' AND ctt.entity_name = \'event_invitation\'
');

$this->addSql('
UPDATE `claro_template_content`
LEFT JOIN `claro_template` ct on ct.id = `claro_template_content`.`template_id`
LEFT JOIN `claro_template_type` ctt on ctt.id = ct.`claro_template_type`
SET `content` = REPLACE(`content`, \'%event_end_datetime%\', \'%event_end%\')
WHERE `title` LIKE \'%event_end_datetime%\' AND ctt.entity_name = \'event_invitation\'
');

$this->addSql('
UPDATE `claro_template_content`
LEFT JOIN `claro_template` ct on ct.id = `claro_template_content`.`template_id`
LEFT JOIN `claro_template_type` ctt on ctt.id = ct.`claro_template_type`
SET `content` = REPLACE(`content`, \'%event_end_datetime%\', \'%event_end%\')
WHERE `content` LIKE \'%event_end_datetime%\' AND ctt.entity_name = \'event_invitation\'
');
}
}
43 changes: 22 additions & 21 deletions src/plugin/cursus/Manager/EventManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -416,26 +416,27 @@ private function getTemplatePlaceholders(Event $event): array
}
}

return [
// course info
'course_name' => $course->getName(),
'course_code' => $course->getCode(),
'course_description' => $course->getDescription(),
// session info
'session_name' => $session->getName(),
'session_description' => $session->getDescription(),
'session_code' => $session->getCode(),
'session_start' => $session->getStartDate()->format('d/m/Y'),
'session_end' => $session->getEndDate()->format('d/m/Y'),
// event info
'event_name' => $event->getName(),
'event_description' => $event->getDescription(),
'event_code' => $event->getCode(),
'event_start' => $event->getStartDate()->format('d/m/Y H:i'),
'event_end' => $event->getEndDate()->format('d/m/Y H:i'),
'event_location_name' => $locationName,
'event_location_address' => $locationAddress,
'event_trainers' => $trainersList,
];
return array_merge([
// course info
'course_name' => $course->getName(),
'course_code' => $course->getCode(),
'course_description' => $course->getDescription(),
// session info
'session_name' => $session->getName(),
'session_description' => $session->getDescription(),
'session_code' => $session->getCode(),
// event info
'event_name' => $event->getName(),
'event_description' => $event->getDescription(),
'event_code' => $event->getCode(),
'event_location_name' => $locationName,
'event_location_address' => $locationAddress,
'event_trainers' => $trainersList,
],
$this->templateManager->formatDatePlaceholder('session_start', $session->getStartDate()),
$this->templateManager->formatDatePlaceholder('session_end', $session->getEndDate()),
$this->templateManager->formatDatePlaceholder('event_start', $event->getStartDate()),
$this->templateManager->formatDatePlaceholder('event_end', $event->getEndDate()),
);
}
}
Loading