Improving sql speed see BT#8852

1.9.x
Julio Montoya 10 years ago
parent 096199c9bc
commit 5fbbfea047
  1. 10
      main/inc/lib/document.lib.php
  2. 19
      main/inc/lib/main_api.lib.php

@ -507,7 +507,7 @@ class DocumentManager
* @param boolean $search
* @return array with all document data
*/
public static function get_all_document_data(
public static function get_all_document_data2(
$_course,
$path = '/',
$to_group_id = 0,
@ -590,10 +590,10 @@ class DocumentManager
$doc_list = array();
$document_data = array();
$is_allowed_to_edit = api_is_allowed_to_edit(null, true);
$isCoach = api_is_coach();
if ($result !== false && Database::num_rows($result) != 0) {
while ($row = Database::fetch_array($result, 'ASSOC')) {
if (api_is_coach()) {
if ($isCoach) {
// Looking for course items that are invisible to hide it in the session
if (in_array($row['id'], array_keys($doc_list))) {
if ($doc_list[$row['id']]['item_property_session_id'] == 0 &&
@ -608,7 +608,7 @@ class DocumentManager
$doc_list[$row['id']] = $row;
}
if (!api_is_coach() && !$is_allowed_to_edit) {
if (!$isCoach && !$is_allowed_to_edit) {
$doc_list[] = $row;
}
@ -630,7 +630,7 @@ class DocumentManager
}
// Only for the student we filter the results see BT#1652
if (!api_is_coach() && !$is_allowed_to_edit) {
if (!$isCoach && !$is_allowed_to_edit) {
$ids_to_remove = array();
$my_repeat_ids = $temp = array();

@ -2473,7 +2473,8 @@ function api_is_course_session_coach($user_id, $course_code, $session_id)
* @param string - optional, course code
* @return boolean True if current user is a course or session coach
*/
function api_is_coach($session_id = 0, $course_code = null, $check_student_view = true) {
function api_is_coach($session_id = 0, $course_code = null, $check_student_view = true)
{
if (!empty($session_id)) {
$session_id = intval($session_id);
} else {
@ -2492,17 +2493,19 @@ function api_is_coach($session_id = 0, $course_code = null, $check_student_view
} else {
$course_code = api_get_course_id();
}
$session_table = Database::get_main_table(TABLE_MAIN_SESSION);
$session_rel_course_rel_user_table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$session_table = Database::get_main_table(TABLE_MAIN_SESSION);
$session_rel_course_rel_user_table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sessionIsCoach = null;
if (!empty($course_code)) {
$sql = "SELECT DISTINCT id, name, date_start, date_end
FROM $session_table INNER JOIN $session_rel_course_rel_user_table session_rc_ru
ON session_rc_ru.id_user = '".api_get_user_id()."'
WHERE session_rc_ru.course_code = '$course_code' AND
session_rc_ru.status = 2 AND
session_rc_ru.id_session = '$session_id'";
FROM $session_table
INNER JOIN $session_rel_course_rel_user_table session_rc_ru
ON session_rc_ru.id_session = id AND session_rc_ru.id_user = '".api_get_user_id()."'
WHERE
session_rc_ru.course_code = '$course_code' AND
session_rc_ru.status = 2 AND
session_rc_ru.id_session = '$session_id'";
$result = Database::query($sql);
$sessionIsCoach = Database::store_result($result);
}

Loading…
Cancel
Save