Fix queries.

1.10.x
Julio Montoya 11 years ago
parent 8595de0479
commit 932c7bbb67
  1. 8
      main/admin/access_url_add_usergroup_to_url.php
  2. 4
      main/admin/add_courses_to_session.php
  3. 27
      main/admin/course_list.php
  4. 14
      main/admin/dashboard_add_courses_to_user.php
  5. 4
      main/admin/subscribe_user2course.php
  6. 3
      main/admin/user_export.php
  7. 3
      main/inc/lib/add_courses_to_session_functions.lib.php
  8. 1
      main/inc/lib/auth.lib.php
  9. 115
      main/inc/lib/course.lib.php
  10. 1
      main/inc/lib/database.constants.inc.php
  11. 50
      main/inc/lib/statistics.lib.php
  12. 16
      main/inc/lib/urlmanager.lib.php
  13. 2
      main/inc/lib/usermanager.lib.php
  14. 4
      main/inc/lib/userportal.lib.php

@ -24,10 +24,10 @@ $firstLetterUserGroup = null;
$courses = array();
$url_list = array();
$tbl_access_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$tbl_access_url = Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
$tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$tbl_access_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$tbl_access_url = Database:: get_main_table(TABLE_MAIN_ACCESS_URL);
$tbl_user = Database:: get_main_table(TABLE_MAIN_USER);
$tbl_course = Database:: get_main_table(TABLE_MAIN_COURSE);
$tool_name = get_lang('AddUserGroupToURL');
$interbreadcrumb[] = array ('url' => 'index.php', 'name' => get_lang('PlatformAdmin'));

@ -124,7 +124,7 @@ if ($ajax_search) {
ORDER BY ".(sizeof($courses)?"(code IN(".implode(',',$courses).")) DESC,":"")." title";
if (api_is_multiple_url_enabled()) {
$tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1){
$sql="SELECT course.id, code, title, visual_code, session_id
@ -154,7 +154,7 @@ if ($ajax_search) {
ORDER BY ".(sizeof($courses)?"(code IN(".implode(',',$courses).")) DESC,":"")." title";
if (api_is_multiple_url_enabled()) {
$tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1){
$sql="SELECT course.id, code, title, visual_code, session_id

@ -20,21 +20,22 @@ $sessionId = isset($_GET['session_id']) ? $_GET['session_id'] : null;
function get_number_of_courses()
{
$course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
$sql = "SELECT COUNT(code) AS total_number_of_items FROM $course_table";
$sql = "SELECT COUNT(code) AS total_number_of_items FROM $course_table c";
if ((api_is_platform_admin() || api_is_session_admin()) &&
api_is_multiple_url_enabled() && api_get_current_access_url_id() != -1
) {
$access_url_rel_course_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql.= " INNER JOIN $access_url_rel_course_table url_rel_course ON (id = url_rel_course.c_id)";
$sql.= " INNER JOIN $access_url_rel_course_table url_rel_course
ON (c.id = url_rel_course.c_id)";
}
if (isset ($_GET['keyword'])) {
$keyword = Database::escape_string("%".$_GET['keyword']."%");
$sql .= " WHERE (
title LIKE '".$keyword."' OR
code LIKE '".$keyword."' OR
visual_code LIKE '".$keyword."'
c.title LIKE '".$keyword."' OR
c.code LIKE '".$keyword."' OR
c.visual_code LIKE '".$keyword."'
)
";
} elseif (isset($_GET['keyword_code'])) {
@ -47,13 +48,13 @@ function get_number_of_courses()
$keyword_unsubscribe = Database::escape_string($_GET['keyword_unsubscribe']);
$sql .= " WHERE
(code LIKE '".$keyword_code."' OR visual_code LIKE '".$keyword_code."') AND
title LIKE '".$keyword_title."' AND
category_code LIKE '".$keyword_category."' AND
course_language LIKE '".$keyword_language."' AND
visibility LIKE '".$keyword_visibility."' AND
subscribe LIKE '".$keyword_subscribe."' AND
unsubscribe LIKE '".$keyword_unsubscribe."'
(c.code LIKE '".$keyword_code."' OR c.visual_code LIKE '".$keyword_code."') AND
c.title LIKE '".$keyword_title."' AND
c.category_code LIKE '".$keyword_category."' AND
c.course_language LIKE '".$keyword_language."' AND
c.visibility LIKE '".$keyword_visibility."' AND
c.subscribe LIKE '".$keyword_subscribe."' AND
c.unsubscribe LIKE '".$keyword_unsubscribe."'
";
}
@ -61,7 +62,7 @@ function get_number_of_courses()
if ((api_is_platform_admin() || api_is_session_admin()) &&
api_is_multiple_url_enabled() && api_get_current_access_url_id() != -1
) {
$sql.= " AND url_rel_course.access_url_id=".api_get_current_access_url_id();
$sql.= " AND url_rel_course.access_url_id = ".api_get_current_access_url_id();
}
$res = Database::query($sql);

@ -75,11 +75,13 @@ function search_courses($needle, $type)
}
if (api_is_multiple_url_enabled()) {
$sql = "SELECT c.code, c.title FROM $tbl_course c
LEFT JOIN $tbl_course_rel_access_url a ON (a.c_id = c.id)
$sql = "SELECT c.code, c.title
FROM $tbl_course c
LEFT JOIN $tbl_course_rel_access_url a
ON (a.c_id = c.id)
WHERE
c.code LIKE '$needle%' $without_assigned_courses AND
access_url_id = ".api_get_current_access_url_id()."";
access_url_id = ".api_get_current_access_url_id();
} else {
$sql = "SELECT c.code, c.title
FROM $tbl_course c
@ -199,14 +201,16 @@ if (isset($_POST['firstLetterCourse'])) {
if (api_is_multiple_url_enabled()) {
$sql = " SELECT c.code, c.title
FROM $tbl_course c
LEFT JOIN $tbl_course_rel_access_url a ON (a.course_code = c.code)
LEFT JOIN $tbl_course_rel_access_url a
ON (a.c_id = c.id)
WHERE
c.code LIKE '$needle' $without_assigned_courses AND
access_url_id = ".api_get_current_access_url_id()."
ORDER BY c.title";
} else {
$sql= " SELECT c.code, c.title FROM $tbl_course c
$sql= " SELECT c.code, c.title
FROM $tbl_course c
WHERE c.code LIKE '$needle' $without_assigned_courses
ORDER BY c.title";
}

@ -227,7 +227,7 @@ $db_courses = Database::store_result($result);
unset($result);
if (api_is_multiple_url_enabled()) {
$tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1){
@ -239,7 +239,7 @@ if (api_is_multiple_url_enabled()) {
ON (course_rel_url.c_id = course.id)
WHERE
access_url_id = $access_url_id AND
course_rel_user.user_id='".$_user['user_id']."' AND
course_rel_user.user_id='".api_get_user_id()."' AND
course_rel_user.status='1'
ORDER BY course.title";
}

@ -31,7 +31,8 @@ if (api_is_multiple_url_enabled()) {
$tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1){
$sql = "SELECT code,visual_code,title FROM $course_table as c
$sql = "SELECT code,visual_code,title
FROM $course_table as c
INNER JOIN $tbl_course_rel_access_url as course_rel_url
ON (c.id = course_rel_url.c_id)
WHERE access_url_id = $access_url_id

@ -61,7 +61,6 @@ class AddCourseToSession
ORDER BY course.code ';
}
global $_configuration;
if (api_is_multiple_url_enabled()) {
$tbl_course_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_id = api_get_current_access_url_id();
@ -83,7 +82,7 @@ class AddCourseToSession
$sql = 'SELECT course.code, course.visual_code, course.title
FROM '.$tbl_course.' course, '.$tbl_course_rel_access_url.' url_course
WHERE
url_course.course_code=course.code AND
url_course.c_id = course.id AND
access_url_id = '.$access_url_id.' AND
course.visual_code LIKE "'.$needle.'%" '.$cond_course_code.'
ORDER BY course.code ';

@ -528,7 +528,6 @@ class Auth
$limitFilter
";
global $_configuration;
if (api_is_multiple_url_enabled()) {
$url_access_id = api_get_current_access_url_id();
if ($url_access_id != -1) {

@ -821,6 +821,7 @@ class CourseManager
/**
* @return an array with the course info of all real courses on the platform
*@deprecate don't use this function
*/
public static function get_real_course_list()
{
@ -835,36 +836,6 @@ class CourseManager
return $real_course_list;
}
/**
* Returns an array with the course info of the real courses of which
* the current user is course admin
* @return array A list of courses details for courses to which the user is subscribed as course admin (status = 1)
*/
public static function get_real_course_list_of_user_as_course_admin($user_id)
{
$result_array = array();
if ($user_id != strval(intval($user_id))) {
return $result_array;
}
$sql_result = Database::query(
"SELECT *
FROM " . Database::get_main_table(TABLE_MAIN_COURSE) . " course
LEFT JOIN " . Database::get_main_table(TABLE_MAIN_COURSE_USER) . " course_user
ON course.id = course_user.c_id
WHERE course.target_course_code IS NULL
AND course_user.user_id = '$user_id'
AND course_user.status = '1'"
);
if ($sql_result === false) {
return $result_array;
}
while ($result = Database::fetch_array($sql_result)) {
$result_array[] = $result;
}
return $result_array;
}
/**
* Get course list as coach
*
@ -1005,8 +976,8 @@ class CourseManager
ON (course_rel_url.c_id = course.id)
WHERE
access_url_id = $access_url_id AND
course_rel_user.user_id='$user_id' AND
course_rel_user.status='1'
course_rel_user.user_id = '$user_id' AND
course_rel_user.status = '1'
ORDER BY course.title";
}
}
@ -3098,51 +3069,6 @@ class CourseManager
return Database::fetch_array(Database::query($sql));
}
/**
* This code creates a select form element to let the user
* choose a real course to link to.
*
* A good non-display library should not use echo statements, but just return text/html
* so users of the library can choose when to display.
*
* We display the course code, but internally store the course id.
*
* @param boolean $has_size , true the select tag gets a size element, false it stays a dropdownmenu
* @param boolean $only_current_user_courses , true only the real courses of which the
* current user is course admin are displayed, false all real courses are shown.
* @param string $element_name the name of the select element
* @return a string containing html code for a form select element.
* @deprecated Function not in use
*/
public static function get_real_course_code_select_html(
$element_name,
$has_size = true,
$only_current_user_courses = true,
$user_id
) {
if ($only_current_user_courses) {
$real_course_list = self::get_real_course_list_of_user_as_course_admin($user_id);
} else {
$real_course_list = self::get_real_course_list();
}
if ($has_size) {
$size_element = "size=\"" . SELECT_BOX_SIZE . "\"";
} else {
$size_element = "";
}
$html_code = "<select name=\"$element_name\" $size_element >\n";
foreach ($real_course_list as $real_course) {
$course_code = $real_course["code"];
$html_code .= "<option value=\"" . $course_code . "\">";
$html_code .= $course_code;
$html_code .= "</option>\n";
}
$html_code .= "</select>\n";
return $html_code;
}
/**
* Get count rows of a table inside a course database
* @param string $table The table of which the rows should be counted
@ -3187,7 +3113,8 @@ class CourseManager
//Deleting assigned courses to hrm_id
if (api_is_multiple_url_enabled()) {
$sql = "SELECT s.c_id FROM $tbl_course_rel_user s
INNER JOIN $tbl_course_rel_access_url a ON (a.c_id = s.c_id)
INNER JOIN $tbl_course_rel_access_url a
ON (a.c_id = s.c_id)
WHERE
user_id = $hr_manager_id AND
relation_type=" . COURSE_RELATION_TYPE_RRHH . " AND
@ -5751,28 +5678,28 @@ class CourseManager
return [];
}
$sql = "SELECT DISTINCT(c.id), c.title "
. "FROM $courseTable c "
. "INNER JOIN $courseUserTable cru ON c.code = cru.course_code "
. "WHERE ( "
. "cru.user_id IN(" . implode(', ', $userIdList) . ") "
. "AND cru.relation_type = 0 "
. ")";
$sql = "SELECT DISTINCT(c.id), c.title
FROM $courseTable c
INNER JOIN $courseUserTable cru ON c.id = cru.c_id
WHERE (
cru.user_id IN (" . implode(', ', $userIdList) . ")
AND cru.relation_type = 0
)";
if (api_is_multiple_url_enabled()) {
$courseAccessUrlTable = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$accessUrlId = api_get_current_access_url_id();
if ($accessUrlId != -1) {
$sql = "SELECT DISTINCT(c.id), c.title "
. "FROM $courseTable c "
. "INNER JOIN $courseUserTable cru ON c.code = cru.course_code "
. "INNER JOIN $courseAccessUrlTable crau ON c.code = crau.course_code "
. "WHERE crau.access_url_id = $accessUrlId "
. "AND ( "
. "cru.id_user IN (" . implode(', ', $userIdList) . ") "
. "AND cru.relation_type = 0 "
. ")";
$sql = "SELECT DISTINCT(c.id), c.title
FROM $courseTable c
INNER JOIN $courseUserTable cru ON c.id = cru.c_id
INNER JOIN $courseAccessUrlTable crau ON c.id = crau.c_id
WHERE crau.access_url_id = $accessUrlId
AND (
cru.id_user IN (" . implode(', ', $userIdList) . ") AND
cru.relation_type = 0
)";
}
}

@ -91,6 +91,7 @@ define('TABLE_MAIN_ACCESS_URL_REL_USER', 'access_url_rel_user');
define('TABLE_MAIN_ACCESS_URL_REL_COURSE', 'access_url_rel_course');
define('TABLE_MAIN_ACCESS_URL_REL_SESSION', 'access_url_rel_session');
define('TABLE_MAIN_ACCESS_URL_REL_USERGROUP', 'access_url_rel_usergroup');
// This table seems not to be use
define('TABLE_MAIN_ACCESS_URL_REL_COURSE_CATEGORY', 'access_url_rel_course_category');
// Global calendar

@ -479,7 +479,7 @@ class Statistics
public static function printToolStats()
{
$table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ACCESS);
$access_url_rel_course_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_rel_course_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$current_url_id = api_get_current_access_url_id();
$tools = array(
@ -513,16 +513,18 @@ class Statistics
GROUP BY access_tool
";
} else {
$sql = "SELECT access_tool, count( access_id ) ".
"AS number_of_logins FROM $table ".
"WHERE access_tool IN ('".implode("','", $tools)."') ".
"GROUP BY access_tool ";
$sql = "SELECT access_tool, count( access_id ) AS number_of_logins
FROM $table
WHERE access_tool IN ('".implode("','", $tools)."')
GROUP BY access_tool ";
}
$res = Database::query($sql);
$result = array();
while ($obj = Database::fetch_object($res)) {
$result[$tool_names[$obj->access_tool]] = $obj->number_of_logins;
}
Statistics::printStats(get_lang('PlatformToolAccess'), $result, true);
}
@ -532,17 +534,17 @@ class Statistics
public static function printCourseByLanguageStats()
{
$table = Database :: get_main_table(TABLE_MAIN_COURSE);
$access_url_rel_course_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$access_url_rel_course_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$current_url_id = api_get_current_access_url_id();
if (api_is_multiple_url_enabled()) {
$sql = "SELECT course_language, count( c.code ) AS number_of_courses ".
"FROM $table as c, $access_url_rel_course_table as u
WHERE u.c_id = c.id AND access_url_id='".$current_url_id."'
GROUP BY course_language
ORDER BY number_of_courses DESC";
$sql = "SELECT course_language, count( c.code ) AS number_of_courses
FROM $table as c, $access_url_rel_course_table as u
WHERE u.c_id = c.id AND access_url_id='".$current_url_id."'
GROUP BY course_language
ORDER BY number_of_courses DESC";
} else {
$sql = "SELECT course_language, count( code ) AS number_of_courses ".
"FROM $table GROUP BY course_language
$sql = "SELECT course_language, count( code ) AS number_of_courses
FROM $table GROUP BY course_language
ORDER BY number_of_courses DESC";
}
$res = Database::query($sql);
@ -679,10 +681,10 @@ class Statistics
HAVING c_id <> ''
AND DATEDIFF( '".date('Y-m-d h:i:s')."' , access_date ) <= ". $date_diff;
} else {
$sql = "SELECT * FROM $table ".
"GROUP BY c_id ".
"HAVING c_id <> '' ".
"AND DATEDIFF( '".date('Y-m-d h:i:s')."' , access_date ) <= ". $date_diff;
$sql = "SELECT * FROM $table
GROUP BY c_id
HAVING c_id <> ''
AND DATEDIFF( '".date('Y-m-d h:i:s')."' , access_date ) <= ". $date_diff;
}
$res = Database::query($sql);
$sql .= ' ORDER BY '.$columns[$column].' '.$sql_order[$direction];
@ -696,15 +698,21 @@ class Statistics
$courseInfo = api_get_course_info_by_id($obj->c_id);
$course = array ();
$course[]= '<a href="'.api_get_path(WEB_PATH).'courses/'.$courseInfo['code'].'">'.$courseInfo['code'].' <a>';
//Allow sort by date hiding the numerical date
// Allow sort by date hiding the numerical date
$course[] = '<span style="display:none;">'.$obj->access_date.'</span>'.api_convert_and_format_date($obj->access_date);
$courses[] = $course;
}
$parameters['date_diff'] = $date_diff;
$parameters['report'] = 'courselastvisit';
$table_header[] = array (get_lang("CourseCode"), true);
$table_header[] = array (get_lang("LastAccess"), true);
Display :: display_sortable_table($table_header, $courses, array ('column'=>$column,'direction'=>$direction), array (), $parameters);
$table_header[] = array(get_lang("CourseCode"), true);
$table_header[] = array(get_lang("LastAccess"), true);
Display:: display_sortable_table(
$table_header,
$courses,
array('column' => $column, 'direction' => $direction),
array(),
$parameters
);
} else {
echo get_lang('NoSearchResults');
}

@ -190,18 +190,18 @@ class UrlManager
**/
public static function get_url_rel_course_data($access_url_id = null)
{
$where ='';
$where = '';
$table_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
if (!empty($access_url_id)) {
$where ="WHERE $table_url_rel_course.access_url_id = ".intval($access_url_id);
$where = " WHERE uc.access_url_id = ".intval($access_url_id);
}
$sql = "SELECT u.id, c_id, title, access_url_id
$sql = "SELECT u.id, c_id, title, uc.access_url_id
FROM $tbl_course u
INNER JOIN $table_url_rel_course
ON $table_url_rel_course.c_id = u.id
INNER JOIN $table_url_rel_course uc
ON uc.c_id = u.id
$where
ORDER BY title, code";
@ -223,8 +223,9 @@ class UrlManager
$tableUrlRelCourse = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql = "SELECT *
FROM $tableUrlRelCourse
WHERE $tableUrlRelCourse.c_id = '$courseId'";
WHERE c_id = '$courseId'";
$res = Database::query($sql);
return Database::num_rows($res);
}
@ -296,7 +297,6 @@ class UrlManager
public static function getUrlRelCourseCategory($access_url_id = null)
{
$table_url_rel = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE_CATEGORY);
$table = Database::get_main_table(TABLE_MAIN_CATEGORY);
$where = " WHERE 1=1 ";
@ -851,7 +851,7 @@ class UrlManager
$table_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql = "SELECT c_id FROM $table_url_rel_course
WHERE access_url_id=".intval($access_url_id);
WHERE access_url_id = ".intval($access_url_id);
$result = Database::query($sql);
$existing_courses = array();

@ -2638,7 +2638,7 @@ class UserManager
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$tbl_url_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$join_access_url = "LEFT JOIN $tbl_url_course url_rel_course ON url_rel_course.c_id= course.id";
$join_access_url = "LEFT JOIN $tbl_url_course url_rel_course ON url_rel_course.c_id = course.id";
$where_access_url = " AND access_url_id = $access_url_id ";
}
}

@ -481,9 +481,9 @@ class IndexManager
FROM $main_category_table t1
$courseCategoryCondition
LEFT JOIN $main_category_table t2 ON t1.code = t2.parent_id
LEFT JOIN $main_course_table t3 ON (t3.category_code=t1.code $platform_visible_courses)
LEFT JOIN $main_course_table t3 ON (t3.category_code = t1.code $platform_visible_courses)
INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.course_code=t3.code)
ON (url_rel_course.c_id = t3.id)
WHERE url_rel_course.access_url_id = $url_access_id AND t1.parent_id ".(empty($category) ? "IS NULL" : "='$category'")."
GROUP BY t1.name,t1.code,t1.parent_id,t1.children_count ORDER BY t1.tree_pos, t1.name";
}

Loading…
Cancel
Save