/** * Populates and renders the widget according to the previously made * settings. */ public function render($variables = array()) { $current_id = Request::get($this->template_variables['name']); if (!$current_id && !$this->include_all) { $current_id = Semester::findCurrent()->id; } if ($this->include_all) { $element = new SelectElement(0, _('Alle Semester'), !$current_id); $this->addElement($element); } $semesters = array_reverse(Semester::getAll()); foreach ($semesters as $semester) { $element = new SelectElement($semester->id, $semester->name, $current_id && $semester->id == $current_id); $this->addElement($element); } return parent::render($variables); }
<fieldset> <legend><?php echo _('Veranstaltungen'); ?> </legend> <? if (!$instant_course_set_view) : ?> <label class="caption"> <?php echo _('Semester:'); ?> <select name="semester" onchange="STUDIP.Admission.getCourses('<?php echo $controller->url_for('admission/courseset/instcourses', $courseset ? $courseset->getId() : ''); ?> ')"> <?php foreach (array_reverse(Semester::getAll(), true) as $id => $semester) { ?> <option value="<?php echo $id; ?> "<?php echo $id == $selectedSemester ? ' selected="selected"' : ''; ?> > <?php echo htmlReady($semester->name); ?> </option> <?php } ?>
$tmpfile = basename($sem_browse_obj->create_result_xls($excel_text)); if ($tmpfile) { header('Location: ' . getDownloadLink($tmpfile, _("Veranstaltungsübersicht.xls"), 4)); page_close(); die; } } PageLayout::setHelpKeyword("Basis.Informationsseite"); PageLayout::setTitle(($level == "s" ? $SessSemName["header_line"] . " - " : "") . $head_text); if ($level == "s" && $SessSemName[1] && $SessSemName["class"] == "inst") { Navigation::activateItem('/course/main/courses'); } $sidebar = Sidebar::get(); $sidebar->setImage('sidebar/seminar-sidebar.png'); $semester = new SelectWidget(_("Semester:"), URLHelper::getURL(), 'select_sem'); foreach (array_reverse(Semester::getAll()) as $one) { $semester->addElement(new SelectElement($one->id, $one->name, $one->id == $show_semester)); } $sidebar->addWidget($semester); $grouping = new LinksWidget(); $grouping->setTitle(_("Anzeige gruppieren:")); foreach ($sem_browse_obj->group_by_fields as $i => $field) { $grouping->addLink($field['name'], URLHelper::getLink('?', array('group_by' => $i)), $group_by == $i ? "icons/16/red/arr_1right" : ""); } $sidebar->addWidget($grouping); if (get_config('EXPORT_ENABLE') && $perm->have_perm("tutor")) { $export = new LinksWidget(); $export->setTitle(_("Daten ausgeben:")); if ($level == "s") { $export->addLink(_("Diese Daten exportieren"), URLHelper::getLink("export.php", array('range_id' => $SessSemName[1], 'o_mode' => 'choose', 'ex_type' => "veranstaltung", 'xslt_filename' => $SessSemName[0], 'ex_sem' => $show_semester)), Icon::create('download', 'info')); $export->addLink(_("Download als Excel Tabelle"), URLHelper::getLink('?send_excel=1&group_by=' . (int) $group_by), Icon::create('file-xls', 'info'));
function semester() { foreach (Semester::getAll() as $semester) { if (!$semester["past"]) { return false; } } return true; }
/** * Returns a widget for semester selection * @param $sem * @return OptionsWidget */ private function setSemesterWidget(&$sem) { $semesters = new SimpleCollection(Semester::getAll()); $this->sem = $sem; $this->semesters = $semesters->orderBy('beginn desc'); $sidebar = Sidebar::Get(); $widget = new SidebarWidget(); $widget->setTitle(_('Semesterfilter')); $this->render_template('my_courses/_semester_filter.php', null); $html = $this->response->body; $this->erase_response(); $widget->addElement(new WidgetElement($html)); $sidebar->addWidget($widget); }
/** * Get all semesters that a course spans over. * * @param Seminar $course The course as a Seminar object * @param String $selected Selected semester (can be updated) */ private function getSemestersForCourse(Seminar $course, &$selected) { // Step 1: Get all matching semesters $semesters = array_filter(Semester::getAll(), function (Semester $semester) use($course) { return $course->getStartSemester() <= $semester->vorles_beginn && $course->getEndSemesterVorlesEnde() >= $semester->vorles_ende; }); // Step 2: Add option 'all' if more than one semester is found or if // there is any date outside of the semester range. Otherwise, adjust // the $selected variable $temp = array(); if (count($semesters) > 1 || $course->hasDatesOutOfDuration(true)) { $temp['all'] = _('Alle Semester'); } elseif (count($semesters) === 1) { $semester = reset($semesters); $selected = $semester->beginn; } // Step 3: Normalize semesters array (with option 'all' this needs // to be in a pretty simple format) $result = array(); foreach (array_reverse($semesters) as $semester) { $temp[$semester->beginn] = $semester->name; } // Step 4: Create required result array from normalized array $result = array(); foreach ($temp as $key => $val) { $result[] = array('url' => '?cmd=applyFilter&newFilter=' . $key, 'value' => $key, 'linktext' => $val, 'is_selected' => $selected == $key); } return $result; }
/** * Adds the semester selector to the sidebar */ private function setSemesterSelector() { $semesters = array_reverse(Semester::getAll()); $sidebar = Sidebar::Get(); $list = new SelectWidget(_('Semester'), $this->url_for('admin/courses/set_selection'), 'sem_select'); $list->addElement(new SelectElement("all", _("Alle")), 'sem_select-all'); foreach ($semesters as $semester) { $list->addElement(new SelectElement($semester->id, $semester->name, $semester->id === $GLOBALS['user']->cfg->MY_COURSES_SELECTED_CYCLE), 'sem_select-' . $semester->id); } $sidebar->addWidget($list, "filter_semester"); }
public function getEndSemesterVorlesEnde() { if ($this->semester_duration_time == -1) { $very_last_semester = array_pop(Semester::getAll()); return $very_last_semester->vorles_ende; } return $this->course->end_semester->vorles_ende; }
/** * Validates the semester for required valies, properness of values * and possible overlaps with other semesters. * * The validation is also divided into these three steps, so the next * validation step only occurs when the previous one succeeded. * * @param Semester $semester Semester (data) to validate * @return Array filled with errors */ protected function validateSemester(Semester $semester) { // Validation, step 1: Check required values $errors = array(); if (!$this->semester->name) { $errors['name'] = _('Sie müssen den Namen des Semesters angeben.'); } if (!$this->semester->beginn) { $errors['beginn'] = _('Sie müssen den Beginn des Semesters angeben.'); } if (!$this->semester->ende) { $errors['ende'] = _('Sie müssen das Ende des Semesters angeben.'); } if (!$this->semester->vorles_beginn) { $errors['vorles_beginn'] = _('Sie müssen den Beginn der Vorlesungzeit angeben.'); } if (!$this->semester->vorles_ende) { $errors['vorles_ende'] = _('Sie müssen das Ende der Vorlesungzeit angeben.'); } // Validation, step 2: Check properness of values if (empty($errors)) { if ($this->semester->beginn > $this->semester->vorles_beginn) { $errors['beginn'] = _('Der Beginn des Semester muss vor dem Beginn der Vorlesungszeit liegen.'); } if ($this->semester->vorles_beginn > $this->semester->vorles_ende) { $errors['vorles_beginn'] = _('Der Beginn der Vorlesungszeit muss vor ihrem Ende liegen.'); } if ($this->semester->vorles_ende > $this->semester->ende) { $errors['vorles_ende'] = _('Das Ende der Vorlesungszeit muss vor dem Semesterende liegen.'); } } // Validation, step 3: Check overlapping with other semesters if (empty($errors)) { $all_semester = SimpleCollection::createFromArray(Semester::getAll())->findBy('id', $this->semester->id, '<>'); $collisions = $all_semester->findBy('beginn', array($this->semester->beginn, $this->semester->ende), '>=<='); $collisions->merge($all_semester->findBy('ende', array($this->semester->beginn, $this->semester->ende), '>=<=')); if ($collisions->count()) { $errors[] = sprintf(_('Der angegebene Zeitraum des Semester überschneidet sich mit einem anderen Semester (%s)'), join(', ', $collisions->pluck('name'))); } } return $errors; }
function deleteSemester($semester_id) { $ret = Semester::find($semester_id)->delete(); Semester::getAll(true); return $ret; }