Add save course changes in track e default BT#17347

ofaj
Julio Montoya 5 years ago
parent 28ef368cae
commit 69d9c5bea9
  1. 32
      main/admin/course_edit.php
  2. 28
      main/course_info/infocours.php
  3. 8
      main/inc/lib/api.lib.php
  4. 73
      main/inc/lib/course.lib.php

@ -1,13 +1,11 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\CourseCategory;
use Chamilo\CoreBundle\Entity\Repository\CourseCategoryRepository;
use Chamilo\UserBundle\Entity\User;
/**
* @package chamilo.admin
*/
$cidReset = true;
require_once __DIR__.'/../inc/global.inc.php';
@ -35,8 +33,8 @@ if (empty($courseInfo)) {
}
$tool_name = get_lang('ModifyCourseInfo');
$interbreadcrumb[] = ["url" => 'index.php', "name" => get_lang('PlatformAdmin')];
$interbreadcrumb[] = ["url" => "course_list.php", "name" => get_lang('CourseList')];
$interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('PlatformAdmin')];
$interbreadcrumb[] = ['url' => 'course_list.php', 'name' => get_lang('CourseList')];
// Get all course categories
$table_user = Database::get_main_table(TABLE_MAIN_USER);
@ -47,7 +45,9 @@ $courseId = $courseInfo['real_id'];
$table_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname';
$sql = "SELECT user.user_id,lastname,firstname
FROM $table_user as user,$table_course_user as course_user
FROM
$table_user as user,
$table_course_user as course_user
WHERE
course_user.status='1' AND
course_user.user_id=user.user_id AND
@ -108,7 +108,7 @@ $form = new FormValidator(
'post',
api_get_self().'?id='.$courseId
);
$form->addElement('header', get_lang('Course').' #'.$courseInfo['real_id'].' '.$course_code);
$form->addHeader(get_lang('Course').' #'.$courseInfo['real_id'].' '.$course_code);
$form->addElement('hidden', 'code', $course_code);
//title
@ -184,11 +184,10 @@ if ($countCategories >= 100) {
}
$courseTeacherNames = [];
foreach ($course_teachers as $courseTeacherId) {
/** @var User $courseTeacher */
$courseTeacher = UserManager::getRepository()->find($courseTeacherId);
$courseTeacherNames[$courseTeacher->getUserId()] = UserManager::formatUserFullName($courseTeacher, true);
$courseTeacherNames[$courseTeacher->getId()] = UserManager::formatUserFullName($courseTeacher, true);
}
$form->addSelectAjax(
@ -267,7 +266,13 @@ $group[] = $form->createElement('radio', 'subscribe', null, get_lang('Denied'),
$form->addGroup($group, '', get_lang('Subscription'));
$group = [];
$group[] = $form->createElement('radio', 'unsubscribe', get_lang('Unsubscription'), get_lang('AllowedToUnsubscribe'), 1);
$group[] = $form->createElement(
'radio',
'unsubscribe',
get_lang('Unsubscription'),
get_lang('AllowedToUnsubscribe'),
1
);
$group[] = $form->createElement('radio', 'unsubscribe', null, get_lang('NotAllowedToUnsubscribe'), 0);
$form->addGroup($group, '', get_lang('Unsubscription'));
@ -303,7 +308,6 @@ $form->addButtonUpdate(get_lang('ModifyCourseInfo'));
$courseInfo['disk_quota'] = round(DocumentManager::get_course_quota($courseInfo['code']) / 1024 / 1024, 1);
$courseInfo['real_code'] = $courseInfo['code'];
$courseInfo['add_teachers_to_sessions_courses'] = isset($courseInfo['add_teachers_to_sessions_courses']) ? $courseInfo['add_teachers_to_sessions_courses'] : 0;
$form->setDefaults($courseInfo);
// Validate form
@ -371,6 +375,7 @@ if ($form->validate()) {
Database::query($sql);
$courseInfoBeforeUpdate = api_get_course_info_by_id($courseId);
$title = str_replace('&amp;', '&', $title);
$params = [
'course_language' => $course_language,
@ -385,6 +390,7 @@ if ($form->validate()) {
'unsubscribe' => $unsubscribe,
];
Database::update($course_table, $params, ['id = ?' => $courseId]);
CourseManager::saveSettingChanges($courseInfoBeforeUpdate, $params);
// update the extra fields
$courseFieldValue = new ExtraFieldValue('course');
@ -450,10 +456,8 @@ if ($form->validate()) {
Display::addFlash(Display::return_message(get_lang('ItemUpdated').': '.$message, 'info', false));
if ($visual_code_is_used) {
Display::addFlash(Display::return_message($warn));
header('Location: course_list.php');
} else {
header('Location: course_list.php');
}
header('Location: course_list.php');
exit;
}

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**
@ -12,8 +13,6 @@
* @author Patrick Cool <patrick.cool@UGent.be>
* @author Roan Embrechts, refactoring and improved course visibility|subscribe|unsubscribe options
* @author Julio Montoya <gugli100@gmail.com> Jquery support + lots of fixes
*
* @package chamilo.course_info
*/
require_once __DIR__.'/../inc/global.inc.php';
$current_course_tool = TOOL_COURSE_SETTING;
@ -44,7 +43,7 @@ if (!$is_allowedToEdit) {
$htmlHeadXtra[] = api_get_css_asset('cropper/dist/cropper.min.css');
$htmlHeadXtra[] = api_get_asset('cropper/dist/cropper.min.js');
$show_delete_watermark_text_message = false;
if (api_get_setting('pdf_export_watermark_by_course') == 'true') {
if (api_get_setting('pdf_export_watermark_by_course') === 'true') {
if (isset($_GET['delete_watermark'])) {
PDF::delete_watermark($course_code);
$show_delete_watermark_text_message = true;
@ -161,7 +160,7 @@ $form->addRule(
);
$form->addElement('checkbox', 'delete_picture', null, get_lang('DeletePicture'));
if (api_get_setting('pdf_export_watermark_by_course') == 'true') {
if (api_get_setting('pdf_export_watermark_by_course') === 'true') {
$url = PDF::get_watermark($course_code);
$form->addText('pdf_export_watermark_text', get_lang('PDFExportWatermarkTextTitle'), false, ['size' => '60']);
$form->addElement('file', 'pdf_export_watermark_path', get_lang('AddWaterMark'));
@ -180,7 +179,7 @@ if (api_get_setting('pdf_export_watermark_by_course') == 'true') {
);
}
if (api_get_setting('allow_course_theme') == 'true') {
if (api_get_setting('allow_course_theme') === 'true') {
$group = [];
$group[] = $form->createElement(
'SelectTheme',
@ -308,7 +307,7 @@ $form->addPanelOption(
// Documents
$globalGroup = [];
if (api_get_setting('documents_default_visibility_defined_in_course') == 'true') {
if (api_get_setting('documents_default_visibility_defined_in_course') === 'true') {
$group = [
$form->createElement('radio', 'documents_default_visibility', null, get_lang('Visible'), 'visible'),
$form->createElement('radio', 'documents_default_visibility', null, get_lang('Invisible'), 'invisible'),
@ -633,7 +632,7 @@ $group[] = $form->createElement(
$group[] = $form->createElement('radio', 'enable_lp_auto_launch', null, get_lang('Deactivate'), 0);
$form->addGroup($group, '', [get_lang('LPAutoLaunch')]);
if (api_get_setting('allow_course_theme') == 'true') {
if (api_get_setting('allow_course_theme') === 'true') {
// Allow theme into Learning path
$group = [];
$group[] = $form->createElement(
@ -678,7 +677,7 @@ if ($allowLPReturnLink === 'true') {
2
),
];
$form->addGroup($group, '', [get_lang("LpReturnLink")]);
$form->addGroup($group, '', [get_lang('LpReturnLink')]);
}
$exerciseInvisible = api_get_setting('exercise_invisible_in_session');
@ -966,6 +965,12 @@ if ($form->validate() && is_settings_editable()) {
$picture['tmp_name'],
$updateValues['picture_crop_result']
);
Event::addEvent(
LOG_COURSE_SETTINGS_CHANGED,
'course_picture',
$picture['name']
);
}
$visibility = $updateValues['visibility'];
@ -1016,8 +1021,6 @@ if ($form->validate() && is_settings_editable()) {
}
$activeLegal = isset($updateValues['activate_legal']) ? $updateValues['activate_legal'] : 0;
$table_course = Database::get_main_table(TABLE_MAIN_COURSE);
$params = [
'title' => $updateValues['title'],
'course_language' => $updateValues['course_language'],
@ -1032,7 +1035,9 @@ if ($form->validate() && is_settings_editable()) {
'registration_code' => $updateValues['course_registration_password'],
'show_score' => $updateValues['show_score'],
];
Database::update($table_course, $params, ['id = ?' => $courseId]);
$table = Database::get_main_table(TABLE_MAIN_COURSE);
Database::update($table, $params, ['id = ?' => $courseId]);
CourseManager::saveSettingChanges($_course, $params);
// Insert/Updates course_settings table
foreach ($courseSettings as $setting) {
@ -1044,6 +1049,7 @@ if ($form->validate() && is_settings_editable()) {
api_get_course_int_id()
);
}
// update the extra fields
$courseFieldValue = new ExtraFieldValue('course');
$courseFieldValue->saveFieldValues($updateValues);

@ -175,6 +175,7 @@ define('DIR_HOTPOTATOES', '/HotPotatoes_files');
// event logs types
define('LOG_COURSE_DELETE', 'course_deleted');
define('LOG_COURSE_CREATE', 'course_created');
define('LOG_COURSE_SETTINGS_CHANGED', 'course_settings_changed');
// @todo replace 'soc_gr' with social_group
define('LOG_GROUP_PORTAL_CREATED', 'soc_gr_created');
@ -206,7 +207,6 @@ define('LOG_SESSION_ADD_USER', 'session_add_user');
define('LOG_SESSION_DELETE_USER', 'session_delete_user');
define('LOG_SESSION_ADD_COURSE', 'session_add_course');
define('LOG_SESSION_DELETE_COURSE', 'session_delete_course');
define('LOG_SESSION_CATEGORY_CREATE', 'session_cat_created'); //changed in 1.9.8
define('LOG_SESSION_CATEGORY_DELETE', 'session_cat_deleted'); //changed in 1.9.8
define('LOG_CONFIGURATION_SETTINGS_CHANGE', 'settings_changed');
@ -215,20 +215,15 @@ define('LOG_SUBSCRIBE_USER_TO_COURSE', 'user_subscribed');
define('LOG_UNSUBSCRIBE_USER_FROM_COURSE', 'user_unsubscribed');
define('LOG_ATTEMPTED_FORCED_LOGIN', 'attempted_forced_login');
define('LOG_PLUGIN_CHANGE', 'plugin_changed');
define('LOG_HOMEPAGE_CHANGED', 'homepage_changed');
define('LOG_PROMOTION_CREATE', 'promotion_created');
define('LOG_PROMOTION_DELETE', 'promotion_deleted');
define('LOG_CAREER_CREATE', 'career_created');
define('LOG_CAREER_DELETE', 'career_deleted');
define('LOG_USER_PERSONAL_DOC_DELETED', 'user_doc_deleted');
define('LOG_WIKI_ACCESS', 'wiki_page_view');
// All results from an exercise
define('LOG_EXERCISE_RESULT_DELETE', 'exe_result_deleted');
// Logs only the one attempt
define('LOG_EXERCISE_ATTEMPT_DELETE', 'exe_attempt_deleted');
define('LOG_LP_ATTEMPT_DELETE', 'lp_attempt_deleted');
@ -2271,6 +2266,7 @@ function api_format_course_array($course_data)
$_course['extLink']['url'] = $course_data['department_url'];
$_course['extLink']['name'] = $course_data['department_name'];
$_course['categoryCode'] = $course_data['faCode'];
$_course['category_code'] = $course_data['faCode'];
$_course['categoryName'] = $course_data['faName'];
$_course['visibility'] = $course_data['visibility'];
$_course['subscribe_allowed'] = $course_data['subscribe'];

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt*/
use Chamilo\CoreBundle\Entity\Course;
@ -19,8 +20,6 @@ use ChamiloSession as Session;
* but not available in standard Chamilo).
*
* There are probably some places left with the wrong code.
*
* @package chamilo.library
*/
class CourseManager
{
@ -294,7 +293,7 @@ class CourseManager
)
);
return $result['status'];
return @$result['status'];
}
/**
@ -1354,7 +1353,7 @@ class CourseManager
// 2 = coach
// 0 = student
if (isset($filter_by_status)) {
$filter_by_status = intval($filter_by_status);
$filter_by_status = (int) $filter_by_status;
$filter_by_status_condition = " session_course_user.status = $filter_by_status AND ";
}
} else {
@ -1489,6 +1488,7 @@ class CourseManager
if ($return_count) {
return $user['count'];
}
$report_info = [];
$user_info = $user;
$user_info['status'] = $user['status'];
@ -1505,7 +1505,6 @@ class CourseManager
if ($add_reports) {
if ($resumed_report) {
$extra = [];
if (!empty($extra_fields)) {
foreach ($extra_fields as $extra) {
if (in_array($extra['1'], $extra_field)) {
@ -1520,7 +1519,6 @@ class CourseManager
$row_key = '-1';
$name = '-';
if (!empty($extra)) {
if (!empty($user_data[$extra['1']])) {
$row_key = $user_data[$extra['1']];
@ -1576,7 +1574,7 @@ class CourseManager
}
foreach ($extra_fields as $extra) {
if ($extra['1'] == 'ruc') {
if ($extra['1'] === 'ruc') {
continue;
}
@ -3767,6 +3765,7 @@ class CourseManager
// Browse through all courses.
$courseAdded = [];
$courseList = [];
while ($row = Database::fetch_array($result)) {
$course_info = api_get_course_info_by_id($row['id']);
if (empty($course_info)) {
@ -5355,13 +5354,23 @@ class CourseManager
$value = implode(',', $value);
}
if (self::hasCourseSetting($variable, $courseId)) {
$settingFromDatabase = self::getCourseSetting($variable, $courseId);
if (!empty($settingFromDatabase)) {
// Update
Database::update(
$courseSettingTable,
['value' => $value],
['variable = ? AND c_id = ?' => [$variable, $courseId]]
);
if ($settingFromDatabase['value'] != $value) {
Event::addEvent(
LOG_COURSE_SETTINGS_CHANGED,
$variable,
$settingFromDatabase['value']." -> $value"
);
}
} else {
// Create
Database::insert(
@ -5373,29 +5382,67 @@ class CourseManager
'variable' => $variable,
]
);
Event::addEvent(
LOG_COURSE_SETTINGS_CHANGED,
$variable,
$value
);
}
return true;
}
/**
* Check if course setting exists.
* Get course setting.
*
* @param string $variable
* @param int $courseId
*
* @return bool
* @return array
*/
public static function hasCourseSetting($variable, $courseId)
public static function getCourseSetting($variable, $courseId)
{
$courseSetting = Database::get_course_table(TABLE_COURSE_SETTING);
$courseId = (int) $courseId;
$variable = Database::escape_string($variable);
$sql = "SELECT variable FROM $courseSetting
$sql = "SELECT variable, value FROM $courseSetting
WHERE c_id = $courseId AND variable = '$variable'";
$result = Database::query($sql);
return Database::num_rows($result) > 0;
return Database::fetch_array($result);
}
public static function saveSettingChanges($courseInfo, $params)
{
if (empty($courseInfo) || empty($params)) {
return false;
}
$userId = api_get_user_id();
$now = api_get_utc_datetime();
foreach ($params as $name => $value) {
$emptyValue = ' - ';
if (isset($courseInfo[$name]) && $courseInfo[$name] != $value) {
if ('' !== $courseInfo[$name]) {
$emptyValue = $courseInfo[$name];
}
$changedTo = $emptyValue.' -> '.$value;
Event::addEvent(
LOG_COURSE_SETTINGS_CHANGED,
$name,
$changedTo,
$now,
$userId,
$courseInfo['real_id']
);
}
}
return true;
}
/**

Loading…
Cancel
Save