parent
b7f817368c
commit
b3807cb25f
|
@ -0,0 +1,190 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
|
||||||
|
use Chamilo\CoreBundle\Entity\Session; |
||||||
|
|
||||||
|
require_once __DIR__.'/../inc/global.inc.php'; |
||||||
|
|
||||||
|
$sessionId = api_get_session_id(); |
||||||
|
$sessionUrl = api_get_path(WEB_CODE_PATH).'session/resume_session.php?id_session='.$sessionId; |
||||||
|
$selfUrl = api_get_self()."?session_id=$sessionId"; |
||||||
|
|
||||||
|
api_protect_admin_script(true); |
||||||
|
|
||||||
|
$isAgendaRemindersEnabled = api_get_configuration_value('agenda_reminders'); |
||||||
|
|
||||||
|
if (!$isAgendaRemindersEnabled) { |
||||||
|
api_not_allowed(true); |
||||||
|
} |
||||||
|
|
||||||
|
$tblPersonalAgenda = Database::get_main_table(TABLE_PERSONAL_AGENDA); |
||||||
|
|
||||||
|
$tags = AnnouncementManager::getTags([ |
||||||
|
'((course_title))', |
||||||
|
'((course_link))', |
||||||
|
'((teachers))', |
||||||
|
'((coaches))', |
||||||
|
]); |
||||||
|
$tags[] = '((date_start))'; |
||||||
|
$tags[] = '((date_end))'; |
||||||
|
|
||||||
|
$tagsHelp = '<strong>'.get_lang('Tags').'</strong>' |
||||||
|
.'<pre>'.implode("\n", $tags).'</pre>'; |
||||||
|
|
||||||
|
$fileHelpText = get_lang('ImportCSVFileLocation').'<br>' |
||||||
|
.Display::url( |
||||||
|
get_lang('ExampleCSVFile'), |
||||||
|
'importCourseEventInSessionExample.csv', |
||||||
|
[ |
||||||
|
'target' => '_blank', |
||||||
|
'download' => 'importCourseEventInSessionExample.csv', |
||||||
|
] |
||||||
|
) |
||||||
|
.'<pre>StartDate;EndDate<br>xxx;YYYY-MM-DD HH:ii:ss;YYYY-MM-DD HH:ii:ss</pre>'; |
||||||
|
|
||||||
|
$form = new FormValidator('agenda_reminders', 'post', $selfUrl); |
||||||
|
$form->addHeader(get_lang('CsvImport')); |
||||||
|
$form->addFile( |
||||||
|
'events_file', |
||||||
|
[get_lang('ImportAsCSV'), $fileHelpText], |
||||||
|
['accept' => 'text/csv'] |
||||||
|
); |
||||||
|
$form->addRule('events_file', get_lang('ThisFieldIsRequired'), 'required'); |
||||||
|
$form->addRule('events_file', get_lang('InvalidExtension'), 'filetype', ['csv']); |
||||||
|
$form->addHeader(get_lang('AddEventInCourseCalendar')); |
||||||
|
$form->addText( |
||||||
|
'title', |
||||||
|
[get_lang('ItemTitle'), get_lang('TagsCanBeUsed')], |
||||||
|
true, |
||||||
|
['cols-size' => [2, 7, 3]] |
||||||
|
); |
||||||
|
$form->applyFilter('title', 'trim'); |
||||||
|
$form->addHtmlEditor( |
||||||
|
'description', |
||||||
|
[get_lang('Description'), null, $tagsHelp], |
||||||
|
true, |
||||||
|
false, |
||||||
|
['ToolbarSet' => 'Minimal', 'cols-size' => [2, 7, 3]] |
||||||
|
); |
||||||
|
//$form->applyFilter('description', 'html_filter_teacher'); |
||||||
|
|
||||||
|
if ($isAgendaRemindersEnabled) { |
||||||
|
$form->addHeader(get_lang('NotifyBeforeTheEventStarts')); |
||||||
|
$form->addHtml('<div id="notification_list"></div>'); |
||||||
|
$form->addButton('add_notification', get_lang('AddNotification'), 'bell-o')->setType('button'); |
||||||
|
} |
||||||
|
|
||||||
|
$form->addHtml('<hr>'); |
||||||
|
$form->addButtonImport(get_lang('Import')); |
||||||
|
|
||||||
|
if ($form->validate()) { |
||||||
|
$values = $form->exportValues(); |
||||||
|
$uploadInfo = pathinfo($_FILES['events_file']['name']); |
||||||
|
$notificationCount = $_POST['notification_count'] ?? []; |
||||||
|
$notificationPeriod = $_POST['notification_period'] ?? []; |
||||||
|
|
||||||
|
$reminders = $notificationCount ? array_map(null, $notificationCount, $notificationPeriod) : []; |
||||||
|
|
||||||
|
if ('csv' !== $uploadInfo['extension']) { |
||||||
|
Display::addFlash( |
||||||
|
Display::return_message(get_lang('NotCSV'), 'error') |
||||||
|
); |
||||||
|
|
||||||
|
header('Location: '.api_get_self()); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
$csvEvents = Import::csvToArray($_FILES['events_file']['tmp_name']); |
||||||
|
|
||||||
|
if (empty($csvEvents)) { |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
$agenda = new Agenda('personal'); |
||||||
|
|
||||||
|
$grouppedData = []; |
||||||
|
|
||||||
|
$studentList = SessionManager::get_users_by_session($sessionId, Session::STUDENT); |
||||||
|
|
||||||
|
foreach ($csvEvents as $csvEvent) { |
||||||
|
$hashDate = base64_encode($csvEvent['StartDate'].'||'.$csvEvent['EndDate']); |
||||||
|
|
||||||
|
foreach ($studentList as $studentInfo) { |
||||||
|
$grouppedData[$hashDate][] = $studentInfo['user_id']; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
foreach ($grouppedData as $hashDate => $userIdList) { |
||||||
|
$dateRange = base64_decode($hashDate); |
||||||
|
list($dateStart, $dateEnd) = explode('||', $dateRange); |
||||||
|
|
||||||
|
$dateStart = api_get_utc_datetime($dateStart); |
||||||
|
$dateEnd = api_get_utc_datetime($dateEnd); |
||||||
|
|
||||||
|
$strDateStart = api_format_date($dateStart, DATE_TIME_FORMAT_LONG_24H); |
||||||
|
$strDateEnd = api_format_date($dateEnd, DATE_TIME_FORMAT_LONG_24H); |
||||||
|
|
||||||
|
foreach ($userIdList as $userId) { |
||||||
|
$title = AnnouncementManager::parseContent($userId, $values['title'], '', $sessionId); |
||||||
|
$content = AnnouncementManager::parseContent($userId, $values['description'], '', $sessionId); |
||||||
|
|
||||||
|
$title = str_replace(['((date_start))', '((date_end))'], [$strDateStart, $strDateEnd], $title); |
||||||
|
$content = str_replace(['((date_start))', '((date_end))'], [$strDateStart, $strDateEnd], $content); |
||||||
|
|
||||||
|
$eventId = Database::insert( |
||||||
|
$tblPersonalAgenda, |
||||||
|
[ |
||||||
|
'user' => $userId, |
||||||
|
'title' => $title, |
||||||
|
'text' => $content, |
||||||
|
'date' => $dateStart, |
||||||
|
'enddate' => $dateEnd, |
||||||
|
'all_day' => 0, |
||||||
|
'color' => '', |
||||||
|
] |
||||||
|
); |
||||||
|
|
||||||
|
if ($isAgendaRemindersEnabled) { |
||||||
|
foreach ($reminders as $reminder) { |
||||||
|
$agenda->addReminder($eventId, $reminder[0], $reminder[1]); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
Display::addFlash( |
||||||
|
Display::return_message(get_lang('FileImported'), 'success') |
||||||
|
); |
||||||
|
|
||||||
|
header("Location: $selfUrl"); |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
$form->setDefaults( |
||||||
|
[ |
||||||
|
'title' => get_lang('ImportSessionAgendaReminderTitleDefault'), |
||||||
|
'description' => get_lang('ImportSessionAgendaReminderDescriptionDefault'), |
||||||
|
] |
||||||
|
); |
||||||
|
|
||||||
|
$htmlHeadXtra[] = '<script>$(function () {' |
||||||
|
.Agenda::getJsForReminders('#agenda_reminders_add_notification') |
||||||
|
.'});</script>'; |
||||||
|
|
||||||
|
$pageTitle = get_lang('ImportCourseEvents'); |
||||||
|
|
||||||
|
$interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('PlatformAdmin')]; |
||||||
|
$interbreadcrumb[] = [ |
||||||
|
'url' => 'session_list.php', |
||||||
|
'name' => get_lang('SessionList'), |
||||||
|
]; |
||||||
|
$interbreadcrumb[] = [ |
||||||
|
'url' => $sessionUrl, |
||||||
|
'name' => get_lang('SessionOverview'), |
||||||
|
]; |
||||||
|
|
||||||
|
$template = new Template($pageTitle); |
||||||
|
$template->assign('header', $pageTitle); |
||||||
|
$template->assign('content', $form->returnForm()); |
||||||
|
$template->display_one_col_template(); |
||||||
Loading…
Reference in new issue