Fix fatal error. Update from 1.11.x

pull/3016/head
Julio Montoya 5 years ago
parent 82056cfb63
commit 57664dde31
  1. 59
      main/inc/lib/api.lib.php
  2. 10
      src/CoreBundle/Repository/CourseRepository.php

@ -1874,34 +1874,59 @@ function api_get_course_path($course_code = null)
/**
* Gets a course setting from the current course_setting table. Try always using integer values.
*
* @param string The name of the setting we want from the table
* @param string Optional: course code
* @param string $setting_name
* @param string $settingName The name of the setting we want from the table
* @param array $courseInfo
* @param bool $force force checking the value in the database
*
* @return mixed The value of that setting in that table. Return -1 if not found.
*/
function api_get_course_setting($setting_name, $course_code = null)
function api_get_course_setting($settingName, $courseInfo = [], $force = false)
{
$course_info = api_get_course_info($course_code);
$table = Database::get_course_table(TABLE_COURSE_SETTING);
$setting_name = Database::escape_string($setting_name);
if (!empty($course_info['real_id']) && !empty($setting_name)) {
$sql = "SELECT value FROM $table
WHERE c_id = {$course_info['real_id']} AND variable = '$setting_name'";
if (empty($courseInfo)) {
$courseInfo = api_get_course_info();
}
if (empty($courseInfo) || empty($settingName)) {
return -1;
}
$courseId = isset($courseInfo['real_id']) && !empty($courseInfo['real_id']) ? $courseInfo['real_id'] : 0;
if (empty($courseId)) {
return -1;
}
static $courseSettingInfo = [];
if ($force) {
$courseSettingInfo = [];
}
if (!isset($courseSettingInfo[$courseId])) {
$table = Database::get_course_table(TABLE_COURSE_SETTING);
$settingName = Database::escape_string($settingName);
$sql = "SELECT variable, value FROM $table
WHERE c_id = $courseId ";
$res = Database::query($sql);
if (Database::num_rows($res) > 0) {
$row = Database::fetch_array($res);
if ($setting_name === 'email_alert_manager_on_new_quiz') {
if (!is_null($row['value'])) {
$result = explode(',', $row['value']);
$row['value'] = $result;
$result = Database::store_result($res, 'ASSOC');
$courseSettingInfo[$courseId] = array_column($result, 'value', 'variable');
if (isset($courseSettingInfo[$courseId]['email_alert_manager_on_new_quiz'])) {
$value = $courseSettingInfo[$courseId]['email_alert_manager_on_new_quiz'];
if (!is_null($value)) {
$result = explode(',', $value);
$courseSettingInfo[$courseId]['email_alert_manager_on_new_quiz'] = $result;
}
}
return $row['value'];
}
}
if (isset($courseSettingInfo[$courseId]) && isset($courseSettingInfo[$courseId][$settingName])) {
return $courseSettingInfo[$courseId][$settingName];
}
return -1;
}

@ -15,6 +15,16 @@ use Doctrine\ORM\QueryBuilder;
*/
class CourseRepository extends ResourceRepository
{
/**
* @param string $code
*
* @return Course
*/
public function findOneByCode($code)
{
return $this->findOneBy(['code' => $code]);
}
/**
* Get all users that are registered in the course. No matter the status.
*

Loading…
Cancel
Save