aboutsummaryrefslogtreecommitdiff
path: root/lib/models/Course.class.php
diff options
context:
space:
mode:
authorDavid Siegfried <david.siegfried@uni-vechta.de>2024-03-19 17:47:41 +0000
committerJan-Hendrik Willms <tleilax+github@gmail.com>2024-03-21 11:11:22 +0100
commit60c980a37d6b7fc03cf024b73b62294cb7d404e6 (patch)
treeee03fe9ef93c6108a6ae936f2ab7a03347b0c55e /lib/models/Course.class.php
parenteee175d0187a8ebbe60b9544999b006bef5d35f2 (diff)
refine member-export, fixes #3841
Closes #3841 Merge request studip/studip!2711
Diffstat (limited to 'lib/models/Course.class.php')
-rw-r--r--lib/models/Course.class.php53
1 files changed, 53 insertions, 0 deletions
diff --git a/lib/models/Course.class.php b/lib/models/Course.class.php
index 8bca5e9..866b67d 100644
--- a/lib/models/Course.class.php
+++ b/lib/models/Course.class.php
@@ -1117,4 +1117,57 @@ class Course extends SimpleORMap implements Range, PrivacyObject, StudipItem, Fe
//that have autor permissions or higher.
return $GLOBALS['perm']->have_studip_perm('autor', $this->id, $user_id);
}
+
+ /**
+ * Get user information for all users in this course
+ *
+ */
+ public function getMembersData(?string $status = ''): array
+ {
+ $result = [];
+
+ if (!$status) {
+ foreach ($this->members->orderBy('position, nachname') as $member) {
+ $result[$member->user_id] = $member->getExportData();
+ }
+ foreach ($this->admission_applicants->findBy('status', 'accepted')->orderBy('position') as $member) {
+ $result[$member->user_id] = $member->getExportData();
+ }
+ } elseif ($status === 'awaiting') {
+ foreach ($this->admission_applicants->findBy('status', $status)->orderBy('position') as $member) {
+ $result[$member->user_id] = $member->getExportData();
+ }
+ } elseif ($status === 'claiming') {
+ $cs = CourseSet::getSetForCourse($this->id);
+ if (is_object($cs) && !$cs->hasAlgorithmRun()) {
+ $claiming_users = User::findFullMany(array_keys(AdmissionPriority::getPrioritiesByCourse($cs->getId(), $this->id)), 'ORDER BY nachname');
+ foreach ($claiming_users as $claiming_user) {
+ $studycourse = [];
+ $claiming_user->studycourses->map(function($sc) use (&$studycourse) {
+ $studycourse[]= $sc->studycourse->name . ',' . $sc->degree->name . ',' . $sc->semester;
+ });
+ $export_data = [
+ 'status' => $status,
+ 'salutation' => $claiming_user->salutation,
+ 'Titel' => $claiming_user->title_front,
+ 'Vorname' => $claiming_user->vorname,
+ 'Nachname' => $claiming_user->nachname,
+ 'Titel2' => $claiming_user->title_rear,
+ 'username' => $claiming_user->username,
+ 'privadr' => $claiming_user->privadr,
+ 'privatnr' => $claiming_user->privatnr,
+ 'Email' => $claiming_user->email,
+ 'Anmeldedatum' => '',
+ 'Matrikelnummer' => $claiming_user->matriculation_number,
+ 'studiengaenge' => implode(';', $studycourse),
+ 'position' => 0,
+ ];
+ $result[$claiming_user->user_id] = $export_data;
+ }
+ }
+ }
+
+ return $result;
+ }
+
}