|
@@ -370,9 +370,9 @@ class Auth
|
|
|
$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
|
|
@@ -386,6 +386,104 @@ class Auth
|
|
|
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
|