Merge branch 'master' of github.com:chamilo/chamilo-lms

pull/3924/head
Julio Montoya 4 years ago
commit 78e10ecef9
  1. 4
      public/main/inc/lib/SkillRelUserModel.php
  2. 7
      src/CoreBundle/Controller/BadgeController.php
  3. 64
      src/CoreBundle/Entity/Listener/SkillRelUserListener.php
  4. 1
      src/CoreBundle/Entity/SkillRelUser.php
  5. 8
      src/CoreBundle/Resources/config/services.yml
  6. 2
      src/CoreBundle/Settings/SkillSettingsSchema.php

@ -132,8 +132,8 @@ class SkillRelUserModel extends Model
return $router->generate(
'badge_issued_all',
[
'skill_id' => $skillIssue->getSkill()->getId(),
'user_id' => $skillIssue->getUser()->getId(),
'skillId' => $skillIssue->getSkill()->getId(),
'userId' => $skillIssue->getUser()->getId(),
]
);
}

@ -6,12 +6,15 @@ declare(strict_types=1);
namespace Chamilo\CoreBundle\Controller;
use Chamilo\CoreBundle\Traits\ControllerTrait;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class BadgeController extends AbstractController
{
use ControllerTrait;
#[Route('/badge/{id}', name: 'badge_issued')]
public function issued(int $id): Response
{
@ -20,8 +23,8 @@ class BadgeController extends AbstractController
);
}
#[Route('/badge/{skill_id}/user{user_id}')]
#[Route('/skill/{skill_id}/user{user_id}', name: 'badge_issued_all')]
#[Route('/badge/{skillId}/user/{userId}')]
#[Route('/skill/{skillId}/user/{userId}', name: 'badge_issued_all')]
public function issuedAll(int $skillId, int $userId): Response
{
return $this->redirect(

@ -0,0 +1,64 @@
<?php
/* For licensing terms, see /license.txt */
declare(strict_types=1);
namespace Chamilo\CoreBundle\Entity\Listener;
use Chamilo\CoreBundle\Entity\SkillRelUser;
use Chamilo\CoreBundle\Settings\SettingsManager;
use Display;
use Doctrine\ORM\Event\LifecycleEventArgs;
use MessageManager;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
/**
* Class SkillRelUserListener
*
* @package Chamilo\CoreBundle\Entity\Listener
*/
class SkillRelUserListener
{
private SettingsManager $settingsManager;
private RouterInterface $router;
private TranslatorInterface $translator;
public function __construct(
SettingsManager $settingsManager,
RouterInterface $router,
TranslatorInterface $translator
) {
$this->settingsManager = $settingsManager;
$this->router = $router;
$this->translator = $translator;
}
public function postPersist(SkillRelUser $skillRelUser, LifecycleEventArgs $event): void
{
$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)
);
MessageManager::send_message_simple(
$user->getId(),
$this->translator->trans('You have achieved a new skillskill.'),
$message
);
}
}
}

@ -25,6 +25,7 @@ use Doctrine\ORM\Mapping as ORM;
* }
* )
* @ORM\Entity
* @ORM\EntityListeners({"Chamilo\CoreBundle\Entity\Listener\SkillRelUserListener"})
*/
class SkillRelUser
{

@ -176,6 +176,14 @@ services:
tags:
- {name: doctrine.orm.entity_listener, entity_manager: default, lazy: true}
Chamilo\CoreBundle\Entity\Listener\SkillRelUserListener:
arguments:
- '@chamilo.settings.manager'
- '@router'
- '@translator'
tags:
- {name: doctrine.orm.entity_listener, entity_manager: default, lazy: true}
Chamilo\CoreBundle\Twig\SettingsHelper:
arguments:
- '@chamilo.settings.manager'

@ -20,6 +20,7 @@ class SkillSettingsSchema extends AbstractSettingsSchema
'allow_skills_tool' => 'true',
'allow_hr_skills_management' => 'true',
'show_full_skill_name_on_skill_wheel' => 'false',
'badge_assignation_notification' => 'false',
]
)
;
@ -35,6 +36,7 @@ class SkillSettingsSchema extends AbstractSettingsSchema
->add('allow_skills_tool', YesNoType::class)
->add('allow_hr_skills_management', YesNoType::class)
->add('show_full_skill_name_on_skill_wheel', YesNoType::class)
->add('badge_assignation_notification', YesNoType::class)
;
}
}

Loading…
Cancel
Save