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. 225
      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
{
@ -170,7 +169,7 @@ class CourseManager
$onlyThisCourseList = []
) {
$courseTable = Database::get_main_table(TABLE_MAIN_COURSE);
$sql = "SELECT course.*, course.id as real_id
$sql = "SELECT course.*, course.id as real_id
FROM $courseTable course ";
if (!empty($urlId)) {
@ -294,7 +293,7 @@ class CourseManager
)
);
return $result['status'];
return @$result['status'];
}
/**
@ -446,11 +445,11 @@ class CourseManager
}
// Unsubscribe user from all blogs in the course.
$sql = "DELETE FROM ".Database::get_course_table(TABLE_BLOGS_REL_USER)."
$sql = "DELETE FROM ".Database::get_course_table(TABLE_BLOGS_REL_USER)."
WHERE c_id = $course_id AND user_id IN ($user_ids)";
Database::query($sql);
$sql = "DELETE FROM ".Database::get_course_table(TABLE_BLOGS_TASKS_REL_USER)."
$sql = "DELETE FROM ".Database::get_course_table(TABLE_BLOGS_TASKS_REL_USER)."
WHERE c_id = $course_id AND user_id IN ($user_ids)";
Database::query($sql);
@ -645,10 +644,10 @@ class CourseManager
return true;
} else {
// Check whether the user has not been already subscribed to the course.
$sql = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)."
WHERE
user_id = $userId AND
relation_type <> ".COURSE_RELATION_TYPE_RRHH." AND
$sql = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)."
WHERE
user_id = $userId AND
relation_type <> ".COURSE_RELATION_TYPE_RRHH." AND
c_id = $courseId
";
if (Database::num_rows(Database::query($sql)) > 0) {
@ -1343,10 +1342,10 @@ class CourseManager
ON
user.id = session_course_user.user_id AND
$sessionCondition
INNER JOIN $course_table course
INNER JOIN $course_table course
ON session_course_user.c_id = course.id AND
$courseCondition
INNER JOIN $sessionTable session
INNER JOIN $sessionTable session
ON session_course_user.session_id = session.id
";
$where[] = ' session_course_user.c_id IS NOT NULL ';
@ -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 {
@ -1381,12 +1380,12 @@ class CourseManager
}
}
$sql .= " FROM ".Database::get_main_table(TABLE_MAIN_USER)." as user
$sql .= " FROM ".Database::get_main_table(TABLE_MAIN_USER)." as user
LEFT JOIN ".Database::get_main_table(TABLE_MAIN_COURSE_USER)." as course_rel_user
ON
ON
user.id = course_rel_user.user_id AND
course_rel_user.relation_type <> ".COURSE_RELATION_TYPE_RRHH."
INNER JOIN $course_table course
INNER JOIN $course_table course
ON course_rel_user.c_id = course.id ";
if (!empty($course_code)) {
@ -1455,8 +1454,8 @@ class CourseManager
if (!empty($searchByKeyword)) {
$searchByKeyword = Database::escape_string($searchByKeyword);
$sql .= " AND (
user.firstname LIKE '$searchByKeyword' OR
user.username LIKE '$searchByKeyword' OR
user.firstname LIKE '$searchByKeyword' OR
user.username LIKE '$searchByKeyword' OR
user.lastname LIKE '$searchByKeyword'
) ";
}
@ -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;
}
@ -1700,7 +1698,7 @@ class CourseManager
$courseId = $courseInfo['real_id'];
$sql = "
SELECT DISTINCT count(user.id) as count
SELECT DISTINCT count(user.id) as count
FROM $tblUser as user
";
$where = [];
@ -2069,12 +2067,12 @@ class CourseManager
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sql = "SELECT DISTINCT
$sql = "SELECT DISTINCT
u.user_id,
u.lastname,
u.firstname,
u.username
FROM $tbl_user u
FROM $tbl_user u
INNER JOIN $tbl_session_course_user scu
ON (u.user_id = scu.user_id)
WHERE
@ -2190,7 +2188,7 @@ class CourseManager
ORDER BY g.name";
} else {
// get all groups even if they are empty
$sql = "SELECT g.id, g.name, g.iid
$sql = "SELECT g.id, g.name, g.iid
FROM ".Database::get_course_table(TABLE_GROUP)." AS g
$session_condition
AND c_id = $course_id";
@ -2377,7 +2375,7 @@ class CourseManager
// Skills
$table = Database::get_main_table(TABLE_MAIN_SKILL_REL_USER);
$argumentation = Database::escape_string(sprintf(get_lang('SkillFromCourseXDeletedSinceThen'), $course['code']));
$sql = "UPDATE $table SET course_id = NULL, session_id = NULL, argumentation = '$argumentation'
$sql = "UPDATE $table SET course_id = NULL, session_id = NULL, argumentation = '$argumentation'
WHERE course_id = $courseId";
Database::query($sql);
@ -2589,7 +2587,7 @@ class CourseManager
$student = api_get_user_info($user_id);
$name_course = $information['title'];
$sql = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)."
$sql = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)."
WHERE c_id = $courseId";
// TODO: Ivan: This is a mistake, please, have a look at it. Intention here is diffcult to be guessed.
@ -2800,12 +2798,12 @@ class CourseManager
if ($adminGetsAllCourses && UserManager::is_admin($user_id)) {
// get the whole courses list
$sql = "SELECT DISTINCT(course.code), course.id as real_id, course.title
FROM $tbl_course course
INNER JOIN $tableCourseUrl url
FROM $tbl_course course
INNER JOIN $tableCourseUrl url
ON (course.id = url.c_id)
WHERE
url.access_url_id = $urlId
$languageCondition
WHERE
url.access_url_id = $urlId
$languageCondition
";
} else {
$withSpecialCourses = $withoutSpecialCourses = '';
@ -2820,7 +2818,7 @@ class CourseManager
}
if (!empty($withSpecialCourses)) {
$sql = "SELECT DISTINCT (course.code),
$sql = "SELECT DISTINCT (course.code),
course.id as real_id,
course.category_code AS category,
course.title
@ -2829,11 +2827,11 @@ class CourseManager
ON course.id = course_rel_user.c_id
LEFT JOIN $tbl_user_course_category user_course_category
ON course_rel_user.user_course_cat = user_course_category.id
INNER JOIN $tableCourseUrl url
ON (course.id = url.c_id)
WHERE url.access_url_id = $urlId
INNER JOIN $tableCourseUrl url
ON (course.id = url.c_id)
WHERE url.access_url_id = $urlId
$withSpecialCourses
$languageCondition
$languageCondition
GROUP BY course.code
ORDER BY user_course_category.sort, course.title, course_rel_user.sort ASC
";
@ -2850,19 +2848,19 @@ class CourseManager
// get course list not auto-register. Use Distinct to avoid multiple
// entries when a course is assigned to a HRD (DRH) as watcher
$sql = "SELECT
DISTINCT(course.code),
course.id as real_id,
$sql = "SELECT
DISTINCT(course.code),
course.id as real_id,
course.category_code AS category,
course.title
FROM $tbl_course course
INNER JOIN $tbl_course_user cru
INNER JOIN $tbl_course_user cru
ON (course.id = cru.c_id)
INNER JOIN $tableCourseUrl url
ON (course.id = url.c_id)
WHERE
url.access_url_id = $urlId AND
cru.user_id = $user_id
INNER JOIN $tableCourseUrl url
ON (course.id = url.c_id)
WHERE
url.access_url_id = $urlId AND
cru.user_id = $user_id
$withoutSpecialCourses
$languageCondition
ORDER BY course.title
@ -2883,12 +2881,12 @@ class CourseManager
}
if ($include_sessions === true) {
$sql = "SELECT DISTINCT (c.code),
c.id as real_id,
$sql = "SELECT DISTINCT (c.code),
c.id as real_id,
c.category_code AS category,
s.id as session_id,
s.name as session_name
FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)." scu
FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)." scu
INNER JOIN $tbl_course c
ON (scu.c_id = c.id)
INNER JOIN ".Database::get_main_table(TABLE_MAIN_SESSION)." s
@ -3049,7 +3047,7 @@ class CourseManager
$sql = 'SELECT sc.id session_category
FROM '.Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY).' sc
INNER JOIN '.Database::get_main_table(TABLE_MAIN_SESSION).' s
ON sc.id = s.session_category_id
ON sc.id = s.session_category_id
WHERE s.id = '.$sessionId;
return Database::result(
@ -3325,7 +3323,7 @@ class CourseManager
$orderBy = ' ORDER BY position';
$extraInnerJoin = " INNER JOIN $tableSessionRelCourse src
ON (c.id = src.c_id AND src.session_id = $sessionId)
INNER JOIN $tableSessionRelCourseRelUser srcru
INNER JOIN $tableSessionRelCourseRelUser srcru
ON (src.session_id = srcru.session_id AND srcru.c_id = src.c_id)
";
}
@ -3333,9 +3331,9 @@ class CourseManager
$whereConditions .= $keywordCondition;
$sql = "$select
FROM $tbl_course c
INNER JOIN $tbl_course_rel_user cru
INNER JOIN $tbl_course_rel_user cru
ON (cru.c_id = c.id)
INNER JOIN $tbl_course_rel_access_url a
INNER JOIN $tbl_course_rel_access_url a
ON (a.c_id = c.id)
$extraInnerJoin
WHERE
@ -3508,8 +3506,8 @@ class CourseManager
code,
subscribe subscr,
unsubscribe unsubscr
FROM $table
WHERE
FROM $table
WHERE
id IN ('".implode("','", $specialCourseList)."')
$languageCondition
GROUP BY code";
@ -3743,7 +3741,7 @@ class CourseManager
course.code as course_code,
user_course_cat,
course_rel_user.sort
FROM $TABLECOURS course
FROM $TABLECOURS course
INNER JOIN $TABLECOURSUSER course_rel_user
ON (course.id = course_rel_user.c_id)
INNER JOIN $TABLE_ACCESS_URL_REL_COURSE url
@ -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)) {
@ -3902,7 +3901,7 @@ class CourseManager
{
$userId = empty($userId) ? api_get_user_id() : (int) $userId;
$table = Database::get_main_table(TABLE_USER_COURSE_CATEGORY);
$sql = "SELECT * FROM $table
$sql = "SELECT * FROM $table
WHERE user_id = $userId
ORDER BY sort ASC
";
@ -4116,9 +4115,9 @@ class CourseManager
if (api_is_platform_admin()) {
$params['edit_actions'] .= api_get_path(WEB_CODE_PATH).'course_info/infocours.php?cidReq='.$course_info['code'];
if ($load_dirs) {
$params['document'] .= '<a
id="document_preview_'.$course_info['real_id'].'_'.$course_info['id_session'].'"
class="document_preview btn btn-default btn-sm"
$params['document'] .= '<a
id="document_preview_'.$course_info['real_id'].'_'.$course_info['id_session'].'"
class="document_preview btn btn-default btn-sm"
href="javascript:void(0);">'.
Display::returnFontAwesomeIcon('folder-open').'</a>';
$params['document'] .= Display::div('', [
@ -4770,7 +4769,7 @@ class CourseManager
login_course_date <= '$now' AND
login_course_date > DATE_SUB('$now', INTERVAL $days DAY) AND
visibility <> ".COURSE_VISIBILITY_CLOSED." AND
visibility <> ".COURSE_VISIBILITY_HIDDEN."
visibility <> ".COURSE_VISIBILITY_HIDDEN."
GROUP BY a.c_id
ORDER BY course_count DESC
LIMIT $limit
@ -4911,15 +4910,15 @@ class CourseManager
$urlId = (int) $urlId;
$sql = "SELECT count(cu.user_id) count
FROM $courseUsers cu
INNER JOIN $table_course_rel_access_url u
ON cu.c_id = u.c_id
$sql = "SELECT count(cu.user_id) count
FROM $courseUsers cu
INNER JOIN $table_course_rel_access_url u
ON cu.c_id = u.c_id
WHERE
relation_type <> ".COURSE_RELATION_TYPE_RRHH." AND
u.access_url_id = $urlId AND
u.access_url_id = $urlId AND
visibility <> ".COURSE_VISIBILITY_CLOSED." AND
visibility <> ".COURSE_VISIBILITY_HIDDEN."
visibility <> ".COURSE_VISIBILITY_HIDDEN."
";
$res = Database::query($sql);
@ -5177,7 +5176,7 @@ class CourseManager
WHERE user_id = $userId AND c_id = $courseId";
$result = Database::query($sql);
if (Database::num_rows($result)) {
$sql = "UPDATE $course_user_table
$sql = "UPDATE $course_user_table
SET status = 1
WHERE c_id = $courseId AND user_id = $userId ";
} else {
@ -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;
}
/**
@ -5837,7 +5884,7 @@ class CourseManager
$category_id = (int) $category_id;
$info = Database::fetch_array(
Database::query(
'SELECT course_code
'SELECT course_code
FROM '.Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY).'
WHERE id = '.$category_id
),
@ -5869,7 +5916,7 @@ class CourseManager
$sql = "SELECT id, code, title
FROM ".Database::get_main_table(TABLE_MAIN_COURSE)."
WHERE $visibility code NOT IN (
SELECT DISTINCT course_code
SELECT DISTINCT course_code
FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE).$dateConditional."
)
ORDER BY id";
@ -6028,18 +6075,18 @@ class CourseManager
}
//AND course_rel_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."
$sql = "SELECT
course.id,
course.title,
course.code,
course.subscribe subscr,
course.unsubscribe unsubscr,
$sql = "SELECT
course.id,
course.title,
course.code,
course.subscribe subscr,
course.unsubscribe unsubscr,
course_rel_user.status status,
course_rel_user.sort sort,
course_rel_user.sort sort,
course_rel_user.user_course_cat user_course_cat
FROM
$TABLECOURS course
INNER JOIN $TABLECOURSUSER course_rel_user
$TABLECOURS course
INNER JOIN $TABLECOURSUSER course_rel_user
ON (course.id = course_rel_user.c_id)
INNER JOIN $TABLE_ACCESS_URL_REL_COURSE url
ON (url.c_id = course.id)
@ -6269,7 +6316,7 @@ class CourseManager
$extraFieldType = EntityExtraField::COURSE_FIELD_TYPE;
$name = Database::escape_string($name);
$sql = "SELECT count(v.item_id) as count
FROM $tableUserFieldValues v
FROM $tableUserFieldValues v
INNER JOIN $tableExtraFields f
ON (f.id = v.field_id)
WHERE value = '$name' AND extra_field_type = $extraFieldType";
@ -6372,8 +6419,8 @@ class CourseManager
];
$table = Database::get_main_table(TABLE_MAIN_COURSE);
$sql = "SELECT count(id) count
FROM $table
$sql = "SELECT count(id) count
FROM $table
WHERE visibility IN (".implode(',', $visibility).")";
$result = Database::query($sql);
$row = Database::fetch_array($result);
@ -6394,7 +6441,7 @@ class CourseManager
$table = Database::get_main_table(TABLE_MAIN_COURSE);
$tableExercise = Database::get_course_table(TABLE_QUIZ_TEST);
$sql = "SELECT count(e.iid) count
$sql = "SELECT count(e.iid) count
FROM $table c INNER JOIN $tableExercise e
ON (c.id = e.c_id)
WHERE e.active <> -1 AND visibility IN (".implode(',', $visibility).")";

Loading…
Cancel
Save