Skip to content
Snippets Groups Projects
Commit 8b601a5f authored by Elmar Ludwig's avatar Elmar Ludwig
Browse files

allow searching for courses in next semester, re #766

Merge request studip/studip!594
parent bf808d89
No related branches found
No related tags found
No related merge requests found
......@@ -62,12 +62,19 @@ class GlobalSearchCourses extends GlobalSearchModule implements GlobalSearchFull
// generate SQL for the given sidebar filter (semester, institute, seminar_type)
if ($filter['category'] === self::class || $filter['category'] === 'show_all_categories') {
if ($filter['semester']) {
$semester = Semester::findByTimestamp($filter['semester']);
if ($filter['semester'] === 'future') {
$semester = Semester::findCurrent();
$next_semester = Semester::findNext();
$semester_ids = array_filter([$semester->id, $next_semester->id]);
} else {
$semester = Semester::findByTimestamp($filter['semester']);
$semester_ids = [$semester->id];
}
$semester_join = "LEFT JOIN semester_courses ON (courses.Seminar_id = semester_courses.course_id) ";
$semester_condition = "
AND (
`courses`.start_time <= " . DBManager::get()->quote($filter['semester']) ."
AND (`semester_courses`.semester_id IS NULL OR semester_courses.semester_id = " . DBManager::get()->quote($semester->getId()).")
`courses`.start_time <= " . DBManager::get()->quote($semester->beginn) ."
AND (`semester_courses`.semester_id IS NULL OR semester_courses.semester_id IN (" . join(',', array_map([DBManager::get(), 'quote'], $semester_ids)) . "))
) ";
}
if ($filter['institute']) {
......
......@@ -56,9 +56,16 @@ class GlobalSearchForum extends GlobalSearchModule implements GlobalSearchFullte
// generate SQL condition for the semester filter in the sidebar
if ($filter['category'] == self::class || $filter['category'] == "show_all_categories") {
if ($filter['semester'] != "") {
$semester = Semester::findByTimestamp($filter['semester']);
if ($filter['semester'] === 'future') {
$semester = Semester::findCurrent();
$next_semester = Semester::findNext();
$semester_end = $next_semester ? $next_semester->ende : $semester->ende;
} else {
$semester = Semester::findByTimestamp($filter['semester']);
$semester_end = $semester->ende;
}
$semester_condition = " AND (`mkdate` >= " . DBManager::get()->quote($semester['beginn']) .
" AND `mkdate` <= " . DBManager::get()->quote($semester['ende']) . ") ";
" AND `mkdate` <= " . DBManager::get()->quote($semester_end) . ") ";
}
}
......
......@@ -48,12 +48,20 @@ class GlobalSearchMyCourses extends GlobalSearchModule
// generate SQL for the given sidebar filter (semester, institute, seminar_type)
if ($filter['category'] === self::class || $filter['category'] == 'show_all_categories') {
if ($filter['semester']) {
$semester = Semester::findByTimestamp($filter['semester']);
if ($filter['semester'] === 'future') {
$semester = Semester::findCurrent();
$next_semester = Semester::findNext();
$semester_ids = array_filter([$semester->id, $next_semester->id]);
} else {
$semester = Semester::findByTimestamp($filter['semester']);
$semester_ids = [$semester->id];
}
$semester_join = "LEFT JOIN semester_courses ON (courses.Seminar_id = semester_courses.course_id) ";
$semester_condition = " AND (
`courses`.start_time <= " .DBManager::get()->quote($filter['semester'])."
AND (`semester_courses`.semester_id IS NULL OR semester_courses.semester_id = " .DBManager::get()->quote($semester->getId()). " )
) ";
$semester_condition = "
AND (
`courses`.start_time <= " . DBManager::get()->quote($semester->beginn) ."
AND (`semester_courses`.semester_id IS NULL OR semester_courses.semester_id IN (" . join(',', array_map([DBManager::get(), 'quote'], $semester_ids)) . "))
) ";
}
if ($filter['institute']) {
$institutes = self::getInstituteIdsForSQL($filter['institute']);
......
......@@ -36,7 +36,6 @@ const GlobalSearch = {
var resultsPerType = resultsDiv.data('results-per-type');
var moreResultsText = resultsDiv.data('more-results');
var limit = resultsPerType * 3;
var currentSemester = resultsDiv.data('current-semester');
var wrapper = $('#globalsearch-searchbar');
if (searchterm === '') {
......@@ -57,7 +56,7 @@ const GlobalSearch = {
// Call AJAX endpoint and get search results.
$.getJSON(STUDIP.URLHelper.getURL('dispatch.php/globalsearch/find/' + limit, {}, true), {
search: searchterm,
filters: '{"category":"show_all_categories","semester":"' + currentSemester + '"}'
filters: '{"category":"show_all_categories","semester":"future"}'
}).done(function(json) {
resultsDiv.empty();
......
......@@ -18,7 +18,6 @@
</div>
<div id="globalsearch-results" data-more-results="<?= _('alle anzeigen') ?>"
data-no-result="<?= _('Keine Ergebnisse gefunden.') ?>"
data-current-semester="<?= htmlReady(GlobalSearchModule::getCurrentSemester()) ?>"
data-results-per-type="<?= Config::get()->GLOBALSEARCH_MAX_RESULT_OF_TYPE ?>"
></div>
</div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment