Skip to content

Commit

Permalink
Restore function to search courses on the catalog - refs BT#9887 #TMI
Browse files Browse the repository at this point in the history
  • Loading branch information
AngelFQC committed Jun 9, 2015
1 parent 1690700 commit f753b61
Showing 1 changed file with 100 additions and 2 deletions.
102 changes: 100 additions & 2 deletions main/inc/lib/auth.lib.php
Expand Up @@ -370,9 +370,9 @@ public function delete_course_category($category_id)
$category_id = intval($category_id);
$result = false;
$sql_delete = "DELETE FROM $tucc
WHERE id='" . $category_id . "' and user_id='" . $current_user_id . "'";
WHERE id='" . $category_id . "' and user_id='" . $current_user_id . "'";
$resultQuery = Database::query($sql_delete);
if (Database::affected_rows($resultQuery)) {
if (Database::affected_rows($resultQuery)) {
$result = true;
}
$sql = "UPDATE $TABLECOURSUSER
Expand All @@ -386,6 +386,104 @@ public function delete_course_category($category_id)
return $result;
}

/**
* Search the courses database for a course that matches the search term.
* The search is done on the code, title and tutor field of the course table.
* @param string $search_term The string that the user submitted, what we are looking for
* @param array $limit
* @return array An array containing a list of all the courses matching the the search term.
*/
public function search_courses($search_term, $limit)
{
$courseTable = Database::get_main_table(TABLE_MAIN_COURSE);
$extraFieldTable = Database :: get_main_table(TABLE_EXTRA_FIELD);
$extraFieldValuesTable = Database :: get_main_table(TABLE_EXTRA_FIELD_VALUES);

$limitFilter = getLimitFilterFromArray($limit);

// get course list auto-register
$sql = "SELECT item_id
FROM $extraFieldValuesTable tcfv
INNER JOIN $extraFieldTable tcf ON tcfv.field_id = tcf.id
WHERE
tcf.variable = 'special_course' AND
tcfv.value = 1 ";

$special_course_result = Database::query($sql);
if (Database::num_rows($special_course_result) > 0) {
$special_course_list = array();
while ($result_row = Database::fetch_array($special_course_result)) {
$special_course_list[] = '"' . $result_row['item_id'] . '"';
}
}
$without_special_courses = '';
if (!empty($special_course_list)) {
$without_special_courses = ' AND course.code NOT IN (' . implode(',', $special_course_list) . ')';
}

$search_term_safe = Database::escape_string($search_term);
$sql_find = "SELECT * FROM $courseTable
WHERE (
code LIKE '%" . $search_term_safe . "%' OR
title LIKE '%" . $search_term_safe . "%' OR
tutor_name LIKE '%" . $search_term_safe . "%'
)
$without_special_courses
ORDER BY title, visual_code ASC
$limitFilter
";

if (api_is_multiple_url_enabled()) {
$url_access_id = api_get_current_access_url_id();
if ($url_access_id != -1) {
$tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$sql_find = "SELECT *
FROM $courseTable as course
INNER JOIN $tbl_url_rel_course as url_rel_course
ON (url_rel_course.c_id = course.id)
WHERE
access_url_id = $url_access_id AND (
code LIKE '%" . $search_term_safe . "%' OR
title LIKE '%" . $search_term_safe . "%' OR
tutor_name LIKE '%" . $search_term_safe . "%'
)
$without_special_courses
ORDER BY title, visual_code ASC
$limitFilter
";
}
}
$result_find = Database::query($sql_find);
$courses = array();
while ($row = Database::fetch_array($result_find)) {
$row['registration_code'] = !empty($row['registration_code']);
$count_users = count(CourseManager::get_user_list_from_course_code($row['code']));
$count_connections_last_month = Tracking::get_course_connections_count(
$row['id'], 0, api_get_utc_datetime(time() - (30 * 86400))
);

$point_info = CourseManager::get_course_ranking($row['id'], 0);

$courses[] = array(
'real_id' => $row['id'],
'point_info' => $point_info,
'code' => $row['code'],
'directory' => $row['directory'],
'visual_code' => $row['visual_code'],
'title' => $row['title'],
'tutor' => $row['tutor_name'],
'subscribe' => $row['subscribe'],
'unsubscribe' => $row['unsubscribe'],
'registration_code' => $row['registration_code'],
'creation_date' => $row['creation_date'],
'visibility' => $row['visibility'],
'count_users' => $count_users,
'count_connections' => $count_connections_last_month
);
}
return $courses;
}

/**
* unsubscribe the user from a given course
* @param string Course code
Expand Down

0 comments on commit f753b61

Please sign in to comment.