diff options
| author | Moritz Strohm <strohm@data-quest.de> | 2024-09-18 08:33:26 +0000 |
|---|---|---|
| committer | Moritz Strohm <strohm@data-quest.de> | 2024-09-18 08:33:26 +0000 |
| commit | fbf008efa11f009d2b89109e99c213c44c62e024 (patch) | |
| tree | ee3379b5b28c6ebf4389a3809700b25a4bfa7626 /lib/functions.php | |
| parent | 1efacbf3fd32325da48d09eabaf4a8d34d4e0de5 (diff) | |
TIC 4391, closes #4391
Closes #4391
Merge request studip/studip!3211
Diffstat (limited to 'lib/functions.php')
| -rw-r--r-- | lib/functions.php | 255 |
1 files changed, 0 insertions, 255 deletions
diff --git a/lib/functions.php b/lib/functions.php index 5659aa5..97d0e70 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -653,261 +653,6 @@ function check_ticket($studipticket) } /** - * searches - * - * @global array $perm - * @global object $user - * @global array $_fullname_sql - * - * @param string $search_str optional search-string - * @param string $search_user optional user to search for - * @param bool $show_sem if true, the seminar is added to the result - * - * @return array - */ -function search_range($search_str = false, $search_user = false, $show_sem = true) -{ - global $_fullname_sql; - - // Helper function that obtains the correct name for an entity taking - // in account whether the semesters should be displayed or not - $formatName = function ($row) use ($show_sem) { - $name = $row['Name']; - if ($show_sem) { - $name = sprintf('%s (%s%s)', - $name, - $row['startsem'], - $row['startsem'] != $row['endsem'] ? ' - ' . $row['endsem'] : ''); - } - return $name; - }; - - $search_result = []; - $show_sem_sql1 = ", s.start_time, (SELECT semester_data.name FROM semester_data WHERE s.start_time >= semester_data.`beginn` AND s.start_time <= semester_data.`ende` LIMIT 1) AS startsem, IF(semester_courses.semester_id IS NULL, '"._("unbegrenzt")."', (SELECT semester_data.name FROM semester_data LEFT JOIN semester_courses USING (semester_id) WHERE semester_courses.course_id = s.Seminar_id ORDER BY semester_data.`beginn` DESC LIMIT 1)) AS endsem "; - $show_sem_sql2 = "LEFT JOIN semester_courses ON (semester_courses.course_id = s.Seminar_id) "; - - - if ($search_str && $GLOBALS['perm']->have_perm('root')) { - if ($search_user) { - $query = "SELECT user_id, CONCAT({$_fullname_sql['full']}, ' (', username, ')') AS name - FROM auth_user_md5 AS a - LEFT JOIN user_info USING (user_id) - WHERE CONCAT(Vorname, ' ', Nachname, ' ', username) LIKE CONCAT('%', ?, '%') - ORDER BY Nachname, Vorname"; - $statement = DBManager::get()->prepare($query); - $statement->execute([$search_str]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $search_result[$row['user_id']] = [ - 'type' => 'user', - 'name' => $row['name'], - ]; - } - } - - $_hidden = _('(versteckt)'); - $query = "SELECT Seminar_id, IF(s.visible = 0, CONCAT(s.Name, ' {$_hidden}'), s.Name) AS Name %s - FROM seminare AS s %s - WHERE s.Name LIKE CONCAT('%%', ?, '%%') - GROUP BY s.Seminar_id - ORDER BY start_time DESC, Name"; - $query = $show_sem - ? sprintf($query, $show_sem_sql1, $show_sem_sql2) - : sprintf($query, '', ''); - $statement = DBManager::get()->prepare($query); - $statement->execute([$search_str]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $search_result[$row['Seminar_id']] = [ - 'type' => 'sem', - 'name' => $formatName($row), - 'starttime' => $row['start_time'], - 'startsem' => $row['startsem'], - ]; - } - - $query = "SELECT Institut_id, Name, IF(Institut_id = fakultaets_id, 'fak', 'inst') AS type - FROM Institute - WHERE Name LIKE CONCAT('%', ?, '%') - ORDER BY Name"; - $statement = DBManager::get()->prepare($query); - $statement->execute([$search_str]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $search_result[$row['Institut_id']] = [ - 'type' => $row['type'], - 'name' => $row['Name'], - ]; - } - } elseif ($search_str && $GLOBALS['perm']->have_perm('admin')) { - $_hidden = _('(versteckt)'); - $query = "SELECT s.Seminar_id, IF(s.visible = 0, CONCAT(s.Name, ' {$_hidden}'), s.Name) AS Name %s - FROM user_inst AS a - JOIN seminare AS s USING (Institut_id) %s - WHERE a.user_id = ? AND a.inst_perms = 'admin' AND s.Name LIKE CONCAT('%%', ?, '%%') - ORDER BY start_time"; - $query = $show_sem - ? sprintf($query, $show_sem_sql1, $show_sem_sql2) - : sprintf($query, '', ''); - $statement = DBManager::get()->prepare($query); - $statement->execute([$GLOBALS['user']->id, $search_str]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $search_result[$row['Seminar_id']] = [ - 'type' => 'sem', - 'name' => $formatName($row), - 'starttime' => $row['start_time'], - 'startsem' => $row['startsem'], - ]; - } - - $query = "SELECT b.Institut_id, b.Name - FROM user_inst AS a - JOIN Institute AS b USING (Institut_id) - WHERE a.user_id = ? AND a.inst_perms = 'admin' - AND a.institut_id != b.fakultaets_id AND b.Name LIKE CONCAT('%', ?, '%') - ORDER BY Name"; - $statement = DBManager::get()->prepare($query); - $statement->execute([$GLOBALS['user']->id, $search_str]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $search_result[$row['Institut_id']] = [ - 'type' => 'inst', - 'name' => $row['Name'], - ]; - } - if ($GLOBALS['perm']->is_fak_admin()) { - $_hidden = _('(versteckt)'); - $query = "SELECT s.Seminar_id, IF(s.visible = 0, CONCAT(s.Name, ' {$_hidden}'), s.Name) AS Name %s - FROM user_inst AS a - JOIN Institute AS b ON (a.Institut_id = b.Institut_id AND b.Institut_id = b.fakultaets_id) - JOIN Institute AS c ON (c.fakultaets_id = b.Institut_id AND c.fakultaets_id != c.Institut_id) - JOIN seminare AS s ON (s.Institut_id = c.Institut_id) %s - WHERE a.user_id = ? AND a.inst_perms = 'admin' - AND s.Name LIKE CONCAT('%%', ?, '%%') - ORDER BY start_time DESC, Name"; - $query = $show_sem - ? sprintf($query, $show_sem_sql1, $show_sem_sql2) - : sprintf($query, '', ''); - $statement = DBManager::get()->prepare($query); - $statement->execute([$GLOBALS['user']->id, $search_str]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $search_result[$row['Seminar_id']] = [ - 'type' => 'sem', - 'name' => $formatName($row), - 'starttime' => $row['start_time'], - 'startsem' => $row['startsem'], - ]; - } - - $query = "SELECT c.Institut_id, c.Name - FROM user_inst AS a - JOIN Institute AS b ON (a.Institut_id = b.Institut_id AND b.Institut_id = b.fakultaets_id) - JOIN Institute AS c ON (c.fakultaets_id = b.institut_id AND c.fakultaets_id != c.institut_id) - WHERE a.user_id = ? AND a.inst_perms = 'admin' - AND c.Name LIKE CONCAT('%', ?, '%') - ORDER BY Name"; - $statement = DBManager::get()->prepare($query); - $statement->execute([$GLOBALS['user']->id, $search_str]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $search_result[$row['Institut_id']] = [ - 'type' => 'inst', - 'name' => $row['Name'], - ]; - } - - $query = "SELECT b.Institut_id, b.Name - FROM user_inst AS a - JOIN Institute AS b ON (a.Institut_id = b.Institut_id AND b.Institut_id = b.fakultaets_id) - WHERE a.user_id = ? AND a.inst_perms = 'admin' - AND b.Name LIKE CONCAT('%', ?, '%') - ORDER BY Name"; - $statement = DBManager::get()->prepare($query); - $statement->execute([$GLOBALS['user']->id, $search_str]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $search_result[$row['Institut_id']] = [ - 'type' => 'inst', - 'name' => $row['Name'], - ]; - } - } - } elseif ($GLOBALS['perm']->have_perm('tutor') || $GLOBALS['perm']->have_perm('autor')) { - // autors my also have news in studygroups with proper rights - $_hidden = _('(versteckt)'); - $query = "SELECT s.Seminar_id, IF(s.visible = 0, CONCAT(s.Name, ' {$_hidden}'), s.Name) AS Name %s - FROM seminar_user AS a - JOIN seminare AS s USING (Seminar_id) %s - WHERE a.user_id = ? AND a.status IN ('tutor', 'dozent') - ORDER BY start_time DESC, Name"; - $query = $show_sem - ? sprintf($query, $show_sem_sql1, $show_sem_sql2) - : sprintf($query, '', ''); - $statement = DBManager::get()->prepare($query); - $statement->execute([$GLOBALS['user']->id]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $search_result[$row['Seminar_id']] = [ - 'type' => 'sem', - 'name' => $formatName($row), - 'starttime' => $row['start_time'], - 'startsem' => $row['startsem'], - ]; - } - - $query = "SELECT Institut_id, b.Name, - IF (Institut_id = fakultaets_id, 'fak', 'inst') AS type - FROM user_inst AS a - JOIN Institute AS b USING (Institut_id) - WHERE a.user_id = ? AND a.inst_perms IN ('dozent','tutor') - ORDER BY Name"; - $statement = DBManager::get()->prepare($query); - $statement->execute([$GLOBALS['user']->id]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $search_result[$row['Institut_id']] = [ - 'name' => $row['Name'], - 'type' => $row['type'], - ]; - } - } - - if (Config::get()->DEPUTIES_ENABLE) { - $_hidden = _('(versteckt)'); - $_deputy = _('Vertretung'); - $query = "SELECT s.Seminar_id, - CONCAT(IF(s.visible = 0, CONCAT(s.Name, ' {$_hidden}'), s.Name), ' [{$_deputy}]') AS Name %s - FROM seminare AS s - JOIN deputies AS d ON (s.Seminar_id = d.range_id) %s - WHERE d.user_id = ? - ORDER BY s.start_time DESC, Name"; - $query = $show_sem - ? sprintf($query, $show_sem_sql1, $show_sem_sql2) - : sprintf($query, '', ''); - $statement = DBManager::get()->prepare($query); - $statement->execute([$GLOBALS['user']->id]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $search_result[$row['Seminar_id']] = [ - 'type' => 'sem', - 'name' => $formatName($row), - 'starttime' => $row['start_time'], - 'startsem' => $row['startsem'], - ]; - } - if (Deputy::isEditActivated()) { - $query = "SELECT a.user_id, a.username, 'user' AS type, - CONCAT({$_fullname_sql['full']}, ' (', username, ')') AS name - FROM auth_user_md5 AS a - JOIN user_info USING (user_id) - JOIN deputies AS d ON (a.user_id = d.range_id) - WHERE d.user_id = ? - ORDER BY name ASC"; - $statement = DBManager::get()->prepare($query); - $statement->execute([ - $GLOBALS['user']->id - ]); - while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - $search_result[$row['user_id']] = $row; - } - } - } - - return $search_result ?: null; -} - -/** * format_help_url($keyword) * returns URL for given help keyword * |
