private function contact()
 {
     $isSent = Request::get(0, VAR_URI) == 'send';
     $options = array('name' => array(Validator::MESSAGE => 'Der Name muss mindestens 5 und darf maximal 150 Zeichen lang sein.', Validator::MIN_LENGTH => 5, Validator::MAX_LENGTH => 150), 'email' => array(Validator::MESSAGE => 'Die E-Mail-Adresse ist nicht korrekt.', Validator::CALLBACK => Validator::CB_MAIL), 'message' => array(Validator::MESSAGE => 'Die Nachricht entspricht nicht den Vorgaben (mindestens 10 Zeichen, maximal 1000 Zeichen).', Validator::MIN_LENGTH => 10, Validator::MAX_LENGTH => 1000), 'title' => array(Validator::MESSAGE => 'Der Titel entspricht nicht den Vorgaben (mindestens 5 Zeichen, maximal 100 Zeichen).', Validator::MIN_LENGTH => 5, Validator::MAX_LENGTH => 100));
     $this->enableClientFormValidation($options);
     // Don't validate the captcha via ajax as the session would end
     if (Config::get('captcha.enable')) {
         Core::loadClass('Core.Security.ReCaptcha');
         $options['recaptcha_response_field'] = array(Validator::MESSAGE => 'Der Sicherheitscode wurde nicht korrekt eingegeben.', Validator::CALLBACK => 'cb_captcha_check');
     }
     $data = array_fill_keys(array_keys($options), '');
     $data['name'] = iif(Me::get()->loggedIn(), Me::get()->getName());
     $data['email'] = iif(Me::get()->loggedIn(), Me::get()->getEmail());
     $this->breadcrumb->add('Kontakt');
     $this->header();
     if ($isSent) {
         extract(Validator::checkRequest($options));
         if (count($error) > 0) {
             CmsPage::error($error);
         } else {
             CmsTools::sendMail(Config::get('general.email'), $data['title'], $data['message'], $data['email'], $data['name']);
             CmsPage::ok('Die Anfrage wurde erfolgreich verschickt. Vielen Dank!');
             $data['title'] = '';
             $data['message'] = '';
         }
     }
     $tpl = Response::getObject()->appendTemplate('Cms/contact/contact');
     $tpl->assign('data', $data);
     if (Config::get('captcha.enable')) {
         $tpl->assign('captcha', recaptcha_get_html(Config::get('captcha.public_key')), false);
     }
     $tpl->output();
     $this->footer();
 }
 public function write()
 {
     $db = Database::getObject();
     $id = Request::get(1, VAR_INT);
     $action = Request::get(2, VAR_URI);
     $options = array('title' => array(Validator::MESSAGE => 'Der Name muss mindestens 2 und darf maximal 255 Zeichen lang sein.', Validator::MIN_LENGTH => 2, Validator::MAX_LENGTH => 255), 'uri' => array(Validator::MULTIPLE => array(array(Validator::MESSAGE => 'Die URI enthält Zeichen die nicht erlaubt sind. Erlaubt sind: a-z, 0-9, _, -', Validator::REGEXP => '/^[\\w\\d\\-]*$/i'), array(Validator::MESSAGE => 'Die angegebene URI existiert bereits für eine andere Seite.', Validator::CLOSURE => function ($uri) use($db, $id) {
         $db->query("SELECT uri FROM <p>page WHERE id != <id:int> AND uri = <uri>", compact("id", "uri"));
         return $db->numRows() == 0;
     }))), 'content' => array(Validator::OPTIONAL => true));
     $this->breadcrumb->add(iif($id > 0, "Bearbeiten", "Hinzufügen"));
     $this->scriptFiles[URI::build('client/scripts/wymeditor/jquery.wymeditor.js')] = 'text/javascript';
     $this->header();
     $data = array('id' => $id, 'title' => '', 'uri' => '', 'content' => '');
     if ($action == 'send') {
         extract(Validator::checkRequest($options));
         $data['id'] = $id;
         if (count($error) > 0) {
             CmsPage::error($error);
         } else {
             if ($id > 0) {
                 $db->query("UPDATE <p>page SET title = <title>, uri = <uri>, content = <content> WHERE id = <id:int>", $data);
             } else {
                 $db->query("INSERT INTO <p>page SET title = <title>, uri = <uri>, content = <content>", $data);
                 $data['id'] = $db->insertId();
             }
             CmsPage::ok("Die Seite wurde erfolgreich gespeichert.");
         }
     } else {
         if ($id > 0) {
             $db->query("SELECT id, title, uri, content FROM <p>page WHERE id = <id:int>", compact("id"));
             if ($db->numRows() == 1) {
                 $data = $db->fetchAssoc();
             }
         }
     }
     $tpl = Response::getObject()->appendTemplate('Cms/admin/docs_write');
     $tpl->assign('data', $data);
     $tpl->output();
     $this->footer();
 }
 public function edit()
 {
     $id = Request::get(1, VAR_INT, 0);
     $action = Request::get(2, VAR_URI);
     $this->breadcrumb->add(iif($id > 0, "Bearbeiten", "Hinzufügen"));
     $this->header();
     $db = Database::getObject();
     $data = array('id' => $id, 'flughafen' => '', 'code' => '', 'land' => '', 'stadt' => '');
     if ($action == 'send') {
         $options = array('flughafen' => array(Validator::MESSAGE => 'Der Name muss mindestens 2 und darf maximal 128 Zeichen lang sein.', Validator::MIN_LENGTH => 2, Validator::MAX_LENGTH => 128), 'code' => array(Validator::MESSAGE => 'Der Code muss genau 3 Zeichen lang sein.', Validator::LENGTH => 3), 'land' => array(Validator::MESSAGE => 'Der Name muss mindestens 2 und darf maximal 64 Zeichen lang sein.', Validator::MIN_LENGTH => 2, Validator::MAX_LENGTH => 64), 'stadt' => array(Validator::MESSAGE => 'Der Name muss mindestens 2 und darf maximal 96 Zeichen lang sein.', Validator::MIN_LENGTH => 2, Validator::MAX_LENGTH => 96));
         extract(Validator::checkRequest($options));
         $data['id'] = $id;
         if (count($error) > 0) {
             CmsPage::error($error);
         } else {
             if ($id > 0) {
                 $db->query("UPDATE <p>airports SET flughafen = <flughafen>, land = <land>, stadt = <stadt>, code = <code> WHERE id = <id:int>", $data);
             } else {
                 $db->query("INSERT INTO <p>airports SET flughafen = <flughafen>, land = <land>, stadt = <stadt>, code = <code>", $data);
                 $data['id'] = $db->insertId();
             }
             CmsPage::ok("Der Airport wurde erfolgreich gespeichert.");
         }
     } else {
         if ($id > 0) {
             $db->query("SELECT * FROM <p>airports WHERE id = <id:int>", compact("id"));
             if ($db->numRows() == 1) {
                 $data = $db->fetchAssoc();
             }
         }
     }
     $tpl = Response::getObject()->appendTemplate('Airlines/admin/airports_edit');
     $tpl->assign('data', $data);
     $tpl->output();
     $this->footer();
 }
 public function pwremind()
 {
     $action = Request::get(1, VAR_URI);
     $this->breadcrumb->add('Neues Passwort anfordern');
     $this->header();
     $tpl = Response::getObject()->appendTemplate('Cms/user/pwremind');
     if (Me::get()->loggedIn()) {
         CmsPage::error('Sie sind bereits angemeldet!');
     } else {
         if ($action == 'send') {
             $mail = Request::get("email");
             $user = UserUtils::getByEmail($mail);
             if ($user !== null) {
                 if (!$user->isActive()) {
                     CmsPage::error("Ihr Benutzerkonto ist leider noch nicht freigeschaltet.");
                 } else {
                     $data = array('hash' => Hash::getRandom(), 'id' => $user->getId(), 'name' => UserUtils::getSalutation($user->getGender(), $user->getForeName(), $user->getSurName()));
                     $db = Database::getObject();
                     $db->query("UPDATE <p>user SET verification = <hash> WHERE id = <id:int> AND active = 1", $data);
                     $tpl = Response::getObject()->getTemplate('Cms/mails/pwremind_verify');
                     $tpl->assign('data', $data, false);
                     CmsTools::sendMail($user->getEmail(), Config::get('general.title') . ': Bestätigung deiner Passwortanfrage', $tpl->parse());
                     CmsPage::ok("Wir haben Ihnen eine E-Mail geschickt. Bitte folgen Sie den dortigen Anweisungen.");
                 }
             } else {
                 CmsPage::error("Die von Ihnen angegebene E-Mail-Adresse wurde leider nicht gefunden.");
                 $tpl->output();
             }
         } else {
             $tpl->output();
         }
     }
     $this->footer();
 }
 public function remove()
 {
     $id = Request::get(1, VAR_INT);
     $data = new CustomData($this->position);
     if ($data->load($id)) {
         if (Request::get(2) == 'yes') {
             if ($data->remove()) {
                 CmsPage::ok("Der Datensatz wurde erfolgreich gelöscht.");
             } else {
                 CmsPage::error("Der Datensatz konnte leider nicht gelöscht werden.");
             }
         } else {
             CmsPage::yesNo("Möchten Sie den gewählten Datensatz inkl. aller evtl. verknüpften Daten wirklich löschen?", URI::build($this->baseUri . '/remove/' . $id . '/yes'), URI::build($this->baseUri));
         }
     } else {
         CmsPage::error('Der Datensatz wurde nicht gefunden.');
     }
 }
 public function edit()
 {
     $id = Request::get(1, VAR_INT);
     $isSent = Request::get(2, VAR_URI) == 'send';
     $this->breadcrumb->add('Bearbeiten');
     $this->header();
     $db = Database::getObject();
     $db->query("SELECT * FROM <p>fields WHERE id = <id:int>", compact("id"));
     if ($db->numRows() == 0) {
         CmsPage::error('Das Feld wurde leider nicht gefunden.');
         $this->overview();
     } else {
         $field = CustomField::constructObject($db->fetchAssoc());
         $_positions = $this->getPositions();
         $positions = Core::constructObjectArray($_positions);
         // Fill data array with the default (currently saved) data
         $permissions = $field->getPermissions();
         $data = array('name' => $field->getName(), 'description' => $field->getDescription(), 'priority' => $field->getPriority(), 'position' => $field->getPosition()->getClassPath(), 'type' => $field->getClassPath(), 'read' => $permissions['read'], 'write' => $permissions['write']);
         foreach ($field->getParamsData() as $key => $value) {
             $data[$key] = $value;
         }
         $error = array();
         if ($isSent) {
             // Base options for every field
             $options = array_merge($this->getValidator(), array('position' => array(Validator::MESSAGE => 'Der Anzeigeort ist ungültig.', Validator::LIST_CS => $_positions)), $field->getValidationParams(false));
             extract(Validator::checkRequest($options));
             if (count($error) == 0) {
                 $this->injectDataToField($field, $data);
                 if ($field->update()) {
                     CmsPage::ok("Das Feld wurde erfolgreich aktualisiert.");
                 } else {
                     $error[] = 'Das Feld konnt leider nicht aktualisiert werden.';
                 }
             }
             if (count($error) > 0) {
                 CmsPage::error($error);
             }
         }
         $tpl = Response::getObject()->appendTemplate("/Cms/admin/fields_edit");
         $tpl->assign('field', $field, false);
         $tpl->assign('positions', $positions, false);
         $tpl->assign('data', $data);
         $tpl->assign('baseUri', $this->getBaseURI());
         $tpl->output();
     }
     $this->footer();
 }
 public function delete()
 {
     $this->breadcrumb->add("Löschen");
     $this->header();
     $id = Request::get(1, VAR_INT);
     if (Request::get(2) == 'yes') {
         $db = Database::getObject();
         try {
             $db->query("DELETE FROM <p>user WHERE id = <id:int>", compact("id"));
             CmsPage::ok("Das gewählte Mitglied wurde gelöscht.");
         } catch (QueryException $e) {
             CmsPage::error("Das gewählte Mitglied konnte leider nicht gelöscht werden. Möglicherweise referenzieren noch Daten auf dieses Mitglied.");
         }
         $this->members();
     } else {
         CmsPage::yesNo("Möchten Sie das gewählte Mitglied wirklich löschen?", URI::build('cms/admin/members/delete/' . $id . '/yes'), URI::build('cms/admin/members'));
     }
     $this->footer();
 }