You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.4 KiB
52 lines
1.4 KiB
<?php
|
|
/* For licensing terms, see /license.txt */
|
|
|
|
require_once __DIR__.'/../../main/inc/global.inc.php';
|
|
|
|
use Chamilo\PluginBundle\Entity\CourseHomeNotify\Notification;
|
|
use Chamilo\PluginBundle\Entity\CourseHomeNotify\NotificationRelUser;
|
|
|
|
api_block_anonymous_users(true);
|
|
api_protect_course_script(true);
|
|
|
|
$plugin = CourseHomeNotifyPlugin::create();
|
|
$userId = api_get_user_id();
|
|
$courseId = api_get_course_int_id();
|
|
|
|
if (
|
|
empty($courseId) ||
|
|
empty($userId) ||
|
|
'true' !== $plugin->get(CourseHomeNotifyPlugin::SETTING_ENABLED)
|
|
) {
|
|
api_not_allowed(true);
|
|
}
|
|
|
|
$user = api_get_user_entity($userId);
|
|
$course = api_get_course_entity($courseId);
|
|
$hash = isset($_GET['hash']) ? Security::remove_XSS($_GET['hash']) : null;
|
|
|
|
$em = Database::getManager();
|
|
/** @var Notification $notification */
|
|
$notification = $em
|
|
->getRepository('ChamiloPluginBundle:CourseHomeNotify\Notification')
|
|
->findOneBy(['course' => $course, 'hash' => $hash]);
|
|
|
|
if (!$notification) {
|
|
api_not_allowed(true);
|
|
}
|
|
|
|
$notificationUser = $em
|
|
->getRepository('ChamiloPluginBundle:CourseHomeNotify\NotificationRelUser')
|
|
->findOneBy(['notification' => $notification, 'user' => $user]);
|
|
|
|
if (!$notificationUser) {
|
|
$notificationUser = new NotificationRelUser();
|
|
$notificationUser
|
|
->setUser($user)
|
|
->setNotification($notification);
|
|
|
|
$em->persist($notificationUser);
|
|
$em->flush();
|
|
}
|
|
|
|
header('Location: '.$notification->getExpirationLink());
|
|
|