diff --git a/app/controllers/course/members.php b/app/controllers/course/members.php index e631bb75a8907fb2b27a36fdc4306cf23f0fac78..21023554c4c8bfd500b06516ea3bbbeb0e87dd28 100644 --- a/app/controllers/course/members.php +++ b/app/controllers/course/members.php @@ -456,13 +456,12 @@ class Course_MembersController extends AuthenticatedController $this->flash['move'] = Request::int('move'); $this->redirect('course/members/send_to_course'); } else { - global $perm; - if ($perm->have_perm('root')) { + if ($GLOBALS['perm']->have_perm('root')) { $parameters = [ 'semtypes' => studygroup_sem_types() ?: null, 'exclude' => [Context::getId()], ]; - } else if ($perm->have_perm('admin')) { + } else if ($GLOBALS['perm']->have_perm('admin')) { $parameters = [ 'semtypes' => studygroup_sem_types() ?: null, 'institutes' => array_map(function ($i) { @@ -488,6 +487,7 @@ class Course_MembersController extends AuthenticatedController if (!empty($this->flash['users']) || Request::getArray('users')) { $users = $this->flash['users'] ?: Request::getArray('users'); // create a usable array + $this->users = []; foreach ($users as $user => $val) { if ($val) { $this->users[] = $user; @@ -558,6 +558,7 @@ class Course_MembersController extends AuthenticatedController public function send_message_action() { if (!empty($this->flash['users'])) { + $users = []; // create a usable array foreach ($this->flash['users'] as $user => $val) { if ($val) { @@ -827,7 +828,6 @@ class Course_MembersController extends AuthenticatedController case 'message': $this->redirect('course/members/send_message'); return; - break; default: $target = 'course/members/index'; break; @@ -867,11 +867,9 @@ class Course_MembersController extends AuthenticatedController case 'to_course': $this->redirect('course/members/select_course'); return; - break; case 'message': $this->redirect('course/members/send_message'); return; - break; default: $target = 'course/members/index'; break; @@ -910,11 +908,9 @@ class Course_MembersController extends AuthenticatedController case 'to_course': $this->redirect('course/members/select_course'); return; - break; case 'message': $this->redirect('course/members/send_message'); return; - break; default: $target = 'course/members/index'; break; @@ -950,7 +946,6 @@ class Course_MembersController extends AuthenticatedController case 'message': $this->redirect('course/members/send_message'); return; - break; default: $target = 'course/members/index'; break; @@ -984,7 +979,6 @@ class Course_MembersController extends AuthenticatedController case 'message': $this->redirect('course/members/send_message'); return; - break; default: $target = 'course/members/index'; break; @@ -1096,8 +1090,9 @@ class Course_MembersController extends AuthenticatedController )); } } else { + $users = []; if ($cmd === 'singleuser') { - $users = [$user_id]; + $users[] = $user_id; } else { // create a usable array foreach ($this->flash['users'] as $user => $val) { @@ -1570,7 +1565,7 @@ class Course_MembersController extends AuthenticatedController 'user_id', [ 'permission' => ['autor', 'tutor', 'dozent'], - 'institute' => $sem_institutes, + 'institute' => $sem_institutes ?? [], 'seminar_id' => $course->id, ] ); @@ -2131,7 +2126,7 @@ class Course_MembersController extends AuthenticatedController private function insertAdmissionMember(array $users, string $next_status, bool $consider_contingent, bool $accepted = false, string $cmd = 'add_user'): array { $messaging = new messaging; - $status_title = get_title_for_status('dozent', 1); + $msgs = []; foreach ($users as $user_id => $value) { if ($value) { $user = User::find($user_id); @@ -2156,10 +2151,15 @@ class Course_MembersController extends AuthenticatedController ); } else { if (!$accepted) { - $message = sprintf(_('Sie wurden aus der Warteliste in die Veranstaltung **%s** aufgenommen und sind damit zugelassen.'), -$this->course_title); + $message = sprintf( + _('Sie wurden aus der Warteliste in die Veranstaltung **%s** aufgenommen und sind damit zugelassen.'), + $this->course_title + ); } else { - $message = sprintf(_('Sie wurden vom Status **vorläufig akzeptiert** auf **teilnehmend** in der Veranstaltung **%s** hochgestuft und sind damit zugelassen.'), $this->course_title); + $message = sprintf( + _('Sie wurden vom Status **vorläufig akzeptiert** auf **teilnehmend** in der Veranstaltung **%s** hochgestuft und sind damit zugelassen.'), + $this->course_title + ); } } @@ -2243,7 +2243,7 @@ $this->course_title); } else { $directionString = 'runtergestuft'; } - + $log_level = ''; switch ($status) { case 'tutor': $log_level = 'zum Tutor'; break; diff --git a/app/controllers/course/statusgroups.php b/app/controllers/course/statusgroups.php index 5e09f515d44a3d0a8eccb2810046a75fdef4e829..5536ab90d5f4f49bc9793284208670633f52a3e3 100644 --- a/app/controllers/course/statusgroups.php +++ b/app/controllers/course/statusgroups.php @@ -34,9 +34,9 @@ class Course_StatusgroupsController extends AuthenticatedController $this->config = CourseConfig::get($this->course_id); // Check perms - $this->is_dozent = $perm->have_studip_perm('dozent', $this->course_id); - $this->is_tutor = $perm->have_studip_perm('tutor', $this->course_id); - $this->is_autor = $perm->have_studip_perm('autor', $this->course_id); + $this->is_dozent = $GLOBALS['perm']->have_studip_perm('dozent', $this->course_id); + $this->is_tutor = $GLOBALS['perm']->have_studip_perm('tutor', $this->course_id); + $this->is_autor = $GLOBALS['perm']->have_studip_perm('autor', $this->course_id); // Hide groups page? if (!$this->is_tutor && $this->config->COURSE_MEMBERS_HIDE) { @@ -106,7 +106,7 @@ class Course_StatusgroupsController extends AuthenticatedController $groupdata = [ 'group' => $g, 'members' => [], - 'membercount' => $membercounts[$g->id] ?: 0, + 'membercount' => $membercounts[$g->id] ?? 0, 'invisible_users' => 0 ]; @@ -118,7 +118,7 @@ class Course_StatusgroupsController extends AuthenticatedController if ($this->sort_group == $g->id) { $sorted = $this->sortMembers($g->members, $this->sort_by, $this->order); } else { - $sorted = $sorted = $this->sortMembers($g->members); + $sorted = $this->sortMembers($g->members); } foreach ($sorted as $member) { @@ -783,7 +783,7 @@ class Course_StatusgroupsController extends AuthenticatedController $numbering = Request::int('startnumber', 1); } for ($i = 0 ; $i < Request::int('number') ; $i++) { - $group = Statusgruppen::createOrUpdate('', Request::get('prefix').' '. + Statusgruppen::createOrUpdate('', Request::get('prefix').' '. $numbering++, null, $this->course_id, Request::int('size', 0), Request::int('selfassign', 0) + Request::int('exclusive', 0), @@ -1059,7 +1059,7 @@ class Course_StatusgroupsController extends AuthenticatedController // Get selected action for group members. $actions = Request::getArray('members_action'); - $action = $actions[$group_id]; + $action = $actions[$group_id] ?? ''; switch ($action) { case 'move': diff --git a/app/views/course/statusgroups/_group.php b/app/views/course/statusgroups/_group.php index d84b456fe91b32dee815458d3d3819f41c7dcef0..e9230658a56654eae7f7693001512d2fdb2996ac 100644 --- a/app/views/course/statusgroups/_group.php +++ b/app/views/course/statusgroups/_group.php @@ -146,7 +146,7 @@ <section> <article id="group-members-<?= $group->id ?>"<?= $load ? ' class="open"' : ''?>> <?php if ($load) : ?> - <?= $this->render_partial('course/statusgroups/getgroup', compact('members is_tutor is_locked group order sort_by')) ?> + <?= $this->render_partial('course/statusgroups/getgroup', compact('members', 'is_tutor', 'is_locked', 'group', 'order','sort_by')) ?> <?php endif ?> </article> </section> diff --git a/lib/export/export_studipdata_func.inc.php b/lib/export/export_studipdata_func.inc.php index 179daf45fd47fa2068a23fd91c17c6c23b5bddd9..82a70d620fa57170d7529f733c74a68a537b908a 100644 --- a/lib/export/export_studipdata_func.inc.php +++ b/lib/export/export_studipdata_func.inc.php @@ -83,7 +83,7 @@ function output_data($object_data, $output_mode = "file", $flush = false) function export_range($range_id) { global $o_mode, $range_name, $ex_person_details, $persons, $ex_sem; - + $output_startet = false; // Ist die Range-ID eine Einrichtungs-ID? $query = "SELECT Name FROM Institute WHERE Institut_id = ?"; $statement = DBManager::get()->prepare($query); @@ -104,7 +104,7 @@ function export_range($range_id) $statement = DBManager::get()->prepare($query); $statement->execute([$range_id]); while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { - if ($row['Name'] != '') { + if (!empty($row['Name'])) { // output_data ( xml_header(), $o_mode); export_inst($row['Institut_id']); } @@ -117,7 +117,7 @@ function export_range($range_id) $statement = DBManager::get()->prepare($query); $statement->execute([$range_id]); $row = $statement->fetch(PDO::FETCH_ASSOC); - if ($row && $row['Name'] != '') { + if ($row && $row['Name']) { $range_name = $row['Name']; if (!$output_startet) { output_data(xml_header(), $o_mode); @@ -149,7 +149,7 @@ function export_range($range_id) output_data(xml_header(), $o_mode); $output_startet = true; } - foreach ($inst_array as $key => $inst_ids) { + foreach ($inst_array as $inst_ids) { export_inst($inst_ids); } } @@ -158,6 +158,7 @@ function export_range($range_id) $query = "SELECT 1 FROM sem_tree WHERE sem_tree_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute([$range_id]); + $sem_ids = []; if ($statement->fetchColumn() || $range_id == 'root') { if (!$output_startet) { output_data(xml_header(), $o_mode); @@ -226,7 +227,7 @@ function export_range($range_id) */ function export_inst($inst_id, $ex_sem_id = "all") { - global $ex_type, $o_mode, $xml_file, $xml_names_inst, $xml_groupnames_inst, $INST_TYPE; + global $ex_type, $o_mode, $xml_names_inst, $xml_groupnames_inst, $INST_TYPE; $query = "SELECT * FROM Institute WHERE Institut_id = ?"; $statement = DBManager::get()->prepare($query); @@ -238,9 +239,9 @@ function export_inst($inst_id, $ex_sem_id = "all") if ($val == '') { $val = $key; } - if ($key == 'type' && $INST_TYPE[$institute[$key]]['name'] != '') { + if ($key === 'type' && !empty($INST_TYPE[$institute[$key]]) && $INST_TYPE[$institute[$key]]['name']) { $data_object .= xml_tag($val, $INST_TYPE[$institute[$key]]['name']); - } elseif ($institute[$key] != '') { + } elseif (!empty($institute[$key])) { $data_object .= xml_tag($val, $institute[$key]); } } @@ -252,7 +253,7 @@ function export_inst($inst_id, $ex_sem_id = "all") $statement = DBManager::get()->prepare($query); $statement->execute([$institute['fakultaets_id']]); $faculty = $statement->fetch(PDO::FETCH_ASSOC); - if ($faculty['Name'] != '') { + if ($faculty && $faculty['Name']) { $data_object .= xml_tag($xml_groupnames_inst["childobject"], $faculty['Name'], ['key' => $faculty['Institut_id']]); } @@ -480,7 +481,7 @@ function export_sem($inst_id, $ex_sem_id = 'all') $data_object .= xml_close_tag($xml_groupnames_lecture['childgroup3a']); } elseif ($key === 'admission_turnout') { $data_object .= xml_open_tag($val, !empty($row['admission_type']) ? _('max.') : _('erw.')); - $data_object .= $row[$key]; + $data_object .= $row[$key] ?? ''; $data_object .= xml_close_tag($val); } elseif ($key === 'teilnehmer_anzahl_aktuell') { $count_statement->execute([$row['seminar_id']]); @@ -511,6 +512,9 @@ function export_sem($inst_id, $ex_sem_id = 'all') $inner_statement->execute([$row['seminar_id']]); while ($inner = $inner_statement->fetch(PDO::FETCH_ASSOC)) { + if (!isset($persons[$inner['user_id']])) { + $persons[$inner['user_id']] = false; + } if ($ex_person_details) { $persons[$inner['user_id']] = true; } @@ -554,7 +558,7 @@ function export_sem($inst_id, $ex_sem_id = 'all') */ function export_teilis($inst_id, $ex_sem_id = "no") { - global $range_id, $xml_file, $o_mode, $xml_names_person, $xml_groupnames_person, $xml_names_studiengaenge, $xml_groupnames_studiengaenge, $object_counter, $filter, $SEM_CLASS, $SEM_TYPE; + global $range_id, $o_mode, $xml_names_person, $xml_groupnames_person, $xml_names_studiengaenge, $xml_groupnames_studiengaenge, $object_counter, $filter, $SEM_CLASS, $SEM_TYPE; if ($filter == 'status') { $query = "SELECT statusgruppe_id, name @@ -692,10 +696,14 @@ function export_teilis($inst_id, $ex_sem_id = "no") $object_counter_tmp = $object_counter; if (count($data) > 0) { $data_object_tmp .= xml_open_tag($xml_groupnames_person['subgroup1'], $val1); + $person_out = []; foreach ($data as $row) { + if (!isset($person_out[$row['user_id']])) { + $person_out[$row['user_id']] = false; + } // Nur Personen ausgeben, die entweder einer Gruppe angehoeren // oder zur Veranstaltung gehoeren und noch nicht ausgegeben wurden. - if ($key1 != 'no' || $person_out[$row['user_id']] != true) { + if ($key1 !== 'no' || !$person_out[$row['user_id']]) { $object_counter += 1; $data_object_tmp .= xml_open_tag($xml_groupnames_person["object"], $row['username']); @@ -704,7 +712,7 @@ function export_teilis($inst_id, $ex_sem_id = "no") if ($val == '') { $val = $key; } - if ($row[$key] != '') { + if (!empty($row[$key])) { $data_object_tmp .= xml_tag($val, $row[$key]); } } @@ -766,7 +774,7 @@ function export_teilis($inst_id, $ex_sem_id = "no") */ function export_pers($inst_id) { - global $range_id, $xml_file, $o_mode, $xml_names_person, $xml_groupnames_person, $object_counter, $filter; + global $o_mode, $xml_names_person, $xml_groupnames_person, $object_counter; $group = 'FIRSTGROUP'; $group_tab_zelle = 'name'; @@ -795,10 +803,11 @@ function export_pers($inst_id) } // create xml-output $data_object = xml_open_tag($xml_groupnames_person['group']); + $data_found = false; foreach ($rows as $row) { $data_found = true; $group_string = ''; - if ($do_group && $group != $row[$group_tab_zelle]) { + if ($do_group && isset($row[$group_tab_zelle]) && $group != $row[$group_tab_zelle]) { if ($group != 'FIRSTGROUP') { $group_string .= xml_close_tag($xml_groupnames_person['subgroup1']); } @@ -870,7 +879,7 @@ function export_persons($persons) if ($val == '') { $val = $key; } - if ($row[$key] != '') { + if (!empty($row[$key])) { $data_object .= xml_tag($val, $row[$key]); } }