Esempio n. 1
0
 /**
  * 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);
 }
Esempio n. 2
0
 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));
 }
Esempio n. 3
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);
 }
Esempio n. 4
0
 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();
 }
Esempio n. 5
0
 /**
  * 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');
 }
Esempio n. 6
0
 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');
 }
Esempio n. 7
0
 /**
  *
  */
 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);
     });
 }
Esempio n. 8
0
 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'))));
 }
Esempio n. 9
0
 /**
  * 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;
     }
 }
Esempio n. 10
0
    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;
Esempio n. 11
0
 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);
         }
     }
 }