Esempio n. 1
0
 public function overview_action()
 {
     Navigation::activateItem("/admin/locations/sem_classes");
     if (count($_POST) && Request::submitted('delete') && Request::get("delete_sem_class")) {
         $sem_class = $GLOBALS['SEM_CLASS'][Request::get("delete_sem_class")];
         if ($sem_class->delete()) {
             PageLayout::postMessage(MessageBox::success(_("Veranstaltungskategorie wurde gelöscht.")));
             $GLOBALS['SEM_CLASS'] = SemClass::refreshClasses();
         }
     }
     if (count($_POST) && Request::get("add_name")) {
         $statement = DBManager::get()->prepare("SELECT 1 FROM sem_classes WHERE name = :name");
         $statement->execute(array('name' => Request::get("add_name")));
         $duplicate = $statement->fetchColumn();
         if ($duplicate) {
             $message = sprintf(_("Es existiert bereits eine Veranstaltungskategorie mit dem Namen \"%s\""), Request::get("add_name"));
             PageLayout::postMessage(MessageBox::error($message));
             $this->redirect('admin/sem_classes/overview');
         } else {
             $statement = DBManager::get()->prepare("INSERT INTO sem_classes SET name = :name, mkdate = UNIX_TIMESTAMP(), chdate = UNIX_TIMESTAMP() " . "");
             $statement->execute(array('name' => Request::get("add_name")));
             $id = DBManager::get()->lastInsertId();
             if (Request::get("add_like")) {
                 $sem_class = clone $GLOBALS['SEM_CLASS'][Request::get("add_like")];
                 $sem_class->set('name', Request::get("add_name"));
                 $sem_class->set('id', $id);
                 $sem_class->store();
             }
             $this->redirect(URLHelper::getURL($this->url_for('admin/sem_classes/details'), array('id' => $id)));
             PageLayout::postMessage(MessageBox::success(_("Veranstaltungskategorie wurde erstellt.")));
             $GLOBALS['SEM_CLASS'] = SemClass::refreshClasses();
         }
     }
 }
Esempio n. 2
0
 public function add_new_host_action()
 {
     PageLayout::setTitle(_("Neue Lernmaterialien einstellen"));
     if (Request::submitted("nothanx")) {
         $_SESSION['Lernmarktplatz_no_thanx'] = true;
         $this->redirect("admin/hosts");
     } elseif (Request::isPost()) {
         $host = LernmarktplatzHost::findOneByUrl(trim(Request::get("url")));
         if (!$host) {
             $host = new LernmarktplatzHost();
             $host['url'] = trim(Request::get("url"));
             $host['last_updated'] = time();
             $host->fetchPublicKey();
             if ($host['public_key']) {
                 $host->store();
                 PageLayout::postMessage(MessageBox::success(_("Server wurde gefunden und hinzugefügt.")));
             } else {
                 PageLayout::postMessage(MessageBox::error(_("Server ist nicht erreichbar oder hat die Anfrage abgelehnt.")));
             }
         } else {
             $host->fetchPublicKey();
             PageLayout::postMessage(MessageBox::info(_("Server ist schon in Liste.")));
         }
         $this->redirect("admin/hosts");
     }
 }
Esempio n. 3
0
 /**
  * This method edits existing holidays or creates new holidays
  *
  * @param mixed $id Id of the holiday or null to create one
  */
 public function edit_action($id = null)
 {
     $this->holiday = new SemesterHoliday($id);
     PageLayout::setTitle($this->holiday->isNew() ? _('Ferien anlegen') : _('Ferien bearbeiten'));
     if (Request::isPost()) {
         CSRFProtection::verifyUnsafeRequest();
         $this->holiday->name = Request::get('name');
         $this->holiday->description = Request::get('description');
         $this->holiday->beginn = $this->getTimeStamp('beginn');
         $this->holiday->ende = $this->getTimeStamp('ende', '23:59:59');
         $errors = array();
         if (!$this->holiday->name) {
             $errors[] = _('Bitte geben Sie einen Namen ein.');
         }
         if (!$this->holiday->beginn) {
             $errors[] = _('Bitte geben Sie einen Ferienbeginn ein.');
         }
         if (!$this->holiday->ende) {
             $errors[] = _('Bitte geben Sie ein Ferienende ein.');
         }
         if ($this->holiday->beginn > $this->holiday->ende) {
             $errors[] = _('Das Ferienende liegt vor dem Beginn.');
         }
         if (!empty($errors)) {
             PageLayout::postMessage(MessageBox::error(_('Ihre eingegebenen Daten sind ungültig.'), $errors));
         } elseif ($this->holiday->isDirty() && !$this->holiday->store()) {
             PageLayout::postMessage(MessageBox::error(_('Die Ferien konnten nicht gespeichert werden.')));
         } else {
             PageLayout::postMessage(MessageBox::success(_('Die Ferien wurden erfolgreich gespeichert.')));
             $this->relocate('admin/holidays');
         }
     }
 }
Esempio n. 4
0
File: api.php Progetto: ratbird/hope
 /**
  *
  **/
 public function edit_action($id = null)
 {
     $consumer = $id ? RESTAPI\Consumer\Base::find($id) : RESTAPI\Consumer\Base::create(Request::option('consumer_type') ?: 'oauth');
     if (Request::submitted('store')) {
         $errors = array();
         $consumer->active = Request::int('active');
         $consumer->title = Request::get('title');
         $consumer->contact = Request::get('contact');
         $consumer->email = Request::get('email');
         $consumer->callback = Request::get('callback');
         $consumer->url = Request::get('url');
         $consumer->type = Request::get('type');
         $consumer->commercial = Request::int('commercial');
         $consumer->notes = Request::get('notes');
         $consumer->description = Request::get('description');
         if (!empty($errors)) {
             $message = MessageBox::error(_('Folgende Fehler sind aufgetreten:'), $errors);
             PageLayout::postMessage($message);
             return;
         }
         $consumer->store();
         if ($id) {
             $message = MessageBox::success(_('Die Applikation wurde erfolgreich gespeichert.'));
         } else {
             $details = $this->render_keys($consumer->id);
             $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/api/index#' . $consumer->id);
         return;
     }
     $this->consumer = $consumer;
     $this->id = $id;
 }
Esempio n. 5
0
 public function before_filter(&$action, &$args)
 {
     parent::before_filter($action, $args);
     // Lock context to user id
     $this->owner = $GLOBALS['user'];
     $this->context_id = $this->owner->id;
     $this->full_access = true;
     if (Config::get()->PERSONALDOCUMENT_OPEN_ACCESS) {
         $username = Request::username('username', $GLOBALS['user']->username);
         $user = User::findByUsername($username);
         if ($user && $user->id !== $GLOBALS['user']->id) {
             $this->owner = $user;
             $this->context_id = $user->id;
             $this->full_access = Config::get()->PERSONALDOCUMENT_OPEN_ACCESS_ROOT_PRIVILEDGED && $GLOBALS['user']->perms === 'root';
             URLHelper::bindLinkParam('username', $username);
         }
     }
     $this->limit = $GLOBALS['user']->cfg->PERSONAL_FILES_ENTRIES_PER_PAGE ?: Config::get()->ENTRIES_PER_PAGE;
     $this->userConfig = DocUsergroupConfig::getUserConfig($GLOBALS['user']->id);
     if ($this->userConfig['area_close'] == 1) {
         $this->redirect('document/closed/index');
     }
     if (Request::isPost()) {
         CSRFProtection::verifySecurityToken();
     }
     if (($ticket = Request::get('studip-ticket')) && !check_ticket($ticket)) {
         $message = _('Bei der Verarbeitung Ihrer Anfrage ist ein Fehler aufgetreten.') . "\n" . _('Bitte versuchen Sie es erneut.');
         PageLayout::postMessage(MessageBox::error($message));
         $this->redirect('document/files/index');
     }
 }
Esempio n. 6
0
 public function fetchData()
 {
     if ($this->already_fetched) {
         return;
     }
     $this->already_fetched = true;
     try {
         if (!$this->customImportEnabled()) {
             if (in_array($this['source'], array("csv_upload", "extern"))) {
                 return;
             } elseif ($this['source'] === "database") {
                 $this->fetchDataFromDatabase();
                 return;
             } elseif ($this['source'] === "csv_weblink") {
                 $this->fetchDataFromWeblink();
                 return;
             } elseif ($this['source'] === "csv_studipfile") {
                 $output = $this->getCSVDataFromFile(get_upload_file_path($this['tabledata']['weblink']['file_id']), ";");
                 $headline = array_shift($output);
                 $this->createTable($headline, $output);
                 return;
             }
         } else {
             $this->getPlugin()->fetchData();
         }
     } catch (Exception $e) {
         PageLayout::postMessage(MessageBox::error(sprintf(_("Konnte Tabelle '%s' nicht mit Daten befüllen."), $this['name'])));
     }
 }
Esempio n. 7
0
 /**
  * checks, if tour step data is complete
  * 
  * @return boolean true or false
  */
 function validate()
 {
     if ($this->isNew()) {
     }
     if (!$this->orientation) {
         $this->orientation = 'B';
     }
     if (!$this->title and !$this->tip) {
         PageLayout::postMessage(MessageBox::error(_('Der Schritt muss einen Titel oder Inhalt besitzen.')));
         return false;
     }
     if (!$this->route) {
         PageLayout::postMessage(MessageBox::error(_('Ungültige oder fehlende Angabe zur Seite, für die der Schritt angezeigt werden soll.')));
         return false;
     }
     return true;
 }
Esempio n. 8
0
 public function display_action($range_id)
 {
     // Bind some params
     URLHelper::bindLinkParam('show_expired', $null1);
     URLHelper::bindLinkParam('preview', $null2);
     URLHelper::bindLinkParam('revealNames', $null3);
     URLHelper::bindLinkParam('sort', $null4);
     // Bind range_id
     $this->range_id = $range_id;
     $this->nobody = !$GLOBALS['user']->id || $GLOBALS['user']->id == 'nobody';
     /*
      * Insert vote
      */
     if ($vote = Request::get('vote')) {
         $vote = new StudipVote($vote);
         if (!$this->nobody && $vote && $vote->isRunning() && (!$vote->userVoted() || $vote->changeable)) {
             try {
                 $vote->insertVote(Request::getArray('vote_answers'), $GLOBALS['user']->id);
             } catch (Exception $exc) {
                 $GLOBALS['vote_message'][$vote->id] = MessageBox::error($exc->getMessage());
             }
         }
     }
     // Check if we need administration icons
     $this->admin = $range_id == $GLOBALS['user']->id || $GLOBALS['perm']->have_studip_perm('tutor', $range_id);
     // Load evaluations
     if (!$this->nobody) {
         $eval_db = new EvaluationDB();
         $this->evaluations = StudipEvaluation::findMany($eval_db->getEvaluationIDs($range_id, EVAL_STATE_ACTIVE));
     } else {
         $this->evaluations = array();
     }
     $show_votes[] = 'active';
     // Check if we got expired
     if (Request::get('show_expired')) {
         $show_votes[] = 'stopvis';
         if ($this->admin) {
             $this->evaluations = array_merge($this->evaluations, StudipEvaluation::findMany($eval_db->getEvaluationIDs($range_id, EVAL_STATE_STOPPED)));
             $show_votes[] = 'stopinvis';
         }
     }
     $this->votes = StudipVote::findBySQL('range_id = ? AND state IN (?) ORDER BY mkdate desc', array($range_id, $show_votes));
     $this->visit();
 }
Esempio n. 9
0
 /**
  * Administration page for help content
  */
 function admin_overview_action()
 {
     // check permission
     if (!$GLOBALS['auth']->is_authenticated() || $GLOBALS['user']->id === 'nobody') {
         throw new AccessDeniedException();
     }
     $GLOBALS['perm']->check('root');
     // initialize
     PageLayout::setTitle(_('Verwalten von Hilfe-Texten'));
     PageLayout::setHelpKeyword('Basis.HelpContentAdmin');
     // set navigation
     Navigation::activateItem('/admin/config/help_content');
     if (Request::get('help_content_filter') == 'set') {
         $this->help_content_searchterm = Request::option('help_content_filter_term');
     }
     if (Request::submitted('reset_filter')) {
         $this->help_content_searchterm = '';
     }
     if (Request::submitted('apply_help_content_filter')) {
         if (Request::get('help_content_searchterm') and strlen(trim(Request::get('help_content_searchterm'))) < 3) {
             PageLayout::postMessage(MessageBox::error(_('Der Suchbegriff muss mindestens 3 Zeichen lang sein.')));
         }
         if (strlen(trim(Request::get('help_content_searchterm'))) >= 3) {
             $this->help_content_searchterm = htmlReady(Request::get('help_content_searchterm'));
             $this->filter_text = sprintf(_('Angezeigt werden Hilfe-Texte zum Suchbegriff "%s".'), $this->help_content_searchterm);
         }
     }
     // load help content
     $this->help_contents = HelpContent::GetContentByFilter($this->help_content_searchterm);
     // save settings
     if (Request::submitted('save_help_content_settings')) {
         foreach ($this->help_contents as $help_content_id => $help_content) {
             // set status as chosen
             if (Request::get('help_content_status_' . $help_content_id) == '1' and !$this->help_contents[$help_content_id]->visible) {
                 $this->help_contents[$help_content_id]->visible = 1;
                 $this->help_contents[$help_content_id]->store();
             } elseif (Request::get('help_content_status_' . $help_content_id) != '1' and $this->help_contents[$help_content_id]->visible) {
                 $this->help_contents[$help_content_id]->visible = 0;
                 $this->help_contents[$help_content_id]->store();
             }
         }
     }
 }
Esempio n. 10
0
 /**
  * Toggles whether a certain smiley is favored for the current user
  *
  * @param int    $id    Id of the smiley to favor/disfavor
  * @param String $view  View to return to
  */
 function favor_action($id, $view)
 {
     try {
         $state = $this->favorites->toggle($id);
         $message = $state ? _('Der Smiley wurde zu Ihren Favoriten hinzugefügt.') : _('Der Smiley gehört nicht mehr zu Ihren Favoriten.');
         $msg_box = MessageBox::success($message);
     } catch (OutOfBoundsException $e) {
         $state = $this->favorites->contain($id);
         $message = _('Maximale Favoritenzahl erreicht. Vielleicht sollten Sie mal ausmisten? :)');
         $msg_box = MessageBox::error($message);
     }
     if (Request::isXhr()) {
         $this->response->add_header('Content-Type', 'application/json');
         $this->render_text(json_encode(array('state' => $state, 'message' => studip_utf8encode($msg_box))));
     } else {
         PageLayout::postMessage($msg_box);
         $this->redirect('smileys/index/' . $view . '#smiley' . $id);
     }
 }
Esempio n. 11
0
 public function decline_inst_action($inst_id)
 {
     $institut = Institute::find($inst_id);
     $ticket_check = Seminar_Session::check_ticket(Request::option('studipticket'));
     if (Request::option('cmd') != 'kill' && Request::get('cmd') != 'back') {
         $this->flash['decline_inst'] = true;
         $this->flash['inst_id'] = $inst_id;
         $this->flash['name'] = $institut->name;
         $this->flash['studipticket'] = Seminar_Session::get_ticket();
     } else {
         if (Request::get('cmd') == 'kill' && $ticket_check && Request::get('cmd') != 'back') {
             $query = "DELETE FROM user_inst WHERE user_id = ? AND Institut_id = ? AND inst_perms = 'user'";
             $statement = DBManager::get()->prepare($query);
             $statement->execute(array($GLOBALS['user']->id, $inst_id));
             if ($statement->rowCount() > 0) {
                 PageLayout::postMessage(MessageBox::success(sprintf(_("Die Zuordnung zur Einrichtung %s wurde aufgehoben."), "<b>" . htmlReady($institut->name) . "</b>")));
             } else {
                 PageLayout::postMessage(MessageBox::error(_('Datenbankfehler')));
             }
         }
     }
     $this->redirect('my_institutes/index');
 }
Esempio n. 12
0
 /**
  *
  **/
 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;
 }
Esempio n. 13
0
 /**
  * This action remove a user from course
  * @param $course_id
  */
 public function decline_action($course_id, $waiting = null)
 {
     $current_seminar = Seminar::getInstance($course_id);
     $ticket_check = Seminar_Session::check_ticket(Request::option('studipticket'));
     if (LockRules::Check($course_id, 'participants')) {
         $lockdata = LockRules::getObjectRule($course_id);
         PageLayout::postMessage(MessageBox::error(sprintf(_("Sie können sich nicht von der Veranstaltung <b>%s</b> abmelden."), htmlReady($current_seminar->name))));
         if ($lockdata['description']) {
             PageLayout::postMessage(MessageBox::info(formatLinks($lockdata['description'])));
         }
         $this->redirect('my_courses/index');
         return;
     }
     if (Request::option('cmd') == 'back') {
         $this->redirect('my_courses/index');
         return;
     }
     if (Request::option('cmd') != 'kill' && Request::option('cmd') != 'kill_admission') {
         if ($current_seminar->admission_binding && Request::get('cmd') != 'suppose_to_kill_admission' && !LockRules::Check($current_seminar->getId(), 'participants')) {
             PageLayout::postMessage(MessageBox::error(sprintf(_("Die Veranstaltung <b>%s</b> ist als <b>bindend</b> angelegt.\n                    Wenn Sie sich abmelden wollen, müssen Sie sich an die Lehrende der Veranstaltung wenden."), htmlReady($current_seminar->name))));
             $this->redirect('my_courses/index');
             return;
         }
         if (Request::get('cmd') == 'suppose_to_kill') {
             // check course admission
             list(, $admission_end_time) = @array_values($current_seminar->getAdmissionTimeFrame());
             $admission_enabled = $current_seminar->isAdmissionEnabled();
             $admission_locked = $current_seminar->isAdmissionLocked();
             if ($admission_enabled || $admission_locked || (int) $current_seminar->admission_prelim == 1) {
                 $message = sprintf(_('Wollen Sie sich von der teilnahmebeschränkten Veranstaltung "%s" wirklich abmelden? Sie verlieren damit die Berechtigung für die Veranstaltung und müssen sich ggf. neu anmelden!'), $current_seminar->name);
             } else {
                 if (isset($admission_end_time) && $admission_end_time < time()) {
                     $message = sprintf(_('Wollen Sie sich von der teilnahmebeschränkten Veranstaltung "%s" wirklich abmelden? Der Anmeldzeitraum ist abgelaufen und Sie können sich nicht wieder anmelden!'), $current_seminar->name);
                 } else {
                     $message = sprintf(_('Wollen Sie sich von der Veranstaltung "%s" wirklich abmelden?'), $current_seminar->name);
                 }
             }
             $this->flash['cmd'] = 'kill';
         } else {
             if (admission_seminar_user_get_position($GLOBALS['user']->id, $course_id) === false) {
                 $message = sprintf(_('Wollen Sie sich von der Anmeldeliste der Veranstaltung "%s" wirklich abmelden?'), $current_seminar->name);
             } else {
                 $message = sprintf(_('Wollen Sie sich von der Warteliste der Veranstaltung "%s" wirklich abmelden? Sie verlieren damit die bereits erreichte Position und müssen sich ggf. neu anmelden!'), $current_seminar->name);
             }
             $this->flash['cmd'] = 'kill_admission';
         }
         $this->flash['decline_course'] = true;
         $this->flash['course_id'] = $course_id;
         $this->flash['message'] = $message;
         $this->flash['studipticket'] = Seminar_Session::get_ticket();
         $this->redirect('my_courses/index');
         return;
     } else {
         if (!LockRules::Check($course_id, 'participants') && $ticket_check && Request::option('cmd') != 'back' && Request::get('cmd') != 'kill_admission') {
             $query = "DELETE FROM seminar_user WHERE user_id = ? AND Seminar_id = ?";
             $statement = DBManager::get()->prepare($query);
             $statement->execute(array($GLOBALS['user']->id, $course_id));
             if ($statement->rowCount() == 0) {
                 PageLayout::postMessage(MessageBox::error(_('In der ausgewählten Veranstaltung wurde die gesuchten Personen nicht gefunden und konnte daher nicht ausgetragen werden.')));
             } else {
                 // LOGGING
                 StudipLog::log('SEM_USER_DEL', $course_id, $GLOBALS['user']->id, 'Hat sich selbst ausgetragen');
                 // enable others to do something after the user has been deleted
                 NotificationCenter::postNotification('UserDidLeaveCourse', $course_id, $GLOBALS['user']->id);
                 // Delete from statusgroups
                 RemovePersonStatusgruppeComplete(get_username(), $course_id);
                 // Are successor available
                 update_admission($course_id);
                 PageLayout::postMessage(MessageBox::success(sprintf(_("Erfolgreich von Veranstaltung <b>%s</b> abgemeldet."), htmlReady($current_seminar->name))));
             }
         } else {
             // LOGGING
             StudipLog::log('SEM_USER_DEL', $course_id, $GLOBALS['user']->id, 'Hat sich selbst aus der Warteliste ausgetragen');
             if ($current_seminar->isAdmissionEnabled()) {
                 $prio_delete = AdmissionPriority::unsetPriority($current_seminar->getCourseSet()->getId(), $GLOBALS['user']->id, $course_id);
             }
             $query = "DELETE FROM admission_seminar_user WHERE user_id = ? AND seminar_id = ?";
             $statement = DBManager::get()->prepare($query);
             $statement->execute(array($GLOBALS['user']->id, $course_id));
             if ($statement->rowCount() || $prio_delete) {
                 //Warteliste neu sortieren
                 renumber_admission($course_id);
                 //Pruefen, ob es Nachruecker gibt
                 update_admission($course_id);
                 PageLayout::postMessage(MessageBox::success(sprintf(_("Der Eintrag in der Anmelde- bzw. Warteliste der Veranstaltung <b>%s</b> wurde aufgehoben.\n                    Wenn Sie an der Veranstaltung teilnehmen wollen, müssen Sie sich erneut bewerben."), htmlReady($current_seminar->name))));
             }
         }
         $this->redirect('my_courses/index');
         return;
     }
 }
Esempio n. 14
0
function my_error($msg, $class="blank", $colspan=2, $add_row='', $small='')
{
    echo '<tr><td class="'.$class.'" colspan="'.$colspan.'">';
    echo MessageBox::error($msg);
    echo '</td></tr>';
}
Esempio n. 15
0
File: scm.php Progetto: ratbird/hope
 /**
  * Deletes a page.
  *
  * @param String $id Id of the page to delete
  */
 public function delete_action($id)
 {
     $ticket = Request::option('ticket');
     if ($ticket && check_ticket($ticket)) {
         $scm = new StudipScmEntry($id);
         if (!$scm->isNew() && $scm->range_id == $GLOBALS['SessSemName'][1]) {
             $scm->delete();
             PageLayout::postMessage(MessageBox::success(_('Der Eintrag wurde gelöscht.')));
         }
         $this->redirect('course/scm');
         return;
     }
     PageLayout::postMessage(MessageBox::error(_('Es ist ein Fehler aufgetreten. Bitte versuchen Sie erneut, diese Seite zu löschen.')));
     $this->redirect('course/scm/' . $id);
 }
Esempio n. 16
0
 /**
  * Delete an existing user domain.
  */
 function delete_action()
 {
     $id = Request::get('id');
     $domain = new UserDomain($id);
     if (count($domain->getUsers()) == 0) {
         $domain->delete();
     } else {
         $this->message = MessageBox::error(_('Domänen, denen noch Personen zugewiesen sind, können nicht gelöscht werden.'));
     }
     $this->domains = UserDomain::getUserDomains();
     $this->render_action('index');
 }
Esempio n. 17
0
 /**
  * Deletes the given entry from step registry.
  * @param $id ID of the entry to delete
  */
 public function delete_action($id)
 {
     CSRFProtection::verifyUnsafeRequest();
     if (Request::submitted('delete')) {
         $step = CourseWizardStepRegistry::find($id);
         if ($step) {
             $name = $step->name;
             if (CourseWizardStepRegistry::unregisterStep($id)) {
                 PageLayout::postMessage(MessageBox::success(sprintf(_('Der Schritt "%s" wurde gelöscht.'), $name)));
             } else {
                 PageLayout::postMessage(MessageBox::error(sprintf(_('Der Schritt %s konnte nicht gelöscht werden.'), $name)));
             }
         }
     }
     $this->redirect($this->url_for('admin/coursewizardsteps'));
 }
Esempio n. 18
0
     $details[] = _('Und Sie müssen den vollständigen Link aus der Bestätigungsmail in die Adresszeile Ihres Browsers kopieren.');
     $message = MessageBox::error($error, $details);
     // Mail an abuse
     $REMOTE_ADDR = getenv("REMOTE_ADDR");
     $Zeit = date("H:i:s, d.m.Y", time());
     $username = $auth->auth["uname"];
     StudipMail::sendAbuseMessage("Validation", "Secret falsch\n\nUser: {$username}\n\nIP: {$REMOTE_ADDR}\nZeit: {$Zeit}\n");
 } else {
     if ($secret == $hash) {
         $query = "UPDATE auth_user_md5 SET perms = 'autor' WHERE user_id = ?";
         $statement = DBManager::get()->prepare($query);
         $statement->execute(array($user->id));
         if ($statement->rowCount() == 0) {
             $error = _('Fehler! Bitte wenden Sie sich an den Systemadministrator.');
             $details = array($query);
             $message = MessageBox::error($error, $details);
         } else {
             $success = _('Ihr Status wurde erfolgreich auf <em>autor</em> gesetzt.<br>
               Damit dürfen Sie in den meisten Veranstaltungen schreiben, für die Sie sich anmelden.');
             $details = array();
             $details[] = _('Einige Veranstaltungen erfordern allerdings bei der Anmeldung die Eingabe eines Passwortes.
                 Dieses Passwort erfahren Sie von den Lehrenden der Veranstaltung.');
             $message = MessageBox::success($success, $details);
             // Auto-Inserts
             AutoInsert::instance()->saveUser($user->id, "autor");
             $auth->logout();
             // einen Logout durchführen, um erneuten Login zu erzwingen
             $info = sprintf(_('Die Statusänderung wird erst nach einem erneuten %sLogin%s wirksam!<br>
                   Deshalb wurden Sie jetzt automatisch ausgeloggt.'), '<a href="index.php?again=yes"><em>', '</em></a>');
             $message .= MessageBox::info($info);
         }
Esempio n. 19
0
 /**
  * Administration page for tours
  */
 function admin_overview_action()
 {
     // check permission
     if (!$GLOBALS['auth']->is_authenticated() || $GLOBALS['user']->id === 'nobody') {
         throw new AccessDeniedException();
     }
     $GLOBALS['perm']->check('root');
     // initialize
     PageLayout::setTitle(_('Verwalten von Touren'));
     PageLayout::setHelpKeyword('Basis.TourAdmin');
     // set navigation
     Navigation::activateItem('/admin/config/tour');
     if (Request::get('tour_filter') == 'set') {
         $this->tour_searchterm = Request::option('tour_filter_term');
     }
     if (Request::submitted('reset_filter')) {
         $this->tour_searchterm = '';
     }
     if (Request::submitted('apply_tour_filter')) {
         if (Request::get('tour_searchterm') and strlen(trim(Request::get('tour_searchterm'))) < 3) {
             PageLayout::postMessage(MessageBox::error(_('Der Suchbegriff muss mindestens 3 Zeichen lang sein.')));
         }
         if (strlen(trim(Request::get('tour_searchterm'))) >= 3) {
             $this->tour_searchterm = htmlReady(Request::get('tour_searchterm'));
             $this->filter_text = sprintf(_('Angezeigt werden Touren zum Suchbegriff "%s".'), $this->tour_searchterm);
         }
     }
     // delete tour
     if (Request::option('confirm_delete_tour')) {
         CSRFProtection::verifySecurityToken();
         $this->delete_tour(Request::option('tour_id'));
     }
     // load tours
     $this->tours = HelpTour::GetToursByFilter($this->tour_searchterm);
     foreach ($this->tours as $tour_id => $tour) {
         if (Request::submitted('tour_remove_' . $tour_id)) {
             $this->delete_question = $this->delete_tour($tour_id);
         }
     }
     // save settings
     if (Request::submitted('save_tour_settings')) {
         foreach ($this->tours as $tour_id => $tour) {
             // set status as chosen
             if (Request::get('tour_status_' . $tour_id) == '1' and !$this->tours[$tour_id]->settings->active) {
                 $this->tours[$tour_id]->settings->active = 1;
                 $this->tours[$tour_id]->store();
             } elseif (Request::get('tour_status_' . $tour_id) != '1' and $this->tours[$tour_id]->settings->active) {
                 $this->tours[$tour_id]->settings->active = 0;
                 $this->tours[$tour_id]->store();
             }
         }
     }
 }
Esempio n. 20
0
/**
 * generates proper text for confirmation question and removes range_id from news
 *
 *
 * @param $remove_array array with $news_id as key and array of range_ids as value
 * @param string $range_id
 * @return string text for confirmation question or empty string after removal
 */
function remove_news($remove_array)
{
    $confirmed = false;
    $question_text = array();
    if (!is_array($remove_array)) {
        return false;
    }
    if (Request::submitted('yes') and Request::isPost()) {
        CSRFProtection::verifySecurityToken();
        $confirmed = true;
    }
    foreach ($remove_array as $news_id => $ranges) {
        $remove_news = new StudipNews($news_id);
        $remove_news_title = $remove_news->getValue('topic');
        if (!is_array($ranges)) {
            $ranges = array($ranges);
        }
        // should we delete news completely
        if (count($ranges) == count($remove_news->getRanges())) {
            $text = delete_news($news_id);
            if ($text) {
                $question_text[] = $text;
            }
            // or just remove range_id(s)?
        } else {
            $text = '';
            if ($confirmed and !$remove_news->isNew() and count($ranges)) {
                foreach ($ranges as $key => $range_id) {
                    if ($remove_news->havePermission('unassign', $range_id)) {
                        $remove_news->deleteRange($range_id);
                    } else {
                        unset($ranges[$key]);
                        PageLayout::postMessage(MessageBox::error(sprintf(_('Keine Berechtigung zum Entfernen der Ankündigung "%s" aus diesem Bereich.'), htmlReady($remove_news->getValue('topic')))));
                    }
                    if (count($ranges)) {
                        if (count($ranges) == 1) {
                            PageLayout::postMessage(MessageBox::success(sprintf(_('Ankündigung "%s" wurde aus dem Bereich entfernt.'), htmlReady($remove_news->getValue('topic')))));
                        } else {
                            PageLayout::postMessage(MessageBox::success(sprintf(_('Ankündigung "%s" wurde aus %s Bereichen entfernt.'), htmlReady($remove_news->getValue('topic')), count($ranges))));
                        }
                        $remove_news->store();
                    }
                }
            } elseif (!$confirmed) {
                if (count($ranges) == 1) {
                    $text = sprintf(_('- Die Ankündigung "%s" wird aus dem aktiven Bereich entfernt. ' . 'Sie wird dadurch nicht endgültig gelöscht. Es wird nur die Zuordnung entfernt.'), $remove_news_title) . "\n";
                } elseif (count($ranges) > 1) {
                    $text = sprintf(_('- Die Ankündigung "%s" wird aus den %s gewählten Bereichen entfernt. ' . 'Sie wird dadurch nicht endgültig gelöscht. Es werden nur die Zuordnungen entfernt.'), $remove_news_title, count($ranges)) . "\n";
                }
            }
            if ($text) {
                $question_text[] = $text;
            }
        }
    }
    if (count($question_text) > 1) {
        return _('Wollen Sie die folgenden Aktionen jetzt ausführen?') . "\n" . implode($question_text);
    } elseif (count($question_text) == 1) {
        return _('Wollen Sie diese Aktion jetzt ausführen?') . "\n" . implode($question_text);
    }
}
Esempio n. 21
0
<?php
# Lifter010: TODO
use Studip\Button, Studip\LinkButton;


/* * * * * * * * * * * *
 * * * O U T P U T * * *
 * * * * * * * * * * * */

?>

<?= $this->render_partial("course/studygroup/_feedback") ?>
<? if (!$configured): ?>
    <?= MessageBox::error(_('Keine Veranstaltungsart für Studiengruppen gefunden'),
        array(sprintf(_('Die Standardkonfiguration für Studiengruppen in der Datei <b>%s</b> fehlt oder ist unvollständig.'),
                'config.inc.php'))) ?>
<? endif ?>
<? if (!Config::getInstance()->getValue('STUDYGROUPS_ENABLE')):?>
    <?= MessageBox::info( _("Die Studiengruppen sind derzeit <b>nicht</b> aktiviert.")
            . '<br>'. _("Zum Aktivieren füllen Sie bitte das Formular aus und klicken Sie auf \"Speichern\".")); ?>
<? else: ?>
    <? if ($can_deactivate) : ?>
        <?= MessageBox::info( _("Die Studiengruppen sind aktiviert.")) ?>
        <form action="<?= $controller->url_for('course/studygroup/deactivate') ?>" method="post">
        <?= CSRFProtection::tokenTag() ?>
        <?= Button::create(_("Deaktivieren"), 'deaktivieren') ?>
        </form>
    <? else: ?>
        <?= MessageBox::info(_("Sie können die Studiengruppen nicht deaktivieren, solange noch welche in Stud.IP vorhanden sind!")) ?>
    <? endif; ?>
    <br>
Esempio n. 22
0
    function setDefaultConfiguration ($config) {
        foreach ($config as $element_name => $element) {
            if (is_array($element)) foreach ($element as $attribute => $value) {
                if ((string)$value{0} == '|') {
                    $new_config[$element_name][$attribute] = explode('|', substr($value, 1));
                } else {
                    $new_config[$element_name][$attribute] = $value;
                }
            }
        }

        $this->id = $this->makeId();
        $this->config_name = $this->createConfigName($this->range_id);
        
        // take the new configuration, write the name in the configuration
        // insert it into the database and store it (method of storaging deepends on
        // object type)
        $this->config = $new_config;
        $this->setValue('Main', 'name', $this->config_name);
        if ($this->insertConfiguration()) {
            $this->store();
        } else {
            echo MessageBox::error(_("Sie haben die maximale Anzahl an Konfigurationen für dieses Modul erreicht! Kopieren fehlgeschlagen!"));
            ExternModule::printError();
        }
    }
Esempio n. 23
0
<?
# Lifter010: TODO
use Studip\Button, Studip\LinkButton;

?>
<?php 
echo isset($flash['error']) ? MessageBox::error($flash['error'], $flash['error_detail']) : '';
?>
<form action="<?php 
echo $controller->url_for('admin/studycourse/edit_profession/' . $edit['studiengang_id']);
?>
" method="post">
    <?php 
echo CSRFProtection::tokenTag();
?>
    <table class="default">
        <tr class="table_row_odd">
            <td><?php 
echo _("Name des Studienfaches:");
?>
 </td>
            <td><input type="text" name="professionname" size="60" maxlength="254" value="<?php 
echo htmlReady($edit['name']);
?>
"></td>
        </tr>
        <tr class="table_row_even">
            <td><?php 
echo _("Beschreibung:");
?>
 </td>
Esempio n. 24
0
<? use Studip\Button, Studip\LinkButton; ?>
<h1><?php 
echo _('Manuelle Zuordnung');
?>
</h1>
<?php 
echo isset($flash['error']) ? MessageBox::error($flash['error']) : '';
echo isset($flash['success']) ? MessageBox::success($flash['success']) : '';
echo isset($flash['info']) ? MessageBox::info($flash['info']) : '';
?>
<form action="<?php 
echo $controller->url_for('course/members/set_autor_csv');
?>
" method="post" name="user">
<?php 
echo CSRFProtection::tokenTag();
?>
<table class="default">
    <thead>
        <tr>
            <th class="topic" colspan="2"><?php 
echo sprintf(_('Folgende %s konnten <b>nicht eindeutig</b> zugewiesen werden. Bitte wählen Sie aus der jeweiligen Trefferliste:'), htmlReady($status_groups['autor']));
?>
</th>
        </tr>
    </thead>
    <tbody>
        <? foreach($flash['csv_mult_founds'] as $name => $csv_mult_found) : ?>
        <tr>
            <td style="width: 40%"><?php 
echo htmlReady(mila($name, 50));
Esempio n. 25
0
<?php

echo MessageBox::error(_('Dieses Profil ist nicht verf�gbar.'), array(_('Der Benutzer hat sich unsichtbar geschaltet oder ist im System nicht vorhanden.')));
Esempio n. 26
0
 /**
  * Convenience method: Post an error message box.
  *
  * @param String $message       Error message to diplay
  * @param Array  $details       Additional details (optional)
  * @param bool   $close_details Show the details closed (optional,
  *                              defaults to false)
  */
 public static function postError($message, $details = array(), $close_details = false)
 {
     self::postMessage(MessageBox::error($message, $details, $close_details));
 }
Esempio n. 27
0
 /**
  * @deprecated since Stud.IP version 1.10
  *
  * @param unknown_type $text
  * @param unknown_type $colspan
  */
 static function showErrorMessage($text, $colspan = 2)
 {
     echo MessageBox::error($text);
 }
Esempio n. 28
0
 /**
  * Displays accounts and elearning modules for active user
  */
 public function my_accounts_action()
 {
     global $connected_cms, $current_module, $messages;
     Navigation::activateItem('/tools/my_elearning');
     PageLayout::setTitle(_("Meine Lernmodule und Benutzer-Accounts"));
     if ($this->new_account_cms != "") {
         $this->new_account_form = ELearningUtils::getNewAccountForm($this->new_account_cms);
     }
     foreach ($GLOBALS['ELEARNING_INTERFACE_MODULES'] as $cms => $cms_preferences) {
         if (ELearningUtils::isCMSActive($cms)) {
             ELearningUtils::loadClass($cms);
             if ($cms_preferences["auth_necessary"] == true) {
                 $this->new_module_form[$cms] = ELearningUtils::getNewModuleForm($cms);
             }
             $connection_status = $connected_cms[$cms]->getConnectionStatus($cms);
             foreach ($connection_status as $type => $msg) {
                 if ($msg["error"] != "") {
                     PageLayout::postMessage(MessageBox::error(_("Es traten Probleme bei der Anbindung einzelner Lermodule auf. Bitte wenden Sie sich an Ihren Systemadministrator."), array($cms . ': ' . $msg["error"])));
                     $GLOBALS["ELEARNING_INTERFACE_" . $cms . "_ACTIVE"] = false;
                 }
             }
         }
     }
     $connected_cms = array();
     // prepare cms list
     foreach ($GLOBALS['ELEARNING_INTERFACE_MODULES'] as $cms => $cms_preferences) {
         if (ELearningUtils::isCMSActive($cms) and $cms_preferences["auth_necessary"]) {
             ELearningUtils::loadClass($cms);
             $this->cms_list[$cms] = $cms_preferences;
             $this->cms_list[$cms]['name'] = $connected_cms[$cms]->getName();
             $this->cms_list[$cms]['logo'] = $connected_cms[$cms]->getLogo();
             $this->cms_list[$cms]['modules'] = array();
             if ($this->new_account_cms != $cms) {
                 $this->cms_list[$cms]['show_account_form'] = $cms_preferences;
             }
             if ($GLOBALS["module_type_" . $cms] != "") {
                 $this->cms_list[$cms]['cms_anker_target'] = true;
             }
             if ($connected_cms[$cms]->user->isConnected()) {
                 $this->cms_list[$cms]['start_link'] = $connected_cms[$cms]->link->getStartpageLink();
             }
             if ($this->new_account_cms != $cms) {
                 if ($connected_cms[$cms]->user->isConnected()) {
                     $this->cms_list[$cms]['user'] = $connected_cms[$cms]->user->getUsername();
                     $connected_cms[$cms]->soap_client->setCachingStatus(false);
                     $this->user_content_modules = $connected_cms[$cms]->getUserContentModules();
                     $connected_cms[$cms]->soap_client->setCachingStatus(true);
                     if (!($this->user_content_modules == false)) {
                         foreach ($this->user_content_modules as $key => $connection) {
                             $connected_cms[$cms]->setContentModule($connection, false);
                             $this->cms_list[$cms]['modules'][] = $connected_cms[$cms]->content_module[$current_module]->view->show();
                         }
                     }
                     $this->cms_list[$cms]['new_module_form'] = $this->new_module_form[$cms];
                 }
             } else {
                 $this->cms_list[$cms]['account_form'] = $this->new_account_form;
             }
         }
     }
     $sidebar = Sidebar::get();
     $sidebar->setImage('sidebar/learnmodule-sidebar.png');
     $widget = new ActionsWidget();
     if ($GLOBALS['perm']->have_perm('autor') and count($this->cms_list)) {
         foreach ($this->cms_list as $cms_key => $cms_data) {
             if ($connected_cms[$cms_key]->user->isConnected()) {
                 $widget->addLink(sprintf(_('Zur %s Startseite'), $cms_data['name']), URLHelper::getScriptLink($cms_data['start_link']), Icon::create('link-extern', 'clickable'), array('target' => '_blank'));
                 $link_count++;
             }
         }
     }
     if ($link_count) {
         $sidebar->addWidget($widget);
     }
     // terminate objects
     if (is_array($connected_cms)) {
         foreach ($connected_cms as $system) {
             $system->terminate();
         }
     }
     if (is_array($messages)) {
         foreach ($messages as $mtype => $mtext) {
             PageLayout::postMessage(MessageBox::$mtype($mtext));
         }
     }
 }
Esempio n. 29
0
<?php

use Studip\Button, Studip\LinkButton;
Helpbar::get()->addPlainText(_('Regeln'), _('Hier können Sie die Regeln, Eigenschaften und Zuordnungen des Anmeldesets bearbeiten.'));
Helpbar::get()->addPlainText(_('Info'), _('Sie können das Anmeldeset allen Einrichtungen zuordnen, an denen Sie mindestens Dozentenrechte haben.'));
Helpbar::get()->addPlainText(_('Sichtbarkeit'), _('Alle Veranstaltungen der Einrichtungen, an denen Sie mindestens Dozentenrechte haben, können zum Anmeldeset hinzugefügt werden.'));
// Load assigned course IDs.
$courseIds = $courseset ? $courseset->getCourses() : array();
// Load assigned user list IDs.
$userlistIds = $courseset ? $courseset->getUserlists() : array();
if ($flash['error']) {
    echo MessageBox::error($flash['error']);
}
?>
<div class="hidden-alert" style="display:none">
    <?php 
echo MessageBox::info(_("Diese Daten sind noch nicht gespeichert."));
?>
</div>
<?php 
echo $this->render_partial('dialog/confirm_dialog');
?>
<h1><?php 
echo $courseset ? _('Anmeldeset bearbeiten') : _('Anmeldeset anlegen');
?>
</h1>
<form class="studip_form" action="<?php 
echo $controller->url_for(!$instant_course_set_view ? 'admission/courseset/save/' . ($courseset ? $courseset->getId() : '') : 'course/admission/save_courseset/' . $courseset->getId());
?>
" method="post">
    <fieldset>
Esempio n. 30
0
 /**
  * Displays upload form and processes the upload command
  *
  * @param String $view View to return to if canceled
  */
 public function upload_action($view)
 {
     PageLayout::setTitle(_('Neues Smiley hochladen'));
     if (!Request::submitted('upload')) {
         $this->view = $view;
         return;
     }
     // File submitted?
     $upload = $_FILES['smiley_file'];
     if (empty($upload) or empty($upload['name'])) {
         $error = _('Sie haben keine Datei zum Hochladen ausgewählt!');
         PageLayout::postMessage(MessageBox::error($error));
         return;
     }
     // Error upon upload?
     if ($upload['error']) {
         $error = _('Es gab einen Fehler beim Upload. Bitte versuchen Sie es erneut.');
         PageLayout::postMessage(MessageBox::error($error));
         return;
     }
     // Correct mime-type?
     $no_image = !empty($upload['type']) && substr($upload['type'], 0, 5) != 'image';
     if (!$no_image) {
         $image_info = getimagesize($upload['tmp_name']);
         // Used later on!
         $no_gif = $image_info[2] != IMAGETYPE_GIF;
     }
     if ($no_image) {
         $error = _('Die Datei ist keine Bilddatei');
         PageLayout::postMessage(MessageBox::error($error));
         return;
     }
     // Extract smiley information
     $smiley_file = $upload['name'];
     $smiley_name = substr($smiley_file, 0, strrpos($smiley_file, '.'));
     // Replace smiley?
     $smiley = Smiley::getByName($smiley_name);
     $replace = Request::int('replace');
     if ($smiley->id && !$replace) {
         $error = sprintf(_('Es ist bereits eine Bildatei mit dem Namen "%s" vorhanden.'), $smiley_file);
         PageLayout::postMessage(MessageBox::error($error));
         return;
     }
     // Copy file into file system
     $destination = Smiley::getFilename($smiley_file);
     if (!move_uploaded_file($upload['tmp_name'], $destination)) {
         $error = _('Es ist ein Fehler beim Kopieren der Datei aufgetreten. Das Bild wurde nicht hochgeladen!');
         PageLayout::postMessage(MessageBox::error($error));
         return;
     }
     // set permissions for uploaded file
     chmod($destination, 0666 & ~umask());
     // Import smiley into database
     Smiley::refresh($destination);
     // Output appropriate wurde message
     $message = $replace ? sprintf(_('Die Bilddatei "%s" wurde erfolgreich ersetzt.'), $smiley_file) : sprintf(_('Die Bilddatei "%s" wurde erfolgreich hochgeladen.'), $smiley_file);
     PageLayout::postMessage(MessageBox::success($message));
     // Return to index and display the view the uploaded smiley is in
     $this->redirect('admin/smileys?view=' . $smiley_file[0]);
 }