Skip to content
Snippets Groups Projects
Commit cba3934c authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms
Browse files

fixes #3890

Closes #3890

Merge request studip/studip!2741
parent ea611ecd
No related branches found
No related tags found
No related merge requests found
...@@ -189,9 +189,21 @@ class ContactController extends AuthenticatedController ...@@ -189,9 +189,21 @@ class ContactController extends AuthenticatedController
$user = User::findManyByUsername(Request::getArray('user')); $user = User::findManyByUsername(Request::getArray('user'));
} }
if ($group) { if ($group) {
$user = User::findMany(Statusgruppen::find($group)->members->pluck('user_id')); $group_object = Statusgruppen::find($group);
if (!$group_object) {
$this->set_status(404);
$this->render_nothing();
return;
}
$user = User::findMany($group_object->members->pluck('user_id'));
} }
if (!$user) { if (!$user) {
$user_object = User::findCurrent();
if (!$user_object) {
$this->set_status(404);
$this->render_nothing();
return;
}
$user = User::findCurrent()->contacts; $user = User::findCurrent()->contacts;
} }
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
*/ */
?> ?>
<form class="default" method="post" <form class="default" method="post"
action="<?= $controller->link_for('calendar/calendar/export/' . $user_id) ?>"> action="<?= $controller->link_for('calendar/calendar/export', $user_id ?? null) ?>">
<?= CSRFProtection::tokenTag() ?> <?= CSRFProtection::tokenTag() ?>
<fieldset> <fieldset>
<legend><?= _('Termine exportieren') ?></legend> <legend><?= _('Termine exportieren') ?></legend>
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
</li> </li>
</ul> </ul>
</div> </div>
<? if (!$values['locked']) : ?> <? if (empty($values['locked'])) : ?>
<div id="lvgroup-tree-open-nodes"> <div id="lvgroup-tree-open-nodes">
<? foreach ($open_lvg_nodes as $opennode) : ?> <? foreach ($open_lvg_nodes as $opennode) : ?>
...@@ -30,12 +30,20 @@ ...@@ -30,12 +30,20 @@
<h2><?= _('Lehrveranstaltungsgruppen Suche') ?></h2> <h2><?= _('Lehrveranstaltungsgruppen Suche') ?></h2>
<div> <div>
<input type="text" size="40" style="width: auto;" name="search" id="lvgroup-tree-search" <input type="text" size="40" style="width: auto;" name="search" id="lvgroup-tree-search"
value="<?= $values['searchterm'] ?>"> value="<?= htmlReady($values['searchterm'] ?? '') ?>">
<span id="lvgroup-tree-search-start"> <span id="lvgroup-tree-search-start">
<?= Icon::create('search', 'clickable')->asInput(["name" => 'start_search', "onclick" => "return STUDIP.MVV.CourseWizard.searchTree()", "class" => $search_result?'hidden-no-js':'']) ?> <?= Icon::create('search')->asInput([
'name' => 'start_search',
'onclick' => 'return STUDIP.MVV.CourseWizard.searchTree()',
'class' => !empty($search_result) ? 'hidden-no-js' : '',
]) ?>
</span> </span>
<span id="lvgroup-tree-search-reset" class="hidden-js"> <span id="lvgroup-tree-search-reset" class="hidden-js">
<?= Icon::create('refresh', 'clickable')->asInput(["name" => 'reset_search', "onclick" => "return STUDIP.MVV.CourseWizard.resetSearch()", "class" => $search_result?'':' hidden-no-js']) ?> <?= Icon::create('refresh')->asInput([
'name' => 'reset_search',
'onclick' => 'return STUDIP.MVV.CourseWizard.resetSearch()',
'class' => !empty($search_result) ? '' : ' hidden-no-js',
]) ?>
</span> </span>
</div> </div>
...@@ -56,23 +64,25 @@ ...@@ -56,23 +64,25 @@
<? $pos_id = 1; ?> <? $pos_id = 1; ?>
<? foreach ((array) $tree as $node) : ?> <? foreach ((array) $tree as $node) : ?>
<? $children = $node->getChildren() ?> <? $children = $node->getChildren() ?>
<? if (count($children)) : ?> <? if (count($children) > 0) : ?>
<?= $this->render_partial('lvgroups/_node', <?= $this->render_partial('lvgroups/_node', [
['node' => $node, 'pos_id' => $pos_id++, 'node' => $node,
'pos_id' => $pos_id++,
'open_nodes' => $open_lvg_nodes ?: [], 'open_nodes' => $open_lvg_nodes ?: [],
'search_result' => $search_result ?: [], 'search_result' => $search_result ?? [],
'children' => $node->getChildren()]) ?> 'children' => $node->getChildren(),
]) ?>
<? endif ?> <? endif ?>
<? endforeach; ?> <? endforeach; ?>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
<? if ($values['open_lvg_nodes']) : ?> <? if (!empty($values['open_lvg_nodes'])) : ?>
<input type="hidden" name="open_nodes" value="<?= json_encode($values['open_lvg_nodes']) ?>"/> <input type="hidden" name="open_nodes" value="<?= json_encode($values['open_lvg_nodes']) ?>"/>
<? endif; ?> <? endif; ?>
<? if ($values['searchterm']) : ?> <? if (!empty($values['searchterm'])) : ?>
<input type="hidden" name="searchterm" value="<?= $values['searchterm'] ?>"/> <input type="hidden" name="searchterm" value="<?= htmlReady($values['searchterm']) ?>">
<? endif; ?> <? endif; ?>
<script> <script>
//<!-- //<!--
......
...@@ -283,7 +283,7 @@ class MyRealmModel ...@@ -283,7 +283,7 @@ class MyRealmModel
public static function getPreparedCourses($sem = '', $params = []) public static function getPreparedCourses($sem = '', $params = [])
{ {
$semesters = self::getSelectedSemesters($sem); $semesters = self::getSelectedSemesters($sem);
$current_semester_nr = Semester::getIndexById(@Semester::findCurrent()->id); $current_semester_nr = Semester::getIndexById(Semester::findCurrent()->id ?? null);
$min_sem_key = min($semesters); $min_sem_key = min($semesters);
$max_sem_key = max($semesters); $max_sem_key = max($semesters);
$group_field = $params['group_field']; $group_field = $params['group_field'];
...@@ -334,7 +334,7 @@ class MyRealmModel ...@@ -334,7 +334,7 @@ class MyRealmModel
$_course['visitdate'] = $visits[$course->id][0]['visitdate']; $_course['visitdate'] = $visits[$course->id][0]['visitdate'];
$_course['user_status'] = $user_status; $_course['user_status'] = $user_status;
$_course['gruppe'] = !$is_deputy ? $member_ships[$course->id]['gruppe'] ?? null : ($deputy ? $deputy->gruppe : null); $_course['gruppe'] = !$is_deputy ? $member_ships[$course->id]['gruppe'] ?? null : ($deputy ? $deputy->gruppe : null);
$_course['sem_number_end'] = $course->isOpenEnded() ? $max_sem_key : Semester::getIndexById($course->end_semester->id); $_course['sem_number_end'] = $course->isOpenEnded() ? $max_sem_key : Semester::getIndexById($course->end_semester->id ?? null);
$_course['sem_number'] = Semester::getIndexById($course->start_semester->id); $_course['sem_number'] = Semester::getIndexById($course->start_semester->id);
$_course['tools'] = $course->tools; $_course['tools'] = $course->tools;
$_course['name'] = $course->name; $_course['name'] = $course->name;
......
...@@ -356,9 +356,9 @@ class BasicDataWizardStep implements CourseWizardStep ...@@ -356,9 +356,9 @@ class BasicDataWizardStep implements CourseWizardStep
htmlReady(get_title_for_status('dozent', 1, $values['coursetype'])) htmlReady(get_title_for_status('dozent', 1, $values['coursetype']))
); );
} }
if (!$values['lecturers'][$GLOBALS['user']->id] && !$GLOBALS['perm']->have_perm('admin')) { if (empty($values['lecturers'][$GLOBALS['user']->id]) && !$GLOBALS['perm']->have_perm('admin')) {
if (Config::get()->DEPUTIES_ENABLE) { if (Config::get()->DEPUTIES_ENABLE) {
if (!$values['deputies'][$GLOBALS['user']->id]) { if (empty($values['deputies'][$GLOBALS['user']->id])) {
$errors[] = sprintf( $errors[] = sprintf(
_('Sie selbst müssen entweder als %s oder als Vertretung eingetragen sein.'), _('Sie selbst müssen entweder als %s oder als Vertretung eingetragen sein.'),
htmlReady(get_title_for_status('dozent', 1, $values['coursetype'])) htmlReady(get_title_for_status('dozent', 1, $values['coursetype']))
......
...@@ -36,7 +36,7 @@ class LVGroupsWizardStep implements CourseWizardStep ...@@ -36,7 +36,7 @@ class LVGroupsWizardStep implements CourseWizardStep
$course_start_time = $values[$step_one_class]['start_time']; $course_start_time = $values[$step_one_class]['start_time'];
// We only need our own stored values here. // We only need our own stored values here.
$values = $values[__CLASS__]; $values = $values[__CLASS__] ?? [];
// Load template from step template directory. // Load template from step template directory.
$factory = new Flexi_TemplateFactory($GLOBALS['STUDIP_BASE_PATH'] . '/app/views/course/wizard/steps'); $factory = new Flexi_TemplateFactory($GLOBALS['STUDIP_BASE_PATH'] . '/app/views/course/wizard/steps');
...@@ -53,9 +53,12 @@ class LVGroupsWizardStep implements CourseWizardStep ...@@ -53,9 +53,12 @@ class LVGroupsWizardStep implements CourseWizardStep
} }
} }
$selection_details = $values['lvgruppe_selection']['area_details']; $selection_details = $values['lvgruppe_selection']['area_details'] ?? null;
if ($_SESSION[__CLASS__]['course_start_time'] != $course_start_time) { if (
isset($_SESSION[__CLASS__]['course_start_time'])
&& $_SESSION[__CLASS__]['course_start_time'] != $course_start_time
) {
// don't store previously opened nodes // don't store previously opened nodes
// because we get in trouble if the semester has changed // because we get in trouble if the semester has changed
$open_nodes = []; $open_nodes = [];
...@@ -65,15 +68,15 @@ class LVGroupsWizardStep implements CourseWizardStep ...@@ -65,15 +68,15 @@ class LVGroupsWizardStep implements CourseWizardStep
$_SESSION[__CLASS__]['course_start_time'] = $course_start_time; $_SESSION[__CLASS__]['course_start_time'] = $course_start_time;
$tpl->set_attribute('open_lvg_nodes', $open_nodes); $tpl->open_lvg_nodes = $open_nodes;
$tpl->set_attribute('selection', $selection); $tpl->selection = $selection;
$tpl->set_attribute('selection_details', $selection_details); $tpl->selection_details = $selection_details;
$tpl->set_attribute('tree', $lvgtree->getRootItem()->getChildren()); $tpl->tree = $lvgtree->getRootItem()->getChildren();
$tpl->set_attribute('ajax_url', $values['ajax_url'] ?: URLHelper::getLink('dispatch.php/course/wizard/ajax')); $tpl->ajax_url = !empty($values['ajax_url']) ? $values['ajax_url'] : URLHelper::getLink('dispatch.php/course/wizard/ajax');
$tpl->set_attribute('no_js_url', $values['no_js_url'] ?: 'dispatch.php/course/wizard/forward/'.$stepnumber.'/'.$temp_id); $tpl->no_js_url = !empty($values['no_js_url']) ? $values['no_js_url'] : URLHelper::getURL('dispatch.php/course/wizard/forward/'.$stepnumber.'/'.$temp_id);
$tpl->set_attribute('stepnumber', $stepnumber); $tpl->stepnumber = $stepnumber;
$tpl->set_attribute('temp_id', $temp_id); $tpl->temp_id = $temp_id;
return $tpl->render(); return $tpl->render();
} }
......
...@@ -28,7 +28,7 @@ class StudyAreasWizardStep implements CourseWizardStep ...@@ -28,7 +28,7 @@ class StudyAreasWizardStep implements CourseWizardStep
public function getStepTemplate($values, $stepnumber, $temp_id) public function getStepTemplate($values, $stepnumber, $temp_id)
{ {
// We only need our own stored values here. // We only need our own stored values here.
$values = $values[get_class($this)]; $values = $values[get_class($this)] ?? [];
// Load template from step template directory. // Load template from step template directory.
$factory = new Flexi_TemplateFactory($GLOBALS['STUDIP_BASE_PATH'].'/app/views/course/wizard/steps'); $factory = new Flexi_TemplateFactory($GLOBALS['STUDIP_BASE_PATH'].'/app/views/course/wizard/steps');
$tpl = $factory->open('studyareas/index'); $tpl = $factory->open('studyareas/index');
......
...@@ -70,7 +70,7 @@ abstract class CorePlugin ...@@ -70,7 +70,7 @@ abstract class CorePlugin
if (!empty($metadata['description_' . $language])) { if (!empty($metadata['description_' . $language])) {
return $metadata['description_' . $language]; return $metadata['description_' . $language];
} }
$description = $metadata['descriptionlong'] ?? $metadata['description']; $description = $metadata['descriptionlong'] ?? $metadata['description'] ?? '';
if ($this->plugin_info['description_mode'] === 'override_description') { if ($this->plugin_info['description_mode'] === 'override_description') {
return $this->plugin_info['description']; return $this->plugin_info['description'];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment