/**
  * 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);
 }
Exemple #2
0
    <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 
}
?>
Exemple #3
0
    $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'));
Exemple #4
0
 function semester() {
     foreach (Semester::getAll() as $semester) {
         if (!$semester["past"]) {
             return false;
         }
     }
     return true;
 }
Exemple #5
0
 /**
  * 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);
 }
Exemple #6
0
 /**
  * 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;
 }
Exemple #7
0
 /**
  * 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");
 }
Exemple #8
0
 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;
 }
Exemple #9
0
 /**
  * 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;
 }
Exemple #10
0
 function deleteSemester($semester_id)
 {
     $ret = Semester::find($semester_id)->delete();
     Semester::getAll(true);
     return $ret;
 }