diff --git a/app/controllers/admission/courseset.php b/app/controllers/admission/courseset.php index a37ce7dee069a1205d93659761c0114bdb56589f..11b0672826c46a85c91f4c4edbdca73ed026c0d5 100644 --- a/app/controllers/admission/courseset.php +++ b/app/controllers/admission/courseset.php @@ -42,11 +42,13 @@ class Admission_CoursesetController extends AuthenticatedController $views = new ActionsWidget(); $views->addLink( _('Anmeldeset anlegen'), - $this->url_for('admission/courseset/configure'), - Icon::create('add', 'clickable') - )->setActive($action == 'configure'); + $this->configureURL(), + Icon::create('add') + )->setActive($action === 'configure'); Sidebar::Get()->addWidget($views); - + if (!isset($this->instant_course_set_view)) { + $this->instant_course_set_view = false; + } } /** @@ -129,16 +131,18 @@ class Admission_CoursesetController extends AuthenticatedController : null; }, $this->coursesets)); if (count($not_distributed_coursesets)) { - PageLayout::postMessage(MessageBox::info( - _("Es existieren Anmeldesets, die zum Zeitpunkt der Platzverteilung nicht gelost wurden. Stellen Sie sicher, dass der Cronjob \"Losverfahren überprüfen\" ausgeführt wird."), - array_unique($not_distributed_coursesets))); + PageLayout::postInfo( + _('"Es existieren Anmeldesets, die zum Zeitpunkt der Platzverteilung nicht gelost wurden. Stellen Sie sicher, dass der Cronjob "Losverfahren überprüfen" ausgeführt wird."'), + array_unique($not_distributed_coursesets)); } } /** * Configure a new or existing course set. */ - public function configure_action($coursesetId='') { + public function configure_action($coursesetId = '') + { + $this->courseset = null; if ($GLOBALS['perm']->have_perm('root')) { if ($coursesetId) { // Load course set data. @@ -162,7 +166,7 @@ class Admission_CoursesetController extends AuthenticatedController $this->selectedSemester = $_SESSION['_default_sem'] ?: Semester::findCurrent()->semester_id; } Config::get()->AJAX_AUTOCOMPLETE_DISABLED = false; - $this->instSearch = QuickSearch::get("institute_id", new StandardSearch("Institut_id")) + $this->instSearch = QuickSearch::get('institute_id', new StandardSearch('Institut_id')) ->withoutButton() ->render(); } else { @@ -264,7 +268,8 @@ class Admission_CoursesetController extends AuthenticatedController * @param String $coursesetId the course set to save or empty if it is a * new course set */ - public function save_action($coursesetId='') { + public function save_action($coursesetId = '') + { if (!Request::submitted('submit') || !Request::get('name') || !$this->instant_course_set_view && !Request::getArray('institutes')) { $this->flash['name'] = Request::get('name'); $this->flash['institutes'] = Request::getArray('institutes'); @@ -310,7 +315,7 @@ class Admission_CoursesetController extends AuthenticatedController if (Request::option('semester')) { $_SESSION['_default_sem'] = Request::option('semester'); } - PageLayout::postMessage(MessageBox::success(sprintf(_("Das Anmeldeset: %s wurde gespeichert"), htmlReady($courseset->getName())))); + PageLayout::postSuccess(sprintf(_('Das Anmeldeset: %s wurde gespeichert'), htmlReady($courseset->getName()))); if ($this->instant_course_set_view) { $this->redirect($this->url_for('course/admission')); } else { @@ -343,11 +348,11 @@ class Admission_CoursesetController extends AuthenticatedController * from * @see CoursesetModel::getInstCourses */ - public function instcourses_action($coursesetId='') { + public function instcourses_action($coursesetId = '') + { CSRFProtection::verifyUnsafeRequest(); $this->selectedCourses = []; //autoload - $courseset = new CourseSet(); if ($coursesetId && !Request::getArray('courses')) { $courseset = new CourseSet($coursesetId); $this->selectedCourses = $courseset->getCourses(); @@ -361,7 +366,8 @@ class Admission_CoursesetController extends AuthenticatedController /** * Fetches available institutes for the current user. */ - public function institutes_action() { + public function institutes_action() + { CSRFProtection::verifyUnsafeRequest(); $this->myInstitutes = Institute::getMyInstitutes(); $this->selectedInstitutes = []; @@ -369,7 +375,7 @@ class Admission_CoursesetController extends AuthenticatedController $this->selectedInstitutes[$institute] = new Institute($institute); } Config::get()->AJAX_AUTOCOMPLETE_DISABLED = false; - $this->instSearch = QuickSearch::get("institute_id", new StandardSearch("Institut_id")) + $this->instSearch = QuickSearch::get('institute_id', new StandardSearch('Institut_id')) ->withOutButton() ->render(); } @@ -398,6 +404,9 @@ class Admission_CoursesetController extends AuthenticatedController $all_members = array_merge($all_members, $course->admission_applicants->findBy('status', words('accepted awaiting'))->pluck('user_id')); $all_members = array_unique($all_members); foreach ($all_members as $one) { + if (!isset($multi_members[$one])) { + $multi_members[$one] = 0; + } $multi_members[$one]++; } $distinct_members = array_unique(array_merge($distinct_members, $all_members)); @@ -456,12 +465,12 @@ class Admission_CoursesetController extends AuthenticatedController foreach (array_keys($participants) as $one) { $multi_members[$one][] = $course->name . ($course->veranstaltungsnummer ? '|'. $course->veranstaltungsnummer : ''); } - foreach ($participants as $user_id => $part) { + foreach ($participants as $part) { $liste[] = [$part['username'], $part['vorname'], $part['nachname'], $part['email'], $course->name . ($course->veranstaltungsnummer ? '|'. $course->veranstaltungsnummer : '') , $part['status']]; } } if ($csv == 'download_all_members') { - $captions = [_("Username"), _("Vorname"), _("Nachname"), _("E-Mail"), _("Veranstaltung"), _("Status")]; + $captions = [_('Username'), _('Vorname'), _('Nachname'), _('E-Mail'), _('Veranstaltung'), _('Status')]; if (count($liste)) { $tmpname = md5(uniqid('tmp')); if (array_to_csv($liste, $GLOBALS['TMP_PATH'].'/'.$tmpname, $captions)) { @@ -488,9 +497,9 @@ class Admission_CoursesetController extends AuthenticatedController $max_count[] = count($courses); $c++; } - $captions = [_("Nutzername"), _("Vorname"), _("Nachname"), _("E-Mail")]; + $captions = [_('Nutzername'), _('Vorname'), _('Nachname'), _('E-Mail')]; foreach (range(1,max($max_count)) as $num) { - $captions[] = _("Veranstaltung") . ' ' . $num; + $captions[] = _('Veranstaltung') . ' ' . $num; } if (count($liste)) { $tmpname = md5(uniqid('tmp')); @@ -535,7 +544,7 @@ class Admission_CoursesetController extends AuthenticatedController } } if ($ok) { - PageLayout::postMessage(MessageBox::success(_("Die zugeordneten Veranstaltungen wurden konfiguriert."))); + PageLayout::postSuccess(_('Die zugeordneten Veranstaltungen wurden konfiguriert.')); } $this->redirect($this->url_for('admission/courseset/configure/' . $courseset->getId())); return; @@ -586,7 +595,6 @@ class Admission_CoursesetController extends AuthenticatedController ); }; foreach ($users as $user) { - $row = []; $app_courses = $applicants[$user->id]; asort($app_courses); @@ -638,7 +646,7 @@ class Admission_CoursesetController extends AuthenticatedController )); } - function copy_action($set_id) + public function copy_action($set_id) { $courseset = new CourseSet($set_id); $cloned_courseset = clone $courseset; @@ -650,10 +658,16 @@ class Admission_CoursesetController extends AuthenticatedController $rule->setDistributionTime(strtotime('+1 month 23:59')); $rule->store(); $cloned_courseset->setAlgorithmRun(false); - PageLayout::postMessage(MessageBox::info(sprintf(_("Bitte passen Sie das Datum der automatischen Platzverteilung an, es wurde automatisch auf %s festgelegt!"), strftime('%x %X', $rule->getDistributiontime())))); + PageLayout::postInfo(sprintf( + _('Bitte passen Sie das Datum der automatischen Platzverteilung an, es wurde automatisch auf %s festgelegt!'), + strftime('%x %X', $rule->getDistributiontime()) + )); } } else if ($rule->getEndTime() && $rule->getEndTime() < time()) { - PageLayout::postMessage(MessageBox::info(sprintf(_("Der Gültigkeitszeitraum der Regel %s endet in der Vergangenheit!"), htmlReady($rule->getName())))); + PageLayout::postInfo(sprintf( + _('Der Gültigkeitszeitraum der Regel %s endet in der Vergangenheit!'), + htmlReady($rule->getName()) + )); } } $this->redirect(URLHelper::getURL('dispatch.php/admission/courseset/configure/' . @@ -665,10 +679,8 @@ class Admission_CoursesetController extends AuthenticatedController * * @param String $seminare_condition SQL condition */ - function get_courses($seminare_condition) + public function get_courses($seminare_condition) { - global $perm, $user; - list($institut_id, $all) = explode('_', $this->current_institut_id); // Prepare count statements $query = "SELECT count(*) @@ -691,7 +703,7 @@ class Admission_CoursesetController extends AuthenticatedController INNER JOIN courseset_rule csr ON csr.set_id=seminar_courseset.set_id AND csr.type='ParticipantRestrictedAdmission' INNER JOIN seminare ON seminar_courseset.seminar_id=seminare.seminar_id "; - if ($institut_id == 'all' && $perm->have_perm('root')) { + if ($institut_id === 'all' && $GLOBALS['perm']->have_perm('root')) { $sql .= "WHERE 1 {$seminare_condition} "; } elseif ($all == 'all') { $sql .= "INNER JOIN Institute USING (Institut_id) @@ -707,7 +719,7 @@ class Admission_CoursesetController extends AuthenticatedController $statement = DBManager::get()->prepare($sql); $statement->execute($parameters); - + $ret = []; while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { $seminar_id = $row['seminar_id']; $ret[$seminar_id] = $row; diff --git a/app/controllers/admission/rule.php b/app/controllers/admission/rule.php index 205e1a02d706b69fd65415a1f9ca6ebe9e341334..a8fd05edbb03f378311e4d0fa5793cf8cbd846f5 100644 --- a/app/controllers/admission/rule.php +++ b/app/controllers/admission/rule.php @@ -96,13 +96,13 @@ class Admission_RuleController extends AuthenticatedController $this->rule = new $ruleType($ruleId); $requestData = Request::getInstance(); // Check for start and end date and parse the String values to timestamps. - if ($requestData['start_date'] ) { + if (!empty($requestData['start_date'])) { $parsed = date_parse($requestData['start_date']); $timestamp = mktime($parsed['hour'], $parsed['minute'], 0, $parsed['month'], $parsed['day'], $parsed['year']); $requestData['start_time'] = $timestamp; } - if ($requestData['end_date'] ) { + if (!empty($requestData['end_date'])) { $parsed = date_parse($requestData['end_date']); $timestamp = mktime($parsed['hour'], $parsed['minute'], 0, $parsed['month'], $parsed['day'], $parsed['year']); diff --git a/app/controllers/course/forum/index.php b/app/controllers/course/forum/index.php index 02e2e9a233d474d4412c0fdbab4d4605e529de5c..97484616de2cad20a3403ab858c9b15d2f94dbcb 100644 --- a/app/controllers/course/forum/index.php +++ b/app/controllers/course/forum/index.php @@ -121,6 +121,9 @@ class Course_Forum_IndexController extends ForumController if (!empty($list['list'])) { // append the remaining entries to the standard category + if (!isset($new_list[$this->getId()])) { + $new_list[$this->getId()] = []; + } $new_list[$this->getId()] = array_merge((array)$new_list[$this->getId()], $list['list']); } diff --git a/app/controllers/course/room_requests.php b/app/controllers/course/room_requests.php index 1cc379673b2f843e45669ff175821ec4782ae841..9a469489f39fd75194164462443828fee64bf277 100644 --- a/app/controllers/course/room_requests.php +++ b/app/controllers/course/room_requests.php @@ -151,10 +151,10 @@ class Course_RoomRequestsController extends AuthenticatedController { $result = null; if ($request_id) { - if (!$_SESSION['course_room_request']) { + if (!isset($_SESSION['course_room_request'])) { $_SESSION['course_room_request'] = []; } - if (!$_SESSION['course_room_request'][$request_id]) { + if (!isset($_SESSION['course_room_request'][$request_id])) { $_SESSION['course_room_request'][$request_id] = []; } $result =& $_SESSION['course_room_request'][$request_id]; @@ -235,14 +235,14 @@ class Course_RoomRequestsController extends AuthenticatedController } if ($step >= 3) { if ($this->category) { - $this->selected_properties = $session_data['selected_properties']; + $this->selected_properties = $session_data['selected_properties'] ?? []; } } if ($step >= 4) { - $this->seats = $session_data['selected_properties']['seats']; - $this->comment = $session_data['comment']; - $this->reply_lecturers = $session_data['reply_lecturers']; - $this->preparation_time = $session_data['preparation_time']; + $this->seats = $session_data['selected_properties']['seats'] ?? '0'; + $this->comment = $session_data['comment']?? ''; + $this->reply_lecturers = $session_data['reply_lecturers'] ?? ''; + $this->preparation_time = $session_data['preparation_time'] ?? ''; } } @@ -814,7 +814,7 @@ class Course_RoomRequestsController extends AuthenticatedController $this->request = RoomRequest::find($this->request_id); $selected_room = null; $this->seats = null; - if (($this->request instanceof RoomRequest) && !$session_data['request_id']) { + if (($this->request instanceof RoomRequest) && !isset($session_data['request_id'])) { //It is an existing request that hasn't been modified yet. //Load its data directly. if ($this->request->resource_id) { diff --git a/app/controllers/resources/room_request.php b/app/controllers/resources/room_request.php index 050cf174e925e64ca189a5df39d33f43da5cca86..300078e05fd285be4630aa1da028ff73240f29e1 100644 --- a/app/controllers/resources/room_request.php +++ b/app/controllers/resources/room_request.php @@ -382,7 +382,7 @@ class Resources_RoomRequestController extends AuthenticatedController } } } - array_unique($interval_weekdays); + $interval_weekdays = array_unique($interval_weekdays); //We have all relevant weekdays and can now check //if the time interval lies in one of the relevant weekdays: foreach ($interval_weekdays as $iwd) { @@ -397,12 +397,12 @@ class Resources_RoomRequestController extends AuthenticatedController } } } - if ($this->filter['get_only_request_ids']) { + if (!empty($this->filter['get_only_request_ids'])) { return array_keys($result); } } else { $result = $requests; - if ($this->filter['get_only_request_ids']) { + if (!empty($this->filter['get_only_request_ids'])) { return SimpleCollection::createFromArray($requests)->pluck('id'); } } @@ -800,8 +800,8 @@ class Resources_RoomRequestController extends AuthenticatedController ); $this->requests = $requests; $this->page = $page; - $this->sort_order = $this->filter['sort_order']; - $this->sort_var = $this->filter['sorting']; + $this->sort_order = $this->filter['sort_order'] ?? ''; + $this->sort_var = $this->filter['sorting']?? ''; $this->request_status = $this->filter['request_status'] ?? ''; } diff --git a/app/controllers/tour.php b/app/controllers/tour.php index 54dfeff770cd1d73e80b186cb3e3450e32921604..a288ab27ba0475694e17f15a69c611454c8b4ed3 100644 --- a/app/controllers/tour.php +++ b/app/controllers/tour.php @@ -89,7 +89,7 @@ class TourController extends AuthenticatedController } $data['route_step_nr'] = $first_step; $next_first_step = $first_step; - while ($this->route === $this->tour->steps[$next_first_step - 1]->route) { + while (isset($this->tour->steps[$next_first_step - 1]) && $this->route === $this->tour->steps[$next_first_step - 1]->route) { $data['data'][] = [ 'step_nr' => $this->tour->steps[$next_first_step - 1]->step, 'element' => $this->tour->steps[$next_first_step - 1]->css_selector, diff --git a/app/controllers/userfilter/field.php b/app/controllers/userfilter/field.php index 85dd0be1df221d6c2a34d3f17b6eefe72cd92a1b..937f5200435df0d37ce8bf256a14e19505c66290 100644 --- a/app/controllers/userfilter/field.php +++ b/app/controllers/userfilter/field.php @@ -37,8 +37,10 @@ class Userfilter_FieldController extends AuthenticatedController { $this->conditionFields = UserFilterField::getAvailableFilterFields(); if ($className = Request::option('fieldtype')) { - list($fieldType, $param) = explode('_', $className); $this->className = $className; + $parts = explode('_', $className); + $fieldType = $parts[0]; + $param = $parts[1] ?? null; $this->field = new $fieldType($param); } } diff --git a/app/controllers/userfilter/filter.php b/app/controllers/userfilter/filter.php index 5987b6922b77743b5156f8e8ed23d39399fdf852..87a7d872996a53cf2c0fe5b2df369320ed5853be 100644 --- a/app/controllers/userfilter/filter.php +++ b/app/controllers/userfilter/filter.php @@ -54,11 +54,12 @@ class Userfilter_FilterController extends AuthenticatedController $fields = Request::getArray('field'); $compareOps = Request::getArray('compare_operator'); $values = Request::getArray('value'); - $data = []; for ($i=0 ; $i<sizeof($fields) ; $i++) { $current = $fields[$i]; if ($this->conditionFields[$current]) { - list($fieldType, $param) = explode('_', $current); + $parts = explode('_', $current); + $fieldType = $parts[0]; + $param = $parts[1] ?? null; $field = new $fieldType($param); $field->setCompareOperator($compareOps[$i]); $field->setValue($values[$i]); diff --git a/app/views/admission/courseset/configure.php b/app/views/admission/courseset/configure.php index 0a632f978ad2a47c1117f239693353a6d66c9b41..99919ef5c406d060544bb2565ebb0900c7d36491 100644 --- a/app/views/admission/courseset/configure.php +++ b/app/views/admission/courseset/configure.php @@ -109,8 +109,12 @@ if ($flash['error']) { </label> <label> <?= _('Filter auf Name/Nummer/Lehrperson') ?><br> - <input style="display:inline-block" type="text" onKeypress="if (event.which==13) return STUDIP.Admission.getCourses('<?= $controller->url_for('admission/courseset/instcourses', $courseset ? $courseset->getId() : '') ?>')" value="<?= htmlReady($current_course_filter) ?>" name="course_filter" > - <?=Icon::create('search', 'clickable', ['title' => _("Veranstaltungen anzeigen"),'onClick' => "return STUDIP.Admission.getCourses('" . $controller->url_for('admission/courseset/instcourses', $courseset ? $courseset->getId() : '') ."')"])->asImg()?> + <input style="display:inline-block" type="text" onKeypress="if (event.which==13) return STUDIP.Admission.getCourses('<?= $controller->url_for('admission/courseset/instcourses', $courseset ? $courseset->getId() : '') ?>')" + value="<?= htmlReady($current_course_filter ?? '') ?>" name="course_filter" > + <?= Icon::create('search')->asImg([ + 'title' => _("Veranstaltungen anzeigen"), + 'onClick' => "return STUDIP.Admission.getCourses('" . $controller->url_for('admission/courseset/instcourses', $courseset ? $courseset->getId() : '') ."')" + ]) ?> </label> <div id="instcourses"> <?= $coursesTpl; ?> diff --git a/app/views/admission/courseset/configure_courses.php b/app/views/admission/courseset/configure_courses.php index 60487246fb50ae37260252b9d4b08a0f31d90d73..e80e621d3d99158439422d5c4f2159b8b6edce6e 100644 --- a/app/views/admission/courseset/configure_courses.php +++ b/app/views/admission/courseset/configure_courses.php @@ -2,20 +2,20 @@ <table class="default"> <thead> <tr> - <th><?= _("Name")?></th> - <th><?= _("Lehrende")?></th> - <th><?= _("versteckt")?></th> - <th><?= _("vorläufige Anmeldung")?></th> - <th><?= _("verbindliche Anmeldung")?></th> + <th><?= _('Name')?></th> + <th><?= _('Lehrende')?></th> + <th><?= _('versteckt')?></th> + <th><?= _('vorläufige Anmeldung')?></th> + <th><?= _('verbindliche Anmeldung')?></th> <? if ($participant_restriction) : ?> - <th><?= _("max. Teilnehmende")?></th> + <th><?= _('max. Teilnehmende')?></th> <? endif ?> - <th><?= _("Teilnehmende aktuell")?></th> - <th><?= _("Anmeldungen")?></th> + <th><?= _('Teilnehmende aktuell')?></th> + <th><?= _('Anmeldungen')?></th> <? if ($participant_restriction) : ?> - <th><?= _("Warteliste")?></th> - <th><?= _("Plätze")?></th> - <th><?= _("Nachrücken")?></th> + <th><?= _('Warteliste')?></th> + <th><?= _('Plätze')?></th> + <th><?= _('Nachrücken')?></th> <? endif ?> </tr> </thead> @@ -34,7 +34,7 @@ <td><input <?=$editable?> type="text" size="2" name="configure_courses_turnout[<?= $course->id?>]" value="<?= (int)$course->admission_turnout ?>"></td> <? endif ?> <td><?= $course->getNumParticipants() ?></td> - <td><?= sprintf("%d / %d", $applications[$course->id]['c'],$applications[$course->id]['h']) ?></td> + <td><?= sprintf("%d / %d", $applications[$course->id]['c'] ?? 0 , $applications[$course->id]['h'] ?? 0) ?></td> <? if ($participant_restriction) : ?> <td style="white-space:nowrap"> <input <?=$editable?> type="checkbox" name="configure_courses_disable_waitlist[<?= $course->id?>]" value="1" <?= $course->admission_disable_waitlist ? '' : 'checked' ?> @@ -64,7 +64,7 @@ <?=_("Anzahl aller Teilnehmenden:")?> <?=$count_distinct_members?> <? if ($count_distinct_members) : ?> <a href="<?= $controller->link_for('admission/courseset/configure_courses/' . $set_id .'/download_all_members')?>" title="<?= _("Download")?>"> - <?= Icon::create('file-office', 'clickable')->asImg()?> + <?= Icon::create('file-office') ?> </a> <? endif ?> </div> @@ -72,13 +72,13 @@ <?=_("Mehrfachteilnahmen:")?> <?=$count_multi_members?> <? if ($count_multi_members) : ?> <a href="<?= $controller->link_for('admission/courseset/configure_courses/' . $set_id .'/download_multi_members')?>" title="<?= _("Download")?>"> - <?= Icon::create('file-office', 'clickable')->asImg()?> + <?= Icon::create('file-office') ?> </a> <? endif ?> </div> <div data-dialog-button> - <?= Studip\Button::create(_("Speichern"), 'configure_courses_save') ?> - <?= Studip\LinkButton::create(_("Download"), $controller->url_for('admission/courseset/configure_courses/' . $set_id .'/csv')) ?> + <?= Studip\Button::create(_('Speichern'), 'configure_courses_save') ?> + <?= Studip\LinkButton::create(_('Download'), $controller->url_for('admission/courseset/configure_courses/' . $set_id .'/csv')) ?> </div> <?= CSRFProtection::tokenTag()?> </form> diff --git a/app/views/admission/courseset/institutes.php b/app/views/admission/courseset/institutes.php index 865e61e69084c1302f7de29fe72b85aa1f4cb85f..c22f21f69df393b2b9024fb291e0ea026f2fa030 100644 --- a/app/views/admission/courseset/institutes.php +++ b/app/views/admission/courseset/institutes.php @@ -1,6 +1,9 @@ -<?= Icon::create('arr_2down', 'sort', ['title' => _('Einrichtung hinzufügen')])->asImg(16, ["alt" => _('Einrichtung hinzufügen'), "onclick" => "STUDIP.Admission.updateInstitutes($('input[name=\"institute_id\"]').val(), '".$controller->url_for('admission/courseset/institutes',$courseset?$courseset->getId():'')."', '".$controller->url_for('admission/courseset/instcourses',$courseset?$courseset->getId():'')."', 'add')"]) ?> +<?= Icon::create('arr_2down', Icon::ROLE_SORT)->asImg([ + 'title' => _('Einrichtung hinzufügen'), + 'onclick' => "STUDIP.Admission.updateInstitutes($('input[name=\"institute_id\"]').val(), '" . $controller->url_for('admission/courseset/institutes', !empty($courseset) ? $courseset->getId() : '') . "', '" . $controller->url_for('admission/courseset/instcourses', !empty($courseset) ? $courseset->getId() : '') . "', 'add')", +]) ?> <?= $instSearch ?> -<?= Icon::create('search', 'clickable', ['title' => _("Suche starten")])->asImg()?> +<?= Icon::create('search', Icon::ROLE_CLICKABLE, ['title' => _("Suche starten")]) ?> <ul> <?php foreach (SimpleCollection::createFromArray($selectedInstitutes)->orderBy('Name') as $institute => $data) { ?> @@ -9,9 +12,12 @@ <span class="hover_box"> <?= htmlReady($data['Name']) ?> <span class="action_icons"> - <?= Icon::create('trash', 'clickable', ['title' => _('Einrichtung entfernen')])->asImg(16, ["onclick" => "STUDIP.Admission.updateInstitutes('".$institute."', '".$controller->url_for('admission/courseset/institutes',$institute)."', '".$controller->url_for('admission/courseset/instcourses',$institute)."', 'delete')"]); ?> + <?= Icon::create('trash')->asImg([ + 'title' => _('Einrichtung entfernen'), + 'onclick' => "STUDIP.Admission.updateInstitutes('{$institute}', '" . $controller->url_for('admission/courseset/institutes',$institute) . "', '" . $controller->url_for('admission/courseset/instcourses',$institute)."', 'delete')" + ]); ?> </span> </span> </li> <?php } ?> -</ul> \ No newline at end of file +</ul> diff --git a/app/views/course/details/index.php b/app/views/course/details/index.php index 0e8249405b72a6ca82b88ff34df35b7b375cbafc..2e3a1a9701d0099a607a0db9ab244d6427079ed9 100644 --- a/app/views/course/details/index.php +++ b/app/views/course/details/index.php @@ -315,7 +315,7 @@ <section> <?= $sem->getDatesTemplate( 'dates/seminar_html_location', - ['ort' => $course->ort, 'disable_list_shrinking' => true] + ['ort' => $course->ort, 'disable_list_shrinking' => true, 'show_room' => false] ) ?> </section> </article> diff --git a/app/views/course/forum/index/_threads.php b/app/views/course/forum/index/_threads.php index d2fad260fddd1100ff351808a5d7ff78e8f634a3..f09cee277ce7e9acc7e70c0575084a6ade4ecb9a 100644 --- a/app/views/course/forum/index/_threads.php +++ b/app/views/course/forum/index/_threads.php @@ -100,7 +100,7 @@ <?= ActionMenu::get() ->condition(isset($entry['last_posting'])) ->addLink( - isset($entry['last_posting']) ? $controller->url_for("course/forum/index/index/{$entry['last_posting']['topic_id']}#{$entry['last_posting']['topic_id']}") : '#no_posting', + isset($entry['last_posting']['topic_id']) ? $controller->url_for("course/forum/index/index/{$entry['last_posting']['topic_id']}#{$entry['last_posting']['topic_id']}") : '#no_posting', _('Zur letzten Antwort'), Icon::create('forum'), ['class' => 'hidden-small-up'] diff --git a/app/views/course/forum/index/index.php b/app/views/course/forum/index/index.php index 6c321a5c90a97c5c4106889c7cb04a5466f8efce..a39d3a35e1928c6ab1244e749983635ca2693e51 100644 --- a/app/views/course/forum/index/index.php +++ b/app/views/course/forum/index/index.php @@ -41,7 +41,7 @@ if ($section == 'index') { $abo_url = $controller->url_for('course/forum/index/abo/' . $constraint['topic_id']); endif; - $actions->addLink($abo_text, $abo_url, Icon::create('link-intern', 'clickable')); + $actions->addLink($abo_text, $abo_url, Icon::create('link-intern')); } if (ForumPerm::has('close_thread', $seminar_id) && $constraint['depth'] > 1) { @@ -51,7 +51,7 @@ if ($section == 'index') { $close = new LinkElement( _('Thema schließen'), $close_url, - Icon::create('lock-locked', 'clickable'), + Icon::create('lock-locked'), [ 'onclick' => 'STUDIP.Forum.closeThreadFromThread(\'' . $constraint['topic_id'] . '\', ' . ForumHelpers::getPage() . '); return false;', @@ -65,7 +65,7 @@ if ($section == 'index') { $open = new LinkElement( _('Thema öffnen'), $open_url, - Icon::create('lock-unlocked', 'clickable'), + Icon::create('lock-unlocked'), [ 'onclick' => 'STUDIP.Forum.openThreadFromThread(\'' . $constraint['topic_id'] . '\', ' . ForumHelpers::getPage() . '); return false;', @@ -83,7 +83,7 @@ if ($section == 'index') { $emphasize = new LinkElement( _('Thema hervorheben'), $emphasize_url, - Icon::create('staple', 'clickable'), + Icon::create('staple'), [ 'onclick' => 'STUDIP.Forum.makeThreadStickyFromThread(\'' . $constraint['topic_id'] . '\', ' . ForumHelpers::getPage() . '); return false;', @@ -97,7 +97,7 @@ if ($section == 'index') { $emphasize = new LinkElement( _('Hervorhebung aufheben'), $unemphasize_url, - Icon::create('staple', 'clickable'), + Icon::create('staple'), [ 'onclick' => 'STUDIP.Forum.makeThreadUnstickyFromThread(\'' . $constraint['topic_id'] . '\', ' . ForumHelpers::getPage() . '); return false;', @@ -109,7 +109,7 @@ if ($section == 'index') { } if ($constraint['depth'] == 0 && ForumPerm::has('add_category', $seminar_id)) { - $actions->addLink(_('Neue Kategorie erstellen'), "#create", Icon::create('link-intern', 'clickable')); + $actions->addLink(_('Neue Kategorie erstellen'), "#create", Icon::create('link-intern')); } } @@ -119,7 +119,7 @@ if ($section === 'index' && ForumPerm::has('pdfexport', $seminar_id)) { $export = new ExportWidget(); $export->addLink(_('Beiträge als PDF exportieren'), $controller->url_for('course/forum/index/pdfexport/' . $constraint['topic_id']), - Icon::create('file-pdf', 'clickable')); + Icon::create('file-pdf')); $sidebar->addWidget($export); } @@ -243,7 +243,7 @@ $pagechooser = null; <? endif ?> <? if ( (ForumPerm::has('add_area', $this->seminar_id)) - || ($constraint['depth'] >= 1 && ForumPerm::has('add_entry', $seminar_id)) ): ?> + || (isset($constraint['depth']) && $constraint['depth'] >= 1 && ForumPerm::has('add_entry', $seminar_id)) ): ?> <?= $this->render_partial('course/forum/index/_new_entry') ?> <? endif ?> </div> diff --git a/app/views/course/room_requests/request_summary.php b/app/views/course/room_requests/request_summary.php index 8f8c703b876c5282ad8f26fc094604e391f83615..4108deb16cc542a82f5df0421b2f1a652ac76be3 100644 --- a/app/views/course/room_requests/request_summary.php +++ b/app/views/course/room_requests/request_summary.php @@ -10,7 +10,7 @@ <div> <fieldset> <legend><?= _('Ausgewählter Raum') ?></legend> - <? if ($selected_room): ?> + <? if (!empty($selected_room)): ?> <input type="hidden" name="selected_room_id" value="<?= htmlReady($selected_room->id) ?>"> <input type="hidden" name="confirmed_selected_room_id" diff --git a/app/views/resources/building/_add_edit_form.php b/app/views/resources/building/_add_edit_form.php index 37e86669b4d06d5291e3c53c5285cce7b7e1efca..bc07db2f47e166dc783abc79f3372db7a908da4e 100644 --- a/app/views/resources/building/_add_edit_form.php +++ b/app/views/resources/building/_add_edit_form.php @@ -42,13 +42,14 @@ <input type="text" name="sort_position" value="<?= htmlReady($sort_position) ?>"> </label> <? endif ?> + <?= $this->render_partial( '../../templates/resources/position_attribute_form_part.php', [ 'property_name' => 'geo_coordinates', - 'latitude' => $latitude, - 'longitude' => $longitude, - 'altitude' => $altitude + 'latitude' => $latitude ?? null, + 'longitude' => $longitude ?? null, + 'altitude' => $altitude ?? null ] ) ?> </fieldset> diff --git a/app/views/userfilter/field/configure.php b/app/views/userfilter/field/configure.php index e41c7821c329b9cfc5af6598c34e536a01475c29..d50d39a912b7e57322a004c4a4da5a103ef13570 100644 --- a/app/views/userfilter/field/configure.php +++ b/app/views/userfilter/field/configure.php @@ -1,4 +1,4 @@ -<?php if ($className) { ?> +<?php if (!empty($className)) { ?> <? if (count($field->getValidCompareOperators()) > 1) : ?> <select name="compare_operator[]" size="1" class="conditionfield_compare_op"> <?php foreach ($field->getValidCompareOperators() as $op => $text) { ?> @@ -20,7 +20,7 @@ <input type="text" name="value[]" class="conditionfield_value" value=""> <? endif ?> <?php } else { ?> - <?= (!$is_first ? '<strong>' . _("und") . '</strong>' : '')?> + <?= (empty($is_first) ? '<strong>' . _("und") . '</strong>' : '')?> <div class="conditionfield"> <select name="field[]" class="conditionfield_class" size="1" onchange="STUDIP.UserFilter.getConditionFieldConfiguration(this, '<?= $controller->url_for('userfilter/field/configure') ?>')"> <option value="">-- <?= _('bitte auswählen') ?> --</option> @@ -32,4 +32,4 @@ class="conditionfield_delete"> <?= Icon::create('trash', 'clickable')->asImg(); ?></a> </div> -<?php } ?> \ No newline at end of file +<?php } ?> diff --git a/lib/admissionrules/conditionaladmission/ConditionalAdmission.class.php b/lib/admissionrules/conditionaladmission/ConditionalAdmission.class.php index 900ee5b957dcd7fc600c0a4cfece906c165f01dd..63275f06c729be8692481e197408a3794adfbdca 100644 --- a/lib/admissionrules/conditionaladmission/ConditionalAdmission.class.php +++ b/lib/admissionrules/conditionaladmission/ConditionalAdmission.class.php @@ -55,14 +55,14 @@ class ConditionalAdmission extends AdmissionRule /** * Standard constructor. * - * @param String ruleId If this rule has been saved previously, it + * @param String $ruleId If this rule has been saved previously, it * will be loaded from database. - * @return AdmissionRule the current object (this). + * @return ConditionalAdmission the current object (this). */ public function __construct($ruleId='', $courseSetId = '') { parent::__construct($ruleId, $courseSetId); - $this->default_message = _("Sie erfüllen nicht die Bedingung: %s"); + $this->default_message = _('Sie erfüllen nicht die Bedingung: %s'); if ($ruleId) { $this->load(); } else { @@ -74,9 +74,9 @@ class ConditionalAdmission extends AdmissionRule /** * Adds a new UserFilter to this rule. * - * @param UserFilter condition - * @param String group - * @param Int quota + * @param UserFilter $condition + * @param String $group + * @param Int $quota * @return ConditionalAdmission */ public function addCondition($condition, $group = '', $quota = 0) @@ -282,7 +282,7 @@ class ConditionalAdmission extends AdmissionRule /** * Removes the condition with the given ID from the rule. * - * @param String conditionId + * @param String $conditionId * @return ConditionalAdmission */ public function removeCondition($conditionId) @@ -336,8 +336,6 @@ class ConditionalAdmission extends AdmissionRule } } } - } else { - $failed = []; } return $failed; } @@ -360,7 +358,7 @@ class ConditionalAdmission extends AdmissionRule $this->quota = []; foreach ($data['conditions'] as $ser_con) { $condition = ObjectBuilder::build($ser_con, 'UserFilter'); - $this->addCondition($condition, $data['conditiongroup_'.$condition->getId()], $data['quota_'.$data['conditiongroup_'.$condition->getId()]]); + $this->addCondition($condition, $data['conditiongroup_'.$condition->getId()], $data['quota_'.$data['conditiongroup_'.$condition->getId()]] ?? 0); } foreach ($this->getConditiongroups() as $conditiongroup_id => $conditions) { if (mb_strlen($conditiongroup_id) < 32) { @@ -483,7 +481,7 @@ class ConditionalAdmission extends AdmissionRule * Validates if the given request data is sufficient to configure this rule * (e.g. if required values are present). * - * @param Array Request data + * @param Array $data Request data * @return Array Error messages. */ public function validate($data) @@ -505,12 +503,12 @@ class ConditionalAdmission extends AdmissionRule } else { $ungrouped++; } - $quota[$data['conditiongroup_' . $condition->getId()]] = $data['quota_' . $data['conditiongroup_' . $condition->getId()]]; + $quota[$data['conditiongroup_' . $condition->getId()]] = $data['quota_' . $data['conditiongroup_' . $condition->getId()]] ?? 0; if (!$quota[$data['conditiongroup_' . $condition->getId()]]) { $no_quota++; } } - foreach ($quota as $id => $part) { + foreach ($quota as $part) { $quota_total += $part; } if ($grouped && $ungrouped) { @@ -562,6 +560,4 @@ class ConditionalAdmission extends AdmissionRule parent::setSiblings($siblings); $this->conditiongroups_allowed = null; } - -} /* end of class ConditionalAdmission */ - +} diff --git a/lib/admissionrules/coursememberadmission/CourseMemberAdmission.class.php b/lib/admissionrules/coursememberadmission/CourseMemberAdmission.class.php index 74892fd66d9c594fa51035c614fa19adad626766..dc13a6205f240c80ed63e8fe9025cbdde9a78973 100644 --- a/lib/admissionrules/coursememberadmission/CourseMemberAdmission.class.php +++ b/lib/admissionrules/coursememberadmission/CourseMemberAdmission.class.php @@ -32,7 +32,8 @@ class CourseMemberAdmission extends AdmissionRule /** * Standard constructor * - * @param String ruleId + * @param String $ruleId + * @param String e */ public function __construct($ruleId = '', $courseSetId = '') { @@ -115,8 +116,8 @@ class CourseMemberAdmission extends AdmissionRule /** * Is admission allowed according to the defined time frame? * - * @param String userId - * @param String courseId + * @param String $userId + * @param String $courseId * @return Array */ public function ruleApplies($userId, $courseId) @@ -193,7 +194,7 @@ class CourseMemberAdmission extends AdmissionRule * Validates if the given request data is sufficient to configure this rule * (e.g. if required values are present). * - * @param Array Request data + * @param Array $data Request data * @return Array Error messages. */ public function validate($data) diff --git a/lib/admissionrules/participantrestrictedadmission/ParticipantRestrictedAdmission.class.php b/lib/admissionrules/participantrestrictedadmission/ParticipantRestrictedAdmission.class.php index 1556db391170cf3406e44e215e955bba2466a6b5..a64b88a368981d91e49b10b7a695cb35a15c3710 100644 --- a/lib/admissionrules/participantrestrictedadmission/ParticipantRestrictedAdmission.class.php +++ b/lib/admissionrules/participantrestrictedadmission/ParticipantRestrictedAdmission.class.php @@ -36,9 +36,10 @@ class ParticipantRestrictedAdmission extends AdmissionRule /** * Standard constructor * - * @param String ruleId + * @param String $ruleId + * @param String $courseSetId */ - public function __construct($ruleId='', $courseSetId = '') + public function __construct($ruleId = '', $courseSetId = '') { parent::__construct($ruleId, $courseSetId); $this->first_come_first_served_allowed = (bool)Config::get()->ENABLE_COURSESET_FCFS; @@ -58,7 +59,8 @@ class ParticipantRestrictedAdmission extends AdmissionRule /** * Deletes the admission rule and all associated data. */ - public function delete() { + public function delete() + { if ($this->prio_exists) { $set_id = DBManager::get()->fetchColumn("SELECT set_id FROM courseset_rule WHERE rule_id = ? LIMIT 1", [$this->id]); //Delete priorities @@ -75,7 +77,8 @@ class ParticipantRestrictedAdmission extends AdmissionRule * Gets some text that describes what this AdmissionRule (or respective * subclass) does. */ - public static function getDescription() { + public static function getDescription() + { return _("Anmelderegeln dieses Typs legen fest, ob die zugeordneten Veranstaltungen eine maximale Teilnehmendenanzahl haben. Die Platzverteilung erfolgt automatisiert."); } @@ -92,7 +95,8 @@ class ParticipantRestrictedAdmission extends AdmissionRule /** * Return this rule's name. */ - public static function getName() { + public static function getName() + { return _("Beschränkte Teilnehmendenanzahl"); } @@ -101,7 +105,8 @@ class ParticipantRestrictedAdmission extends AdmissionRule * * @return String */ - public function getTemplate() { + public function getTemplate() + { $factory = new Flexi_TemplateFactory(dirname(__FILE__).'/templates/'); // Open specific template for this rule and insert base template. $tpl = $factory->open('configure'); @@ -112,7 +117,8 @@ class ParticipantRestrictedAdmission extends AdmissionRule /** * Helper function for loading rule definition from database. */ - public function load() { + public function load() + { // Load data. $stmt = DBManager::get()->prepare("SELECT * FROM `participantrestrictedadmissions` WHERE `rule_id`=? LIMIT 1"); @@ -134,19 +140,20 @@ class ParticipantRestrictedAdmission extends AdmissionRule * @param Array $data * @return AdmissionRule This object. */ - public function setAllData($data) { + public function setAllData($data) + { parent::setAllData($data); - if ($data['distributiondate']) { + if (!empty($data['distributiondate'])) { if (!$data['distributiontime']) { $data['distributiontime'] = '23:59'; } $ddate = strtotime($data['distributiondate'] . ' ' . $data['distributiontime']); $this->setDistributionTime($ddate); } - if ($data['enable_FCFS']) { + if (!empty($data['enable_FCFS'])) { $this->setDistributionTime(0); } - if ($data['startdate']) { + if (!empty($data['startdate'])) { $starttime = strtotime($data['startdate'] . ' ' . $data['starttime']); if ($starttime > time()) { $this->minimum_timespan_to_distribution_time = $this->minimum_timespan_to_distribution_time + (($starttime - time()) / 60); @@ -159,8 +166,8 @@ class ParticipantRestrictedAdmission extends AdmissionRule /** * Sets a new timestamp for seat distribution algorithm execution. * - * @param int newDistributionTime - * @return TimedAdmission + * @param int $newDistributionTime + * @return ParticipantRestrictedAdmission */ public function setDistributionTime($newDistributionTime) { @@ -172,7 +179,8 @@ class ParticipantRestrictedAdmission extends AdmissionRule /** * Store rule definition to database. */ - public function store() { + public function store() + { // Store data. $stmt = DBManager::get()->prepare("INSERT INTO `participantrestrictedadmissions` (`rule_id`, `message`, `distribution_time`, @@ -201,7 +209,7 @@ class ParticipantRestrictedAdmission extends AdmissionRule * Validates if the given request data is sufficient to configure this rule * (e.g. if required values are present). * - * @param Array Request data + * @param Array $data Request data * @return Array Error messages. */ public function validate($data) @@ -211,15 +219,12 @@ class ParticipantRestrictedAdmission extends AdmissionRule $data['distributiontime'] = '23:59'; } $ddate = strtotime($data['distributiondate'] . ' ' . $data['distributiontime']); - if (!$data['enable_FCFS'] && (!$data['distributiondate'] || $ddate < (time() + $this->minimum_timespan_to_distribution_time*60))) { + if (empty($data['enable_FCFS']) && (empty($data['distributiondate']) || $ddate < (time() + $this->minimum_timespan_to_distribution_time * 60))) { $errors[] = sprintf(_('Bitte geben Sie für die Platzverteilung ein Datum an, das weiter in der Zukunft liegt. Das frühestmögliche Datum ist %s.'), strftime('%x %R', time() + $this->minimum_timespan_to_distribution_time*60)); } - if ($data['enable_FCFS'] && $data['distributiondate']) { + if (!empty($data['enable_FCFS']) && $data['distributiondate']) { $errors[] = _('Sie können kein Datum für die automatische Platzverteilung einstellen und gleichzeitig die automatische Platzverteilung ausschalten.'); } return $errors; } - } - -?> diff --git a/lib/classes/RangeTreeObject.class.php b/lib/classes/RangeTreeObject.class.php index c4c5320d3fb13092ff7a3406c3455dd6ff4335e7..579db4359891bd0cc9da7b637f04ded20004be57 100644 --- a/lib/classes/RangeTreeObject.class.php +++ b/lib/classes/RangeTreeObject.class.php @@ -95,7 +95,7 @@ class RangeTreeObject { function __construct($item_id) { $this->tree = TreeAbstract::GetInstance("StudipRangeTree", false); $this->tree_item_id = $item_id; - $this->item_data = $this->tree->tree_data[$item_id]; + $this->item_data = $this->tree->tree_data[$item_id] ?? null; } /** diff --git a/lib/classes/Request.class.php b/lib/classes/Request.class.php index 22cf29d142dc7fac0c00c966f82637b82f24dd19..34029720390dd879f8818b3794934cf210da2d8e 100644 --- a/lib/classes/Request.class.php +++ b/lib/classes/Request.class.php @@ -778,7 +778,7 @@ class Request implements ArrayAccess, IteratorAggregate { try { $request = self::getInstance(); - return ObjectBuilder::buildMany($request[$param] ?: null, $expected_class); + return ObjectBuilder::buildMany($request[$param] ?? null, $expected_class); } catch (Exception $e) { if ($allow_null) { return []; diff --git a/lib/classes/StudipSemSearchHelper.class.php b/lib/classes/StudipSemSearchHelper.class.php index ea7aa9c52e797c31c2de802bc3735e5d2d0dbe56..bb45d24acef9ba475fc7043ae49be3786dc9c319 100644 --- a/lib/classes/StudipSemSearchHelper.class.php +++ b/lib/classes/StudipSemSearchHelper.class.php @@ -52,7 +52,8 @@ class StudipSemSearchHelper { $this->setParams($params, $visible_only); } - public function setParams($params, $visible_only = null){ + public function setParams($params, $visible_only = null) + { if(isset($params['quick_search']) && isset($params['qs_choose'])){ if($params['qs_choose'] == 'all'){ foreach (self::GetQuickSearchFields() as $key => $value){ @@ -181,11 +182,11 @@ class StudipSemSearchHelper { $view->params[0] = ''; } $view->params[0] .= ($this->params['title']) ? $search_for . " " : " "; - $view->params[0] .= ($this->params['title'] && $this->params['sub_title']) ? $combination : " "; - $view->params[0] .= ($this->params['sub_title']) ? " Untertitel LIKE '%" . $this->trim($this->params['sub_title']) . "%' " : " "; - $view->params[0] .= (($this->params['title'] || $this->params['sub_title']) && $this->params['comment']) ? $combination : " "; - $view->params[0] .= ($this->params['comment']) ? " Beschreibung LIKE '%" . $this->trim($this->params['comment']) . "%' " : " "; - $view->params[0] .= (($this->params['title'] || $this->params['sub_title'] || $this->params['comment']) && $this->params['number']) ? $combination : " "; + $view->params[0] .= ($this->params['title'] && !empty($this->params['sub_title'])) ? $combination : " "; + $view->params[0] .= (!empty($this->params['sub_title'])) ? " Untertitel LIKE '%" . $this->trim($this->params['sub_title']) . "%' " : " "; + $view->params[0] .= (($this->params['title'] || !empty($this->params['sub_title'])) && !empty($this->params['comment'])) ? $combination : " "; + $view->params[0] .= (!empty($this->params['comment'])) ? " Beschreibung LIKE '%" . $this->trim($this->params['comment']) . "%' " : " "; + $view->params[0] .= (($this->params['title'] || !empty($this->params['sub_title']) || empty($this->params['comment'])) && $this->params['number']) ? $combination : " "; $view->params[0] .= ($this->params['number']) ? " VeranstaltungsNummer LIKE '%" . $this->trim($this->params['number']) . "%' " : " "; $view->params[0] = ($this->visible_only ? " c.visible=1 AND " : "") . "(" . $view->params[0] .")"; $view->params[1] = $and_clause . $clause; diff --git a/lib/classes/TreeAbstract.class.php b/lib/classes/TreeAbstract.class.php index 7cdb9404a6c3c6ca627e094005ed59d90bf3a701..9f546545d2acc25ed22766d2b78703c257fecf93 100644 --- a/lib/classes/TreeAbstract.class.php +++ b/lib/classes/TreeAbstract.class.php @@ -95,7 +95,7 @@ class TreeAbstract { public static function GetInstance($class_name, $args = null, $invalidate_cache = false) { static $tree_instance; - + $class_hash = ''; if ($args){ $class_hash = $class_name . "_" . md5(serialize($args)); } elseif ($args === false && is_array($tree_instance)){ diff --git a/lib/classes/admission/AdmissionRule.class.php b/lib/classes/admission/AdmissionRule.class.php index a1741574936177ad7f692900f64ae166757472d0..fe5e5bbf39a1312fbe18d0637c89fd1ed9ee00fa 100644 --- a/lib/classes/admission/AdmissionRule.class.php +++ b/lib/classes/admission/AdmissionRule.class.php @@ -84,7 +84,7 @@ abstract class AdmissionRule /** * Checks if we are in the rule validity time frame. * - * @return True if the rule is valid because the time frame applies, + * @return bool True if the rule is valid because the time frame applies, * otherwise false. */ public function checkTimeFrame() @@ -115,7 +115,7 @@ abstract class AdmissionRule /** * Generate a new unique ID. * - * @param String tableName + * @param String $tableName */ public function generateId($tableName) { @@ -273,7 +273,7 @@ abstract class AdmissionRule * Hook that can be called when the seat distribution on the courseset * starts. * - * @param CourseSet The courseset this rule belongs to. + * @param CourseSet $courseset The courseset this rule belongs to. */ public function beforeSeatDistribution($courseset) { @@ -284,8 +284,8 @@ abstract class AdmissionRule * Does the current rule allow the given user to register as participant * in the given course? * - * @param String userId - * @param String courseId + * @param String $userId + * @param String $courseId * @return Array */ public function ruleApplies($userId, $courseId) @@ -303,23 +303,23 @@ abstract class AdmissionRule */ public function setAllData($data) { - if ($data['start_date'] && !$data['start_time']) { + if (!empty($data['start_date']) && empty($data['start_time'])) { $data['start_time'] = strtotime($data['start_date']); } - if ($data['end_date'] && !$data['end_time']) { + if (!empty($data['end_date']) && empty($data['end_time'])) { $data['end_time'] = strtotime($data['end_date'] . ' 23:59:59'); } - $this->message = $data['message']; - $this->startTime = $data['start_time']; - $this->endTime = $data['end_time']; + $this->message = $data['message'] ?? ''; + $this->startTime = $data['start_time'] ?? null; + $this->endTime = $data['end_time'] ?? null; return $this; } /** * Sets a new end time for condition validity. * - * @param Integer newEndTime - * @return UserFilter + * @param Integer $newEndTime + * @return AdmissionRule */ public function setEndTime($newEndTime) { @@ -330,7 +330,7 @@ abstract class AdmissionRule /** * Sets a new message to show to users. * - * @param String newMessage A new message text. + * @param String $newMessage A new message text. * @return AdmissionRule This object */ public function setMessage($newMessage) @@ -342,8 +342,8 @@ abstract class AdmissionRule /** * Sets a new start time for condition validity. * - * @param Integer newStartTime - * @return UserFilter + * @param Integer $newStartTime + * @return AdmissionRule */ public function setStartTime($newStartTime) { @@ -372,13 +372,13 @@ abstract class AdmissionRule * Validates if the given request data is sufficient to configure this rule * (e.g. if required values are present). * - * @param Array Request data + * @param Array $data Request data * @return Array Error messages. */ public function validate($data) { $errors = []; - if ($data['start_date'] && $data['end_date'] && strtotime($data['end_date']) < strtotime($data['start_date'])) { + if (!empty($data['start_date']) && !empty($data['end_date']) && strtotime($data['end_date']) < strtotime($data['start_date'])) { $errors[] = _('Das Enddatum darf nicht vor dem Startdatum liegen.'); } return $errors; @@ -389,7 +389,8 @@ abstract class AdmissionRule * * @return String */ - public function __toString() { + public function __toString() + { return $this->toString(); } @@ -452,4 +453,4 @@ abstract class AdmissionRule $this->id = md5(uniqid(get_class($this))); $this->courseSetId = null; } -} /* end of abstract class AdmissionRule */ +} diff --git a/lib/classes/sidebar/SearchWidget.php b/lib/classes/sidebar/SearchWidget.php index 40a2eb9e990b39a5acec9312ba151c1400fc0272..82aa26b8c9952b182e83b4a0365c0ce1feded0bb 100644 --- a/lib/classes/sidebar/SearchWidget.php +++ b/lib/classes/sidebar/SearchWidget.php @@ -147,11 +147,11 @@ class SearchWidget extends SidebarWidget unset($reset_params[$needle['name']]); // Search view in Wiki must be cleared. - if ($reset_params['view'] == 'search') { + if (isset($reset_params['view']) && $reset_params['view'] === 'search') { $reset_params['view'] = 'show'; } // Search view in Forum must be cleared. - if ($reset_params['backend'] == 'search') { + if (isset($reset_params['backend']) && $reset_params['backend'] === 'search') { unset($reset_params['backend']); $this->url = str_replace('index/search', 'index', $this->url); } diff --git a/lib/export/export_studipdata_func.inc.php b/lib/export/export_studipdata_func.inc.php index 1139f214ea86df513489905d932f601836abfb7d..bc2b9906e7db395fb2c7a3db29f69a71c6d9d7f4 100644 --- a/lib/export/export_studipdata_func.inc.php +++ b/lib/export/export_studipdata_func.inc.php @@ -300,10 +300,11 @@ function export_inst($inst_id, $ex_sem_id = "all") */ function export_sem($inst_id, $ex_sem_id = 'all') { - global $range_id, $xml_file, $o_mode, $xml_names_lecture, $xml_groupnames_lecture, $object_counter, $SEM_TYPE, $SEM_CLASS, $filter, $ex_sem, $ex_sem_class, $ex_person_details, $persons; + global $o_mode, $xml_names_lecture, $xml_groupnames_lecture, $object_counter, $SEM_TYPE, $SEM_CLASS, $filter, $ex_sem, $ex_sem_class, $ex_person_details, $persons; $ex_only_homeinst = Request::int('ex_only_homeinst', 0); - + $addquery = ''; + $addjoin = ''; // Prepare user count statement $query = "SELECT COUNT(user_id) FROM seminar_user @@ -320,7 +321,9 @@ function export_sem($inst_id, $ex_sem_id = 'all') WHERE seminar_user.status = 'dozent' AND seminar_user.Seminar_id = ? ORDER BY seminar_user.position"; $inner_statement = DBManager::get()->prepare($query); - + $do_group = false; + $group = null; + $group_tab_zelle = null; // Prepare (build) and execute outmost query switch ($filter) { case "seminar": @@ -476,7 +479,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, $row['admission_type'] ? _('max.') : _('erw.')); + $data_object .= xml_open_tag($val, !empty($row['admission_type']) ? _('max.') : _('erw.')); $data_object .= $row[$key]; $data_object .= xml_close_tag($val); } elseif ($key === 'teilnehmer_anzahl_aktuell') { @@ -488,7 +491,7 @@ function export_sem($inst_id, $ex_sem_id = 'all') } elseif ($key === 'metadata_dates') { $data_object .= xml_open_tag($xml_groupnames_lecture['childgroup1']); $vorb = vorbesprechung($row['seminar_id'], 'export'); - if ($vorb != false) { + if ($vorb) { $data_object .= xml_tag($val[0], $vorb); } if (($first_date = SeminarDB::getFirstDate($row['seminar_id'])) @@ -500,7 +503,7 @@ function export_sem($inst_id, $ex_sem_id = 'all') $data_object .= xml_close_tag($xml_groupnames_lecture["childgroup1"]); } elseif ($key === 'Institut_id') { $data_object .= xml_tag($val, $row['heimateinrichtung'], ['key' => $row[$key]]); - } elseif ($row[$key] !== '') + } elseif (isset($row[$key]) && $row[$key] !== '') $data_object .= xml_tag($val, $row[$key]); } diff --git a/lib/models/resources/ResourceRequest.class.php b/lib/models/resources/ResourceRequest.class.php index 8b68fd09c11d5351c4e60808df33cfb232d205ba..c48784185febd482372a25bccf9a08e78cfd0163 100644 --- a/lib/models/resources/ResourceRequest.class.php +++ b/lib/models/resources/ResourceRequest.class.php @@ -1175,8 +1175,8 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen if ($with_range) { $interval['range'] = 'CourseDate'; $interval['range_id'] = $this->termin_id; - $interval['booked_room'] = $this->date->room_booking->resource_id; - $interval['booking_id'] = $this->date->room_booking->id; + $interval['booked_room'] = $this->date->room_booking ? $this->date->room_booking->resource_id: null; + $interval['booking_id'] = $this->date->room_booking ? $this->date->room_booking->id : null; } return [$interval]; } elseif ($this->metadate_id) { @@ -1271,8 +1271,11 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen if ($interval['range'] == 'CourseDate') { $date = call_user_func([$interval['range'], 'find'], $interval['range_id']); - if ($room_obj = Room::find($date->room_booking->resource_id)) { - $room = $room_obj->name; + if ($date->room_booking) { + $room_obj = Room::find($date->room_booking->resource_id); + if ($room_obj) { + $room = $room_obj->name; + } } } diff --git a/lib/plugins/engine/PluginManager.class.php b/lib/plugins/engine/PluginManager.class.php index 7ced174ed380f614d476022b202f6a89b6ba8ac0..5873eb2d8127e9ab2496cee548fb89d1af8ce708 100644 --- a/lib/plugins/engine/PluginManager.class.php +++ b/lib/plugins/engine/PluginManager.class.php @@ -619,7 +619,7 @@ class PluginManager */ public function getPlugins ($type, $context = null) { - $user = $GLOBALS['user']->id ?: 'nobody'; + $user = $GLOBALS['user'] ? $GLOBALS['user']->id : 'nobody'; $plugin_info = $this->getPluginInfos($type); $plugins = [];