static function getDayDates($user_id, $weekday) { //get current semester $semdata = new \SemesterData(); $current_semester = $semdata->getCurrentSemesterData(); $current_semester_id = $current_semester['semester_id']; return \CalendarScheduleModel::getEntries($user_id, $current_semester, 00, 2000, array($weekday - 1), false); }
/** * this action is the main action of the schedule-controller, setting the environment for the timetable, * accepting a comma-separated list of days. * * @param string a list of an arbitrary mix of the numbers 0-6, separated with a comma (e.g. 1,2,3,4,5 (for Monday to Friday, the default)) */ function index_action($days = false) { if ($GLOBALS['perm']->have_perm('admin')) { $inst_mode = true; } $my_schedule_settings = $GLOBALS['user']->cfg->SCHEDULE_SETTINGS; // set the days to be displayed if ($days === false) { if (Request::getArray('days')) { $this->days = array_keys(Request::getArray('days')); } else { $this->days = array(0, 1, 2, 3, 4, 5, 6); } } else { $this->days = explode(',', $days); } // try to find the correct institute-id $institute_id = Request::option('institute_id', $SessSemName[1] ? $SessSemName[1] : Request::option('cid', false)); if (!$institute_id) { $institute_id = $GLOBALS['user']->cfg->MY_INSTITUTES_DEFAULT; } if (!$institute_id || in_array(get_object_type($institute_id), words('inst fak')) === false) { throw new Exception(sprintf(_('Kann Einrichtungskalendar nicht anzeigen!' . 'Es wurde eine ungültige Instituts-Id übergeben (%s)!', $institute_id))); } // load semester-data and current semester $semdata = new SemesterData(); $this->semesters = $semdata->getAllSemesterData(); if (Request::option('semester_id')) { $this->current_semester = $semdata->getSemesterData(Request::option('semester_id')); } else { $this->current_semester = $semdata->getCurrentSemesterData(); } $this->entries = (array) CalendarInstscheduleModel::getInstituteEntries($GLOBALS['user']->id, $this->current_semester, 8, 20, $institute_id, $this->days); Navigation::activateItem('/course/main/schedule'); PageLayout::setHelpKeyword('Basis.TerminkalenderStundenplan'); PageLayout::setTitle($GLOBALS['SessSemName']['header_line'] . ' - ' . _('Veranstaltungs-Stundenplan')); $zoom = Request::int('zoom', 0); $this->controller = $this; $this->calendar_view = new CalendarWeekView($this->entries, 'instschedule'); $this->calendar_view->setHeight(40 + 20 * $zoom); $this->calendar_view->setRange($my_schedule_settings['glb_start_time'], $my_schedule_settings['glb_end_time']); $this->calendar_view->groupEntries(); // if enabled, group entries with same start- and end-date URLHelper::addLinkParam('zoom', $zoom); URLHelper::addLinkParam('semester_id', $this->current_semester['semester_id']); $style_parameters = array('whole_height' => $this->calendar_view->getOverallHeight(), 'entry_height' => $this->calendar_view->getHeight()); $factory = new Flexi_TemplateFactory($this->dispatcher->trails_root . '/views'); PageLayout::addStyle($factory->render('calendar/stylesheet', $style_parameters)); if (Request::option('printview')) { PageLayout::addStylesheet('print.css'); } else { PageLayout::addStylesheet('print.css', array('media' => 'print')); } }
function get_seminars_by_sem_tree_id($sem_tree_id, $term_id) { $db = DBManager::get(); $sem_data_obj = new SemesterData(); $semester = $sem_data_obj->getSemesterData($term_id); $stmt = $db->prepare('SELECT s.Seminar_id AS seminar_id, s.Name AS name FROM seminar_sem_tree st JOIN seminare s ON (st.seminar_id = s.Seminar_id) WHERE st.sem_tree_id = ? AND s.start_time <= ? AND (s.start_time + s.duration_time >= ? OR duration_time = -1)'); $stmt->execute(array($sem_tree_id, $semester['beginn'], $semester['beginn'])); return $stmt->fetchAll(); }
public function index_action() { if ($_SESSION['sem_portal']['bereich'] != "all") { $class = $GLOBALS['SEM_CLASS'][$_SESSION['sem_portal']['bereich']]; $this->anzahl_seminare_class = $class->countSeminars(); $sem_status = array_keys($class->getSemTypes()); } else { $sem_status = false; } $init_data = array("level" => "f", "cmd" => "qs", "show_class" => $_SESSION['sem_portal']['bereich'], "group_by" => 0, "default_sem" => ($default_sem = SemesterData::GetSemesterIndexById($_SESSION['_default_sem'])) !== false ? $default_sem : "all", "sem_status" => $sem_status); if (Request::option('reset_all')) { $_SESSION['sem_browse_data'] = null; } $this->sem_browse_obj = new SemBrowse($init_data); $sem_browse_data['show_class'] = $_SESSION['sem_portal']['bereich']; if (!$GLOBALS['perm']->have_perm("root")) { $this->sem_browse_obj->target_url = "dispatch.php/course/details/"; $this->sem_browse_obj->target_id = "sem_id"; } else { $this->sem_browse_obj->target_url = "seminar_main.php"; $this->sem_browse_obj->target_id = "auswahl"; } $this->toplist_entries = $this->getToplistEntries($sem_status); $this->controller = $this; }
function navigator ($print_view = false) { global $cssSw, $view_mode; if (!$print_view){ ?> <table border="0" celpadding="2" cellspacing="0" width="99%" align="center"> <form method="POST" name="schedule_form" action="<?= URLHelper::getLink('?navigate=TRUE&quick_view=view_group_schedule&quick_view_mode='.$view_mode) ?>"> <?= CSRFProtection::tokenTag() ?> <tr> <td class="<? $cssSw->switchClass(); echo $cssSw->getClass() ?>" width="4%"> </td> <td class="<? echo $cssSw->getClass() ?>" width="96%" colspan="3"><font size=-1><b><?=_("Semester:")?></b></font> </td> </tr> <tr> <td class="<? echo $cssSw->getClass() ?>" width="4%" rowspan="2"> </td> <td class="<? echo $cssSw->getClass() ?>" width="40%" valign="top"> <?= SemesterData::GetSemesterSelector(array('name' => 'sem_schedule_choose', 'onChange' => 'document.schedule_form.submit()'), $this->semester['semester_id'],'semester_id',false)?> <?= Button::create(_('Auswählen'), 'jump') ?><br> <label> <input type="radio" onChange="document.schedule_form.submit()" style="vertical-align:bottom" <?=($this->timespan == 'course_time' ? 'checked' : '')?> name="sem_time_choose" value="course_time"> <?=_("Vorlesungszeit")?> </label> <label> <input type="radio" onChange="document.schedule_form.submit()" style="vertical-align:bottom" <?=($this->timespan == 'sem_time' ? 'checked' : '')?> name="sem_time_choose" value="sem_time"> <?=_("vorlesungsfreie Zeit")?> </label> </td> <td class="<? echo $cssSw->getClass() ?>" width="60%" valign="top"> <?=_("Eine Raumgruppe auswählen")?>:<br> <select name="group_schedule_choose_group" onChange="document.schedule_form.submit()"> <? $room_group = RoomGroups::GetInstance(); foreach($room_group->getAvailableGroups() as $gid){ echo '<option value="'.$gid.'" ' . ($this->group_id == $gid ? 'selected' : '') . '>' .htmlReady(my_substr($room_group->getGroupName($gid),0,85)) .' ('.$room_group->getGroupCount($gid).')</option>'; } ?> </select> <?= Button::create(_('Auswählen')) ?> </font> </td> <td class="<? echo $cssSw->getClass() ?>" valign="middle"> </td> </tr> <tr> <td class="<? echo $cssSw->getClass() ?>" colspan="4"><font size="-1"> </font> </td> </tr> </table> <? } }
static function findAllByUser($user_id) { foreach (\SemesterData::GetSemesterArray() as $key => $value) { if (isset($value['beginn']) && $value['beginn']) { $sem_start_times[] = $value['beginn']; } } $sem_number_sql = "INTERVAL(start_time," . join(",", $sem_start_times) . ")"; $sem_number_end_sql = "IF(duration_time=-1,-1,INTERVAL(start_time+duration_time," . join(",", $sem_start_times) . "))"; $query = "SELECT seminare.VeranstaltungsNummer AS sem_nr, \n\t\t\t\t\t\tschedule_seminare.color AS color, \n\t\t\t\t\t\t seminare.Name, seminare.Seminar_id, \n\t\t\t\t\t\t seminare.status as sem_status,\n\t\t\t\t\t\t seminar_user.status, seminar_user.gruppe, \n\t\t\t\t\t\t seminare.chdate, seminare.visible, \n\t\t\t\t\t\t admission_binding,\n\t\t\t\t\t\t modules,IFNULL(visitdate,0) as visitdate, \n\t\t\t\t\t\t admission_prelim, \n\t\t\t\t\t\t {$sem_number_sql} as sem_number, \n\t\t\t\t\t\t {$sem_number_end_sql} as sem_number_end {$add_fields}\n\t\t\t\tFROM seminar_user \n\t\t\t\tLEFT JOIN seminare USING (Seminar_id)\n\t\t\t\tLEFT JOIN schedule_seminare ON (schedule_seminare.user_id='{$user_id}' \n\t\t\t\t\tAND schedule_seminare.seminar_id=seminare.Seminar_id)\n\t\t\t\tLEFT JOIN object_user_visits ouv ON (ouv.object_id=seminar_user.Seminar_id \n\t\t\t\t\tAND ouv.user_id='{$user_id}' AND ouv.type='sem')\n\t\t\t\t{$add_query}\n\t\t\t\tWHERE seminar_user.user_id = '{$user_id}'"; $stmt = \DBManager::get()->query($query); return $stmt->fetchAll(); }
/** * returns schedule for a given user and semester * * @get /user/:user_id/schedule/:semester_id * @get /user/:user_id/schedule */ public function getSchedule($user_id, $semester_id = NULL) { if ($user_id !== $GLOBALS['user']->id) { $this->error(401); } $semdata = new \SemesterData(); $current_semester = isset($semester_id) ? $semdata->getSemesterData($semester_id) : $semdata->getCurrentSemesterData(); if (!$current_semester) { $this->notFound('No such semester.'); } $schedule_settings = \UserConfig::get($user_id)->SCHEDULE_SETTINGS; $days = $schedule_settings['glb_days']; $entries = \CalendarScheduleModel::getEntries($user_id, $current_semester, $schedule_settings['glb_start_time'], $schedule_settings['glb_end_time'], $days, $visible = false); $json = array(); foreach ($entries as $number_of_day => $schedule_of_day) { $entries = array(); foreach ($schedule_of_day->entries as $entry) { $entries[$entry['id']] = self::entryToJson($entry); } $json[$number_of_day + 1] = $entries; } $this->etag(md5(serialize($json))); return $json; }
/** * **/ public static function getSemester($timestamp = null) { static $semesters; if (!isset($semesters)) { $semesters = \SemesterData::GetSemesterArray(); } if (!$timestamp) { $timestamp = time(); } foreach ($semesters as $semester) { if ($timestamp >= $semester['beginn'] && $timestamp <= $semester['ende']) { return $semester['semester_id']; } } return false; }
/** * **/ public function routes(&$router) { $router->get('/semesters', function () use($router) { $temp = \SemesterData::GetSemesterArray(); $semesters = array(); foreach ($temp as $sem) { if ($sem['semester_id']) { $semesters[$sem['semester_id']] = reset($router->dispatch('get', '/semesters/:semester_id', $sem['semester_id'])); } } $semesters = array_values($semesters); $router->render(compact('semesters')); }); $router->get('/semesters/:semester_id', function ($semester_id) use($router) { $temp = \SemesterData::getInstance()->getSemesterData($semester_id); if (!$temp) { $router->halt(404, sprintf('Semester "%s" not found', $semester_id)); } $semester = array('semester_id' => $temp['semester_id'], 'title' => $temp['name'], 'description' => $temp['description'], 'begin' => $temp['beginn'], 'end' => $temp['ende'], 'seminars_begin' => $temp['vorles_beginn'], 'seminars_end' => $temp['vorles_ende']); $router->render(compact('semester')); }); }
function StudipSemSearch($form_name = "search_sem", $auto_search = true, $visible_only = false, $sem_class = 'all') { $search_fields = array('title' => array('type' => 'text'), 'sub_title' => array('type' => 'text'), 'number' => array('type' => 'text'), 'comment' => array('type' => 'text'), 'lecturer' => array('type' => 'text'), 'scope' => array('type' => 'text'), 'quick_search' => array('type' => 'text'), 'type' => array('type' => 'select', 'default_value' => 'all', 'max_length' => 35, 'options_callback' => array($this, 'getSelectOptions')), 'sem' => array('type' => 'select', 'default_value' => 'all', 'options_callback' => array($this, 'getSelectOptions')), 'category' => array('type' => 'select', 'default_value' => 'all', 'max_length' => 50, 'options_callback' => array($this, 'getSelectOptions')), 'combination' => array('type' => 'select', 'default_value' => 'AND', 'options_callback' => array($this, 'getSelectOptions')), 'scope_choose' => array('type' => 'select', 'default_value' => 'root', 'max_length' => 45, 'options_callback' => array($this, 'getSelectOptions')), 'range_choose' => array('type' => 'select', 'default_value' => 'root', 'max_length' => 45, 'options_callback' => array($this, 'getSelectOptions')), 'qs_choose' => array('type' => 'select', 'default_value' => 'title_lecturer_number', 'options_callback' => array($this, 'getSelectOptions'))); $search_buttons = array('do_search' => array('caption' => _("Suchen"), 'info' => _("Suche starten")), 'sem_change' => array('caption' => _('Auswählen'), 'info' => _("anderes Semester auswählen")), 'new_search' => array('caption' => _('Neue Suche'), 'info' => _("Neue Suche starten"))); //workaround: Qicksearch ändert den Namen des Eingabefeldes if (Request::get("search_sem_quick_search_parameter")) { Request::set('search_sem_quick_search', Request::get("search_sem_quick_search_parameter")); } $this->form = new StudipForm($search_fields, $search_buttons, $form_name, false); $this->form_name = $form_name; $this->sem_dates = SemesterData::GetSemesterArray(); $this->visible_only = $visible_only; $this->search_sem_class = $sem_class; if ($this->form->isClicked('do_search') || $this->form->isSended() && (!$this->form->isClicked('sem_change') || strlen($this->form->getFormFieldValue('quick_search')) > 2)) { $this->search_button_clicked = true; if ($auto_search) { $this->doSearch(); $this->search_done = true; } } $this->new_search_button_clicked = $this->form->isClicked('new_search'); $this->sem_change_button_clicked = $this->form->isClicked('do_search'); }
static function GetSemesterSelector($select_attributes = null, $default = 0, $option_value = 'semester_id', $include_all = true) { $semester = SemesterData::GetSemesterArray(); unset($semester[0]); if ($include_all) { $semester['all'] = array('name' => _("alle"), 'semester_id' => 0); } $semester = array_reverse($semester, true); if (!$select_attributes['name']) { $select_attributes['name'] = 'sem_select'; } $out = chr(10) . '<select '; foreach ($select_attributes as $key => $value) { $out .= ' ' . $key . '="' . $value . '" '; } $out .= '>'; foreach ($semester as $sem_key => $one_sem) { $one_sem['key'] = $sem_key; $out .= "\n<option value=\"{$one_sem[$option_value]}\" " . ($one_sem[$option_value] == $default ? "selected" : "") . ">" . htmlReady($one_sem['name']) . "</option>"; } $out .= chr(10) . '</select>'; return $out; }
/** * Exports data of the given range. * * This function calls the functions that export the data sepcified by the given $export_range. * It calls the function output_data afterwards. * * @access public * @param string $range_id Stud.IP-range_id for export */ function export_range($range_id) { global $o_mode, $range_name, $ex_person_details, $persons, $ex_sem; // Ist die Range-ID eine Einrichtungs-ID? $query = "SELECT Name FROM Institute WHERE Institut_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($range_id)); $name = $statement->fetchColumn(); if ($name) { $range_name = $name; output_data(xml_header(), $o_mode); $output_startet = true; export_inst($range_id); } // Ist die Range-ID eine Fakultaets-ID? Dann auch untergeordnete Institute exportieren! $query = "SELECT Name, Institut_id\n FROM Institute\n WHERE fakultaets_id = ? AND Institut_id != fakultaets_id"; $statement = DBManager::get()->prepare($query); $statement->execute(array($range_id)); while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { if ($row['Name'] != '') { // output_data ( xml_header(), $o_mode); export_inst($row['Institut_id']); } } // Ist die Range-ID eine Seminar-ID? $query = "SELECT Name, Seminar_id, Institut_id\n FROM seminare\n WHERE Seminar_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($range_id)); $row = $statement->fetch(PDO::FETCH_ASSOC); if ($row && $row['Name'] != '') { $range_name = $row['Name']; if (!$output_startet) { output_data(xml_header(), $o_mode); $output_startet = true; } export_inst($row['Institut_id'], $row['Seminar_id']); } // Ist die Range-ID ein Range-Tree-Item? if ($range_id != 'root') { $tree_object = new RangeTreeObject($range_id); $range_name = $tree_object->item_data["name"]; // Tree-Item ist ein Institut: if ($tree_object->item_data['studip_object'] == 'inst') { if (!$output_startet) { output_data(xml_header(), $o_mode); $output_startet = true; } export_inst($tree_object->item_data['studip_object_id']); } // Tree-Item hat Institute als Kinder: $inst_array = $tree_object->GetInstKids(); if (count($inst_array) > 0) { if (!$output_startet) { output_data(xml_header(), $o_mode); $output_startet = true; } while (list($key, $inst_ids) = each($inst_array)) { export_inst($inst_ids); } } } $query = "SELECT 1 FROM sem_tree WHERE sem_tree_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($range_id)); if ($statement->fetchColumn() || $range_id == 'root') { if (!$output_startet) { output_data(xml_header(), $o_mode); $output_startet = true; } if (isset($ex_sem) && ($semester = Semester::find($ex_sem))) { $args = array('sem_number' => array(SemesterData::GetSemesterIndexById($ex_sem))); } else { $args = array(); } if ($range_id != 'root') { $the_tree = TreeAbstract::GetInstance('StudipSemTree', $args); $sem_ids = array_unique($the_tree->getSemIds($range_id, true)); } if (is_array($sem_ids) || $range_id == 'root') { if (is_array($sem_ids)) { $query = "SELECT DISTINCT Institut_id\n FROM seminare\n WHERE Seminar_id IN (?)"; $statement = DBManager::get()->prepare($query); $statement->execute(array($sem_ids)); $to_export = $statement->fetchAll(PDO::FETCH_COLUMN); } else { $sem_ids = 'root'; $query = "SELECT DISTINCT Institut_id\n FROM seminare\n INNER JOIN seminar_sem_tree USING (seminar_id)"; if ($semester) { $query .= " WHERE seminare.start_time <= :begin\n AND (:begin <= (seminare.start_time + seminare.duration_time) OR\n seminare.duration_time = -1)"; $statement = DBManager::get()->prepare($query); $statement->bindValue(':begin', $semester->beginn); $statement->execute(); } else { $statement = DBManager::get()->query($query); } $to_export = $statement->fetchAll(PDO::FETCH_COLUMN); } foreach ($to_export as $inst) { export_inst($inst, $sem_ids); } } } if ($ex_person_details && is_array($persons)) { export_persons(array_keys($persons)); } output_data(xml_footer(), $o_mode, $flush = true); }
function ExternSemBrowseTemplate (&$module, $start_item_id) { global $SEM_TYPE,$SEM_CLASS; $semester = new SemesterData(); $all_semester = $semester->getAllSemesterData(); array_unshift($all_semester, 0); $this->group_by_fields = array( array('name' => _("Semester"), 'group_field' => 'sem_number'), array('name' => _("Bereich"), 'group_field' => 'bereich'), array('name' => _("Lehrende"), 'group_field' => 'fullname', 'unique_field' => 'username'), array('name' => _("Typ"), 'group_field' => 'status'), array('name' => _("Einrichtung"), 'group_field' => 'Institut', 'unique_field' => 'Institut_id')); $this->module = $module; $this->sem_browse_data["group_by"] = $this->module->config->getValue("Main", "grouping"); $this->sem_dates = $all_semester; $this->sem_dates[0] = array("name" => sprintf(_("vor dem %s"),$this->sem_dates[1]['name'])); // reorganize the $SEM_TYPE-array foreach ($SEM_CLASS as $key_class => $class) { $i = 0; foreach ($SEM_TYPE as $key_type => $type) { if ($type["class"] == $key_class) { $i++; $this->sem_types_position[$key_type] = $i; } } } $switch_time = mktime(0, 0, 0, date("m"), date("d") + 7 * $this->module->config->getValue("Main", "semswitch"), date("Y")); // get current semester $current_sem = get_sem_num($switch_time) + 1; switch ($this->module->config->getValue("Main", "semstart")) { case "previous" : if (isset($all_semester[$current_sem - 1])) { $current_sem--; } break; case "next" : if (isset($all_semester[$current_sem + 1])) { $current_sem++; } break; case "current" : break; default : if (isset($all_semester[$this->module->config->getValue('Main', 'semstart')])) { $current_sem = $this->module->config->getValue('Main', 'semstart'); } } $last_sem = $current_sem + $this->module->config->getValue('Main', 'semrange'); if ($last_sem < $current_sem) $last_sem = $current_sem; if (!isset($all_semester[$last_sem])) $last_sem = sizeof($all_semester); for (;$last_sem > $current_sem; $last_sem--) $this->sem_number[] = $last_sem - 1; $semclasses = $this->module->config->getValue('Main', 'semclasses'); foreach ($SEM_TYPE as $key => $type) { if (in_array($type['class'], (array) $semclasses)) $this->sem_browse_data['sem_status'][] = $key; } $this->get_sem_range_tree($start_item_id, true); }
function showSearchList($search_array, $check_assigns = FALSE) { //create the query if ($search_array['resources_search_range']){ $search_only = $this->getResourcesSearchRange($search_array['resources_search_range']); } $parameters = array(); if ($search_array['properties']) { $query = "SELECT a.resource_id, COUNT(a.resource_id) AS resource_id_count FROM resources_objects_properties AS a LEFT JOIN resources_objects AS b USING (resource_id) LEFT JOIN resources_categories USING (category_id)"; if (!hasGlobalOccupationAccess()) { $query .= " LEFT JOIN `resources_user_resources` AS rur ON (rur.`resource_id` = b.`resource_id`)"; } $query .= " WHERE "; $conditions = array(); $i = 0; foreach ($search_array['properties'] as $key => $val) { // if ($val == 'on') { // $val = 1; // } //let's create some possible wildcards if (strpos($val, '<=') !== false) { $val = (int) substr($val, strpos($val, '<=') + 2); $linking = '<='; } elseif (strpos($val, '>=') !== false) { $val = (int) substr($val, strpos($val, '>=') + 2); $linking = '>='; } elseif (strpos($val, '<') !== false) { $val = (int) substr($val, strpos($val, '<') + 1); $linking = '<'; } elseif (strpos($val, '>') !== false) { $val = (int) substr($val, strpos($val, '>') + 1); $linking = '>'; } else { $linking = '='; } $conditions[] = "(property_id = :key{$i} AND state {$linking} :state{$i})"; $parameters[':key' . $i] = $key; $parameters[':state' . $i] = $val; $i += 1; } $query .= (count($conditions) > 0) ? implode(' OR ', $conditions) : '1'; $query .= " AND b.name LIKE CONCAT('%', :needle, '%')"; $parameters[':needle'] = $search_array['search_exp']; if ($this->supress_hierachy_levels) { $query .= " AND b.category_id != ''"; } if ($this->show_only_rooms) { $query .= " AND is_room = 1"; } if ($search_array['resources_search_range']) { $query .= " AND b.resource_id IN (:resource_ids)"; $parameters[':resource_ids'] = $resource_ids ?: ''; } if (!hasGlobalOccupationAccess()) { $query .= " AND (b.`owner_id`=:user OR rur.`user_id`=:user)"; $parameters[':user'] = $GLOBALS['user']->id; } $query .= " GROUP BY a.resource_id HAVING resource_id_count = :count"; $parameters[':count'] = $i; $query .=" ORDER BY b.name"; } else { $query = "SELECT resource_id FROM resources_objects AS ro LEFT JOIN resources_categories USING (category_id)"; if (!hasGlobalOccupationAccess()) { $query .= " LEFT JOIN `resources_user_resources` USING (`resource_id`)"; } $query .= " WHERE ro.name LIKE CONCAT('%', :needle, '%')"; $parameters[':needle'] = $search_array['search_exp']; if ($this->supress_hierachy_levels) { $query .= " AND ro.category_id != ''"; } if ($this->show_only_rooms) { $query .= " AND is_room = 1"; } if ($search_array['resources_search_range']) { $query .= " AND ro.resource_id IN (:resource_ids)"; $parameters[':resource_ids'] = $search_only ?: ''; } if (!hasGlobalOccupationAccess()) { $query .= " AND (ro.`owner_id`=:user OR `user_id`=:user)"; $parameters[':user'] = $GLOBALS['user']->id; } $query .= " ORDER BY ro.name"; } $statement = DBManager::get()->prepare($query); $statement->execute($parameters); $resource_ids = $statement->fetchAll(PDO::FETCH_COLUMN); //if we have an empty result if (count($resource_ids) == 0 && $level == 0) { return FALSE; } foreach ($resource_ids as $resource_id) { $found_resources[$resource_id] = TRUE; } $day_of_week = false; //do further checks to determine free resources inthe given time range if ($search_array["search_assign_begin"] && $check_assigns) { $multiOverlaps = new CheckMultipleOverlaps; // >> changed for advanced search for room administrators if ($search_array["search_repeating"]) { // is this slot empty for the rest of the term? $semester_data = new SemesterData(); $semester = $semester_data->getSemesterDataByDate($search_array["search_assign_begin"]); // create the dummy assign object $assObj = new AssignObject(''); $assObj->setBegin($search_array["search_assign_begin"]); $assObj->setEnd($search_array["search_assign_end"]); $assObj->setRepeatEnd($semester["vorles_ende"]); $assObj->setRepeatInterval(1); $assObj->setRepeatQuantity(-1); // calculate stud.IP-day-of-week $day_of_week = date("w", $search_array["search_assign_begin"]); $day_of_week = $day_of_week == 0 ? 7 : $day_of_week; $assObj->setRepeatDayOfWeek($day_of_week); // set time range for checks $multiOverlaps->setAutoTimeRange(Array($assObj)); // generate and get the events represented by assign object $events = $assObj->getEvents(); foreach($events as $ev) { $event[$ev->getId()] = $ev; } } else { // the code for one specific slot $assEvt = new AssignEvent('', $search_array["search_assign_begin"], $search_array["search_assign_end"], '', ''); $multiOverlaps->setTimeRange($search_array["search_assign_begin"], $search_array["search_assign_end"]); $event[$assEvt->getId()] = $assEvt; } // << changed for advanced search for room administrators //add the found resources to the check-set foreach ($found_resources as $key=>$val) { $multiOverlaps->addResource($key, $day_of_week); } $multiOverlaps->checkOverlap($event, $result); //output foreach ($found_resources as $key=>$val) { if (!$result[$key]) { $this->showListObject($key); $result_count++; } } } else { //output foreach ($found_resources as $key=>$val) { $this->showListObject($key); $result_count++; } } return $result_count; }
function showRequestList() { global $_fullname_sql, $CANONICAL_RELATIVE_PATH_STUDIP; $license_to_kill = (get_config('RESOURCES_ALLOW_DELETE_REQUESTS') && getGlobalPerms($GLOBALS['user']->id) == 'admin'); if ($license_to_kill){ echo chr(10) . '<script type="text/javascript">'; echo chr(10) . ' function auswahl_umkehr(){ my_elements = document.forms[\'list_requests_form\'].elements[\'requests_marked_to_kill[]\']; if(!my_elements.length){ if(my_elements.checked) my_elements.checked = false; else my_elements.checked = true; } else { for(i = 0; i < my_elements.length; ++i){ if(my_elements[i].checked) my_elements[i].checked = false; else my_elements[i].checked = true; } } }'; echo chr(10) . '</script>'; echo chr(10) . '<form name="list_requests_form" method="post" action="'.URLHelper::getLink().'">'; echo CSRFProtection::tokenTag(); ?> <div align="right" style="padding-right: 5px"> <?php echo LinkButton::create(_('Auswahl umkehren'), 'javascript:auswahl_umkehr();'); ?> <?php echo Button::create('Löschen', 'do_delete_requests', array(title => _('Ausgewählte Anfragen löschen'))); ?> </div> <br> <? } $i = 0; $zt = new ZebraTable(array('width' => '99%', 'padding' => '1', 'align' => 'center')); $zt->switchClass(); echo $zt->openRow(); echo $zt->cell(" ", array("class" => "content_seperator")); echo $zt->cell("<font size=\"-1\"><b>" . _("Zähler") . "</b></font>", array("class" => "content_seperator", 'colspan' => '3')); echo $zt->cell("<font size=\"-1\"><b>" . _("V.-Nummer") . "</b></font>", array("class" => "content_seperator")); echo $zt->cell("<font size=\"-1\"><b>" . _("Titel") . "</b></font>", array("class" => "content_seperator")); echo $zt->cell("<font size=\"-1\"><b>" . _("Dozenten") . "</b></font>", array("class" => "content_seperator")); echo $zt->cell("<font size=\"-1\"><b>" . _("Anfrager") . "</b></font>", array("class" => "content_seperator")); echo $zt->cell("<font size=\"-1\"><b>" . _("Start-Semester") . "<b></font>", array("class" => "content_seperator")); if ($license_to_kill){ echo $zt->cell("<font size=\"-1\"><b>" . _("löschen") . "<b></font>", array("class" => "content_seperator", 'width' => '5%')); } echo $zt->closeRow(); ?> <? foreach ($_SESSION['resources_data']['requests_working_on'] as $key => $val) { $i++; if ($_SESSION['resources_data']['requests_open'][$val['request_id']] || !$_SESSION['resources_data']['skip_closed_requests']) { $reqObj = new RoomRequest($val['request_id']); $semObj = new Seminar($reqObj->getSeminarId()); if ($semObj->getName() != "") { echo $zt->openRow(); //echo "<font size=\"-1\">"; echo $zt->cell(" "); echo $zt->cell("<font size=\"-1\">$i.</font>"); echo $zt->cell("<a href=\"resources.php?view=edit_request&edit=".$val['request_id']."\">".Icon::create('edit', 'clickable', ['title' => _("Anfrage bearbeiten")])->asImg()."</a>"); echo $zt->cell((($_SESSION['resources_data']['requests_open'][$val['request_id']]) ? '' : Icon::create('accept', 'accept')->asImg())."</font>"); echo $zt->cell("<font size=\"-1\">".htmlReady($semObj->seminar_number)."</font>"); echo $zt->cell("<font size=\"-1\"><a href=\"dispatch.php/course/details/?sem_id=".$semObj->getId()."&send_from_search=true&send_from_search_page=".urlencode($CANONICAL_RELATIVE_PATH_STUDIP."resources.php?view=list_requests")."\">".my_substr(htmlReady($semObj->getName()),0,50)."</a><br></font>"); echo $zt->openCell(); echo "<font size=\"-1\">"; $k = false; foreach ($semObj->getMembers('dozent') as $doz) { if ($k) echo ", "; echo "<a href=\"dispatch.php/profile?username={$doz['username']}\">".HtmlReady($doz['fullname'])."</a>"; $k = true; } echo "</font>"; $this->selectSemInstituteNames($semObj->getInstitutId()); if (!$this->all_semester) { $semester = new SemesterData(); $this->all_semester = $semester->getAllSemesterData(); } foreach ($this->all_semester as $one_sem) { if ($one_sem['beginn'] == $semObj->semester_start_time) { $cursem = $one_sem['name']; } } echo $zt->closeCell(); echo $zt->cell("<font size=\"-1\"><a href=\"dispatch.php/profile?username="******"\">".get_fullname($reqObj->user_id)."</a></font>"); echo $zt->cell("<font size=\"-1\">$cursem</font>"); if ($license_to_kill){ echo $zt->cell("<font size=\"-1\"><input type=\"checkbox\" name=\"requests_marked_to_kill[]\" value=\"{$val['request_id']}\"></font>", array('align' => 'center')); } echo $zt->closeRow(); } } } echo $zt->close(); if ($license_to_kill){ echo chr(10) . '</form>'; } }
/** * */ function toStringEdit ($post_vars = "", $faulty_values = "", $edit_form = "", $anker = "") { // get semester data $semester = new SemesterData(); $semester_data = $semester->getAllSemesterData(); $out = ""; $table = ""; if ($edit_form == "") $edit_form = new ExternEditModule($this->config, $post_vars, $faulty_values, $anker); $edit_form->setElementName($this->getName()); $element_headline = $edit_form->editElementHeadline($this->real_name, $this->config->getName(), $this->config->getId(), TRUE, $anker); $headline = $edit_form->editHeadline(_("Allgemeine Angaben")); $title = _("Startsemester:"); $info = _("Geben Sie das erste anzuzeigende Semester an. Die Angaben \"vorheriges\", \"aktuelles\" und \"nächstes\" beziehen sich immer auf das laufende Semester und werden automatisch angepasst."); $current_sem = get_sem_num_sem_browse(); if ($current_sem === FALSE) { $names = array(_("keine Auswahl"), _("aktuelles"), _("nächstes")); $values = array("", "current", "next"); } else if ($current_sem === TRUE) { $names = array(_("keine Auswahl"), _("vorheriges"), _("aktuelles")); $values = array("", "previous", "current"); } else { $names = array(_("keine Auswahl"), _("vorheriges"), _("aktuelles"), "nächstes"); $values = array("", "previous", "current", "next"); } foreach ($semester_data as $sem_num => $sem) { $names[] = $sem["name"]; $values[] = $sem_num + 1; } $table = $edit_form->editOptionGeneric("semstart", $title, $info, $values, $names); $title = _("Anzahl der anzuzeigenden Semester:"); $info = _("Geben Sie an, wieviele Semester (ab o.a. Startsemester) angezeigt werden sollen."); $names = array(_("keine Auswahl")); $values = array(""); $i = 1; foreach ($semester_data as $sem_num => $sem) { $names[] = $i++; $values[] = $sem_num + 1; } $table .= $edit_form->editOptionGeneric("semrange", $title, $info, $values, $names); $title = _("Umschalten des aktuellen Semesters:"); $info = _("Geben Sie an, wieviele Wochen vor Semesterende automatisch auf das nächste Semester umgeschaltet werden soll."); $names = array(_("keine Auswahl"), _("am Semesterende"), _("1 Woche vor Semesterende")); for ($i = 2; $i < 13; $i++) $names[] = sprintf(_("%s Wochen vor Semesterende"), $i); $values = array("", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"); $table .= $edit_form->editOptionGeneric("semswitch", $title, $info, $values, $names); $title = _("Bezeichnung Sommersemester:"); $info = _("Alternative Bezeichnung für den Begriff \"Sommersemester\"."); $table .= $edit_form->editTextfieldGeneric("aliassose", $title, $info, 40, 80); $title = _("Bezeichnung Wintersemester:"); $info = _("Alternative Bezeichnung für den Begriff \"Wintersemester\"."); $table .= $edit_form->editTextfieldGeneric("aliaswise", $title, $info, 40, 80); $title = _("Darstellungsart:"); $info = _("Wählen Sie zwischen Listendarstellung und reiner Textdarstellung."); $names = array(_("Liste"), _("nur Text")); $values = array("1", "0"); $table .= $edit_form->editRadioGeneric("aslist", $title, $info, $values, $names); $title = _("Veranstaltungsklassen:"); $info = _("Wählen Sie aus, welche Veranstaltungsklassen angezeigt werden sollen."); foreach ($GLOBALS['SEM_CLASS'] as $key => $lecture_class) { $class_names[] = $lecture_class['name']; $class_values[] = $key; } $table .= $edit_form->editCheckboxGeneric("semclass", $title, $info, $class_values, $class_names); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $submit = $edit_form->editSubmit($this->config->getName(), $this->config->getId(), $this->getName()); $out = $edit_form->editContent($content_table, $submit); $out .= $edit_form->editBlank(); return $element_headline . $out; }
<body> <? if (sizeof($dates)) : ?> <table cellspacing="0" cellpadding="0" border="1" width="100%"> <tr> <th colspan="3"> <h2><?php echo htmlReady(PageLayout::getTitle()); ?> </h2> </th> </tr> <? $semester = new SemesterData(); $all_semester = $semester->getAllSemesterData(); foreach ($dates as $date) : if ( ($grenze == 0) || ($grenze < $date['start']) ) { foreach ($all_semester as $zwsem) { if ( ($zwsem['beginn'] < $date['start']) && ($zwsem['ende'] > $date['start']) ) { $grenze = $zwsem['ende']; ?> <tr> <td colspan="3"> <h3><?php echo htmlReady($zwsem['name']); ?> </h3> </td>
function in_archiv ($sem_id) { global $SEM_CLASS,$SEM_TYPE, $ARCHIV_PATH, $TMP_PATH, $ZIP_PATH, $ZIP_OPTIONS, $_fullname_sql; NotificationCenter::postNotification('CourseWillArchive', $sem_id); //Besorgen der Grunddaten des Seminars $query = "SELECT Seminar_id, Name, Untertitel, Beschreibung, start_time, Institut_id, status FROM seminare WHERE Seminar_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($sem_id)); $row = $statement->fetch(PDO::FETCH_ASSOC); $seminar_id = $row['Seminar_id']; $name = $row['Name']; $untertitel = $row['Untertitel']; $beschreibung = $row['Beschreibung']; $start_time = $row['start_time']; $heimat_inst_id = $row['Institut_id']; //Besorgen von einzelnen Daten zu dem Seminar $semester = new SemesterData; $all_semester = $semester->getAllSemesterData(); foreach ($all_semester as $sem) { if (($start_time >= $sem['beginn']) && ($start_time <= $sem['ende'])) { $semester_tmp = $sem['name']; } } //Studienbereiche if ($SEM_CLASS[$SEM_TYPE[$row['status']]['class']]['bereiche']) { $sem_path = get_sem_tree_path($seminar_id); if (is_array($sem_path)) { $studienbereiche = join(', ', $sem_path); } } // das Heimatinstitut als erstes $query = "SELECT Name FROM Institute WHERE Institut_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($heimat_inst_id)); $institute = $statement->fetchColumn(); // jetzt den Rest $query = "SELECT Name FROM Institute LEFT JOIN seminar_inst USING (institut_id) WHERE seminar_id = ? AND Institute.Institut_id != ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($seminar_id, $heimat_inst_id)); while ($temp = $statement->fetchColumn()) { $institute .= ', ' . $temp; } $query = "SELECT GROUP_CONCAT({$_fullname_sql['full']} SEPARATOR ', ') FROM seminar_user LEFT JOIN auth_user_md5 USING (user_id) LEFT JOIN user_info USING (user_id) WHERE seminar_id = ? AND seminar_user.status = 'dozent'"; $statement = DBManager::get()->prepare($query); $statement->execute(array($seminar_id)); $dozenten = $statement->fetchColumn(); $query = "SELECT fakultaets_id FROM seminare LEFT JOIN Institute USING (Institut_id) WHERE Seminar_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($seminar_id)); $fakultaet_id = $statement->fetchColumn(); $query = "SELECT GROUP_CONCAT(DISTINCT c.Name SEPARATOR ' | ') FROM seminar_inst AS a LEFT JOIN Institute AS b USING (Institut_id) LEFT JOIN Institute AS c ON (c.Institut_id = b.fakultaets_id) WHERE a.seminar_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($seminar_id)); $fakultaet = $statement->fetchColumn(); setTempLanguage(); // use $DEFAULT_LANGUAGE for archiv-dumps //Dump holen $dump = dump_sem($sem_id, 'nobody'); //Forumdump holen foreach (PluginEngine::getPlugins('ForumModule', $sem_id) as $plugin) { $forumdump .= $plugin->getDump($sem_id); } // Wikidump holen $wikidump = getAllWikiPages($sem_id, $name, FALSE); restoreLanguage(); //OK, naechster Schritt: Kopieren der Personendaten aus seminar_user in archiv_user $query = "INSERT INTO archiv_user (seminar_id, user_id, status) SELECT Seminar_id, user_id, status FROM seminar_user WHERE Seminar_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($seminar_id)); // Eventuelle Vertretungen in der Veranstaltung haben weiterhin Zugriff mit Dozentenrechten if (get_config('DEPUTIES_ENABLE')) { $deputies = getDeputies($seminar_id); // Eintragen ins Archiv mit Zugriffsberechtigung "dozent" $query = "INSERT IGNORE INTO archiv_user SET seminar_id = ?, user_id = ?, status = 'dozent'"; $statement = DBManager::get()->prepare($query); foreach ($deputies as $deputy) { $statement->execute(array($seminar_id, $deputy['user_id'])); } } $Modules = new Modules; $Modules = $Modules->getLocalModules($sem_id); $folder_tree = TreeAbstract::GetInstance('StudipDocumentTree', array('range_id' => $sem_id,'entity_type' => 'sem')); if ($Modules['documents_folder_permissions'] || StudipDocumentTree::ExistsGroupFolders($sem_id)) { $unreadable_folders = $folder_tree->getUnReadableFolders('nobody'); } $query = "SELECT COUNT(dokument_id) FROM dokumente WHERE seminar_id = ? AND url = ''"; $statement = DBManager::get()->prepare($query); $statement->execute(array($seminar_id)); $count = $statement->fetchColumn(); if ($count) { $hash_secret = "frauen"; $archiv_file_id = md5(uniqid($hash_secret,1)); //temporaeres Verzeichnis anlegen $tmp_full_path = "$TMP_PATH/$archiv_file_id"; mkdir($tmp_full_path, 0700); if($folder_tree->getNumKids('root')) { $list = $folder_tree->getKids('root'); } if (is_array($list) && count($list) > 0) { $query = "SELECT folder_id, name FROM folder WHERE range_id IN (?) ORDER BY name"; $statement = DBManager::get()->prepare($query); $statement->execute(array($list)); $folder = 0; while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { $folder += 1; $temp_folder = $tmp_full_path . "/[$folder]_" . prepareFilename($row['name'], FALSE); mkdir($temp_folder, 0700); createTempFolder($row['folder_id'], $temp_folder, $seminar_id, 'nobody'); } //zip all the stuff $archiv_full_path = "$ARCHIV_PATH/$archiv_file_id"; create_zip_from_directory($tmp_full_path, $tmp_full_path); @rename($tmp_full_path . '.zip', $archiv_full_path); } rmdirr($tmp_full_path); if (is_array($unreadable_folders)) { $query = "SELECT dokument_id FROM dokumente WHERE seminar_id = ? AND url = '' AND range_id IN (?)"; $statement = DBManager::get()->prepare($query); $statement->execute(array($seminar_id, $unreadable_folders)); $archiv_protected_file_id = createSelectedZip($statement->fetchAll(PDO::FETCH_COLUMN), false, false); @rename("$TMP_PATH/$archiv_protected_file_id", "$ARCHIV_PATH/$archiv_protected_file_id"); } } else { $archiv_file_id = ''; } //Reinschreiben von diversem Klumpatsch in die Datenbank $query = "INSERT INTO archiv (seminar_id, name, untertitel, beschreibung, start_time, semester, heimat_inst_id, institute, dozenten, fakultaet, dump, archiv_file_id,archiv_protected_file_id, forumdump, wikidump, studienbereiche, mkdate) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, UNIX_TIMESTAMP())"; $statement = DBManager::get()->prepare($query); $success = $statement->execute(array( $seminar_id, $name ?: '', $untertitel ?: '', $beschreibung ?: '', $start_time, $semester_tmp ?: '', $heimat_inst_id, $institute ?: '', $dozenten ?: '', $fakultaet ?: '', $dump ?: '', $archiv_file_id ?: '', $archiv_protected_file_id ?: '', $forumdump ?: '', $wikidump ?: '', $studienbereiche ?: '', )); if ($success) { NotificationCenter::postNotification('CourseDidArchive', $seminar_id); } }
function createResultXls() { require_once "vendor/write_excel/OLEwriter.php"; require_once "vendor/write_excel/BIFFwriter.php"; require_once "vendor/write_excel/Worksheet.php"; require_once "vendor/write_excel/Workbook.php"; global $_fullname_sql, $SEM_TYPE, $SEM_CLASS, $TMP_PATH; if (is_array($this->sem_browse_data['search_result']) && count($this->sem_browse_data['search_result'])) { if (!is_object($this->sem_tree)) { $the_tree = TreeAbstract::GetInstance("StudipSemTree"); } else { $the_tree =& $this->sem_tree; } list($group_by_data, $sem_data) = $this->getResult(); $tmpfile = $TMP_PATH . '/' . md5(uniqid('write_excel', 1)); // Creating a workbook $workbook = new Workbook($tmpfile); $head_format =& $workbook->addformat(); $head_format->set_size(12); $head_format->set_bold(); $head_format->set_align("left"); $head_format->set_align("vcenter"); $head_format_merged =& $workbook->addformat(); $head_format_merged->set_size(12); $head_format_merged->set_bold(); $head_format_merged->set_align("left"); $head_format_merged->set_align("vcenter"); $head_format_merged->set_merge(); $head_format_merged->set_text_wrap(); $caption_format =& $workbook->addformat(); $caption_format->set_size(10); $caption_format->set_align("left"); $caption_format->set_align("vcenter"); $caption_format->set_bold(); //$caption_format->set_text_wrap(); $data_format =& $workbook->addformat(); $data_format->set_size(10); $data_format->set_align("left"); $data_format->set_align("vcenter"); $caption_format_merged =& $workbook->addformat(); $caption_format_merged->set_size(10); $caption_format_merged->set_merge(); $caption_format_merged->set_align("left"); $caption_format_merged->set_align("vcenter"); $caption_format_merged->set_bold(); // Creating the first worksheet $worksheet1 =& $workbook->addworksheet(_("Veranstaltungen")); $worksheet1->set_row(0, 20); $worksheet1->write_string(0, 0, _("Stud.IP Veranstaltungen") . ' - ' . $GLOBALS['UNI_NAME_CLEAN'], $head_format); $worksheet1->set_row(1, 20); $worksheet1->write_string(1, 0, sprintf(_(" %s Veranstaltungen gefunden %s, Gruppierung: %s"), count($sem_data), $this->sem_browse_data['do_search'] ? _("(Suchergebnis)") : '', $this->group_by_fields[$this->sem_browse_data['group_by']]['name']), $caption_format); $worksheet1->write_blank(0, 1, $head_format); $worksheet1->write_blank(0, 2, $head_format); $worksheet1->write_blank(0, 3, $head_format); $worksheet1->write_blank(1, 1, $head_format); $worksheet1->write_blank(1, 2, $head_format); $worksheet1->write_blank(1, 3, $head_format); $worksheet1->set_column(0, 0, 70); $worksheet1->set_column(0, 1, 25); $worksheet1->set_column(0, 2, 25); $worksheet1->set_column(0, 3, 50); $row = 2; foreach ($group_by_data as $group_field => $sem_ids) { switch ($this->sem_browse_data["group_by"]) { case 0: $semester = SemesterData::GetSemesterArray(); $headline = $semester[$group_field]['name']; break; case 1: if ($the_tree->tree_data[$group_field]) { $headline = $the_tree->getShortPath($group_field); } else { $headline = _("keine Studienbereiche eingetragen"); } break; case 3: $headline = $SEM_TYPE[$group_field]["name"] . " (" . $SEM_CLASS[$SEM_TYPE[$group_field]["class"]]["name"] . ")"; break; default: $headline = $group_field; break; } ++$row; $worksheet1->write_string($row, 0, $headline, $caption_format); $worksheet1->write_blank($row, 1, $caption_format); $worksheet1->write_blank($row, 2, $caption_format); $worksheet1->write_blank($row, 3, $caption_format); ++$row; if (is_array($sem_ids['Seminar_id'])) { $semester = SemesterData::GetSemesterArray(); while (list($seminar_id, ) = each($sem_ids['Seminar_id'])) { $sem_name = key($sem_data[$seminar_id]["Name"]); $seminar_number = key($sem_data[$seminar_id]['VeranstaltungsNummer']); $sem_number_start = key($sem_data[$seminar_id]["sem_number"]); $sem_number_end = key($sem_data[$seminar_id]["sem_number_end"]); if ($sem_number_start != $sem_number_end) { $sem_name .= ' (' . $semester[$sem_number_start]['name'] . ' - '; $sem_name .= ($sem_number_end == -1 ? _("unbegrenzt") : $semester[$sem_number_end]['name']) . ')'; } elseif ($this->sem_browse_data['group_by']) { $sem_name .= ' (' . $semester[$sem_number_start]['name'] . ")"; } $worksheet1->write_string($row, 0, $sem_name, $data_format); //create Turnus field $temp_turnus_string = Seminar::GetInstance($seminar_id)->getFormattedTurnus(true); //Shorten, if string too long (add link for details.php) if (strlen($temp_turnus_string) > 245) { $temp_turnus_string = substr($temp_turnus_string, 0, strpos(substr($temp_turnus_string, 245, strlen($temp_turnus_string)), ",") + 246); $temp_turnus_string .= "...(mehr)"; } $worksheet1->write_string($row, 1, $seminar_number, $data_format); $worksheet1->write_string($row, 2, $temp_turnus_string, $data_format); $doz_name = array_keys($sem_data[$seminar_id]['fullname']); $doz_position = array_keys($sem_data[$seminar_id]['position']); if (is_array($doz_name)) { if (count($doz_position) != count($doz_name)) { $doz_position = range(1, count($doz_name)); } array_multisort($doz_position, $doz_name); $worksheet1->write_string($row, 3, join(', ', $doz_name), $data_format); } ++$row; } } } $workbook->close(); } return $tmpfile; }
/** * */ function toStringEdit ($post_vars = "", $faulty_values = "", $edit_form = "", $anker = "") { // get semester data $semester = new SemesterData(); $semester_data = $semester->getAllSemesterData(); update_generic_datafields($this->config, $this->data_fields, $this->field_names, "sem"); $out = ""; $table = ""; if ($edit_form == "") $edit_form = new ExternEditModule($this->config, $post_vars, $faulty_values, $anker); $edit_form->setElementName($this->getName()); $element_headline = $edit_form->editElementHeadline($this->real_name, $this->config->getName(), $this->config->getId(), TRUE, $anker); $headline = $edit_form->editHeadline(_("Name der Konfiguration")); $table = $edit_form->editName("name"); $content_table = $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $content_table .= $this->getSRIFormContent($edit_form); $headline = $edit_form->editHeadline(_("Allgemeine Angaben zum Tabellenaufbau")); $edit_function = $this->edit_function; $table = $edit_form->$edit_function($this->field_names, array(), array("sort")); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $headline = $edit_form->editHeadline(_("Allgemeine Angaben Seitenaufbau")); $title = _("Gruppierung:"); $info = _("Wählen Sie, wie die Veranstaltungen gruppiert werden sollen."); $values = array("0", "1", "2", "3", "4"); $names = array(_("Semester"), _("Bereich"), _("Lehrende"), _("Typ"), _("Einrichtung")); $table = $edit_form->editOptionGeneric("grouping", $title, $info, $values, $names); $title = _("Startsemester:"); $info = _("Geben Sie das erste anzuzeigende Semester an. Die Angaben \"vorheriges\", \"aktuelles\" und \"nächstes\" beziehen sich immer auf das laufende Semester und werden automatisch angepasst."); $current_sem = get_sem_num_sem_browse(); if ($current_sem === FALSE) { $names = array(_("keine Auswahl"), _("aktuelles"), _("nächstes")); $values = array("", "current", "next"); } else if ($current_sem === TRUE) { $names = array(_("keine Auswahl"), _("vorheriges"), _("aktuelles")); $values = array("", "previous", "current"); } else { $names = array(_("keine Auswahl"), _("vorheriges"), _("aktuelles"), "nächstes"); $values = array("", "previous", "current", "next"); } foreach ($semester_data as $sem_num => $sem) { $names[] = $sem["name"]; $values[] = $sem_num + 1; } $table .= $edit_form->editOptionGeneric("semstart", $title, $info, $values, $names); $title = _("Anzahl der anzuzeigenden Semester:"); $info = _("Geben Sie an, wieviele Semester (ab o.a. Startsemester) angezeigt werden sollen."); $names = array(_("keine Auswahl")); $values = array(""); $i = 1; foreach ($semester_data as $sem_num => $sem) { $names[] = $i++; $values[] = $sem_num + 1; } $table .= $edit_form->editOptionGeneric("semrange", $title, $info, $values, $names); $title = _("Umschalten des aktuellen Semesters:"); $info = _("Geben Sie an, wieviele Wochen vor Semesterende automatisch auf das nächste Semester umgeschaltet werden soll."); $names = array(_("keine Auswahl"), _("am Semesterende"), _("1 Woche vor Semesterende")); for ($i = 2; $i < 13; $i++) $names[] = sprintf(_("%s Wochen vor Semesterende"), $i); $values = array("", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"); $table .= $edit_form->editOptionGeneric("semswitch", $title, $info, $values, $names); $title = _("Veranstaltungen beteiligter Institute anzeigen:"); $info = _("Wählen Sie diese Option, um Veranstaltungen anzuzeigen, bei denen diese Einrichtung als beteiligtes Institut eingetragen ist."); $values = "1"; $names = ""; $table .= $edit_form->editCheckboxGeneric("allseminars", $title, $info, $values, $names); $title = _("Bereichspfad ab Ebene:"); $info = _("Wählen Sie, ab welcher Ebene der Bereichspfad ausgegeben werden soll."); $values = array("1", "2", "3", "4", "5"); $names = array("1", "2", "3", "4", "5"); $table .= $edit_form->editOptionGeneric("rangepathlevel", $title, $info, $values, $names); $title = _("Anzahl Veranstaltungen/Gruppierung anzeigen:"); $info = _("Wählen Sie diese Option, wenn die Anzahl der Veranstaltungen und die gewählte Gruppierungsart angezeigt werden sollen."); $values = "1"; $names = ""; $table .= $edit_form->editCheckboxGeneric("addinfo", $title, $info, $values, $names); $title = _("Spaltenüberschriften<br>wiederholen:"); $info = _("Wiederholung der Spaltenberschriften ber oder unter der Gruppierungszeile."); $values = array("above", "beneath", ""); $names = array(_("über"), _("unter Gruppierungszeile"), _("keine")); $table .= $edit_form->editRadioGeneric("repeatheadrow", $title, $info, $values, $names); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $headline = $edit_form->editHeadline(_("Ausgabe bestimmter Veranstaltungsklassen")); $table = ""; unset($names); unset($values); $info = _("Wählen Sie die anzuzeigenden Veranstaltungsklassen aus."); foreach ($GLOBALS["SEM_CLASS"] as $key => $class) { $values[] = $key; $names[] = $class["name"]; } $table = $edit_form->editCheckboxGeneric("semclasses", $names, $info, $values, ""); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $headline = $edit_form->editHeadline(_("Textersetzungen")); $title = _("Anzahl Veranstaltungen:"); $info = _("Geben Sie einen Text ein, der nach der Anzahl der Veranstaltungen steht. Nur wirksam, wenn die Ausgabe der Anzahl der Veranstaltungen und der Gruppierung aktiviert wurde."); $table = $edit_form->editTextfieldGeneric("textlectures", $title, $info, 40, 150); $title = _("Gruppierungsinformation:"); $info = _("Geben Sie einen Text ein, der vor der Gruppierungsart steht. Nur wirksam, wenn die Ausgabe der Anzahl der Veranstaltungen und der Gruppierung aktiviert wurde."); $table .= $edit_form->editTextfieldGeneric("textgrouping", $title, $info, 40, 150); $title = _(""Keine Studienbereiche":"); $info = _("Geben Sie einen Text ein, der Angezeigt wird, wenn Lehrveranstaltungen vorliegen, die keinem Bereich zugeordnet sind. Nur wirksam in Gruppierung nach Bereich."); $table .= $edit_form->editTextfieldGeneric("textnogroups", $title, $info, 40, 150); $titles = array(_("Semester"), _("Bereich"), _("Lehrende"), _("Typ"), _("Einrichtung")); $info = _("Geben Sie eine Bezeichnung für die entsprechende Gruppierungsart ein."); $table .= $edit_form->editTextfieldGeneric("aliasesgrouping", $titles, $info, 40, 150); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $headline = $edit_form->editHeadline(_("Weitere Angaben")); $title = _("Namensformat:"); $info = _("Wählen Sie, wie Personennamen formatiert werden sollen."); $values = array("", "no_title_short", "no_title", "no_title_rev", "full", "full_rev"); $names = array(_("keine Auswahl"), _("Meyer, P."), _("Peter Meyer"), _("Meyer Peter"), _("Dr. Peter Meyer"), _("Meyer, Peter, Dr.")); $table = $edit_form->editOptionGeneric("nameformat", $title, $info, $values, $names); $title = _("Sprache:"); $info = _("Wählen Sie eine Sprache für die Datumsangaben aus."); $values = array("", "de_DE", "en_GB"); $names = array(_("keine Auswahl"), _("Deutsch"), _("Englisch")); $table .= $edit_form->editOptionGeneric("language", $title, $info, $values, $names); $title = _("HTML-Header/Footer:"); $info = _("Anwählen, wenn die Seite als komplette HTML-Seite ausgegeben werden soll, z.B. bei direkter Verlinkung oder in einem Frameset."); $values = "1"; $names = ""; $table .= $edit_form->editCheckboxGeneric("wholesite", $title, $info, $values, $names); $title = _("Stylesheet-Datei:"); $info = _("Geben Sie hier die URL Ihrer Stylesheet-Datei an."); $table .= $edit_form->editTextfieldGeneric("urlcss", $title, $info, 50, 200); $title = _("Seitentitel:"); $info = _("Geben Sie hier den Titel der Seite ein. Der Titel wird bei der Anzeige im Web-Browser in der Titelzeile des Anzeigefensters angezeigt."); $table .= $edit_form->editTextfieldGeneric("title", $title, $info, 50, 200); $title = _("Copyright:"); $info = _("Geben Sie hier einen Copyright-Vermerk an. Dieser wird im Meta-Tag \"copyright\" ausgegeben, wenn Sie die Option \"HTML-Header/Footer\" angewählt haben."); $table .= $edit_form->editTextfieldGeneric("copyright", $title, $info, 50, 200); $title = _("Autor:"); $info = _("Geben Sie hier den Namen des Seitenautors an. Dieser wird im Meta-Tag \"author\" ausgegeben, wenn Sie die Option \"HTML-Header/Footer\" angewählt haben."); $table .= $edit_form->editTextfieldGeneric("author", $title, $info, 50, 200); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $submit = $edit_form->editSubmit($this->config->getName(), $this->config->getId(), $this->getName()); $out = $edit_form->editContent($content_table, $submit); $out .= $edit_form->editBlank(); return $element_headline . $out; }
/** * Seminar group administration - cluster your seminars by colors or * change grouping mechanism */ public function groups_action($sem = null, $studygroups = false) { if ($GLOBALS['perm']->have_perm('admin')) { throw new AccessDeniedException(); } $this->title = _('Meine Veranstaltungen') . ' - ' . _('Farbgruppierungen'); if (Request::isXhr()) { $this->set_layout(null); $this->response->add_header('Content-Type', 'text/html;charset=Windows-1252'); header('X-Title: ' . $this->title); } else { PageLayout::setTitle($this->title); PageLayout::setHelpKeyword('Basis.VeranstaltungenOrdnen'); Navigation::activateItem('/browse/my_courses/list'); } $this->current_semester = $sem ?: Semester::findCurrent()->semester_id; $this->semesters = SemesterData::GetSemesterArray(); $forced_grouping = Config::get()->MY_COURSES_FORCE_GROUPING; if ($forced_grouping == 'not_grouped') { $forced_grouping = 'sem_number'; } $no_grouping_allowed = $forced_grouping == 'sem_number' || !in_array($forced_grouping, getValidGroupingFields()); $group_field = $GLOBALS['user']->cfg->MY_COURSES_GROUPING ?: $forced_grouping; $groups = array(); $add_fields = ''; $add_query = ''; if ($group_field == 'sem_tree_id') { $add_fields = ', sem_tree_id'; $add_query = "LEFT JOIN seminar_sem_tree sst ON (sst.seminar_id=seminare.Seminar_id)"; } else { if ($group_field == 'dozent_id') { $add_fields = ', su1.user_id as dozent_id'; $add_query = "LEFT JOIN seminar_user as su1 ON (su1.seminar_id=seminare.Seminar_id AND su1.status='dozent')"; } } $dbv = DbView::getView('sem_tree'); $query = "SELECT seminare.VeranstaltungsNummer AS sem_nr, seminare.Name, seminare.Seminar_id,\n seminare.status AS sem_status, seminar_user.gruppe, seminare.visible,\n {$dbv->sem_number_sql} AS sem_number,\n {$dbv->sem_number_end_sql} AS sem_number_end {$add_fields}\n FROM seminar_user\n JOIN semester_data sd\n LEFT JOIN seminare USING (Seminar_id)\n {$add_query}\n WHERE seminar_user.user_id = ?"; if (Config::get()->MY_COURSES_ENABLE_STUDYGROUPS && !$studygroups) { $query .= " AND seminare.status != 99"; } if ($studygroups) { $query .= " AND seminare.status = 99"; } if (get_config('DEPUTIES_ENABLE')) { $query .= " UNION " . getMyDeputySeminarsQuery('gruppe', $dbv->sem_number_sql, $dbv->sem_number_end_sql, $add_fields, $add_query); } $query .= " ORDER BY sem_nr ASC"; $statement = DBManager::get()->prepare($query); $statement->execute(array($GLOBALS['user']->id)); while ($row = $statement->fetch(PDO::FETCH_ASSOC)) { $my_sem[$row['Seminar_id']] = array('obj_type' => 'sem', 'sem_nr' => $row['sem_nr'], 'name' => $row['Name'], 'visible' => $row['visible'], 'gruppe' => $row['gruppe'], 'sem_status' => $row['sem_status'], 'sem_number' => $row['sem_number'], 'sem_number_end' => $row['sem_number_end']); if ($group_field) { fill_groups($groups, $row[$group_field], array('seminar_id' => $row['Seminar_id'], 'sem_nr' => $row['sem_nr'], 'name' => $row['Name'], 'gruppe' => $row['gruppe'])); } } if ($group_field == 'sem_number') { correct_group_sem_number($groups, $my_sem); } else { add_sem_name($my_sem); } sort_groups($group_field, $groups); // Ensure that a seminar is never in multiple groups $sem_ids = array(); foreach ($groups as $group_id => $seminars) { foreach ($seminars as $index => $seminar) { if (in_array($seminar['seminar_id'], $sem_ids)) { unset($seminars[$index]); } else { $sem_ids[] = $seminar['seminar_id']; } } if (empty($seminars)) { unset($groups[$group_id]); } else { $groups[$group_id] = $seminars; } } $this->studygroups = $studygroups; $this->no_grouping_allowed = $no_grouping_allowed; $this->groups = $groups; $this->group_names = get_group_names($group_field, $groups); $this->group_field = $group_field; $this->my_sem = $my_sem; }
$header_template->link_params = array_fill_keys(array_keys(URLHelper::getLinkParams()), NULL); if (is_object($GLOBALS['user']) && $GLOBALS['user']->id != 'nobody') { // only mark course if user is logged in and free access enabled if (get_config('ENABLE_FREE_ACCESS') && Navigation::hasItem('/course') && Navigation::getItem('/course')->isActive()) { // indicate to the template that this course is publicly visible // need to handle institutes separately (always visible) if ($GLOBALS['SessSemName']['class'] == 'inst') { $header_template->public_hint = _('öffentliche Einrichtung'); } else { if (Course::findCurrent()->lesezugriff == 0) { $header_template->public_hint = _('öffentliche Veranstaltung'); } } } if ($GLOBALS['user']->cfg->getValue('ACCESSKEY_ENABLE')) { $header_template->accesskey_enabled = true; } // fetch semester for quick search box in the link bar $semester_data = SemesterData::GetSemesterArray(); $default_semester = $_SESSION['_default_sem'] ? SemesterData::GetSemesterIndexById($_SESSION['_default_sem']) : 'all'; $header_template->search_semester_nr = $default_semester; $header_template->search_semester_name = $default_semester != 'all' ? $semester_data[$default_semester]['name'] : _("alle Semester"); } } else { $header_template = $GLOBALS['template_factory']->open('noheader'); } echo $header_template->render(); if ($GLOBALS['SHOW_TERMS_ON_FIRST_LOGIN'] && is_object($GLOBALS['user']) && $GLOBALS['user']->id != 'nobody') { require_once 'lib/terms.inc.php'; check_terms($GLOBALS['user']->id, $GLOBALS['_language_path']); }
function toStringEdit($post_vars = '', $faulty_values = '', $edit_form = '', $anker = '') { // get semester data $semester = new SemesterData(); $semester_data = $semester->getAllSemesterData(); update_generic_datafields($this->config, $this->data_fields, $this->field_names, "sem"); $out = ''; $table = ''; if ($edit_form == '') { $edit_form = new ExternEditModule($this->config, $post_vars, $faulty_values, $anker); } $edit_form->setElementName($this->getName()); $element_headline = $edit_form->editElementHeadline($this->real_name, $this->config->getName(), $this->config->getId(), TRUE, $anker); if ($faulty_values == '') { $faulty_values = array(); } $headline = $edit_form->editHeadline(_("Name der Konfiguration")); $table = $edit_form->editName('name'); $content_table = $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $content_table .= $this->getSRIFormContent($edit_form, true); $headline = $edit_form->editHeadline(_("Konfiguration des Moduls")); $title = _("Anzeigemodus:"); $info = _("Auswahl zwischen Einrichtungsbaum und Bereichsbaum"); $values = array('show_sem_range', 'show_sem_range_tree'); $names = array(_("Vorlesungsverzeichnis"), _("Einrichtungen")); $table = $edit_form->editRadioGeneric('mode', $title, $info, $values, $names); $title = _("Gruppierung:"); $info = _("Wählen Sie, wie die Veranstaltungen gruppiert werden sollen."); $values = array('0', '1', '2', '3', '4'); $names = array(_("Semester"), _("Bereich"), _("Lehrende"), _("Typ"), _("Einrichtung")); $table .= $edit_form->editOptionGeneric('grouping', $title, $info, $values, $names); $title = _("Startsemester:"); $info = _("Geben Sie das erste anzuzeigende Semester an. Die Angaben \"vorheriges\", \"aktuelles\" und \"nächstes\" beziehen sich immer auf das laufende Semester und werden automatisch angepasst."); $current_sem = get_sem_num_sem_browse(); if ($current_sem === FALSE) { $names = array(_("keine Auswahl"), _("aktuelles"), _("nächstes")); $values = array('', 'current', 'next'); } else { if ($current_sem === TRUE) { $names = array(_("keine Auswahl"), _("vorheriges"), _("aktuelles")); $values = array('', 'previous', 'current'); } else { $names = array(_("keine Auswahl"), _("vorheriges"), _("aktuelles"), "nächstes"); $values = array('', 'previous', 'current', 'next'); } } foreach ($semester_data as $sem_num => $sem) { $names[] = $sem['name']; $values[] = $sem_num + 1; } $table .= $edit_form->editOptionGeneric("semstart", $title, $info, $values, $names); /* $title = _("Anzahl der anzuzeigenden Semester:"); $info = _("Geben Sie an, wieviele Semester (ab o.a. Startsemester) angezeigt werden sollen."); $names = array(_("keine Auswahl")); $values = array(''); $i = 1; foreach ($semester_data as $sem_num => $sem) { $names[] = $i++; $values[] = $sem_num + 1; } $table .= $edit_form->editOptionGeneric('semrange', $title, $info, $values, $names); */ $title = _("Umschalten des aktuellen Semesters:"); $info = _("Geben Sie an, wieviele Wochen vor Semesterende automatisch auf das nächste Semester umgeschaltet werden soll."); $names = array(_("keine Auswahl"), _("am Semesterende"), _("1 Woche vor Semesterende")); for ($i = 2; $i < 13; $i++) { $names[] = sprintf(_("%s Wochen vor Semesterende"), $i); } $values = array('', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'); $table .= $edit_form->editOptionGeneric('semswitch', $title, $info, $values, $names); /* $title = _("Veranstaltungen beteiligter Institute anzeigen:"); $info = _("Wählen Sie diese Option, um Veranstaltungen anzuzeigen, bei denen diese Einrichtung als beteiligtes Institut eingetragen ist."); $values = '1'; $names = ''; $table .= $edit_form->editCheckboxGeneric('allseminars', $title, $info, $values, $names); */ $title = _("Bereichspfad ab Ebene:"); $info = _("Wählen Sie, ab welcher Ebene der Bereichspfad ausgegeben werden soll."); $values = array('1', '2', '3', '4', '5', '6'); $names = array('1', '2', '3', '4', '5', '6'); $table .= $edit_form->editOptionGeneric('rangepathlevel', $title, $info, $values, $names); $title = _("Anzeige von Unterebenen:"); $info = _("Anzahl der Unterebenen des Baumes, die angezeigt werden sollen."); $values = array('0', '1', '2', '3', '4', '5', '6'); $names = array('0', '1', '2', '3', '4', '5', '6'); $table .= $edit_form->editOptionGeneric('countshowsublevels', $title, $info, $values, $names); $cid = Request::option('cid'); if ($GLOBALS['perm']->have_perm('root') && ($cid = 'studip')) { $title = _("Start bei Root-Ebene:"); $info = _("Wird das Modul ohne weitere Parameter aufgerufen startet die Anzeige beim Root-Level (alle Fakultäten)."); $table .= $edit_form->editCheckboxGeneric('startitem', $title, $info, 'root', '0'); } $title = _("Leere Ebenen ausblenden:"); $info = _("Ebenen ohne Veranstaltungen und ohne Veranstaltungen in ihren Unterebenen werden nicht angezeigt."); $table .= $edit_form->editCheckboxGeneric('disableemptylevels', $title, $info, '1', '0'); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $headline = $edit_form->editHeadline(_("Konfiguration der Suche")); $title = _("Sortierung des Treffersets:"); $info = _("Nach welchem Tabellenfeld soll das Trefferset sortiert werden?"); $values = array('VeranstaltungsNummer', 'Name'); $names = array('Veranstaltungsnummer', 'Name'); $table = $edit_form->editOptionGeneric('resultorderby', $title, $info, $values, $names); $title = _("Anzahl der Treffer bei Suche:"); $info = _("Maximale Anzahl der Veranstaltungen im Trefferset. Angabe 0, um alle anzuzeigen."); $table .= $edit_form->editTextfieldGeneric('maxnumberofhits', $title, $info, 3, 3); $title = _("Anzahl der Seiten im Result Browser:"); $info = _("Maximale Anzahl der Seiten, die der Result Browser anzeigen soll."); $table .= $edit_form->editTextfieldGeneric('maxpagesresultbrowser', $title, $info, 3, 3); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $headline = $edit_form->editHeadline(_("Ausgabe bestimmter Veranstaltungsklassen")); $names = array(); $values = array(); $info = _("Wählen Sie die anzuzeigenden Veranstaltungsklassen aus."); foreach ($GLOBALS['SEM_CLASS'] as $key => $class) { $values[] = $key; $names[] = $class['name']; } $table = $edit_form->editCheckboxGeneric('semclasses', $names, $info, $values, ""); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $headline = $edit_form->editHeadline(_("Textersetzungen")); $titles = array(_("Semester"), _("Bereich"), _("Lehrende"), _("Typ"), _("Einrichtung")); $info = _("Geben Sie eine Bezeichnung für die entsprechende Gruppierungsart ein."); $table = $edit_form->editTextfieldGeneric('aliasesgrouping', $titles, $info, 40, 150); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $headline = $edit_form->editHeadline(_("Termine")); $title = _("Termintypen:"); $info = _("Wählen Sie aus, welche Termintypen angezeigt werden sollen."); $values = array('all', 'meeting', 'other', ''); $names = array(_("alle Termine"), _("nur Sitzungstermine"), _("nur andere Termine"), '-----------'); foreach ($GLOBALS['TERMIN_TYP'] as $termin_key => $termin_typ) { $values[] = $termin_key; $names[] = $termin_typ['name'] . ($termin_typ['sitzung'] ? ' (' . _("Sitzung") . ')' : ''); } $table = $edit_form->editOptionGeneric('selectedeventtypes', $title, $info, $values, $names, 5, true); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $headline = $edit_form->editHeadline(_("Weitere Angaben")); $title = _("Namensformat:"); $info = _("Wählen Sie, wie Personennamen formatiert werden sollen."); $values = array("", "no_title_short", "no_title", "no_title_rev", "full", "full_rev"); $names = array(_("keine Auswahl"), _("Meyer, P."), _("Peter Meyer"), _("Meyer Peter"), _("Dr. Peter Meyer"), _("Meyer, Peter, Dr.")); $table = $edit_form->editOptionGeneric('nameformat', $title, $info, $values, $names); $title = _("Sprache:"); $info = _("Wählen Sie eine Sprache für die Datumsangaben aus."); $values = array("", "de_DE", "en_GB"); $names = array(_("keine Auswahl"), _("Deutsch"), _("Englisch")); $table .= $edit_form->editOptionGeneric('language', $title, $info, $values, $names); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $submit = $edit_form->editSubmit($this->config->getName(), $this->config->getId(), $this->getName()); $out = $edit_form->editContent($content_table, $submit); $out .= $edit_form->editBlank(); return $element_headline . $out; }
/** * */ function toStringEdit ($post_vars = "", $faulty_values = "", $edit_form = "", $anker = "") { // get semester data $semester = new SemesterData(); $semester_data = $semester->getAllSemesterData(); $out = ""; $table = ""; if ($edit_form == "") $edit_form = new ExternEditModule($this->config, $post_vars, $faulty_values, $anker); $edit_form->setElementName($this->getName()); $element_headline = $edit_form->editElementHeadline($this->real_name, $this->config->getName(), $this->config->getId(), TRUE, $anker); $headline = $edit_form->editHeadline(_("Name der globalen Konfiguration")); $table = $edit_form->editName("name"); $content_table = $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $headline = $edit_form->editHeadline(_("Anzuzeigende Lehrveranstaltungen")); $title = _("Startsemester:"); $info = _("Geben Sie das erste anzuzeigende Semester an. Die Angaben \"vorheriges\", \"aktuelles\" und \"nächstes\" beziehen sich immer auf das laufende Semester und werden automatisch angepasst."); $current_sem = get_sem_num_sem_browse(); if ($current_sem === FALSE) { $names = array(_("keine Auswahl"), _("aktuelles"), _("nächstes")); $values = array("", "current", "next"); } else if ($current_sem === TRUE) { $names = array(_("keine Auswahl"), _("vorheriges"), _("aktuelles")); $values = array("", "previous", "current"); } else { $names = array(_("keine Auswahl"), _("vorheriges"), _("aktuelles"), "nächstes"); $values = array("", "previous", "current", "next"); } foreach ($semester_data as $sem_num => $sem) { $names[] = $sem["name"]; $values[] = $sem_num + 1; } $table = $edit_form->editOptionGeneric("semstart", $title, $info, $values, $names); $title = _("Anzahl der anzuzeigenden Semester:"); $info = _("Geben Sie an, wieviele Semester (ab o.a. Startsemester) angezeigt werden sollen."); $names = array(_("keine Auswahl")); $values = array(""); $i = 1; foreach ($semester_data as $sem_num => $sem) { $names[] = $i++; $values[] = $sem_num + 1; } $table .= $edit_form->editOptionGeneric("semrange", $title, $info, $values, $names); $title = _("Umschalten des aktuellen Semesters:"); $info = _("Geben Sie an, wieviele Wochen vor Semesterende automatisch auf das nächste Semester umgeschaltet werden soll."); $names = array(_("keine Auswahl"), _("am Semesterende"), _("1 Woche vor Semesterende")); for ($i = 2; $i < 13; $i++) $names[] = sprintf(_("%s Wochen vor Semesterende"), $i); $values = array("", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"); $table .= $edit_form->editOptionGeneric("semswitch", $title, $info, $values, $names); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $headline = $edit_form->editHeadline(_("Weitere Angaben")); $title = _("Namensformat:"); $info = _("Wählen Sie, wie Personennamen formatiert werden sollen."); $values = array("", "no_title_short", "no_title", "no_title_rev", "full", "full_rev"); $names = array(_("keine Auswahl"), _("Meyer, P."), _("Peter Meyer"), _("Meyer Peter"), _("Dr. Peter Meyer"), _("Meyer, Peter, Dr.")); $table = $edit_form->editOptionGeneric("nameformat", $title, $info, $values, $names); $title = _("Sprache:"); $info = _("Wählen Sie eine Sprache für die Datumsangaben aus."); $values = array("", "de_DE", "en_GB"); $names = array(_("keine Auswahl"), _("Deutsch"), _("Englisch")); $table .= $edit_form->editOptionGeneric("language", $title, $info, $values, $names); $title = _("Standard-Adresse:"); $info = _("Wenn Sie diese Option wählen, wird die Standard-Adresse ausgegeben, die jede(r) Mitarbeiter(in) bei seinen universitären Daten auswählen kann. Wählen Sie diese Option nicht, wenn immer die Adresse der Einrichtung ausgegeben werden soll."); $table .= $edit_form->editCheckboxGeneric('defaultadr', $title, $info, '1', '0'); $title = _("HTML-Header/Footer:"); $info = _("Anwählen, wenn die Seite als komplette HTML-Seite ausgegeben werden soll, z.B. bei direkter Verlinkung oder in einem Frameset."); $values = "1"; $names = ""; $table .= $edit_form->editCheckboxGeneric("wholesite", $title, $info, $values, $names); $title = _("Stylesheet-Datei:"); $info = _("Geben Sie hier die URL Ihrer Stylesheet-Datei an."); $table .= $edit_form->editTextfieldGeneric("urlcss", $title, $info, 50, 200); $title = _("Copyright:"); $info = _("Geben Sie hier einen Copyright-Vermerk an. Dieser wird im Meta-Tag \"copyright\" ausgegeben, wenn Sie die Option \"HTML-Header/Footer\" angewählt haben."); $table .= $edit_form->editTextfieldGeneric("copyright", $title, $info, 50, 200); $title = _("Autor:"); $info = _("Geben Sie hier den Namen des Seitenautors an. Dieser wird im Meta-Tag \"author\" ausgegeben, wenn Sie die Option \"HTML-Header/Footer\" angewählt haben."); $table .= $edit_form->editTextfieldGeneric("author", $title, $info, 50, 200); $content_table .= $edit_form->editContentTable($headline, $table); $content_table .= $edit_form->editBlankContent(); $submit = $edit_form->editSubmit($this->config->getName(), $this->config->getId(), $this->getName()); $out = $edit_form->editContent($content_table, $submit); $out .= $edit_form->editBlank(); return $element_headline . $out; }
$group_by = Request::int('group_by', 0); // store the seleced semester in the session if (Request::option('select_sem')) { $_SESSION['_default_sem'] = Request::option('select_sem'); } $show_semester = Request::option('select_sem', $_SESSION['_default_sem']); $sem_browse_obj = new SemBrowse(array('group_by' => 0)); $sem_browse_obj->sem_browse_data['default_sem'] = "all"; $sem_browse_obj->sem_number = false; $sem_browse_obj->target_url = "dispatch.php/course/details/"; //teilt der nachfolgenden Include mit, wo sie die Leute hinschicken soll $sem_browse_obj->target_id = "sem_id"; //teilt der nachfolgenden Include mit, wie die id die übergeben wird, bezeichnet werden soll $sem_browse_obj->sem_browse_data['level'] = $level; if ($show_semester) { $sem_number = SemesterData::GetSemesterIndexById($show_semester); $sem_browse_obj->sem_browse_data['default_sem'] = $sem_number; $sem_browse_obj->sem_number[0] = $sem_number; } switch ($level) { case "sbb": $sem_browse_obj->sem_browse_data['start_item_id'] = $id; $sem_browse_obj->get_sem_range($id, false); $sem_browse_obj->show_result = true; $sem_browse_obj->sem_browse_data['sset'] = false; $the_tree = $sem_browse_obj->sem_tree->tree; $bereich_typ = _("Studienbereich"); $head_text = _("Übersicht aller Veranstaltungen eines Studienbereichs"); $intro_text = sprintf(_("Alle Veranstaltungen, die dem Studienbereich: <br><b>%s</b><br> zugeordnet wurden."), htmlReady($the_tree->getShortPath($id))); $excel_text = strip_tags(DecodeHtml($intro_text)); break;
/** * creates a new studygroup with respect to given form data * * Triggers a StudygroupDidCreate notification using the ID of the * new studygroup as subject. * * @return void */ function create_action() { global $perm; $admin = $perm->have_perm('admin'); $errors = array(); CSRFProtection::verifyUnsafeRequest(); foreach ($GLOBALS['SEM_CLASS'] as $key => $class) { if ($class['studygroup_mode']) { $sem_class = $class; break; } } if (Request::getArray('founders')) { $founders = Request::optionArray('founders'); $this->flash['founders'] = $founders; } // search for founder if ($admin && Request::submitted('search_founder')) { $search_for_founder = Request::get('search_for_founder'); // do not allow to search with the empty string if ($search_for_founder) { // search for the user $query = "SELECT user_id, {$GLOBALS['_fullname_sql']['full_rev']} AS fullname, username, perms\n FROM auth_user_md5\n LEFT JOIN user_info USING (user_id)\n WHERE perms NOT IN ('root', 'admin')\n AND (username LIKE CONCAT('%', :needle, '%')\n OR Vorname LIKE CONCAT('%', :needle, '%')\n OR Nachname LIKE CONCAT('%', :needle, '%'))\n LIMIT 500"; $statement = DBManager::get()->prepare($query); $statement->bindValue(':needle', $search_for_founder); $statement->execute(); $results_founders = $statement->fetchGrouped(PDO::FETCH_ASSOC); } if (is_array($results_founders)) { $this->flash['success'] = sizeof($results_founders) == 1 ? sprintf(_("Es wurde %s Person gefunden:"), sizeof($results_founders)) : sprintf(_("Es wurden %s Personen gefunden:"), sizeof($results_founders)); } else { $this->flash['info'] = _("Es wurden kein Personen gefunden."); } $this->flash['create'] = true; $this->flash['results_choose_founders'] = $results_founders; $this->flash['request'] = Request::getInstance(); // go to the form again $this->redirect('course/studygroup/new/'); } else { if ($admin && Request::submitted('add_founder')) { $founders = array(Request::option('choose_founder')); $this->flash['founders'] = $founders; $this->flash['create'] = true; $this->flash['request'] = Request::getInstance(); $this->redirect('course/studygroup/new/'); } else { if ($admin && Request::submitted('remove_founder')) { unset($founders); $this->flash['founders'] = $founders; $this->flash['create'] = true; $this->flash['request'] = Request::getInstance(); $this->redirect('course/studygroup/new/'); } else { if ($admin && Request::submitted('new_search')) { $this->flash['create'] = true; $this->flash['request'] = Request::getInstance(); $this->redirect('course/studygroup/new/'); } else { if (!Request::get('groupname')) { $errors[] = _("Bitte Gruppennamen angeben"); } else { $query = "SELECT 1 FROM seminare WHERE name = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array(Request::get('groupname'))); if ($statement->fetchColumn()) { $errors[] = _("Eine Veranstaltung/Studiengruppe mit diesem Namen existiert bereits. Bitte wählen Sie einen anderen Namen"); } } if (!Request::get('grouptermsofuse_ok')) { $errors[] = _("Sie müssen die Nutzungsbedingungen durch Setzen des Häkchens bei 'Einverstanden' akzeptieren."); } if ($admin && (!is_array($founders) || !sizeof($founders))) { $errors[] = _("Sie müssen mindestens einen Gruppengründer eintragen!"); } if (count($errors)) { $this->flash['errors'] = $errors; $this->flash['create'] = true; $this->flash['request'] = Request::getInstance(); $this->redirect('course/studygroup/new/'); } else { // Everything seems fine, let's create a studygroup $sem_types = studygroup_sem_types(); $sem = new Seminar(); $sem->name = Request::get('groupname'); // seminar-class quotes itself $sem->description = Request::get('groupdescription'); // seminar-class quotes itself $sem->status = $sem_types[0]; $sem->read_level = 1; $sem->write_level = 1; $sem->institut_id = Config::Get()->STUDYGROUP_DEFAULT_INST; $mods = new Modules(); $bitmask = 0; $sem->visible = 1; if (Request::get('groupaccess') == 'all') { $sem->admission_prelim = 0; } else { $sem->admission_prelim = 1; if (Config::get()->STUDYGROUPS_INVISIBLE_ALLOWED && Request::get('groupaccess') == 'invisible') { $sem->visible = 0; } $sem->admission_prelim_txt = _("Die ModeratorInnen der Studiengruppe können Ihren Aufnahmewunsch bestätigen oder ablehnen. Erst nach Bestätigung erhalten Sie vollen Zugriff auf die Gruppe."); } $sem->admission_binding = 0; $semdata = new SemesterData(); $this_semester = $semdata->getSemesterDataByDate(time()); $sem->semester_start_time = $this_semester['beginn']; $sem->semester_duration_time = -1; if ($admin) { // insert founder(s) foreach ($founders as $user_id) { $stmt = DBManager::get()->prepare("INSERT INTO seminar_user\n (seminar_id, user_id, status, gruppe)\n VALUES (?, ?, 'dozent', 8)"); $stmt->execute(array($sem->id, $user_id)); } $this->founders = null; $this->flash['founders'] = null; } else { $user_id = $GLOBALS['auth']->auth['uid']; // insert dozent $query = "INSERT INTO seminar_user (seminar_id, user_id, status, gruppe)\n VALUES (?, ?, 'dozent', 8)"; $statement = DBManager::get()->prepare($query); $statement->execute(array($sem->id, $user_id)); } // de-/activate modules $mods = new Modules(); $admin_mods = new AdminModules(); $bitmask = 0; $available_modules = StudygroupModel::getInstalledModules(); $active_plugins = Request::getArray('groupplugin'); foreach ($available_modules as $key => $enable) { $module_name = $sem_class->getSlotModule($key); if ($module_name && ($sem_class->isModuleMandatory($module_name) || !$sem_class->isModuleAllowed($module_name))) { continue; } if (!$module_name) { $module_name = $key; } if ($active_plugins[$module_name]) { // activate modules $mods->setBit($bitmask, $mods->registered_modules[$key]["id"]); $methodActivate = "module" . ucfirst($key) . "Activate"; if (method_exists($admin_mods, $methodActivate)) { $admin_mods->{$methodActivate}($sem->id); } } } // always activate participants list $mods->setBit($bitmask, $mods->registered_modules["participants"]["id"]); $sem->modules = $bitmask; $sem->store(); // de-/activate plugins $available_plugins = StudygroupModel::getInstalledPlugins(); $plugin_manager = PluginManager::getInstance(); foreach ($available_plugins as $key => $name) { if (!$sem_class->isModuleAllowed($key)) { continue; } $plugin = $plugin_manager->getPlugin($key); $plugin_id = $plugin->getPluginId(); if ($active_plugins[$key] && $name) { $plugin_manager->setPluginActivated($plugin_id, $sem->id, true); } else { $plugin_manager->setPluginActivated($plugin_id, $sem->id, false); } } NotificationCenter::postNotification('StudygroupDidCreate', $sem->id); // the work is done. let's visit the brand new studygroup. $this->redirect(URLHelper::getURL('seminar_main.php?auswahl=' . $sem->id)); } } } } } }
$export_pagecontent .= " selected"; $export_pagecontent .= " value=\"veranstaltung\">" . _("Veranstaltungsdaten") . "</option>"; $export_pagecontent .= "<option"; if ($ex_type=="person") { $export_pagecontent .= " selected"; } $export_pagecontent .= " value=\"person\">" . _("MitarbeiterInnendaten") . "</option>"; $export_pagecontent .= "</select><br><br><br><br>"; $export_pagecontent .="<b>". _("Aus welchem Semester sollen die Daten exportiert werden (für Veranstaltungsexport): ") . "</b><br>"; if (!isset($ex_sem)) { $ex_sem = (Semester::findCurrent() ? Semester::findCurrent()->getId() : null); } $export_pagecontent .= SemesterData::GetSemesterSelector(array('name' => 'ex_sem'), $ex_sem, 'semester_id', true); $export_pagecontent .= "<br><br>"; $export_pagecontent .="<b>". _("Welche Arten von Veranstaltungen sollen exportiert werden? ") . "</b><br>"; if (!count($ex_sem_class)) { $ex_sem_class[1] = 1; } foreach (SeminarCategories::getAll() as $sem_class) { if(!$sem_class->studygroup_mode){ $export_pagecontent .= "<input type=\"checkbox\" name=\"ex_sem_class[$sem_class->id]\" value=\"1\""; if (isset($ex_sem_class[$sem_class->id])) $export_pagecontent .= " checked"; $export_pagecontent .= "> " . htmlready($sem_class->name) . " "; } }
</select> </div> <div style="font-weight:bold"> <?php echo _("Präfix des Veranstaltungsnamens / Nummer:"); ?> </div> <div> <input type="text" name="sem_name_prefix" value="<?php echo htmlReady($sem_name_prefix); ?> " size="40"> </div> <div style="font-weight:bold"> <?php echo _("Veranstaltungen aus diesem Semester:"); ?> </div> <div> <?php echo SemesterData::GetSemesterSelector(array('name' => 'select_semester_id'), $current_semester_id, 'semester_id', false); ?> </div> <div> <?php echo Studip\Button::create(_('Auswählen'), 'choose_institut', array('title' => _("Einrichtung auswählen"))); ?> </div> </form>
private function findAllSemesters() { return $this->filterSemesters(\SemesterData::GetSemesterArray()); }
/** * * @param unknown_type $my_obj */ function add_sem_name(&$my_obj) { if ($GLOBALS['user']->cfg->getValue('SHOWSEM_ENABLE')) { $sem_data = SemesterData::GetSemesterArray(); if (is_array($my_obj)) { foreach ($my_obj as $seminar_id => $values) { if ($values['obj_type'] == 'sem' && $values['sem_number'] != $values['sem_number_end']) { $sem_name = " (" . $sem_data[$values['sem_number']]['name'] . " - "; $sem_name .= ($values['sem_number_end'] == -1 ? _("unbegrenzt") : $sem_data[$values['sem_number_end']]['name']) . ")"; $my_obj[$seminar_id]['name'] .= $sem_name; } else { $my_obj[$seminar_id]['name'] .= " (" . $sem_data[$values['sem_number']]['name'] . ") "; } } } } return true; }