assign.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /* For license terms, see /license.txt */
  3. use \Chamilo\CoreBundle\Entity\Skill;
  4. use \Chamilo\CoreBundle\Entity\SkillRelUser;
  5. //require_once '../inc/global.inc.php';
  6. if (!api_is_platform_admin(false, true)) {
  7. api_not_allowed();
  8. }
  9. $entityManager = Database::getManager();
  10. $skillRepo = $entityManager->getRepository('ChamiloCoreBundle:Skill');
  11. $skillUserRepo = $entityManager->getRepository('ChamiloCoreBundle:SkillRelUser');
  12. $user = $entityManager->find('ChamiloUserBundle:User', $_REQUEST['user']);
  13. if (!$user) {
  14. Display::addFlash(
  15. Display::return_message(get_lang('NoUser'), 'error')
  16. );
  17. header('Location: ' . api_get_path(WEB_PATH));
  18. exit;
  19. }
  20. $skills = $skillRepo->findBy([
  21. 'status' => Skill::STATUS_ENABLED
  22. ]);
  23. $skillsOptions = [];
  24. foreach ($skills as $skill) {
  25. $skillsOptions[$skill->getId()] = $skill->getName();
  26. }
  27. $form = new FormValidator('assign_skill');
  28. $form->addText('user_name', get_lang('UserName'), false);
  29. $form->addSelect('skill', get_lang('Skill'), $skillsOptions);
  30. $form->addHidden('user', $user->getId());
  31. $form->addRule('skill', get_lang('ThisFieldIsRequired'), 'required');
  32. $form->addTextarea('argumentation', get_lang('Argumentation'), ['rows' => 6]);
  33. $form->applyFilter('argumentation', 'trim');
  34. $form->addRule('argumentation', get_lang('ThisFieldIsRequired'), 'required');
  35. $form->addButtonSave(get_lang('Save'));
  36. if ($form->validate()) {
  37. $values = $form->exportValues();
  38. $skill = $skillRepo->find($values['skill']);
  39. if (!$skill) {
  40. Display::addFlash(
  41. Display::return_message(get_lang('SkillNotFound'), 'error')
  42. );
  43. header('Location: ' . api_get_self() . '?' . http_build_query(['user' => $user->getId()]));
  44. exit;
  45. }
  46. if ($user->hasSkill($skill)) {
  47. Display::addFlash(
  48. Display::return_message(
  49. sprintf(get_lang('TheUserXHasAlreadyAchievedTheSkillY'), $user->getCompleteName(), $skill->getName()),
  50. 'warning'
  51. )
  52. );
  53. header('Location: ' . api_get_self() . '?' . http_build_query(['user' => $user->getId()]));
  54. exit;
  55. }
  56. $skillUser = new SkillRelUser();
  57. $skillUser->setUser($user);
  58. $skillUser->setSkill($skill);
  59. $skillUser->setArgumentation($values['argumentation']);
  60. $skillUser->setAcquiredSkillAt(new DateTime());
  61. $skillUser->setAssignedBy(0);
  62. $entityManager->persist($skillUser);
  63. $entityManager->flush();
  64. Display::addFlash(
  65. Display::return_message(
  66. sprintf(get_lang('SkillXAssignedToUserY'), $skill->getName(), $user->getCompleteName()),
  67. 'success'
  68. )
  69. );
  70. header('Location: ' . api_get_path(WEB_PATH) . "badge/{$skill->getId()}/user/{$user->getId()}");
  71. exit;
  72. }
  73. $form->setDefaults(['user_name' => $user->getCompleteName()]);
  74. $form->freeze(['user_name']);
  75. //View
  76. $template = new Template('');
  77. $template->assign('header', get_lang('AssignSkill'));
  78. $template->assign('content', $form->returnForm());
  79. $template->display_one_col_template();