$form->addRule('objetives', get_lang('ThisFieldIsRequired'), 'required'); // Target audience of the requested course. $form->addElement('textarea', 'target_audience', get_lang('TargetAudience'), array('style' => 'border:#A5ACB2 solid 1px; font-family:arial,verdana,helvetica,sans-serif; font-size:12px', 'rows' => '3', 'cols' => '116')); $form->addRule('target_audience', get_lang('ThisFieldIsRequired'), 'required'); // Course language. $form->addElement('select_language', 'course_language', get_lang('Ln')); $form->applyFilter('select_language', 'html_filter'); // Exemplary content checkbox. $form->addElement('checkbox', 'exemplary_content', get_lang('FillWithExemplaryContent')); // Submit buttons. $submit_buttons[] = $form->addButtonSave(get_lang('Save'), 'save_button', true); if ($course_request_info['status'] != COURSE_REQUEST_ACCEPTED) { $submit_buttons[] = $form->addButtonSave(get_lang('Accept'), 'accept_button', true); } if ($course_request_info['status'] != COURSE_REQUEST_ACCEPTED && $course_request_info['status'] != COURSE_REQUEST_REJECTED) { $submit_buttons[] = $form->addButtonCancel(get_lang('Reject'), 'reject_button', true); } if ($course_request_info['status'] != COURSE_REQUEST_ACCEPTED && intval($course_request_info['info']) <= 0) { $submit_buttons[] = $form->addButtonPreview(get_lang('AskAdditionalInfo'), 'ask_info_button', true); } $form->addGroup($submit_buttons); // Hidden form fields. $form->addElement('hidden', 'user_id'); $form->addElement('hidden', 'directory'); $form->addElement('hidden', 'visual_code'); $form->addElement('hidden', 'request_date'); $form->addElement('hidden', 'status'); $form->addElement('hidden', 'info'); // Set the default values based on the corresponding database record. $values['wanted_code'] = $course_request_info['code']; $values['user_id'] = $course_request_info['user_id'];
foreach ($groupList as $group) { $groupIdList[$group['id']] = $group['name']; } echo Display::page_subheader(get_lang('CalendarList')); echo '<div class="attendance-calendar-list">'; if (!empty($attendance_calendar)) { foreach ($attendance_calendar as $calendar) { echo '<div class="attendance-calendar-row">'; if (isset($action) && $action == 'calendar_edit' && (isset($calendar_id) && $calendar_id == $calendar['id'])) { // calendar edit form echo '<div class="attendance-calendar-edit">'; $form = new FormValidator('attendance_calendar_edit', 'POST', 'index.php?action=calendar_edit&attendance_id=' . $attendance_id . '&calendar_id=' . $calendar_id . '&' . api_get_cidreq() . $param_gradebook, ''); $form->addElement('date_time_picker', 'date_time', '', array('form_name' => 'attendance_calendar_edit'), 5); $defaults['date_time'] = $calendar['date_time']; $form->addButtonSave(get_lang('Save')); $form->addButtonCancel(get_lang('Cancel'), 'cancel'); $form->setDefaults($defaults); $form->display(); echo '</div>'; } else { echo Display::return_icon('lp_calendar_event.png', get_lang('DateTime')) . ' ' . substr($calendar['date_time'], 0, strlen($calendar['date_time']) - 3) . ' '; if (isset($calendar['groups']) && !empty($calendar['groups'])) { foreach ($calendar['groups'] as $group) { echo ' ' . Display::label($groupIdList[$group['group_id']]); } } if (!$is_locked_attendance || api_is_platform_admin()) { if (api_is_allowed_to_edit()) { echo '<span style="margin-left:20px;">'; echo '<a href="index.php?' . api_get_cidreq() . '&action=calendar_edit&calendar_id=' . intval($calendar['id']) . '&attendance_id=' . $attendance_id . $param_gradebook . '">' . Display::return_icon('edit.png', get_lang('Edit'), array('style' => 'vertical-align:middle'), ICON_SIZE_SMALL) . '</a> '; echo '<a onclick="javascript:if(!confirm(\'' . get_lang('AreYouSureToDelete') . '\')) return false;" href="index.php?' . api_get_cidreq() . $param_gradebook . '&action=calendar_delete&calendar_id=' . intval($calendar['id']) . '&attendance_id=' . $attendance_id . '">' . Display::return_icon('delete.png', get_lang('Delete'), array('style' => 'vertical-align:middle'), ICON_SIZE_SMALL) . '</a>';
unset($_SESSION['bc_sale_id']); header('Location: ' . api_get_path(WEB_PLUGIN_PATH) . 'buycourses/index.php'); exit; } $messageTemplate = new Template(); $messageTemplate->assign('user', $userInfo); $messageTemplate->assign('sale', ['date' => api_format_date($sale['date'], DATE_FORMAT_LONG_NO_DAY), 'product' => $sale['product_name'], 'currency' => $currency['iso_code'], 'price' => $sale['price'], 'reference' => $sale['reference']]); $messageTemplate->assign('transfer_accounts', $transferAccounts); api_mail_html($userInfo['complete_name'], $userInfo['email'], $plugin->get_lang('bc_subject'), $messageTemplate->fetch('buycourses/view/message_transfer.tpl')); Display::addFlash(Display::return_message(sprintf($plugin->get_lang('PurchaseStatusX'), $plugin->get_lang('PendingReasonByTransfer')), 'success', false)); unset($_SESSION['bc_sale_id']); header('Location: ' . api_get_path(WEB_PLUGIN_PATH) . 'buycourses/src/course_catalog.php'); exit; } $form->addButton('confirm', $plugin->get_lang('ConfirmOrder'), 'check', 'success'); $form->addButtonCancel($plugin->get_lang('CancelOrder'), 'cancel'); $template = new Template(); if ($buyingCourse) { $template->assign('course', $course); } elseif ($buyingSession) { $template->assign('session', $session); } $template->assign('buying_course', $buyingCourse); $template->assign('buying_session', $buyingSession); $template->assign('title', $sale['product_name']); $template->assign('price', $sale['price']); $template->assign('currency', $sale['currency_id']); $template->assign('user', $userInfo); $template->assign('transfer_accounts', $transferAccounts); $template->assign('form', $form->returnForm()); $content = $template->fetch('buycourses/view/process_confirm.tpl');
/** * This function allows the platform admin to choose the default stylesheet * @author Patrick Cool <*****@*****.**>, Ghent University * @author Julio Montoya <*****@*****.**>, Chamilo */ function handle_stylesheets() { global $_configuration; // Current style. $currentstyle = api_get_setting('stylesheets'); $is_style_changeable = false; if ($_configuration['access_url'] != 1) { $style_info = api_get_settings('stylesheets', '', 1, 0); $url_info = api_get_access_url($_configuration['access_url']); if ($style_info[0]['access_url_changeable'] == 1 && $url_info['active'] == 1) { $is_style_changeable = true; } } else { $is_style_changeable = true; } $form = new FormValidator('stylesheet_upload', 'post', 'settings.php?category=Stylesheets#tabs-3'); $form->addElement('text', 'name_stylesheet', get_lang('NameStylesheet'), array('size' => '40', 'maxlength' => '40')); $form->addRule('name_stylesheet', get_lang('ThisFieldIsRequired'), 'required'); $form->addElement('file', 'new_stylesheet', get_lang('UploadNewStylesheet')); $allowed_file_types = array('css', 'zip', 'jpeg', 'jpg', 'png', 'gif', 'ico', 'psd', 'xcf', 'svg', 'webp', 'woff', 'woff2'); $form->addRule('new_stylesheet', get_lang('InvalidExtension') . ' (' . implode(',', $allowed_file_types) . ')', 'filetype', $allowed_file_types); $form->addRule('new_stylesheet', get_lang('ThisFieldIsRequired'), 'required'); $form->addButtonUpload(get_lang('Upload'), 'stylesheet_upload'); $show_upload_form = false; if (!is_writable(CSS_UPLOAD_PATH)) { Display::display_error_message(CSS_UPLOAD_PATH . get_lang('IsNotWritable')); } else { // Uploading a new stylesheet. if ($_configuration['access_url'] == 1) { $show_upload_form = true; } else { if ($is_style_changeable) { $show_upload_form = true; } } } // Stylesheet upload. if (isset($_POST['stylesheet_upload'])) { if ($form->validate()) { $values = $form->exportValues(); $picture_element = $form->getElement('new_stylesheet'); $picture = $picture_element->getValue(); $result = upload_stylesheet($values, $picture); // Add event to the system log. $user_id = api_get_user_id(); $category = $_GET['category']; Event::addEvent(LOG_CONFIGURATION_SETTINGS_CHANGE, LOG_CONFIGURATION_SETTINGS_CATEGORY, $category, api_get_utc_datetime(), $user_id); if ($result) { Display::display_confirmation_message(get_lang('StylesheetAdded')); } } } $form_change = new FormValidator('stylesheet_upload', 'post', api_get_self() . '?category=Stylesheets', null, array('id' => 'stylesheets_id')); $list_of_names = array(); $selected = ''; $dirpath = ''; $safe_style_dir = ''; if ($handle = @opendir(CSS_UPLOAD_PATH)) { $counter = 1; while (false !== ($style_dir = readdir($handle))) { if (substr($style_dir, 0, 1) == '.') { // Skip directories starting with a '.' continue; } $dirpath = CSS_UPLOAD_PATH . $style_dir; if (is_dir($dirpath)) { if ($style_dir != '.' && $style_dir != '..') { if (isset($_POST['style']) && (isset($_POST['preview']) || isset($_POST['download'])) && $_POST['style'] == $style_dir) { $safe_style_dir = $style_dir; } else { if ($currentstyle == $style_dir || $style_dir == 'chamilo' && !$currentstyle) { if (isset($_POST['style'])) { $selected = Database::escape_string($_POST['style']); } else { $selected = $style_dir; } } } $show_name = ucwords(str_replace('_', ' ', $style_dir)); if ($is_style_changeable) { $list_of_names[$style_dir] = $show_name; } $counter++; } } } closedir($handle); } // Sort styles in alphabetical order. asort($list_of_names); $select_list = array(); foreach ($list_of_names as $style_dir => $item) { $select_list[$style_dir] = $item; } $styles =& $form_change->addElement('select', 'style', get_lang('NameStylesheet'), $select_list); $styles->setSelected($selected); if ($form_change->validate()) { // Submit stylesheets. if (isset($_POST['save'])) { store_stylesheets(); Display::display_normal_message(get_lang('Saved')); } if (isset($_POST['download'])) { $arch = api_get_path(SYS_ARCHIVE_PATH) . $safe_style_dir . '.zip'; $dir = api_get_path(SYS_CSS_PATH) . 'themes/' . $safe_style_dir; if (is_dir($dir)) { $zip = new PclZip($arch); // Remove path prefix except the style name and put file on disk $zip->create($dir, PCLZIP_OPT_REMOVE_PATH, substr($dir, 0, -strlen($safe_style_dir))); //@TODO: use more generic script to download. $str = '<a class="btn btn-primary btn-large" href="' . api_get_path(WEB_CODE_PATH) . 'course_info/download.php?archive=' . str_replace(api_get_path(SYS_ARCHIVE_PATH), '', $arch) . '">' . get_lang('ClickHereToDownloadTheFile') . '</a>'; Display::display_normal_message($str, false); } else { Display::addFlash(Display::return_message(get_lang('FileNotFound'), 'warning')); } } } $logoForm = new FormValidator('logo_upload', 'post', 'settings.php?category=Stylesheets#tabs-2'); $logoForm->addHtml(Display::return_message(sprintf(get_lang('TheLogoMustBeSizeXAndFormatY'), '250 x 70', 'PNG'), 'info')); $dir = api_get_path(SYS_PUBLIC_PATH) . 'css/themes/' . $selected . '/images/'; $url = api_get_path(WEB_CSS_PATH) . 'themes/' . $selected . '/images/'; $logoFileName = 'header-logo.png'; $newLogoFileName = 'header-logo-custom.png'; if (is_file($dir . $newLogoFileName)) { $logoForm->addLabel(get_lang('CurrentLogo'), '<img id="header-logo-custom" src="' . $url . $newLogoFileName . '?' . time() . '">'); } else { $logoForm->addLabel(get_lang('CurrentLogo'), '<img id="header-logo-custom" src="' . $url . $logoFileName . '?' . time() . '">'); } $logoForm->addFile('new_logo', get_lang('UpdateLogo')); $allowedFileTypes = ['png']; if (isset($_POST['logo_reset'])) { if (is_file($dir . $newLogoFileName)) { unlink($dir . $newLogoFileName); Display::display_normal_message(get_lang('ResetToTheOriginalLogo')); echo '<script>' . '$("#header-logo").attr("src","' . $url . $logoFileName . '");' . '</script>'; } } elseif (isset($_POST['logo_upload'])) { $logoForm->addRule('new_logo', get_lang('InvalidExtension') . ' (' . implode(',', $allowedFileTypes) . ')', 'filetype', $allowedFileTypes); $logoForm->addRule('new_logo', get_lang('ThisFieldIsRequired'), 'required'); if ($logoForm->validate()) { $imageInfo = getimagesize($_FILES['new_logo']['tmp_name']); $width = $imageInfo[0]; $height = $imageInfo[1]; if ($width <= 250 && $height <= 70) { if (is_file($dir . $newLogoFileName)) { unlink($dir . $newLogoFileName); } $status = move_uploaded_file($_FILES['new_logo']['tmp_name'], $dir . $newLogoFileName); if ($status) { Display::display_normal_message(get_lang('NewLogoUpdated')); echo '<script>' . '$("#header-logo").attr("src","' . $url . $newLogoFileName . '");' . '</script>'; } else { Display::display_error_message('Error - ' . get_lang('UplNoFileUploaded')); } } else { Display::display_error_message('Error - ' . get_lang('InvalidImageDimensions')); } } } if ($is_style_changeable) { $group = [$form_change->addButtonSave(get_lang('SaveSettings'), 'save', true), $form_change->addButtonPreview(get_lang('Preview'), 'preview', true), $form_change->addButtonDownload(get_lang('Download'), 'download', true)]; $form_change->addGroup($group); $logoGroup = [$logoForm->addButtonUpload(get_lang('Upload'), 'logo_upload', true), $logoForm->addButtonCancel(get_lang('Reset'), 'logo_reset', true)]; $logoForm->addGroup($logoGroup); if ($show_upload_form) { echo '<script> $(function() { $( "#tabs" ).tabs(); }); </script>'; echo Display::tabs(array(get_lang('Update'), get_lang('UpdateLogo'), get_lang('UploadNewStylesheet')), array($form_change->return_form(), $logoForm->return_form(), $form->return_form())); } else { $form_change->display(); } //Little hack to update the logo image in update form when submiting if (isset($_POST['logo_reset'])) { echo '<script>' . '$("#header-logo-custom").attr("src","' . $url . $logoFileName . '");' . '</script>'; } elseif (isset($_POST['logo_upload']) && is_file($dir . $newLogoFileName)) { echo '<script>' . '$("#header-logo-custom").attr("src","' . $url . $newLogoFileName . '");' . '</script>'; } } else { $form_change->freeze(); } }