aboutsummaryrefslogtreecommitdiff
path: root/lib/models
diff options
context:
space:
mode:
authorDavid Siegfried <david.siegfried@uni-vechta.de>2024-03-18 20:50:27 +0000
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2024-03-18 20:50:27 +0000
commitacf6cde30cef448b9ec9c26e1623edb8eb82c7fb (patch)
treee9734bd40a29026c468a8f1b9999afd0cbcab007 /lib/models
parent50d0882856c692bbe2880374e81d5a67eea7ce65 (diff)
reimplemnt export, fixes #3785
Closes #3785 Merge request studip/studip!2705
Diffstat (limited to 'lib/models')
-rw-r--r--lib/models/CourseMember.class.php80
1 files changed, 55 insertions, 25 deletions
diff --git a/lib/models/CourseMember.class.php b/lib/models/CourseMember.class.php
index 91256a9..5f9ec50 100644
--- a/lib/models/CourseMember.class.php
+++ b/lib/models/CourseMember.class.php
@@ -442,7 +442,7 @@ class CourseMember extends SimpleORMap implements PrivacyObject
* Get user information for all users in this course
*
*/
- public static function getMemberDataByCourse(string $seminar_id, ?string $user_id = null): array
+ public static function getMemberDataByCourse(string $seminar_id, ?string $status = '', ?string $user_id = null,): array
{
$query = "SELECT `datafield_id`
FROM `datafields`
@@ -455,34 +455,64 @@ class CourseMember extends SimpleORMap implements PrivacyObject
':seminar_id' => $seminar_id,
':datafield_id' => $datafield_id,
];
- if (func_num_args() > 1) {
+ if ($user_id !== null) {
$user_condition = " AND su.`user_id` = :user_id";
$parameters[':user_id'] = $user_id;
}
- $query = "SELECT su.`user_id`,
- su.`status`,
- ui.`geschlecht`,
- ui.`title_front` AS Titel,
- aum.`Vorname`,
- aum.`Nachname`,
- ui.`title_rear` AS Titel2,
- aum.`username`,
- ui.`privadr`,
- ui.`privatnr`,
- aum.`Email`,
- ui.`mkdate` AS Anmeldedatum,
- IFNULL(aum.`matriculation_number`, dfe.`content`) AS Matrikelnummer
- FROM `seminar_user` AS su
- JOIN `auth_user_md5` AS aum USING (`user_id`)
- LEFT JOIN `user_info` AS ui USING (`user_id`)
- LEFT JOIN `datafields_entries` AS dfe
- ON dfe.`range_id` = su.`user_id`
- AND dfe.`datafield_id` = :datafield_id
- WHERE `Seminar_id` = :seminar_id
- {$user_condition}
- GROUP BY su.`user_id`
- ORDER BY `status` DESC, `Nachname`, `Vorname`";
+
+ if (in_array($status, ['awaiting', 'claiming'])) {
+ $query = "SELECT su.`user_id`,
+ su.`status`,
+ ui.`geschlecht`,
+ ui.`title_front` AS Titel,
+ aum.`Vorname`,
+ aum.`Nachname`,
+ ui.`title_rear` AS Titel2,
+ aum.`username`,
+ ui.`privadr`,
+ ui.`privatnr`,
+ aum.`Email`,
+ ui.`mkdate` AS Anmeldedatum,
+ IFNULL(aum.`matriculation_number`, dfe.`content`) AS Matrikelnummer,
+ su.position AS admission_position
+ FROM admission_seminar_user AS su
+ LEFT JOIN user_info AS ui USING (user_id)
+ LEFT JOIN auth_user_md5 AS aum USING (user_id)
+ LEFT JOIN `datafields_entries` AS dfe
+ ON dfe.`range_id` = su.`user_id`
+ AND dfe.`datafield_id` = :datafield_id
+ WHERE seminar_id = :seminar_id AND su.status = :status
+ {$user_condition}
+ GROUP BY aum.user_id
+ ORDER BY Nachname, Vorname";
+ $parameters[':status'] = $status;
+ } else {
+ $query = "SELECT su.`user_id`,
+ su.`status`,
+ ui.`geschlecht`,
+ ui.`title_front` AS Titel,
+ aum.`Vorname`,
+ aum.`Nachname`,
+ ui.`title_rear` AS Titel2,
+ aum.`username`,
+ ui.`privadr`,
+ ui.`privatnr`,
+ aum.`Email`,
+ ui.`mkdate` AS Anmeldedatum,
+ IFNULL(aum.`matriculation_number`, dfe.`content`) AS Matrikelnummer
+ FROM `seminar_user` AS su
+ JOIN `auth_user_md5` AS aum USING (`user_id`)
+ LEFT JOIN `user_info` AS ui USING (`user_id`)
+ LEFT JOIN `datafields_entries` AS dfe
+ ON dfe.`range_id` = su.`user_id`
+ AND dfe.`datafield_id` = :datafield_id
+ WHERE `Seminar_id` = :seminar_id
+ {$user_condition}
+ GROUP BY su.`user_id`
+ ORDER BY `status` DESC, `Nachname`, `Vorname`";
+ }
+
return DBManager::get()->fetchAll(
$query,
$parameters,