/** * Stores the general settings of a user. */ public function store_action() { $this->check_ticket(); $language = Request::get('forced_language'); if (array_key_exists($language, $GLOBALS['INSTALLED_LANGUAGES'])) { $this->user->preferred_language = $_SESSION['_language'] = $language; $this->user->store(); } $this->config->store('PERSONAL_STARTPAGE', Request::int('personal_startpage')); $this->config->store('ACCESSKEY_ENABLE', Request::int('accesskey_enable')); $this->config->store('SHOWSEM_ENABLE', Request::int('showsem_enable')); $this->config->store('SKIPLINKS_ENABLE', Request::int('skiplinks_enable')); $this->config->store('TOUR_AUTOSTART_DISABLE', Request::int('tour_autostart_disable')); if (Request::int('personal_notifications_activated')) { PersonalNotifications::activate(); } else { PersonalNotifications::deactivate(); } if (Request::int('personal_notifications_audio_activated')) { PersonalNotifications::activateAudioFeedback(); } else { PersonalNotifications::deactivateAudioFeedback(); } $this->reportSuccess(_('Die Einstellungen wurden gespeichert.')); $this->redirect('settings/general'); }
static function findAll($user_id, $days = 1, $future = true) { $future = Request::int('future', $future); $days = Request::int('days', $days); $items = self::get_dates($user_id, $days, $future); return $items; }
/** * Common code for all actions: set default layout and page title. * * @param type $action * @param type $args */ function before_filter(&$action, &$args) { $this->validate_args($args, array('option', 'option')); parent::before_filter($action, $args); // set correct encoding if this is an ajax-call if (Request::isAjax()) { header('Content-Type: text/html; charset=Windows-1252'); } $this->flash = Trails_Flash::instance(); // set default layout $layout = $GLOBALS['template_factory']->open('layouts/base'); $this->set_layout($layout); // Set help keyword for Stud.IP's user-documentation and page title PageLayout::setHelpKeyword('Basis.Forum'); PageLayout::setTitle($_SESSION['SessSemName']['header_line'] . ' - ' . _('Forum')); $this->AVAILABLE_DESIGNS = array('web20', 'studip'); if ($GLOBALS['CANONICAL_RELATIVE_PATH_STUDIP'] && $GLOBALS['CANONICAL_RELATIVE_PATH_STUDIP'] != '/') { $this->picturepath = $GLOBALS['CANONICAL_RELATIVE_PATH_STUDIP'] . '/' . $this->dispatcher->trails_root . '/img'; } else { $this->picturepath = '/' . $this->dispatcher->trails_root . '/img'; } // we want to display the dates in german setlocale(LC_TIME, 'de_DE@euro', 'de_DE', 'de', 'ge'); // the default for displaying timestamps $this->time_format_string = "%a %d. %B %Y, %H:%M"; $this->time_format_string_short = "%d.%m.%Y, %H:%M"; $this->template_factory = new Flexi_TemplateFactory(dirname(__FILE__) . '/../templates'); //$this->check_token(); ForumVisit::setVisit($this->getId()); if (Request::int('page')) { ForumHelpers::setPage(Request::int('page')); } $this->seminar_id = $this->getId(); }
/** * 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')); } }
/** * Stores the study information of a user (subject and degree-wise). */ public function store_sg_action() { $this->check_ticket(); $any_change = false; $fach_abschluss_delete = Request::getArray('fach_abschluss_delete'); if (count($fach_abschluss_delete) > 0) { $query = "DELETE FROM user_studiengang\n WHERE user_id = ? AND studiengang_id = ? AND abschluss_id IN (?)"; $statement = DBManager::get()->prepare($query); foreach ($fach_abschluss_delete as $studiengang_id => $abschluesse) { $statement->execute(array($this->user->user_id, $studiengang_id, $abschluesse)); if ($statement->rowCount() > 0) { $any_change = true; } // if we have no studies anymore we delete the visibilitysetting if (!$this->hasStudiengang()) { Visibility::removePrivacySetting('studying'); } } } if (!$any_change) { $query = "UPDATE IGNORE user_studiengang\n SET semester = ?\n WHERE user_id = ? AND studiengang_id = ? AND abschluss_id = ?"; $statement = DBManager::get()->prepare($query); $change_fachsem = Request::getArray('change_fachsem'); foreach ($change_fachsem as $studiengang_id => $abschluesse) { foreach ($abschluesse as $abschluss_id => $semester) { $statement->execute(array($semester, $this->user->user_id, $studiengang_id, $abschluss_id)); if ($statement->rowCount() > 0) { $any_change = true; } } } $new_studiengang = Request::option('new_studiengang'); if ($new_studiengang && $new_studiengang != 'none') { if (!$this->hasStudiengang()) { Visibility::addPrivacySetting(_("Wo ich studiere"), 'studying', 'studdata'); } $query = "INSERT IGNORE INTO user_studiengang\n (user_id, studiengang_id, abschluss_id, semester)\n VALUES (?, ?, ?, ?)"; $statement = DBManager::get()->prepare($query); $statement->execute(array($this->user->user_id, $new_studiengang, Request::option('new_abschluss'), Request::int('fachsem'))); if ($statement->rowCount() > 0) { $any_change = true; } } } if ($any_change) { $this->reportSuccess(_('Die Zuordnung zu Studiengängen wurde geändert.')); setTempLanguage($this->user->user_id); $this->postPrivateMessage(_("Die Zuordnung zu Studiengängen wurde geändert!\n")); restoreLanguage(); } $this->redirect('settings/studies'); }
/** * Initialize the subnavigation of this item. This method * is called once before the first item is added or removed. */ public function initSubNavigation() { global $perm, $atime; parent::initSubNavigation(); // schedule if (!$perm->have_perm('admin') && get_config('SCHEDULE_ENABLE')) { $navigation = new Navigation(_('Stundenplan'), 'dispatch.php/calendar/schedule'); $this->addSubNavigation('schedule', $navigation); } // calendar $atime = $atime ? intval($atime) : Request::int($atime); if (get_config('CALENDAR_ENABLE')) { $navigation = new Navigation(_('Terminkalender'), 'dispatch.php/calendar/single', array('self' => 1)); $this->addSubNavigation('calendar', $navigation); } }
private function combineAssets($target, $sources = array(), $extension = '', $path = 'assets/') { $target = $path . $target . $extension; if (Request::int('reset') or !file_exists($this->getPluginPath() . '/' . $target)) { $combined = ''; foreach ($sources as $source) { $file = $this->getPluginPath() . '/' . $path . $source . $extension; $asset = file_get_contents($file); $asset = trim($asset) . "\n"; $asset = preg_replace('/assets\\/images\\/([^)]+)\\.png/ex', 'Assets::image_path("$1")', $asset); $combined .= $asset; } file_put_contents($this->getPluginPath() . '/' . $target, $combined); } return $this->getPluginURL() . '/' . $target; }
public function index_action($page = 1) { $this->entries_per_page = Request::int('entries_per_page', 20); $images = array(); foreach (scandir($GLOBALS['DYNAMIC_CONTENT_PATH'] . '/user') as $file) { if (strpos($file, '_normal.png') !== FALSE && $file !== 'nobody_normal.png') { $images[] = array('time' => @filemtime($GLOBALS['DYNAMIC_CONTENT_PATH'] . '/user/' . $file), 'file' => $file, 'user_id' => substr($file, 0, strrpos($file, '_'))); } } usort($images, function ($b, $a) { return $a['time'] - $b['time']; }); $this->entries = sizeof($images); $this->page = $page; $this->images = array_slice($images, $this->entries_per_page * ($page - 1), $this->entries_per_page); }
function update_action() { CSRFProtection::verifyUnsafeRequest(); if (Request::submitted('ok')) { if (!($rule = $this->ws_rules[Request::int('ws_rule_id')])) { $rule = new WebserviceAccessRule(); $rule->id = 0; array_unshift($this->ws_rules, $rule); } $rule->api_key = trim(Request::get('ws_rule_api_key')); $rule->method = trim(Request::get('ws_rule_method')); $rule->ip_range = trim(Request::get('ws_rule_ip_range')); $rule->type = trim(Request::get('ws_rule_type')); $msg = array(); if (strlen($rule->api_key) < 5) { $msg['error'][] = _("Bitte geben Sie einen API-Key mit min. 5 Zeichen an."); } foreach ($rule->ip_range as $key => $ip) { if (!$ip) { unset($rule->ip_range[$key]); continue; } list($ip_address, $mask) = split('/', $ip); if (!ip2long($ip_address) || $mask && ($mask < 8 || $mask > 30)) { $msg['error'][] = sprintf(_("Der IP Bereich %s ist ungültig."), htmlready($ip)); unset($rule->ip_range[$key]); } } if (!$rule->method) { $msg['info'][] = _("Eine Regel ohne angegebene Methode gilt für alle Methoden!"); } if (!count($rule->ip_range)) { $msg['info'][] = _("Eine Regel ohne IP Bereich gilt für alle IP Adressen!"); } if ($msg['error']) { PageLayout::postMessage(MessageBox::error(_("Die Regel wurde nicht gespeichert."), $msg['error'])); $this->edit = $rule->id; $this->render_action('index'); return; } else { if ($rule->store()) { PageLayout::postMessage(MessageBox::success(_("Die Regel wurde gespeichert."), $msg['info'])); } } } $this->redirect($this->url_for('admin/webservice_access')); }
/** * **/ public function extractConsumerFromRequest($key) { $key = Request::option('consumer_key', $key); $consumer = self::load($key); if (Request::submitted('store')) { $consumer['requester_email'] = trim(Request::get('requester_email')); $consumer['requester_name'] = trim(Request::get('requester_name')); $consumer['callback_uri'] = Request::get('callback_uri'); $consumer['application_uri'] = Request::get('application_uri'); $consumer['application_title'] = Request::get('application_title'); $consumer['application_descr'] = Request::get('application_descr'); $consumer['application_notes'] = Request::get('application_notes'); $consumer['application_type'] = Request::option('application_type'); $consumer['application_commercial'] = Request::int('application_commercial'); } return $consumer; }
public function index_action($verify_action = null) { if (Request::submitted('store')) { $this->check_ticket(); if (Request::get('new_smsforward_rec')) { $this->user->smsforward_rec = get_userid(Request::get('new_smsforward_rec')); $this->user->smsforward_copy = 1; } else { if (Request::int('smsforward_copy') && !$this->user->smsforward_copy) { $this->user->smsforward_copy = 1; } else { if (!Request::int('smsforward_copy') && $this->user->smsforward_copy) { $this->user->smsforward_copy = 0; } } } $this->user->email_forward = Request::int('send_as_email'); $this->user->store(); // write to user config table $this->config->store('ONLINE_NAME_FORMAT', Request::option('online_format')); $this->config->store('MAIL_AS_HTML', Request::int('mail_format')); $settings = $this->settings; $settings['sms_sig'] = Request::get('sms_sig'); $settings['logout_markreaded'] = Request::int('logout_markreaded'); $settings['save_snd'] = Request::int('save_snd', 2); $settings['request_mail_forward'] = Request::int('request_mail_forward', 0); $this->config->store('MESSAGING_SETTINGS', $settings); $this->reportSuccess(_('Ihre Einstellungen wurden erfolgreich gespeichert.')); $this->redirect('settings/messaging'); } if (!$this->user->smsforward_rec && Request::submitted('gosearch')) { $vis_query = get_vis_query('auth_user_md5'); $query = "SELECT user_id, username, {$GLOBALS['_fullname_sql']['full_rev']} AS fullname, perms\n FROM auth_user_md5\n LEFT JOIN user_info USING (user_id)\n WHERE (username LIKE CONCAT('%', :needle, '%') OR\n Vorname LIKE CONCAT('%', :needle, '%') OR\n Nachname LIKE CONCAT('%', :needle, '%'))\n AND user_id != :user_id AND {$vis_query}\n ORDER BY Nachname ASC"; $statement = DBManager::get()->prepare($query); $statement->bindValue(':needle', Request::get('search_exp')); $statement->bindValue(':user_id', $this->user->user_id); $statement->execute(); $matches = $statement->fetchAll(PDO::FETCH_ASSOC); } else { $matches = false; } $this->matches = $matches; $this->verify_action = $verify_action; }
public function approve_action($plugin_id) { $this->marketplugin = new MarketPlugin($plugin_id); if ($this->marketplugin['approved']) { throw new Exception("Plugin ist schon reviewt."); } $this->marketplugin['approved'] = (int) Request::int("approved"); if (!$this->marketplugin['approved']) { $this->marketplugin['publiclyvisible'] = 0; } if ($this->marketplugin['approved'] && $this->marketplugin['publiclyvisible']) { $this->marketplugin['published'] = time(); } $this->marketplugin->store(); $messaging = new messaging(); $messaging->insert_message(sprintf(_("Ihr Plugin %s wurde reviewt:"), $this->marketplugin['name']) . "\n\n" . ($this->marketplugin['approved'] ? _("Es ist in den Marktplatz aufgenommen worden!") : _("Es ist leider noch nicht in den Marktplatz aufgenommen.")) . "\n\n" . (Request::get("review") ? _("Begründung:") . "\n\n" . Request::get("review") : _("Ein ausführliches Review wurde nicht angegeben und muss bei Bedarf direkt angefragt werden.")), get_username($this->marketplugin['user_id']), '', '', '', '', '', _("Pluginreview"), true, 'normal', "pluginreview"); PageLayout::postMessage(MessageBox::success(_("Review wurde gespeichert."))); $this->redirect('approving/overview'); }
/** * Displays the online list. **/ public function index_action() { $this->contact_count = Contact::countBySQL('owner_id=?', array(User::findCurrent()->id)); // Total number of contacts $this->users = $this->getOnlineUsers($this->settings['show_groups']); $this->showOnlyBuddies = $this->settings['show_only_buddys']; $this->showGroups = $this->settings['show_groups']; $this->limit = Config::getInstance()->ENTRIES_PER_PAGE; $max_page = ceil(count($this->users['users']) / $this->limit); $this->page = min(Request::int('page', 1), $max_page); // Setup sidebar $sidebar = Sidebar::get(); $sidebar->setImage('sidebar/person-sidebar.png'); // Add buddy configuration option to sidebar only if the user actually // has buddies if ($this->contact_count > 0) { $actions = new OptionsWidget(); $actions->addCheckbox(_('Nur Kontakte in der Übersicht der aktiven Benutzer anzeigen'), $this->settings['show_only_buddys'], $this->url_for('online/config/show_buddies/' . get_ticket())); $actions->addCheckbox(_('Kontaktgruppen bei der Darstellung berücksichtigen'), $this->settings['show_groups'], $this->url_for('online/config/show_groups/' . get_ticket())); $sidebar->addWidget($actions); } }
/** * **/ public function edit_action($key = null) { $this->consumer = $this->store->extractConsumerFromRequest($key); if (Request::submitted('store')) { $errors = $this->store->validate($this->consumer); if (!empty($errors)) { $message = MessageBox::error(_('Folgende Fehler sind aufgetreten:'), $errors); PageLayout::postMessage($message); return; } $consumer = $this->store->store($this->consumer, Request::int('enabled', 0)); if ($key) { $message = MessageBox::success(_('Die Applikation wurde erfolgreich gespeichert.')); } else { $details = $this->render_keys($key, $consumer); $message = MessageBox::success(_('Die Applikation wurde erfolgreich erstellt, die Schlüssel finden Sie in den Details dieser Meldung.'), $details, true); } PageLayout::postMessage($message); $this->redirect('admin/index#' . $consumer['consumer_key']); return; } $this->set_layout($GLOBALS['template_factory']->open('layouts/base_without_infobox')); $this->id = $id; }
?> " href="<?php echo URLHelper::getLink("?", array('offset' => Request::int("offset") - $messageBufferCount > 0 ? Request::int("offset") - $messageBufferCount : null)); ?> "><?php echo Icon::create('arr_1left', 'clickable')->asImg(["class" => "text-bottom"]); ?> </a> <? endif ?> <? if ($more) : ?> <div style="float:right"> <a title="<?php echo _("weiter"); ?> " href="<?php echo URLHelper::getLink("?", array('offset' => Request::int("offset") + $messageBufferCount)); ?> "><?php echo Icon::create('arr_1right', 'clickable')->asImg(["class" => "text-bottom"]); ?> </a> </div> <? endif ?> </td> </tr> </noscript> <? endif ?> <? else : ?> <tr> <td colspan="7" style="text-align: center"><?php echo _("Keine Nachrichten");
$query = "SELECT seminar_inst.seminar_id\n FROM seminar_inst\n LEFT JOIN seminare AS s ON (seminar_inst.seminar_id = s.Seminar_id)\n INNER JOIN semester_data sd\n ON ((s.start_time <= sd.beginn AND sd.beginn <= (s.start_time + s.duration_time )\n OR (s.start_time <= sd.beginn AND s.duration_time = -1))\n AND semester_id = ?)\n WHERE seminar_inst.Institut_id = ?"; array_unshift($parameters, $show_semester); } else { $query = "SELECT seminar_inst.seminar_id\n FROM seminar_inst\n LEFT JOIN seminare AS s ON (seminar_inst.seminar_id = s.Seminar_id)\n WHERE seminar_inst.Institut_id = ?"; } if (!$GLOBALS['perm']->have_perm(get_config('SEM_VISIBILITY_PERM'))) { $query .= " AND s.visible = 1"; } $statement = DBManager::get()->prepare($query); $statement->execute($parameters); $seminar_ids = $statement->fetchAll(PDO::FETCH_COLUMN); $sem_browse_obj->sem_browse_data['search_result'] = array_flip($seminar_ids); $sem_browse_obj->show_result = true; break; } if (Request::int('send_excel')) { $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');
GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ require '../lib/bootstrap.php'; page_open(array("sess" => "Seminar_Session", "auth" => "Seminar_Default_Auth", "perm" => "Seminar_Perm", "user" => "Seminar_User")); $auth->login_if(Request::get('again') && $auth->auth["uid"] == "nobody"); include 'lib/seminar_open.php'; // initialise Stud.IP-Session // -- here you have to put initialisations for the current page require_once 'lib/wiki.inc.php'; $view = Request::get('view'); $keyword = Request::get('keyword'); $version = Request::int('version'); $cmd = Request::option('cmd'); if ($view == "wikiprint") { printWikiPage($keyword, $version); page_close(); die; } elseif ($view == "wikiprintall") { printAllWikiPages($SessSemName[1], $SessSemName['header_line']); page_close(); die; } elseif ($view == "export_pdf") { include_once 'lib/classes/exportdocument/ExportPDF.class.php'; exportWikiPagePDF($keyword, $version); } elseif ($view == "exportall_pdf") { include_once 'lib/classes/exportdocument/ExportPDF.class.php'; exportAllWikiPagesPDF("all", Request::option('sortby'));
/** * Exports lecture-data. * * This function gets the data of the lectures at an institute and writes it into $data_object. * It calls output_data afterwards. * * @access public * @param string $inst_id Stud.IP-inst_id for export * @param string $ex_sem_id allows to choose if only a specific lecture is to be exported */ function export_sem($inst_id, $ex_sem_id = 'all') { global $range_id, $xml_file, $o_mode, $xml_names_lecture, $xml_groupnames_lecture, $object_counter, $SEM_TYPE, $SEM_CLASS, $filter, $ex_sem, $ex_sem_class, $ex_person_details, $persons; $ex_only_homeinst = Request::int('ex_only_homeinst', 0); // Prepare user count statement $query = "SELECT COUNT(user_id)\n FROM seminar_user\n WHERE seminar_id = ? AND status = 'autor'"; $count_statement = DBManager::get()->prepare($query); // Prepare inner statement $query = "SELECT seminar_user.position,\n auth_user_md5.user_id, auth_user_md5.username, auth_user_md5.Vorname, auth_user_md5.Nachname,\n user_info.title_front, user_info.title_rear\n FROM seminar_user\n LEFT JOIN user_info USING (user_id)\n LEFT JOIN auth_user_md5 USING (user_id)\n WHERE seminar_user.status = 'dozent' AND seminar_user.Seminar_id = ?\n ORDER BY seminar_user.position"; $inner_statement = DBManager::get()->prepare($query); // Prepare (build) and execute outmost query switch ($filter) { case "seminar": $order = " seminare.Name"; break; case "status": $order = "seminare.status, seminare.Name"; $group = "FIRSTGROUP"; $group_tab_zelle = "status"; $do_group = true; break; default: $order = "seminare.status, seminare.Name"; $group = "FIRSTGROUP"; $group_tab_zelle = "status"; $do_group = true; } $parameters = array(); if (isset($ex_sem) && ($semester = Semester::find($ex_sem))) { $addquery = " AND seminare.start_time <= :begin AND (:begin <= (seminare.start_time + seminare.duration_time) OR seminare.duration_time = -1) "; $parameters[':begin'] = $semester->beginn; } if ($ex_sem_id != 'all') { if ($ex_sem_id == 'root') { $addquery .= " AND EXISTS (SELECT * FROM seminar_sem_tree WHERE seminar_sem_tree.seminar_id = seminare.Seminar_id) "; } else { if (!is_array($ex_sem_id)) { $ex_sem_id = array($ex_sem_id); } $ex_sem_id = array_flip($ex_sem_id); } } if (!$GLOBALS['perm']->have_perm('root') && !$GLOBALS['perm']->have_studip_perm('admin', $inst_id)) { $addquery .= " AND visible = 1 "; } if (count($ex_sem_class) > 0) { $allowed_sem_types = array(); foreach (array_keys($ex_sem_class) as $semclassid) { $allowed_sem_types += array_keys(SeminarCategories::get($semclassid)->getTypes()); } $addquery .= " AND seminare.status IN (:status) "; $parameters[':status'] = $allowed_sem_types; } else { $addquery .= " AND seminare.status NOT IN (:status) "; $parameters[':status'] = studygroup_sem_types() ?: ''; } if ($ex_only_homeinst) { $query = "SELECT seminare.*,Seminar_id as seminar_id, Institute.Name AS heimateinrichtung\n FROM seminare\n LEFT JOIN Institute USING (Institut_id)\n WHERE Institut_id = :institute_id {$addquery}\n ORDER BY " . $order; $parameters[':institute_id'] = $inst_id; } else { $query = "SELECT seminare.*,Seminar_id as seminar_id, Institute.Name AS heimateinrichtung\n FROM seminar_inst\n LEFT JOIN seminare USING (Seminar_id)\n LEFT JOIN Institute ON seminare.Institut_id = Institute.Institut_id\n WHERE seminar_inst.Institut_id = :institute_id {$addquery}\n ORDER BY " . $order; $parameters[':institute_id'] = $inst_id; } $statement = DBManager::get()->prepare($query); $statement->execute($parameters); $data = $statement->fetchAll(PDO::FETCH_ASSOC); $data_object .= xml_open_tag($xml_groupnames_lecture['group']); foreach ($data as $row) { if (is_array($ex_sem_id) && !isset($ex_sem_id[$row['seminar_id']])) { continue; } $group_string = ''; if ($do_group && $group != $row[$group_tab_zelle]) { if ($group != 'FIRSTGROUP') { $group_string .= xml_close_tag($xml_groupnames_lecture['subgroup1']); } if ($group_tab_zelle == 'status') { $group_string .= xml_open_tag($xml_groupnames_lecture['subgroup1'], $SEM_TYPE[$row[$group_tab_zelle]]['name']); } else { $group_string .= xml_open_tag($xml_groupnames_lecture['subgroup1'], $row[$group_tab_zelle]); } $group = $row[$group_tab_zelle]; if ($do_subgroup && $subgroup == $row[$subgroup_tab_zelle]) { $subgroup = "NEXTGROUP"; } } if ($do_subgroup && $subgroup != $row[$subgroup_tab_zelle]) { if ($subgroup != 'FIRSTGROUP') { $group_string = xml_close_tag($xml_groupnames_lecture['subgroup2']) . $group_string; } $group_string .= xml_open_tag($xml_groupnames_lecture['subgroup2'], $row[$subgroup_tab_zelle]); $subgroup = $row[$subgroup_tab_zelle]; } $data_object .= $group_string; $object_counter += 1; $data_object .= xml_open_tag($xml_groupnames_lecture['object'], $row['seminar_id']); $sem_obj = new Seminar($row['seminar_id']); while (list($key, $val) = each($xml_names_lecture)) { if ($val == '') { $val = $key; } if ($key == 'status') { $data_object .= xml_tag($val, $SEM_TYPE[$row[$key]]['name']); } elseif ($key == 'ort') { $data_object .= xml_tag($val, $sem_obj->getDatesTemplate('dates/seminar_export_location')); } elseif ($key == 'bereich' && $SEM_CLASS[$SEM_TYPE[$row['status']]['class']]['bereiche']) { $data_object .= xml_open_tag($xml_groupnames_lecture['childgroup3']); $pathes = get_sem_tree_path($row['seminar_id']); if (is_array($pathes)) { foreach ($pathes as $path_name) { $data_object .= xml_tag($val, $path_name); } } else { $data_object .= xml_tag($val, 'n.a.'); } $data_object .= xml_close_tag($xml_groupnames_lecture['childgroup3']); } elseif ($key == 'admission_turnout') { $data_object .= xml_open_tag($val, $row['admission_type'] ? _('max.') : _('erw.')); $data_object .= $row[$key]; $data_object .= xml_close_tag($val); } elseif ($key == 'teilnehmer_anzahl_aktuell') { $count_statement->execute(array($row['seminar_id'])); $count = $count_statement->fetchColumn(); $count_statement->closeCursor(); $data_object .= xml_tag($val, $count); } elseif ($key == 'metadata_dates') { $data_object .= xml_open_tag($xml_groupnames_lecture['childgroup1']); $vorb = vorbesprechung($row['seminar_id'], 'export'); if ($vorb != false) { $data_object .= xml_tag($val[0], $vorb); } if (($first_date = SeminarDB::getFirstDate($row['seminar_id'])) && count($first_date)) { $really_first_date = new SingleDate($first_date[0]); $data_object .= xml_tag($val[1], $really_first_date->getDatesExport()); } $data_object .= xml_tag($val[2], $sem_obj->getDatesExport()); $data_object .= xml_close_tag($xml_groupnames_lecture["childgroup1"]); } elseif ($key == 'Institut_id') { $data_object .= xml_tag($val, $row['heimateinrichtung'], array('key' => $row[$key])); } elseif ($row[$key] != '') { $data_object .= xml_tag($val, $row[$key]); } } $data_object .= "<" . $xml_groupnames_lecture['childgroup2'] . ">\n"; $inner_statement->execute(array($row['seminar_id'])); while ($inner = $inner_statement->fetch(PDO::FETCH_ASSOC)) { if ($ex_person_details) { $persons[$inner['user_id']] = true; } $content_string = $inner['Vorname'] . ' ' . $inner['Nachname']; if ($inner['title_front'] != '') { $content_string = $inner['title_front'] . ' ' . $content_string; } if ($inner['title_rear'] != '') { $content_string .= ', ' . $inner['title_rear']; } $data_object .= xml_tag($xml_groupnames_lecture['childobject2'], $content_string, array('key' => $inner['username'])); } $data_object .= xml_close_tag($xml_groupnames_lecture['childgroup2']); // freie Datenfelder ausgeben $data_object .= export_datafields($row['seminar_id'], $xml_groupnames_lecture['childgroup4'], $xml_groupnames_lecture['childobject4'], 'sem', $row['status']); $data_object .= xml_close_tag($xml_groupnames_lecture['object']); reset($xml_names_lecture); output_data($data_object, $o_mode); $data_object = ''; } if ($do_subgroup && $subgroup != 'FIRSTGROUP') { $data_object .= xml_close_tag($xml_groupnames_lecture['subgroup2']); } if ($do_group && $group != 'FIRSTGROUP') { $data_object .= xml_close_tag($xml_groupnames_lecture['subgroup1']); } $data_object .= xml_close_tag($xml_groupnames_lecture['group']); output_data($data_object, $o_mode); }
/** * Stores a user's details. */ public function store_action() { $this->check_ticket(); $changed = false; if (Config::get()->ENABLE_SKYPE_INFO) { $new_skype_name = Request::get('skype_name'); if ($new_skype_name != $this->config->SKYPE_NAME) { $this->config->store('SKYPE_NAME', $new_skype_name); Visibility::updatePrivacySettingWithTest(Request::get('skype_name'), _("Skype Name"), "skype_name", 'privatedata', 1, $this->user->user_id); $changed = true; } if (Request::int('skype_online_status') != $this->config->SKYPE_ONLINE_STATUS) { $this->config->store('SKYPE_ONLINE_STATUS', Request::int('skype_online_status')); Visibility::updatePrivacySettingWithTest(Request::int('skype_online_status'), _("Skype Online Status"), "skype_online_status", 'skype_name', 1, $this->user->user_id); $changed = true; } } $mapping = array('telefon' => 'privatnr', 'cell' => 'privatcell', 'anschrift' => 'privadr', 'home' => 'Home', 'motto' => 'motto', 'hobby' => 'hobby', 'lebenslauf' => 'lebenslauf', 'schwerp' => 'schwerp', 'publi' => 'publi'); // Visibilitymapping Remove in Stud.IP 3.0 with a migration $vis_mapping = array('telefon' => 'private_phone', 'cell' => 'private_cell', 'anschrift' => 'privadr', 'home' => 'homepage', 'motto' => 'motto', 'hobby' => 'hobby', 'lebenslauf' => 'lebenslauf', 'schwerp' => 'schwerp', 'publi' => 'publi'); $settingsname = array('telefon' => _('Private Telefonnummer'), 'cell' => _('Private Handynummer'), 'anschrift' => _('Private Adresse'), 'home' => _('Homepage-Adresse'), 'motto' => _('Motto'), 'hobby' => _('Hobbies'), 'lebenslauf' => _('Lebenslauf'), 'schwerp' => _('Arbeitsschwerpunkte'), 'publi' => _('Publikationen')); foreach ($mapping as $key => $column) { $value = Request::get($key); if (in_array($key, array('hobby', 'lebenslauf', 'schwerp', 'publi'))) { // purify HTML input for these fields if wysiwyg is used $value = Studip\Markup::purifyHtml($value); } if ($this->user->{$column} != $value && $this->shallChange('user_info.' . $column, $column, $value)) { $this->user->{$column} = $value; Visibility::updatePrivacySettingWithTest($value, $settingsname[$key], $vis_mapping[$key], 'privatedata', 1, $this->user->user_id); $changed = true; } } $datafields_changed = false; $errors = array(); $datafields = DataFieldEntry::getDataFieldEntries($this->user->user_id, 'user'); $data = Request::getArray('datafields'); foreach ($datafields as $id => $entry) { if (isset($data[$id]) && $data[$id] != $entry->getValue()) { // i really dont know if this is correct but it works Visibility::updatePrivacySettingWithTest($data[$id], $entry->getName(), $entry->getID(), 'additionaldata', 1, $this->user->user_id); $entry->setValueFromSubmit($data[$id]); if ($entry->isValid()) { if ($entry->store()) { $datafields_changed = true; } } else { $errors[] = sprintf(_('Fehlerhafter Eintrag im Feld <em>%s</em>: %s (Eintrag wurde nicht gespeichert)'), $entry->getName(), $entry->getDisplayValue()); } } } if (count($errors) > 0) { $this->reportErrorWithDetails(_('Bitte überprüfen Sie Ihre Eingaben.'), $errors); } else { if ($this->user->store() || $changed || $datafields_changed) { $this->reportSuccess(_('Daten im Lebenslauf u.a. wurden geändert.')); setTempLanguage($this->user->user_id); $this->postPrivateMessage(_('Daten im Lebenslauf u.a. wurden geändert.')); restoreLanguage(); } } $this->redirect('settings/details'); }
/** * Deletes the given user list. * * @param String $userlistId the user list to delete */ public function delete_action($userlistId) { $this->userlist = new AdmissionUserList($userlistId); if (Request::int('really')) { $this->userlist->delete(); $this->redirect($this->url_for('admission/userlist')); } if (Request::int('cancel')) { $this->redirect($this->url_for('admission/userlist')); } }
/** * save changes to a log action */ function save_action($action_id) { $description = Request::get('description'); $info_template = Request::get('info_template'); $active = Request::get('active') ? 1 : 0; $expires = (int) Request::int('expires') * 86400; try { $this->event_log->update_log_action($action_id, $description, $info_template, $active, $expires); } catch (InvalidArgumentException $ex) { $this->error_msg = $ex->getMessage(); } $this->log_actions = $this->event_log->get_log_actions(); $this->render_action('admin'); }
/** * Interface to edit a group or create a new one. * * @param string group id */ public function editGroup_action($group_id = null) { $this->check('edit'); if (Request::isPost()) { $group = new Statusgruppen($group_id); if ($group->isNew()) { $group->range_id = $_SESSION['SessionSeminar']; } $group->name = Request::get('name'); $group->name_w = Request::get('name_w'); $group->name_m = Request::get('name_m'); $group->size = Request::int('size'); $group->range_id = Request::option('range_id', $group->range_id); $group->position = Request::int('position', $group->position); $group->selfassign = Request::int('selfassign', 0); $group->store(); $group->setDatafields(Request::getArray('datafields')); $message = $group->isNew() ? _('Die Gruppe wurde angelegt.') : _('Die Gruppe wurde gespeichert'); PageLayout::postMessage(MessageBox::success($message)); $this->redirect('admin/statusgroups'); return; } $this->group = new Statusgruppen($group_id); $this->loadGroups(); }
/** * Saves data for a new or existing step. * @param string $id ID of the step to save; if empty, create new step. */ public function save_action($id = '') { CSRFProtection::verifyUnsafeRequest(); if (Request::submitted('submit')) { if ($id) { $step = CourseWizardStepRegistry::find($id); $step->name = Request::get('name'); $step->classname = Request::get('classname'); $step->number = Request::int('number'); $step->enabled = Request::option('enabled') ? 1 : 0; if ($step->store()) { PageLayout::postMessage(MessageBox::success(_('Die Daten wurden gespeichert.'))); } else { PageLayout::postMessage(MessageBox::error(_('Die Daten konnten nicht gespeichert werden.'))); } } else { $classname = Request::get('classname'); // Check if given class name can be found in system. if (!class_exists($classname)) { PageLayout::postMessage(MessageBox::error(sprintf(_('Die angegebene PHP-Klasse "%s" wurde nicht gefunden.'), htmlReady($classname)))); // Class found, now check if it implements the interface definition for wizard steps. } else { if (!in_array('CourseWizardStep', class_implements($classname) ?: array())) { PageLayout::postMessage(MessageBox::error(sprintf(_('Die angegebene PHP-Klasse "%s" implementiert nicht das Interface CourseWizardStep.'), htmlReady($classname)))); // All ok, create new database entry. } else { $step = new CourseWizardStepRegistry(); $step->name = Request::get('name'); $step->classname = $classname; $step->number = Request::int('number'); $step->enabled = Request::option('enabled') ? 1 : 0; if ($step->store()) { PageLayout::postMessage(MessageBox::success(_('Die Daten wurden gespeichert.'))); } else { PageLayout::postMessage(MessageBox::error(_('Die Daten konnten nicht gespeichert werden.'))); } } } } } $this->redirect($this->url_for('admin/coursewizardsteps')); }
<label> <?php echo _('Bezeichnung'); ?> <select name="type" id="type" <?php echo LockRules::Check($institute->id, 'type') ? 'readonly disabled' : ''; ?> > <? foreach ($GLOBALS['INST_TYPE'] as $i => $inst_type): ?> <option value="<?php echo $i; ?> " <?php echo Request::int('type', $institute->type) == $i ? 'selected' : ''; ?> > <?php echo htmlReady($inst_type['name']); ?> </option> <? endforeach; ?> </select> </label> <label> <?php echo _('Straße'); ?> <input type="text" size="80" <?php
$_SESSION['resources_data']["schedule_mode"] = "graphical"; $_SESSION['resources_data']["show_repeat_mode"] = 'all'; $_SESSION['resources_data']['group_schedule_dow'] = 1; } $_SESSION['_default_sem'] = $_SESSION['resources_data']['sem_schedule_semester_id']; } if (Request::option('show_repeat_mode') && Request::submitted('send_schedule_repeat_mode')) { $_SESSION['resources_data']["show_repeat_mode"] = Request::option('show_repeat_mode'); } if (Request::get('time_range')) { if (Request::get('time_range') == "FALSE") $_SESSION['resources_data']["schedule_time_range"] = ''; else $_SESSION['resources_data']["schedule_time_range"] = Request::int('time_range'); } /***************************************************************************** some other stuff ;-) /*****************************************************************************/ //display perminvalid window if ((in_array("1", $msg->codes)) || (in_array("25", $msg->codes))) { $forbiddenObject = ResourceObject::Factory($_SESSION['resources_data']["actual_object"]); if ($forbiddenObject->isLocked()) { $lock_ts = getLockPeriod("edit"); $msg->addMsg(31, array(date("d.m.Y, G:i", $lock_ts[0]), date("d.m.Y, G:i", $lock_ts[1]))); } $msg->displayAllMsg("window"); die;
/** * Define routes on router * * @param Slim Slim instance as router **/ public function routes(&$router) { // Inbox and outbox // List folders $router->get('/messages/:box', function ($box) use($router) { $val = Helper::getUserData(); $settings = $val['my_messaging_settings'] ?: array(); $folders = $settings['folder']; $folders['in'][0] = _('Posteingang'); $folders['out'][0] = _('Postausgang'); $folders = $folders[$box]; $router->render(compact('folders')); })->conditions(array('box' => '(in|out)')); // Create new folder $router->post('/messages/:box', function ($box) use($router) { $folder = trim(\Request::get('folder', '')); $val = Helper::getUserData(); if (empty($folder)) { $router->halt(406, 'No folder name provided'); } if (false and preg_match('/[^a-z0-9]/', $folder)) { $router->halt(406, 'Invalid folder name provided'); } if (in_array($folder, $val['my_messaging_settings']['folder'][$box]) || ($box === 'in' and $folder === _('Posteingang')) || ($box === 'out' and $folder === _('Postausgang'))) { $router->halt(409, 'Duplicate'); } $val['my_messaging_settings']['folder'][$box][] = $folder; Helper::setUserData($val); $GLOBALS['user']->unregister('my_messaging_settings'); $router->halt(201); })->conditions(array('box' => '(in|out)')); // Folders // List messages $router->get('/messages/:box/:folder', function ($box, $folder) use($router) { $val = Helper::getUserData(); $settings = $val['my_messaging_settings'] ?: array(); if ($folder != 0 && !isset($settings['folder'][$box][$folder])) { $router->halt(404, sprintf('Folder %s-%s not found', $box, $folder)); } error_reporting(E_ALL ^ (E_NOTICE | E_WARNING)); $ids = Message::folder($box == 'in' ? 'rec' : 'snd', $folder); $messages = Message::load($ids); if ($router->compact()) { $router->render(compact('messages')); return; } $users = array(); foreach ($messages as $message) { if ($message['sender_id'] != '____%system%____' && !isset($users[$message['sender_id']])) { $users[$message['sender_id']] = reset($router->dispatch('get', '/user(/:user_id)', $message['sender_id'])); } if ($message['receiver_id'] != '____%system%____' && !isset($users[$message['receiver_id']])) { $users[$message['receiver_id']] = reset($router->dispatch('get', '/user(/:user_id)', $message['receiver_id'])); } } $router->render(compact('messages', 'users')); })->conditions(array('box' => '(in|out)', array('folder' => '\\d+'))); // Direct access to messages // Get count of message $router->get('/messages', function () use($router) { $count = array('read' => 0 + count_messages_from_user('in', ' AND message_user.readed = 1 '), 'unread' => 0 + count_messages_from_user('in', ' AND message_user.readed = 0 ')); $router->render($count); }); // Create a message $router->post('/messages', function () use($router) { $subject = trim($_POST['subject'] ?: ''); if (empty($subject)) { $router->halt(406, 'No subject provided'); } $message = trim($_POST['message'] ?: ''); if (empty($message)) { $router->halt(406, 'No message provided'); } $usernames = array_map(function ($id) use($router) { $user = \User::find($id); if (!$user) { $router->halt(404, sprintf('Receiver user id %s not found', $id)); } return $user['username']; }, (array) ($_POST['user_id'] ?: null)); $message_id = md5(uniqid('message', true)); check_messaging_default(); $messaging = new \messaging(); $result = $messaging->insert_message($message, $usernames, $GLOBALS['user']->id, time(), $message_id, false, \Request::get('signature'), $subject, \Request::int('email', 0)); if (!$result) { $this->halt(500, 'Could not create message'); } $router->render($router->dispatch('get', '/messages/:message_id', $message_id), 201); }); // Load a message $router->get('/messages/:message_id', function ($message_id) use($router) { $message = Message::load($message_id); if (!$message) { $router->halt(404, sprintf('Message %s not found', $message_id)); } if ($router->compact()) { $router->render(compact('message')); return; } $users = array(); if ($message['sender_id'] != '____%system%____' && !isset($users[$message['sender_id']])) { $users[$message['sender_id']] = reset($router->dispatch('get', '/user(/:user_id)', $message['sender_id'])); } if ($message['receiver_id'] != '____%system%____' && !isset($users[$message['receiver_id']])) { $users[$message['receiver_id']] = reset($router->dispatch('get', '/user(/:user_id)', $message['receiver_id'])); } $router->render(compact('message', 'users')); }); // Destroy a message $router->delete('/messages/:message_id', function ($message_id) use($router) { $message = Message::load($message_id, array('mu.dont_delete')); if (!$message) { $router->halt(404, sprintf('Message %s not found', $message_id)); } if ($message['dont_delete']) { $router->halt(403, 'Message shall not be deleted'); } $messaging = new messaging(); $messaging->delete_message($message_id); $router->halt(204); }); // Read (load and update read flag) a message $router->put('/messages/:message_id/read', function ($message_id) use($router) { $message = Message::load($message_id); if (!$message) { $router->halt(404, sprintf('Message %s not found', $message_id)); } $router->render($message); $messaging = new messaging(); $messaging->set_read_message($message_id); $router->halt(204); }); $router->put('/messages/read', function () use($router) { Message::readAll($GLOBALS['user']->id); $router->halt(200); }); // Move message $router->put('/messages/:message_id/move/:folder', function ($folder, $message_id) use($router) { $val = Helper::getUserData(); $settings = $val['my_messaging_settings'] ?: array(); if ($folder != 0 && !isset($settings['folder'][$box][$folder])) { $router->halt(404, sprintf('Folder %s-%s not found', $box, $folder)); } $message = Message::load($message_id); if (!$message) { $router->halt(404, sprintf('Message %s not found', $message_id)); } Message::move($message_id, $folder); $router->halt(204); })->conditions(array('folder' => '\\d+')); }
header("Content-Range: bytes {$start}-{$end}/{$filesize}"); header("Content-Length: {$length}"); } elseif ($filesize) { header("Content-Length: {$filesize}"); } header("Expires: Mon, 12 Dec 2001 08:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); if ($_SERVER['HTTPS'] == "on") { header("Pragma: public"); header("Cache-Control: private"); } else { header("Pragma: no-cache"); header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1 } header("Cache-Control: post-check=0, pre-check=0", false); header("Content-Type: {$content_type}"); header("Content-Disposition: {$content_disposition}; filename=\"{$file_name}\""); Metrics::increment('core.file_download'); if ($type != 5) { @readfile_chunked($path_file, $start, $end); if (in_array($type, array(0, 6)) && !$start) { TrackAccess($file_id, 'dokument'); } } else { echo $the_data; } //remove temporary file after zipping if (Request::int('zip') || $type == 4) { @unlink($path_file); }
public function delete_sem_type_action() { if (count($_POST)) { $sem_type = $GLOBALS['SEM_TYPE'][Request::int("sem_type")]; if (!$sem_type->delete()) { throw new Exception("Could not delete sem_type because it' still in use."); } } $this->render_nothing(); }
public function testIntParam() { $this->assertNull(Request::int('null')); $this->assertSame(Request::int('a'), 0); $this->assertSame(Request::int('c'), -23); $this->assertSame(Request::int('d'), 12); $this->assertSame(Request::int('e'), 3); $this->assertNull(Request::int('v1')); }
<? endif; ?> <input type="submit" value="<?php echo _('Suchen'); ?> "> </li> <? endforeach; ?> </ul> <? if (!empty($filters)): ?> <ul class="filters"> <? foreach ($filters as $key => $label): ?> <label> <input type="checkbox" name="<?php echo htmlReady($key); ?> " value="1" <? if (!$has_data || Request::int($key)) echo 'checked'; ?>> <?php echo htmlReady($label); ?> </label> <? endforeach; ?> </ul> <? endif; ?> <? if (!empty($quick_search)): ?> <script> (function ($) { <? foreach ($quick_search as $needle): ?> STUDIP.QuickSearch.autocomplete('needle-<?php echo md5($url . '|' . $needle['name']); ?> ', '<?php