/** * Deletes a smiley * * @param int $id Id of the smiley to delete * @param String $view View to return to after deletion * @todo needs some of confirmation */ public function delete_action($id, $view) { if ($id == 'bulk') { $ids = Request::intArray('smiley_id'); Smiley::remove($ids); $message = sprintf(_('%d Smiley(s) erfolgreich gelöscht.'), count($ids)); } else { $smiley = Smiley::getById($id); $name = $smiley->name; $smiley->delete(); $message = sprintf(_('Smiley "%s" erfolgreich gelöscht.'), $name); } PageLayout::postMessage(MessageBox::success($message)); $this->redirect('admin/smileys?view=' . $view); }
public function testIntArrayParam() { $this->assertSame(Request::intArray('null'), array()); $this->assertSame(Request::intArray('c'), array()); $this->assertSame(Request::intArray('v1'), array(1, 2, 3)); $this->assertSame(Request::intArray('v2'), array(0, 0, 0)); }
/** * Install updates for all selected plugins. */ public function install_updates_action() { $plugins = PluginManager::getInstance()->getPluginInfos(); $plugin_filter = Request::option('plugin_filter', ''); $update_info = $this->plugin_admin->getUpdateInfo($plugins); $update = Request::intArray('update'); $update_status = array(); $this->check_ticket(); // update each plugin in turn foreach ($update as $id) { if (isset($update_info[$id]['update'])) { try { $update_url = $update_info[$id]['update']['url']; $this->plugin_admin->installPluginFromURL($update_url); } catch (PluginInstallationException $ex) { $update_errors[] = sprintf('%s: %s', $plugins[$id]['name'], $ex->getMessage()); } } } // collect and report errors if (isset($update_errors)) { $this->flash['error'] = ngettext('Beim Update ist ein Fehler aufgetreten:', 'Beim Update sind Fehler aufgetreten:', count($update_errors)); $this->flash['error_detail'] = $update_errors; } else { $this->flash['message'] = _('Update erfolgreich installiert.'); } $this->redirect('admin/plugin?plugin_filter=' . $plugin_filter); }
function handle_form_data() { CSRFProtection::verifyUnsafeRequest(); $this->lock_rule->name = Request::get('lockdata_name'); $this->lock_rule->description = Request::get('lockdata_description'); $this->lock_rule->permission = Request::option('lockdata_permission'); $this->lock_rule->attributes = Request::intArray('lockdata_attributes'); if (!$this->lock_rule->name) { $this->msg['error'][] = _('Bitte geben Sie einen Namen für die Sperrebene an!'); return false; } return $this->lock_rule->store(); }
/** * Stores the deputy settings of a user. */ public function store_action() { $this->check_ticket(); $delete = Request::optionArray('delete'); if (count($delete) > 0) { $deleted = deleteDeputy($delete, $this->user->user_id); if ($deleted) { $this->reportSuccess($deleted == 1 ? _('Die Vertretung wurde entfernt.') : _('Es wurden %s Vertretungen entfernt.'), $deleted); } else { $this->reportError(_('Fehler beim Entfernen der Vertretung(en).')); } } if ($this->edit_about_enabled) { $deputies = getDeputies($this->user->user_id, true); $changes = Request::intArray('edit_about'); $success = true; $changed = 0; foreach ($changes as $id => $state) { if (!in_array($id, $deleted) && $state != $deputies[$id]['edit_about']) { $success = $success and setDeputyHomepageRights($id, $this->user->user_id, $state) > 0; $changed += 1; } } if ($success && $changed > 0) { $this->reportSuccess(_('Die Einstellungen wurden gespeichert.')); } else { if ($changed > 0) { $this->reportError(_('Fehler beim Speichern der Einstellungen.')); } } } $this->redirect('settings/deputies'); }
function store_action($config_id, $isGroupConfig) { if (Request::float('upload_size') && Request::float('quota_size')) { if($config_id == 0){ $data['id'] = ''; $data['usergroup'] = Request::get('group'); }else{ $data['id'] = $config_id; } $data['upload_quota'] = $this->sizeInByte(Request::float('upload_size'), Request::get('unitUpload')); $data['quota'] = $this->sizeInByte(Request::float('quota_size'), Request::get('unitQuota')); if($isGroupConfig == false){ $data['is_group_config'] = 0; }else{ $data['is_group_config'] = 1; } if ($data['upload_quota'] <= $data['quota'] && $data['quota'] >= 0 && $data['upload_quota'] >= 0) { $data['upload_forbidden'] = '0'; $data['quota_unit'] = Request::get('unitQuota'); $data['upload_unit'] = Request::get('unitUpload'); $data['datetype_id'] = Request::intArray('datetype'); if(DocUsergroupConfig::setConfig($data)){ $message = 'Das Speichern der Einstellungen war erfolgreich. '; PageLayout::postMessage(MessageBox::success($message)); }else{ PageLayout::postMessage(MessageBox::error(_( 'Beim speichern der Einstellungen ist ein Fehler aufgetreten'. ' oder es wurden keine Änderungen vorgenommen.'))); } }else{ PageLayout::postMessage(MessageBox::error(_( 'Upload-Quota ist größer als das gesamte Nutzer-Quota. Bitte korrigieren Sie Ihre Eingabe.'))); } }else{ PageLayout::postMessage(MessageBox::error(_( 'Es wurden fehlerhafte Werte für die Quota eingegeben.'))); } $this->redirect('document/administration/filter'); }
/** * */ public function add_plugin_action($role_id) { PageLayout::setTitle(_('Plugins zur Rolle hinzufügen')); if (Request::isPost()) { CSRFProtection::verifyUnsafeRequest(); $plugin_ids = Request::intArray('plugin_ids'); if (count($plugin_ids) > 0) { foreach ($plugin_ids as $id) { RolePersistence::assignPluginRoles($id, array($role_id)); } $template = ngettext('Der Rolle wurde ein weiteres Plugin hinzugefügt.', 'Der Rolle wurden %u weitere Plugins hinzugefügt.', count($plugin_ids)); $message = sprintf($template, count($plugin_ids)); PageLayout::postMessage(MessageBox::success($message)); } $this->redirect('admin/role/show_role/' . $role_id); } $this->role_id = $role_id; $plugins = PluginManager::getInstance()->getPluginInfos(); $controller = $this; $this->plugins = array_filter($plugins, function ($plugin) use($controller, $role_id) { return !$controller->check_role_access($plugin, $role_id); }); }
public function store_permissions_action($range_id = null) { $this->range_id = $range_id ?: $this->range_id; $this->calendar = new SingleCalendar($this->range_id); $deleted = 0; $read = 0; $write = 0; $submitted_permissions = Request::intArray('perm'); foreach ($submitted_permissions as $user_id => $new_perm) { $calendar_user = new CalendarUser(array($this->calendar->getRangeId(), $user_id)); if (!$calendar_user->isNew() && $new_perm == 1) { $deleted += $calendar_user->delete(); $new_perm = 0; } if ($new_perm >= Calendar::PERMISSION_READABLE && $calendar_user->permission != $new_perm) { $calendar_user->permission = $new_perm; if ($calendar_user->store()) { if ($new_perm == Calendar::PERMISSION_READABLE) { $read++; } else { $write++; } } } } $sum = $deleted + $read + $write; if ($sum) { if ($deleted) { $details[] = sprintf(ngettext('Einer Person wurde die Berechtigungen entzogen.', '%s Personen wurden die Berechtigungen entzogen.', $deleted), $deleted); } if ($read) { $details[] = sprintf(ngettext('Eine Person wurde auf leseberechtigt gesetzt.', '%s Personen wurden auf leseberechtigt gesetzt.', $read), $read); } if ($write) { $details[] = sprintf(ngettext('Eine Person wurde auf schreibberechtigt gesetzt.', '%s Personen wurden auf schreibberechtigt gesetzt.', $write), $write); } PageLayout::postMessage(MessageBox::success(sprintf(ngettext('Die Berechtigungen von einer Person wurde geändert.', 'Die Berechtigungen von %s Personen wurden geändert.', $sum), $sum), $details)); // no message if the group was changed } else { if (!Request::submitted('calendar_group_submit')) { PageLayout::postMessage(MessageBox::success(_('Es wurden keine Berechtigungen geändert.'))); } } $this->redirect($this->url_for('calendar/single/manage_access/' . $this->calendar->getRangeId(), array('group_filter' => Request::option('group_filter', 'list')))); }
/** * Configure settings for several courses at once. * * @param String $set_id course set ID to fetch courses from * @param String $csv export course members to file */ public function configure_courses_action($set_id, $csv = null) { if (Request::isXhr()) { $this->response->add_header('X-Title', _('Ausgewählte Veranstaltungen konfigurieren')); } $courseset = new CourseSet($set_id); $this->set_id = $courseset->getId(); $this->courses = Course::findMany($courseset->getCourses(), "ORDER BY VeranstaltungsNummer, Name"); $this->applications = AdmissionPriority::getPrioritiesStats($courseset->getId()); $distinct_members = array(); $multi_members = array(); foreach ($this->courses as $course) { $all_members = $course->members->findBy('status', words('user autor'))->pluck('user_id'); $all_members = array_merge($all_members, $course->admission_applicants->findBy('status', words('accepted awaiting'))->pluck('user_id')); $all_members = array_unique($all_members); foreach ($all_members as $one) { $multi_members[$one]++; } $distinct_members = array_unique(array_merge($distinct_members, $all_members)); } $multi_members = array_filter($multi_members, function ($a) { return $a > 1; }); $this->count_distinct_members = count($distinct_members); $this->count_multi_members = count($multi_members); if ($csv == 'csv') { $captions = array(_("Nummer"), _("Name"), _("versteckt"), _("Zeiten"), _("Dozenten"), _("max. Teilnehmer"), _("Teilnehmer aktuell"), _("Anzahl Anmeldungen"), _("Anzahl Anmeldungen Prio 1"), _("Warteliste"), _("max. Anzahl Warteliste"), _("vorläufige Anmeldung"), _("verbindliche Anmeldung")); $data = array(); foreach ($this->courses as $course) { $row = array(); $row[] = $course->veranstaltungsnummer; $row[] = $course->name; $row[] = $course->visible ? _("nein") : _("ja"); $row[] = join('; ', $course->cycles->toString()); $row[] = join(', ', $course->members->findBy('status', 'dozent')->orderBy('position')->pluck('Nachname')); $row[] = $course->admission_turnout; $row[] = $course->getNumParticipants(); $row[] = $this->applications[$course->id]['c']; $row[] = $this->applications[$course->id]['h']; $row[] = $course->admission_disable_waitlist ? _("nein") : _("ja"); $row[] = $course->admission_waitlist_max > 0 ? $course->admission_waitlist_max : ''; $row[] = $course->admission_prelim ? _("ja") : _("nein"); $row[] = $course->admission_binding ? _("ja") : _("nein"); $data[] = $row; } $tmpname = md5(uniqid('tmp')); if (array_to_csv($data, $GLOBALS['TMP_PATH'] . '/' . $tmpname, $captions)) { $this->redirect(GetDownloadLink($tmpname, 'Veranstaltungen_' . $courseset->getName() . '.csv', 4, 'force')); return; } } if (in_array($csv, words('download_all_members download_multi_members'))) { $liste = array(); $multi_members = $all_participants = array(); foreach ($this->courses as $course) { $participants = $course->members->findBy('status', words('user autor'))->toGroupedArray('user_id', words('username vorname nachname email status')); $participants += $course->admission_applicants->findBy('status', words('accepted awaiting'))->toGroupedArray('user_id', words('username vorname nachname email status')); $all_participants += $participants; foreach (array_keys($participants) as $one) { $multi_members[$one][] = $course->name . ($course->veranstaltungsnummer ? '|' . $course->veranstaltungsnummer : ''); } foreach ($participants as $user_id => $part) { $liste[] = array($part['username'], $part['vorname'], $part['nachname'], $part['email'], $course->name . ($course->veranstaltungsnummer ? '|' . $course->veranstaltungsnummer : ''), $part['status']); } } if ($csv == 'download_all_members') { $captions = array(_("Username"), _("Vorname"), _("Nachname"), _("Email"), _("Veranstaltung"), _("Status")); if (count($liste)) { $tmpname = md5(uniqid('tmp')); if (array_to_csv($liste, $GLOBALS['TMP_PATH'] . '/' . $tmpname, $captions)) { $this->redirect(GetDownloadLink($tmpname, 'Gesamtteilnehmerliste_' . $courseset->getName() . '.csv', 4, 'force')); return; } } } else { $liste = array(); $multi_members = array_filter($multi_members, function ($a) { return count($a) > 1; }); $c = 0; $max_count = array(); foreach ($multi_members as $user_id => $courses) { $member = $all_participants[$user_id]; $liste[$c] = array($member['username'], $member['vorname'], $member['nachname'], $member['email']); foreach ($courses as $one) { $liste[$c][] = $one; } $max_count[] = count($courses); $c++; } $captions = array(_("Nutzername"), _("Vorname"), _("Nachname"), _("Email")); foreach (range(1, max($max_count)) as $num) { $captions[] = _("Veranstaltung") . ' ' . $num; } if (count($liste)) { $tmpname = md5(uniqid('tmp')); if (array_to_csv($liste, $GLOBALS['TMP_PATH'] . '/' . $tmpname, $captions)) { $this->redirect(GetDownloadLink($tmpname, 'Mehrfachanmeldungen_' . $courseset->getName() . '.csv', 4, 'force')); return; } } } } if (Request::submitted('configure_courses_save')) { CSRFProtection::verifyUnsafeRequest(); $admission_turnouts = Request::intArray('configure_courses_turnout'); $admission_waitlists = Request::intArray('configure_courses_disable_waitlist'); $admission_waitlists_max = Request::intArray('configure_courses_waitlist_max'); $admission_bindings = Request::intArray('configure_courses_binding'); $admission_prelims = Request::intArray('configure_courses_prelim'); $hidden = Request::intArray('configure_courses_hidden'); $ok = 0; foreach ($this->courses as $course) { if ($GLOBALS['perm']->have_studip_perm('admin', $course->id)) { $do_update_admission = $course->admission_turnout < $admission_turnouts[$course->id]; $course->admission_turnout = $admission_turnouts[$course->id]; $course->admission_disable_waitlist = isset($admission_waitlists[$course->id]) ? 0 : 1; $course->admission_waitlist_max = $course->admission_disable_waitlist ? 0 : $admission_waitlists_max[$course->id]; $course->admission_binding = @$admission_bindings[$course->id] ?: 0; $course->admission_prelim = @$admission_prelims[$course->id] ?: 0; $course->visible = @$hidden[$course->id] ? 0 : 1; $ok += $course->store(); if ($do_update_admission) { update_admission($course->id); } } } if ($ok) { PageLayout::postMessage(MessageBox::success(_("Die zugeordneten Veranstaltungen wurden konfiguriert."))); } $this->redirect($this->url_for('admission/courseset/configure/' . $courseset->getId())); return; } }
include ('lib/seminar_open.php'); // initialise Stud.IP-Session } //$i_page = "my_courses.php"; //$EXPORT_ENABLE = TRUE; //$PATH_EXPORT = "export"; // -- here you have to put initialisations for the current page require_once 'lib/msg.inc.php'; require_once $GLOBALS['PATH_EXPORT'] . '/export_config.inc.php'; PageLayout::setHelpKeyword("Basis.Export"); ob_start(); if (get_config('EXPORT_ENABLE')) { $ex_sem_class = Request::intArray('ex_sem_class'); // Zurueckbutton benutzt? if (Request::submitted('back')) { if ($o_mode == "choose") { if ($page == 4) { if (get_config('skip_page_3')) $page = 1; else $page = 2; } elseif ($page>1) $page = $page-2;
protected function storeEventData(CalendarEvent $event, SingleCalendar $calendar) { if (Request::int('isdayevent')) { $dt_string = Request::get('start_date') . ' 00:00:00'; } else { $dt_string = Request::get('start_date') . ' ' . Request::int('start_hour') . ':' . Request::int('start_minute'); } $event->setStart($this->parseDateTime($dt_string)); if (Request::int('isdayevent')) { $dt_string = Request::get('end_date') . ' 23:59:59'; } else { $dt_string = Request::get('end_date') . ' ' . Request::int('end_hour') . ':' . Request::int('end_minute'); } $event->setEnd($this->parseDateTime($dt_string)); if ($event->getStart() > $event->getEnd()) { $messages[] = _('Die Startzeit muss vor der Endzeit liegen.'); } if (Request::isXhr()) { $event->setTitle(studip_utf8decode(Request::get('summary', ''))); $event->event->description = studip_utf8decode(Request::get('description', '')); $event->setUserDefinedCategories(studip_utf8decode(Request::get('categories', ''))); $event->event->location = studip_utf8decode(Request::get('location', '')); } else { $event->setTitle(Request::get('summary')); $event->event->description = Request::get('description', ''); $event->setUserDefinedCategories(Request::get('categories', '')); $event->event->location = Request::get('location', ''); } $event->event->category_intern = Request::int('category_intern', 1); $event->setAccessibility(Request::option('accessibility', 'PRIVATE')); $event->setPriority(Request::int('priority', 0)); if (!$event->getTitle()) { $messages[] = _('Es muss eine Zusammenfassung angegeben werden.'); } $rec_type = Request::option('recurrence', 'single'); $expire = Request::option('exp_c', 'never'); $rrule = array('linterval' => null, 'sinterval' => null, 'wdays' => null, 'month' => null, 'day' => null, 'rtype' => 'SINGLE', 'count' => null, 'expire' => null); if ($expire == 'count') { $rrule['count'] = Request::int('exp_count', 10); } else { if ($expire == 'date') { if (Request::isXhr()) { $exp_date = studip_utf8decode(Request::get('exp_date')); } else { $exp_date = Request::get('exp_date'); } $exp_date = $exp_date ?: strftime('%x', time()); $rrule['expire'] = $this->parseDateTime($exp_date . ' 12:00'); } } switch ($rec_type) { case 'daily': if (Request::option('type_daily', 'day') == 'day') { $rrule['linterval'] = Request::int('linterval_d', 1); $rrule['rtype'] = 'DAILY'; } else { $rrule['linterval'] = 1; $rrule['wdays'] = '12345'; $rrule['rtype'] = 'WEEKLY'; } break; case 'weekly': $rrule['linterval'] = Request::int('linterval_w', 1); $rrule['wdays'] = implode('', Request::intArray('wdays', array(strftime('%u', $event->getStart())))); $rrule['rtype'] = 'WEEKLY'; break; case 'monthly': if (Request::option('type_m', 'day') == 'day') { $rrule['linterval'] = Request::int('linterval_m1', 1); $rrule['day'] = Request::int('day_m', strftime('%e', $event->getStart())); $rrule['rtype'] = 'MONTHLY'; } else { $rrule['linterval'] = Request::int('linterval_m2', 1); $rrule['sinterval'] = Request::int('sinterval_m', 1); $rrule['wdays'] = Request::int('wday_m', strftime('%u', $event->getStart())); $rrule['rtype'] = 'MONTHLY'; } break; case 'yearly': if (Request::option('type_y', 'day') == 'day') { $rrule['linterval'] = 1; $rrule['day'] = Request::int('day_y', strftime('%e', $event->getStart())); $rrule['month'] = Request::int('month_y1', date('n', $event->getStart())); $rrule['rtype'] = 'YEARLY'; } else { $rrule['linterval'] = 1; $rrule['sinterval'] = Request::int('sinterval_y', 1); $rrule['wdays'] = Request::int('wday_y', strftime('%u', $event->getStart())); $rrule['month'] = Request::int('month_y2', date('n', $event->getStart())); $rrule['rtype'] = 'YEARLY'; } break; } if (sizeof($messages)) { PageLayout::postMessage(MessageBox::error(_('Bitte Eingaben korrigieren'), $messages)); return false; } else { $event->setRecurrence($rrule); $exceptions = array_diff(Request::getArray('exc_dates'), Request::getArray('del_exc_dates')); $event->setExceptions($this->parseExceptions($exceptions)); // if this is a group event, store event in the calendars of each attendee if (get_config('CALENDAR_GROUP_ENABLE')) { $attendee_ids = Request::optionArray('attendees'); return $calendar->storeEvent($event, $attendee_ids); } else { return $calendar->storeEvent($event); } } }