aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Noack <noack@data-quest.de>2023-11-03 13:09:47 +0000
committerAndré Noack <noack@data-quest.de>2023-11-03 13:09:47 +0000
commita47a80284755495ad7efd1e5b8131c3e4dbe2805 (patch)
tree79e6e3e49fdc80f881303a8ad87efa8d94605410
parented00a0fbd4342f1d30bed8615a8a8273b5d17cdd (diff)
Resolve "Eintrag in die Hauptveranstaltung wird nicht vorgenommen bei Nachrücken aus der Warteliste (ergibt Fatal error auf der Meine Veranstaltungen)"
Closes #3411 Merge request studip/studip!2318
-rw-r--r--app/controllers/blubber.php6
-rw-r--r--app/controllers/course/statusgroups.php6
-rw-r--r--lib/classes/AutoInsert.class.php10
-rw-r--r--lib/models/AdmissionApplication.class.php24
4 files changed, 8 insertions, 38 deletions
diff --git a/app/controllers/blubber.php b/app/controllers/blubber.php
index 71d89f3..bd86050 100644
--- a/app/controllers/blubber.php
+++ b/app/controllers/blubber.php
@@ -414,11 +414,7 @@ class BlubberController extends AuthenticatedController
$statement = DBManager::get()->prepare($query);
$statement->execute([$this->thread->id]);
foreach ($statement->fetchFirst() as $user_id) {
- $member = new CourseMember();
- $member['user_id'] = $user_id;
- $member['seminar_id'] = $course->getId();
- $member['status'] = $user_id === $this->thread['user_id'] ? 'dozent' : 'tutor';
- $member->store();
+ CourseMember::insertCourseMember($course->getId(), $user_id, $user_id === $this->thread['user_id'] ? 'dozent' : 'tutor');
}
$this->thread['context_type'] = 'course';
diff --git a/app/controllers/course/statusgroups.php b/app/controllers/course/statusgroups.php
index 747feae..a6f6b72 100644
--- a/app/controllers/course/statusgroups.php
+++ b/app/controllers/course/statusgroups.php
@@ -418,11 +418,7 @@ class Course_StatusgroupsController extends AuthenticatedController
foreach ($mp->getAddedUsers() as $a) {
if (!CourseMember::exists([$this->course_id, $a])) {
- $m = new CourseMember();
- $m->seminar_id = $this->course_id;
- $m->user_id = $a;
- $m->status = User::find($a)->perms == 'user' ? 'user' : 'autor';
- $m->store();
+ CourseMember::insertCourseMember($this->course_id, $a, User::find($a)->perms == 'user' ? 'user' : 'autor');
}
$s = new StatusgruppeUser();
diff --git a/lib/classes/AutoInsert.class.php b/lib/classes/AutoInsert.class.php
index fd0f7bb..b2168cc 100644
--- a/lib/classes/AutoInsert.class.php
+++ b/lib/classes/AutoInsert.class.php
@@ -149,15 +149,7 @@ class AutoInsert
private function addUser($user_id, $seminar)
{
- $course_member = new CourseMember([$seminar['Seminar_id'], $user_id]);
- $course_member->setData([
- 'Seminar_id' => $seminar['Seminar_id'],
- 'user_id' => $user_id,
- 'status' => 'autor',
- 'gruppe' => select_group($seminar['start_time']),
- ]);
-
- return $course_member->store() > 0;
+ return CourseMember::insertCourseMember($seminar['Seminar_id'], $user_id, 'autor');
}
private function removeUser($user_id, $seminar)
diff --git a/lib/models/AdmissionApplication.class.php b/lib/models/AdmissionApplication.class.php
index a62ebb5..2901455 100644
--- a/lib/models/AdmissionApplication.class.php
+++ b/lib/models/AdmissionApplication.class.php
@@ -197,32 +197,18 @@ class AdmissionApplication extends SimpleORMap implements PrivacyObject
"seminar_id = ? AND status = 'awaiting' ORDER BY position LIMIT {$count}",
[$seminar_id]
);
+ $log_message = 'Wurde automatisch aus der Warteliste in die Veranstaltung eingetragen.';
foreach ($memberships as $membership) {
- //ok, here ist the "colored-group" meant (for grouping on meine_seminare), not the grouped seminars as above!
- $group = select_group($seminar->getSemesterStartTime());
if (!$sem_preliminary) {
- $course_membership = new CourseMember([$seminar_id, $membership->id]);
- $course_membership->setData([
- 'status' => 'autor',
- 'gruppe' => $group,
- ]);
- $affected = $course_membership->store();
-
- NotificationCenter::postNotification('UserDidEnterCourse', $seminar->getId(), $membership->user_id);
+ $affected = CourseMember::insertCourseMember($seminar_id, $membership->user_id, 'autor', false, false, $log_message);
} else {
$membership->status = 'accepted';
$affected = $membership->store();
+ StudipLog::log('SEM_USER_ADD', $seminar->getId(), $membership->user_id,'accepted', $log_message);
}
- if ($affected > 0) {
- $log_message = 'Wurde automatisch aus der Warteliste in die Veranstaltung eingetragen.';
- StudipLog::log('SEM_USER_ADD', $seminar->getId(), $membership->user_id, $sem_preliminary ? 'accepted' : 'autor', $log_message);
- if (!$sem_preliminary) {
- $affected = $membership->delete();
- } else {
- $affected = 0;
- }
+ if ($affected) {
//User benachrichtigen
- if (($sem_preliminary || $affected > 0) && $send_message) {
+ if ($send_message) {
setTempLanguage($membership->user_id);
if (!$sem_preliminary) {
$message = sprintf (_('Sie sind in die Veranstaltung **%s (%s)** eingetragen worden, da für Sie ein Platz frei geworden ist. Damit sind Sie für die Teilnahme an der Veranstaltung zugelassen. Ab sofort finden Sie die Veranstaltung in der Übersicht Ihrer Veranstaltungen.'), $seminar->getName(), $seminar->getFormattedTurnus(true));