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.
88 lines
2.6 KiB
88 lines
2.6 KiB
<?php
|
|
/* For license terms, see /license.txt */
|
|
|
|
require_once __DIR__.'/../../main/inc/global.inc.php';
|
|
|
|
$plugin = Justification::create();
|
|
$courseId = api_get_setting('justification_default_course_id', 'justification');
|
|
|
|
echo 'Justification CRON - '.api_get_local_time().PHP_EOL;
|
|
|
|
if (empty($courseId)) {
|
|
echo 'No course was set';
|
|
exit;
|
|
}
|
|
|
|
$courseInfo = api_get_course_info_by_id($courseId);
|
|
if (empty($courseInfo)) {
|
|
echo "Course #$courseId doesn't exist";
|
|
exit;
|
|
}
|
|
|
|
$fieldList = $plugin->getList();
|
|
$totalFields = count($fieldList);
|
|
|
|
if (empty($fieldList)) {
|
|
echo 'No fields to check. Please add them in the justification plugin';
|
|
exit;
|
|
}
|
|
|
|
$userList = UserManager::get_user_list();
|
|
$count = count($userList);
|
|
|
|
echo "#$count users found".PHP_EOL;
|
|
$currentDate = api_get_utc_datetime();
|
|
|
|
foreach ($userList as $user) {
|
|
$userId = $user['id'];
|
|
|
|
echo "Checking user id #$userId".PHP_EOL;
|
|
|
|
$userJustificationList = $plugin->getUserJustificationList($userId);
|
|
$userJustificationDocumentList = array_column($userJustificationList, 'date_validity', 'justification_document_id');
|
|
|
|
if (count($userJustificationList) < $totalFields) {
|
|
unsubscribeUser($userId, $courseInfo);
|
|
continue;
|
|
}
|
|
|
|
if (count($userJustificationList) >= $totalFields) {
|
|
$successList = [];
|
|
foreach ($fieldList as $field) {
|
|
if (isset($userJustificationDocumentList[$field['id']])) {
|
|
$dateValidity = $userJustificationDocumentList[$field['id']];
|
|
if ($dateValidity > $currentDate) {
|
|
$successList[] = true;
|
|
}
|
|
}
|
|
}
|
|
$countSuccess = count($successList);
|
|
if ($countSuccess === $totalFields) {
|
|
subscribeUser($userId, $courseInfo);
|
|
continue;
|
|
} else {
|
|
echo "User #$userId only got $countSuccess justification(s) out of $totalFields.".PHP_EOL;
|
|
}
|
|
}
|
|
|
|
unsubscribeUser($userId, $courseInfo);
|
|
}
|
|
|
|
function unsubscribeUser($userId, $courseInfo)
|
|
{
|
|
$courseId = $courseInfo['real_id'];
|
|
CourseManager::unsubscribe_user($userId, $courseInfo['code']);
|
|
echo "Unsubscribe user id #$userId to course #$courseId".PHP_EOL;
|
|
}
|
|
|
|
function subscribeUser($userId, $courseInfo)
|
|
{
|
|
$courseId = $courseInfo['real_id'];
|
|
$isUserSubscribed = CourseManager::is_user_subscribed_in_course($userId, $courseInfo['code']);
|
|
if ($isUserSubscribed === false) {
|
|
CourseManager::subscribeUser($userId, $courseInfo['code'], STUDENT);
|
|
echo "Subscribe user id #$userId to course #$courseId".PHP_EOL;
|
|
} else {
|
|
echo "Nothing to do user id #$userId is already subscribed to #$courseId".PHP_EOL;
|
|
}
|
|
}
|
|
|