Skill: Display message and notification of user badge - refs BT#20912

pull/4871/head
christian 2 years ago
parent 4b2d88e97f
commit 458dfadc1d
  1. 20
      public/main/skills/assign.php
  2. 14
      public/main/skills/issued.php
  3. 54
      src/CoreBundle/Entity/Listener/SkillRelUserListener.php

@ -304,9 +304,10 @@ if ($form->validate()) {
$parentData = $skillModel->get($parentId);
$data = $extraFieldValue->get_values_by_handler_and_field_variable($parentId, 'children_auto_threshold');
if (!empty($data) && !empty($data['value'])) {
$sendEmail = true;
if ($sendEmail) {
// Search X children
$requiredSkills = $data['value'];
$requiredSkills = isset($data['value']) ? (int) $data['value'] : 0;
$children = $skillRelSkill->getChildren($parentId);
$counter = 0;
foreach ($children as $child) {
@ -321,9 +322,9 @@ if ($form->validate()) {
Display::addFlash(Display::return_message(get_lang('Message Sent')));
$url = api_get_path(WEB_CODE_PATH).'skills/assign.php?user='.$userId.'&id='.$parentId;
$link = Display::url($url, $url);
$subject = get_lang('A student has obtained the number of sub-skills needed to validate the mother skill.');
$subject = get_lang('A student has obtained the number of sub-skills needed to validate the mother skill');
$message = sprintf(
get_lang('Learner %s has enough sub-skill to get skill %s. To assign this skill it is possible to go here : %s'),
get_lang('Learner %s has enough sub-skill to get skill %s . To assign this skill it is possible to go here : %s'),
UserManager::formatUserFullName($user),
$parentData['name'],
$link
@ -352,17 +353,6 @@ if ($form->validate()) {
)
);
Display::addFlash(
Display::return_message(
sprintf(
get_lang('To assign a new skill to this user, click <a href="%s">here</a>'),
api_get_self().'?'.http_build_query(['user' => $user->getId()])
),
'info',
false
)
);
header('Location: '.api_get_path(WEB_PATH)."badge/{$skillUser->getId()}");
exit;
}

@ -262,6 +262,18 @@ if ($allowExport) {
}
}
$returnMessage = '';
if (api_is_student_boss()) {
$returnMessage = Display::return_message(
sprintf(
get_lang('To assign a new skill to this user, click <a href="%s">here</a>'),
api_get_path(WEB_CODE_PATH).'skills/assign.php?user='.$user->getId()
),
'notice',
false
);
}
$template = new Template(get_lang('Issued badge information'));
$template->assign('issue_info', $skillRelUserInfo);
$template->assign('allow_comment', $allowComment);
@ -282,5 +294,5 @@ $template->assign('personal_badge', $personalBadge);
$template->assign('show_level', $showLevels);
$content = $template->fetch($template->get_template('skill/issued.tpl'));
$template->assign('header', get_lang('Issued badge information'));
$template->assign('content', $content);
$template->assign('content', $returnMessage.$content);
$template->display_one_col_template();

@ -6,6 +6,7 @@ declare(strict_types=1);
namespace Chamilo\CoreBundle\Entity\Listener;
use Chamilo\CoreBundle\Entity\Message;
use Chamilo\CoreBundle\Entity\SkillRelUser;
use Chamilo\CoreBundle\Entity\User;
use Chamilo\CoreBundle\Settings\SettingsManager;
@ -30,34 +31,31 @@ class SkillRelUserListener
$user = $skillRelUser->getUser();
$skill = $skillRelUser->getSkill();
$badgeAssignationNotification = $this->settingsManager->getSetting('skill.badge_assignation_notification');
if ('true' === $badgeAssignationNotification) {
$url = $this->router->generate(
'badge_issued_all',
['skillId' => $skill->getId(), 'userId' => $user->getId()]
);
$message = sprintf(
$this->translator->trans('Hi, %s. You have achieved the skill "%s". To see the details go here: %s.'),
$user->getFirstname(),
$skill->getName(),
Display::url($url, $url)
);
if (null !== $this->security->getToken()) {
/** @var User $currentUser */
$currentUser = $this->security->getUser();
$message = (new Message())
->setTitle($this->translator->trans('You have achieved a new skill.'))
->setContent($message)
->addReceiverTo($user)
->setSender($currentUser)
;
$event->getObjectManager()->persist($message);
$event->getObjectManager()->flush();
}
// Notification of badge assignation
$url = $this->router->generate(
'badge_issued_all',
['skillId' => $skill->getId(), 'userId' => $user->getId()]
);
$message = sprintf(
$this->translator->trans('Hi, %s. You have achieved the skill "%s". To see the details go here: %s.'),
$user->getFirstname(),
$skill->getName(),
Display::url($url, $url)
);
if (null !== $this->security->getToken()) {
/** @var User $currentUser */
$currentUser = $this->security->getUser();
$message = (new Message())
->setTitle($this->translator->trans('You have achieved a new skill.'))
->setContent($message)
->addReceiverTo($user)
->setSender($currentUser)
;
$event->getObjectManager()->persist($message);
$event->getObjectManager()->flush();
}
}
}

Loading…
Cancel
Save