aboutsummaryrefslogtreecommitdiff
path: root/lib/functions.php
diff options
context:
space:
mode:
authorMoritz Strohm <strohm@data-quest.de>2024-09-18 08:33:26 +0000
committerMoritz Strohm <strohm@data-quest.de>2024-09-18 08:33:26 +0000
commitfbf008efa11f009d2b89109e99c213c44c62e024 (patch)
treeee3379b5b28c6ebf4389a3809700b25a4bfa7626 /lib/functions.php
parent1efacbf3fd32325da48d09eabaf4a8d34d4e0de5 (diff)
TIC 4391, closes #4391
Closes #4391 Merge request studip/studip!3211
Diffstat (limited to 'lib/functions.php')
-rw-r--r--lib/functions.php255
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
*