Speed performance: Avoid hitting the DB for a course info

pull/3023/head
Julio Montoya 6 years ago
parent 69a397636b
commit 8f00902c47
  1. 2
      main/forum/forumfunction.inc.php
  2. 2
      main/gradebook/gradebook_display_certificate.php
  3. 4
      main/gradebook/lib/GradebookUtils.php
  4. 2
      main/gradebook/lib/fe/displaygradebook.php
  5. 25
      main/inc/lib/api.lib.php
  6. 7
      main/inc/lib/certificate.lib.php
  7. 4
      main/inc/lib/course.lib.php
  8. 6
      main/inc/lib/document.lib.php
  9. 2
      main/inc/lib/sessionmanager.lib.php
  10. 2
      main/work/work.lib.php
  11. 7
      plugin/bbb/lib/bbb.lib.php
  12. 2
      plugin/bbb/listing.php
  13. 2
      plugin/customcertificate/src/CustomCertificatePlugin.php
  14. 4
      plugin/customcertificate/src/index.php
  15. 4
      plugin/customcertificate/src/print_certificate.php

@ -928,7 +928,7 @@ function store_forum($values, $courseInfo = [], $returnId = false)
$sql = "UPDATE $table_forums SET forum_id = iid WHERE iid = $forumId";
Database::query($sql);
$courseCode = $courseInfo['code'];
$subscribe = (int) api_get_course_setting('subscribe_users_to_forum_notifications', $courseCode);
$subscribe = (int) api_get_course_setting('subscribe_users_to_forum_notifications');
$status = STUDENT;
if (!empty($session_id)) {

@ -81,7 +81,7 @@ $content = '';
$courseCode = api_get_course_id();
$allowExportToZip = api_get_plugin_setting('customcertificate', 'enable_plugin_customcertificate') == 'true' &&
api_get_course_setting('customcertificate_course_enable', $courseCode) == 1;
api_get_course_setting('customcertificate_course_enable', $courseInfo) == 1;
$tags = Certificate::notificationTags();

@ -1433,7 +1433,7 @@ class GradebookUtils
foreach ($courses as $course) {
if (!$includeNonPublicCertificates) {
$allowPublicCertificates = api_get_course_setting('allow_public_certificates', $course['code']);
$allowPublicCertificates = api_get_course_setting('allow_public_certificates', $course);
if (empty($allowPublicCertificates)) {
continue;
@ -1505,7 +1505,7 @@ class GradebookUtils
foreach ($sessionCourses as $course) {
if (!$includeNonPublicCertificates) {
$allowPublicCertificates = api_get_course_setting('allow_public_certificates', $course['code']);
$allowPublicCertificates = api_get_course_setting('allow_public_certificates');
if (empty($allowPublicCertificates)) {
continue;

@ -487,7 +487,7 @@ class DisplayGradebook
Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_MEDIUM).'</a>';
if (api_get_plugin_setting('customcertificate', 'enable_plugin_customcertificate') == 'true' &&
api_get_course_setting('customcertificate_course_enable', $courseCode) == 1
api_get_course_setting('customcertificate_course_enable') == 1
) {
$actionsRight .= '<a href="'.api_get_path(
WEB_PLUGIN_PATH

@ -1905,16 +1905,20 @@ 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 $setting_name The name of the setting we want from the table
* @param string $course_code
* @param array $course_info
*
* @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($setting_name, $course_info = [])
{
$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)) {
if (empty($course_info)) {
$course_info = api_get_course_info();
}
if (isset($course_info['real_id']) && !empty($course_info['real_id']) && !empty($setting_name)) {
$table = Database::get_course_table(TABLE_COURSE_SETTING);
$setting_name = Database::escape_string($setting_name);
$sql = "SELECT value FROM $table
WHERE c_id = {$course_info['real_id']} AND variable = '$setting_name'";
$res = Database::query($sql);
@ -2088,11 +2092,10 @@ function api_remove_in_gradebook()
* particular course, if none given it gets the course info from the session.
*
* @param string $course_code
* @param bool $strict
*
* @return array
*/
function api_get_course_info($course_code = null, $strict = false)
function api_get_course_info($course_code = null)
{
if (!empty($course_code)) {
$course_code = Database::escape_string($course_code);
@ -5048,7 +5051,7 @@ function api_get_visual_theme()
$course_id = api_get_course_id();
if (!empty($course_id)) {
if (api_get_setting('allow_course_theme') == 'true') {
$course_theme = api_get_course_setting('course_theme', $course_id);
$course_theme = api_get_course_setting('course_theme', api_get_course_info());
if (!empty($course_theme) && $course_theme != -1) {
if (!empty($course_theme)) {
@ -7785,8 +7788,8 @@ function api_set_default_visibility(
}
// Read the portal and course default visibility
if ($tool_id == 'documents') {
$visibility = DocumentManager::getDocumentDefaultVisibility($courseCode);
if ($tool_id === 'documents') {
$visibility = DocumentManager::getDocumentDefaultVisibility($courseInfo);
}
api_item_property_update(

@ -604,7 +604,12 @@ class Certificate extends Model
return false;
}
if (api_get_course_setting('allow_public_certificates', $gradeBookInfo['course_code']) == 0) {
$setting = api_get_course_setting(
'allow_public_certificates',
api_get_course_info($gradeBookInfo['course_code'])
);
if ($setting == 0) {
// Printing not allowed
return false;
}

@ -715,7 +715,7 @@ class CourseManager
)
);
$send = api_get_course_setting('email_alert_to_teacher_on_new_user_in_course', $courseCode);
$send = api_get_course_setting('email_alert_to_teacher_on_new_user_in_course', $courseInfo);
if ($send == 1) {
self::email_to_tutor(
@ -731,7 +731,7 @@ class CourseManager
);
}
$subscribe = (int) api_get_course_setting('subscribe_users_to_forum_notifications', $courseCode);
$subscribe = (int) api_get_course_setting('subscribe_users_to_forum_notifications', $courseInfo);
if ($subscribe === 1) {
require_once api_get_path(SYS_CODE_PATH).'forum/forumfunction.inc.php';
$forums = get_forums(0, $courseCode, true, $sessionId);

@ -4160,11 +4160,11 @@ class DocumentManager
}
/**
* @param string $courseCode
* @param array $courseInfo
*
* @return string 'visible' or 'invisible' string
*/
public static function getDocumentDefaultVisibility($courseCode)
public static function getDocumentDefaultVisibility($courseInfo)
{
$settings = api_get_setting('tool_visible_by_default_at_creation');
$defaultVisibility = 'visible';
@ -4179,7 +4179,7 @@ class DocumentManager
}
if (api_get_setting('documents_default_visibility_defined_in_course') == 'true') {
$courseVisibility = api_get_course_setting('documents_default_visibility', $courseCode);
$courseVisibility = api_get_course_setting('documents_default_visibility', $courseInfo);
if (!empty($courseVisibility) && in_array($courseVisibility, ['visible', 'invisible'])) {
$defaultVisibility = $courseVisibility;
}

@ -2287,7 +2287,7 @@ class SessionManager
$course_code = Database::escape_string($course_code);
$courseInfo = api_get_course_info($course_code);
$courseId = $courseInfo['real_id'];
$subscribe = (int) api_get_course_setting('subscribe_users_to_forum_notifications', $course_code);
$subscribe = (int) api_get_course_setting('subscribe_users_to_forum_notifications', $courseInfo);
$forums = [];
if ($subscribe === 1) {
require_once api_get_path(SYS_CODE_PATH).'forum/forumfunction.inc.php';

@ -3432,7 +3432,7 @@ function addWorkComment($courseInfo, $userId, $parentWork, $work, $data)
}
}
$sendNotification = api_get_course_setting('email_to_teachers_on_new_work_feedback', api_get_course_id());
$sendNotification = api_get_course_setting('email_to_teachers_on_new_work_feedback');
if ($sendNotification != 1) {
$userIdListToSend = [];
}

@ -92,7 +92,7 @@ class bbb
// Course check
$courseInfo = api_get_course_info();
if ($courseInfo) {
$this->groupSupport = api_get_course_setting('bbb_enable_conference_in_groups', $courseInfo['code']) === '1';
$this->groupSupport = api_get_course_setting('bbb_enable_conference_in_groups', $courseInfo) === '1';
}
}
}
@ -304,7 +304,6 @@ class bbb
*/
public function createMeeting($params)
{
$courseCode = api_get_course_id();
$params['c_id'] = api_get_course_int_id();
$params['session_id'] = api_get_session_id();
@ -321,8 +320,8 @@ class bbb
$params['moderator_pw'] = isset($params['moderator_pw']) ? $params['moderator_pw'] : $this->getModMeetingPassword();
$moderatorPassword = $params['moderator_pw'];
$params['record'] = api_get_course_setting('big_blue_button_record_and_store', $courseCode) == 1 ? true : false;
$max = api_get_course_setting('big_blue_button_max_students_allowed', $courseCode);
$params['record'] = api_get_course_setting('big_blue_button_record_and_store') == 1 ? true : false;
$max = api_get_course_setting('big_blue_button_max_students_allowed');
$max = isset($max) ? $max : -1;
$params['status'] = 1;

@ -133,7 +133,7 @@ if ($conferenceManager) {
if ($plugin->get('allow_regenerate_recording') !== 'true') {
api_not_allowed(true);
}
$allow = api_get_course_setting('bbb_force_record_generation', $courseCode) == 1 ? true : false;
$allow = api_get_course_setting('bbb_force_record_generation', $courseInfo) == 1 ? true : false;
if ($allow) {
$result = $bbb->getMeetingByRemoteId($_GET['remote_id']);
if (!empty($result)) {

@ -233,7 +233,7 @@ class CustomCertificatePlugin extends Plugin
$courseCode = $row['course_code'];
$sessionId = $row['session_id'];
$userId = $row['user_id'];
if (api_get_course_setting('customcertificate_course_enable', $courseCode) == 1) {
if (api_get_course_setting('customcertificate_course_enable', api_get_course_info($courseCode)) == 1) {
return [
'course_code' => $courseCode,
'session_id' => $sessionId,

@ -32,8 +32,8 @@ if ($isDefault === 1) {
$courseId = api_get_course_int_id();
$courseCode = api_get_course_id();
$sessionId = api_get_session_id();
$enableCourse = api_get_course_setting('customcertificate_course_enable', $courseCode) == 1 ? true : false;
$useDefault = api_get_course_setting('use_certificate_default', $courseCode) == 1 ? true : false;
$enableCourse = api_get_course_setting('customcertificate_course_enable', $course_info) == 1 ? true : false;
$useDefault = api_get_course_setting('use_certificate_default', $course_info) == 1 ? true : false;
$defaultCertificate = 0;
$urlParams = '?'.api_get_cidreq();
}

@ -31,8 +31,8 @@ if ($default == 1) {
$courseId = api_get_course_int_id();
$courseCode = api_get_course_id();
$sessionId = api_get_session_id();
$enableCourse = api_get_course_setting('customcertificate_course_enable', $courseCode) == 1 ? true : false;
$useDefault = api_get_course_setting('use_certificate_default', $courseCode) == 1 ? true : false;
$enableCourse = api_get_course_setting('customcertificate_course_enable') == 1 ? true : false;
$useDefault = api_get_course_setting('use_certificate_default') == 1 ? true : false;
}
if (empty($courseCode)) {

Loading…
Cancel
Save