summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorneoraider <devnull@localhost>2006-04-13 02:45:02 +0200
committerneoraider <devnull@localhost>2006-04-13 02:45:02 +0200
commit415243607829013d91b23b40608507fcd76b307b (patch)
tree8199fbaacf2d17fbc4c2efe68a2fb46c386086b3
parent0ef2bb0245fedaf18508feabfa980955ba4a238e (diff)
downloadneon-415243607829013d91b23b40608507fcd76b307b.tar
neon-415243607829013d91b23b40608507fcd76b307b.zip
Seiten-Verwaltung vollkommen ?berarbeitet.
-rw-r--r--code/modules.inc.php18
-rw-r--r--code/pages.inc.php254
-rw-r--r--code/util.inc.php2
-rw-r--r--code/xmlparser.inc.php51
-rw-r--r--config/neon.sql41
-rw-r--r--pages/Login.c.xml32
-rw-r--r--pages/Login.n.xml43
-rw-r--r--pages/Logout.c.xml27
-rw-r--r--pages/Pages.c.xml58
-rw-r--r--pages/Pages/Copy.c.xml36
-rw-r--r--pages/Pages/Delete.c.xml35
-rw-r--r--pages/Pages/Edit.c.xml44
-rw-r--r--pages/Pages/Handle.c.xml110
-rw-r--r--pages/Pages/New.c.xml39
-rw-r--r--pages/Pages/Rename.c.xml36
-rw-r--r--pages/Privileges.c.xml89
-rw-r--r--pages/Privileges/Update.c.xml77
-rw-r--r--pages/Users.c.xml42
-rw-r--r--pages/Users/Delete.c.xml32
-rw-r--r--pages/Users/Group.c.xml32
-rw-r--r--pages/Users/Handle.c.xml132
-rw-r--r--pages/Users/New.c.xml35
-rw-r--r--pages/Users/Password.c.xml35
-rw-r--r--pages/Users/Rename.c.xml33
-rw-r--r--pages/default.e.xml32
-rw-r--r--pages/phpexec.e.xml29
26 files changed, 1263 insertions, 131 deletions
diff --git a/code/modules.inc.php b/code/modules.inc.php
index 4c17807..02aa9f2 100644
--- a/code/modules.inc.php
+++ b/code/modules.inc.php
@@ -12,6 +12,7 @@
class Modules {
var $modules;
+ var $pages;
var $code;
var $templates;
@@ -29,10 +30,10 @@
if(!$data) continue;
$info = $GLOBALS['xmlparser']->FindTag($data, 'info');
- if(!is_array($info)) continue;
+ if(!$info) continue;
$name = $GLOBALS['xmlparser']->FindTag($info, 'name');
- if(!is_array($name)) continue;
+ if(!$name) continue;
if(count($name['children']) != 1) continue;
if(!is_string($name['children'][0])) continue;
@@ -42,7 +43,7 @@
'templates' => array());
$files = $GLOBALS['xmlparser']->FindTag($data, 'files');
- if(!is_array($files)) continue;
+ if(!$files) continue;
foreach($files['children'] as $file) {
if(!is_array($file)) continue;
@@ -50,6 +51,17 @@
if(!is_string($file['children'][0])) continue;
switch($file['tag']) {
+ case 'page':
+ $type = $file['attribs']['type'];
+ if(!$type) $type = 'c';
+
+ $pagename = $file['children'][0] . '.' . $type;
+ $realname = 'modules/' . $moddir . '/pages/' . strtr($file['children'][0], array(':' => '/'))
+ . '.' . $type . '.xml';
+
+ $this->pages[$pagename] = $realname;
+ $this->modules[$name]['pages'][$pagename] = $realname;
+ break;
case 'code':
$filename = 'code/' . $file['children'][0] . '.inc.php';
$realname = 'modules/' . $moddir . '/code/' . $file['children'][0] . '.inc.php';
diff --git a/code/pages.inc.php b/code/pages.inc.php
index 7bdd907..c121d2f 100644
--- a/code/pages.inc.php
+++ b/code/pages.inc.php
@@ -2,142 +2,236 @@
require_once('code/db.inc.php');
require_once('code/user.inc.php');
require_once('code/templates.inc.php');
+ require_once('code/xmlparser.inc.php');
+ require_once('code/modules.inc.php');
class Pages {
- function Get($page, $type = null, $extra = null) {
+ var $pages = array();
+
+ function Pages($dirs = array('pages')) {
+ $dir = opendir(join('/', $dirs));
+
+ while($file = readdir($dir)) {
+ if($file[0] == '.') continue;
+
+ if(is_dir(join('/', $dirs) . '/' . $file))
+ $this->Pages(array_merge($dirs, array($file)));
+ elseif(is_file(join('/', $dirs) . '/' . $file)) {
+ switch(substr($file, -6)) {
+ case '.c.xml':
+ case '.e.xml':
+ case '.n.xml':
+ if(count($dirs) > 1)
+ $this->pages[join(array_merge(array_slice($dirs, 1), array(substr($file, 0, -4))), ':')] = array();
+ else
+ $this->pages[substr($file, 0, -4)] = array();
+ }
+ }
+ }
+
+ closedir($dir);
+ }
+
+ function Get($page, $type, $extra = null) {
if(!$this->Exists($page, $type))
return array('title' => $page,
'content' => ErrorMessage('PageNotFound', array('page' => $page)));
- if($type) $res = $GLOBALS['db']->Execute('SELECT id, name, type, template, data FROM pages WHERE name = ? AND type = ?', array($page, $type));
- else $res = $GLOBALS['db']->Execute('SELECT id, name, type, template, data FROM pages WHERE id = ?', $page);
-
if(!$this->HasAccess($page, $type))
- return array('title' => $res->fields[1],
- 'content' => ErrorMessage('Forbidden', array('page' => $res->fields[1])));
+ return array('title' => $page,
+ 'content' => ErrorMessage('Forbidden', array('page' => $page)));
- $data = null;
- parse_str($res->fields[4], $data);
- $data = array_map('Unquote', $data);
+ $pagedata = $this->GetPageData($page, $type);
+
+ $data = $pagedata['data'];
if($extra) $data = array_merge($data, $extra);
- $data['_id'] = $res->fields[0];
- $data['_page'] = $res->fields[1];
- $data['_type'] = $res->fields[2];
+ $data['_page'] = $page;
+ $data['_type'] = $type;
- return $GLOBALS['templates'][$res->fields[3]]->Get($data);
+ return $GLOBALS['templates'][$pagedata['template']]->Get($data);
}
- function GetEditor($page, $type = null) {
+ function GetEditor($page, $type) {
if(!$this->Exists($page, $type))
return array('title' => $page,
'content' => ErrorMessage('PageNotFound', array('page' => $page)));
- if($type) $res = $GLOBALS['db']->Execute('SELECT id, name, type, template, data FROM pages WHERE name = ? AND type = ?', array($page, $type));
- else $res = $GLOBALS['db']->Execute('SELECT id, name, type, template, data FROM pages WHERE id = ?', $page);
-
if(!$GLOBALS['user']->IsAdmin())
- return array('title' => $res->fields[1],
- 'content' => ErrorMessage('Forbidden', array('page' => $res->fields[1])));
+ return array('title' => $page,
+ 'content' => ErrorMessage('Forbidden', array('page' => $page)));
- parse_str($res->fields[4], $data = null);
- $data = array_map('Unquote', $data);
- $data['_id'] = $res->fields[0];
- $data['_page'] = $res->fields[1];
- $data['_type'] = $res->fields[2];
+ $pagedata = $this->GetPageData($page, $type);
- return $this->Get($res->fields[3], 'e', array('_data' => $data));
- }
-
- function GetName($id) {
- $res = $GLOBALS['db']->Execute('SELECT name FROM pages WHERE id = ?', $id);
+ $data = $pagedata['data'];
+ $data['_page'] = $page;
+ $data['_type'] = $type;
- return $res->fields[0];
+ return $this->Get($pagedata['template'], 'e', array('_data' => $data));
}
- function GetType($id) {
- $res = $GLOBALS['db']->Execute('SELECT type FROM pages WHERE id = ?', $id);
+ function Exists($page, $type) {
+ if(array_key_exists($page . '.' . $type, $this->pages))
+ return true;
- return $res->fields[0];
- }
-
- function Exists($page, $type = null) {
- if($type) $res = $GLOBALS['db']->Execute('SELECT id FROM pages WHERE name = ? AND type = ?', array($page, $type));
- else $res = $GLOBALS['db']->Execute('SELECT id FROM pages WHERE id = ?', $page);
+ if(array_key_exists($page . '.' . $type, $GLOBALS['modules']->pages))
+ return true;
+
+ $res = $GLOBALS['db']->Execute('SELECT id FROM pages WHERE name = ? AND type = ?', array($page, $type));
return ($res->RecordCount() > 0);
}
- function HasAccess($page, $type = null) {
+ function HasAccess($page, $type) {
+ if($GLOBALS['user']->IsAdmin()) return $this->Exists($page, $type);
+
$gid = $GLOBALS['user']->gid;
- if($type) $res = $GLOBALS['db']->Execute('SELECT access FROM pages WHERE name = ? AND type = ?', array($page, $type));
- else $res = $GLOBALS['db']->Execute('SELECT access FROM pages WHERE id = ?', $page);
- if(!$res->RecordCount()) return false;
- return ($GLOBALS['user']->IsAdmin() || (ord($res->fields[0][$gid/8]) & (1 << ($gid%8))) != 0);
+ $pagedata = $this->GetPageData($page, $type);
+
+ if(!$pagedata)
+ return false;
+
+ return ((hexdec(substr($pagedata['access'], ($gid/8)*2, 2)) & (1 << ($gid%8))) != 0);
}
- function Add($name, $template, $type) {
- if($this->Exists($name, $type)) return 0;
+ function GetPageData($page, $type) {
+ if(!$this->Exists($page, $type)) return null;
+
+ if(!count($this->pages[$page . '.' . $type])) {
+ $res = $GLOBALS['db']->Execute('SELECT template, HEX(access), data FROM pages WHERE name = ? AND type = ?', array($page, $type));
+
+ if($res->RecordCount()) {
+ parse_str($res->fields[2], $data);
+ $data = array_map('Unquote', $data);
+
+ $this->pages[$page . '.' . $type] = array('name' => $page, 'type' => $type, 'template' => $res->fields[0],
+ 'access' => $res->fields[1], 'data' => $data);
+ }
+ else {
+ $filename = $GLOBALS['modules']->pages[$page . '.' . $type];
+ if(!$filename) $filename = 'pages/' . strtr($page, array(':' => '/')) . '.' . $type . '.xml';
+
+ $xmldata = $GLOBALS['xmlparser']->ParseFile($filename);
+ if(!$xmldata) return null;
+
+ $info = $GLOBALS['xmlparser']->FindTag($xmldata, 'info');
+ if(!$info) return null;
+
+ $template = $GLOBALS['xmlparser']->FindTag($info, 'template');
+ if(!$template) return null;
+ if(count($template['children']) != 1) return;
+ if(!is_string($template['children'][0])) return;
+ $template = $template['children'][0];
+
+ $access = $GLOBALS['xmlparser']->FindTag($info, 'access');
+ if(!$access) return null;
+ if(count($access['children']) != 1) return;
+ if(!is_string($access['children'][0])) return;
+ $access = $access['children'][0];
+
+ $rawdata = $GLOBALS['xmlparser']->FindTag($xmldata, 'data');
+
+ $data = array();
+
+ foreach($rawdata['children'] as $field) {
+ if(!is_array($field)) continue;
+ if(count($field['children']) != 1) continue;
+
+ $data[$field['tag']] = $field['children'][0];
+ }
+
+ $this->pages[$page . '.' . $type] = array('name' => $page, 'type' => $type, 'template' => $template,
+ 'access' => $access, 'data' => $data);
+ }
+ }
- $GLOBALS['db']->Execute('INSERT INTO pages (name, template, access, data, type) VALUES (?, ?, 0, "", ?)',
- array($name, $templates, $type));
+ return $this->pages[$page . '.' . $type];
+ }
+
+ function Add($name, $type, $template) {
+ if($this->Exists($name, $type)) return false;
+
+ $GLOBALS['db']->Execute('INSERT INTO pages (name, template, access, data, type) VALUES (?, ?, "", "", ?)',
+ array($name, $template, $type));
- return $GLOBALS['db']->Insert_ID();
+ return ($GLOBALS['db']->Affected_Rows() > 0);
}
- function Edit($page, $data, $type = null) {
+ function Edit($page, $type, $data) {
$string = '';
foreach($data as $key => $val)
$string .= urlencode($key) . '=' . urlencode($val) . '&';
- if($type) $GLOBALS['db']->Execute('UPDATE pages SET data = ? WHERE name = ? AND type = ?',
- array(substr($string, 0, -1), $page, $type));
- else $GLOBALS['db']->Execute('UPDATE pages SET data = ? WHERE id = ?',
- array(substr($string, 0, -1), $page));
+ $GLOBALS['db']->Execute('UPDATE pages SET data = ? WHERE name = ? AND type = ?',
+ array(substr($string, 0, -1), $page, $type));
+
+ if($GLOBALS['db']->Affected_Rows()) return true;
+
+ $pagedata = $this->GetPageData($page, $type);
+
+ $string = '';
+
+ foreach($pagedata['data'] as $key => $val)
+ $string .= urlencode($key) . '=' . urlencode($val) . '&';
+
+ $access = '';
+
+ for($i = 0; $i < strlen($pagedata['access']); $i+=2)
+ $access .= chr(hexdec(substr($pagedata['access'], $i, 2)));
+
+
+ $GLOBALS['db']->Execute('INSERT INTO pages (name, template, access, data, type) VALUES (?, ?, ?, ?, ?)',
+ array($page, $pagedata['template'], $access, $string, $type));
return ($GLOBALS['db']->Affected_Rows() > 0);
}
- function Rename($page, $new_name, $type = null) {
- if($type) {
- if($this->Exists($new_name, $type)) return;
+ function Rename($page, $type, $new_name) {
+ if($this->Exists($new_name, $type)) return false;
- $GLOBALS['db']->Execute('UPDATE pages SET name = ? WHERE name = ? AND type = ?', array($new_name, $page, $type));
- }
- else {
- if($this->Exists($new_name, $this->GetType($type))) return;
-
- $GLOBALS['db']->Execute('UPDATE pages SET name = ? WHERE id = ?', array($new_name, $page));
- }
+ $GLOBALS['db']->Execute('UPDATE pages SET name = ? WHERE name = ? AND type = ?', array($new_name, $page, $type));
return ($GLOBALS['db']->Affected_Rows() > 0);
}
- function Copy($page, $new_name, $type = null) {
- if($type) {
- if($this->Exists($new_name, $type)) return 0;
-
- $res = $GLOBALS['db']->Execute('SELECT * FROM pages WHERE name = ? AND type = ?', array($page, $type));
- }
- else {
- if($this->Exists($new_name, $this->GetType($type))) return 0;
-
- $res = $GLOBALS['db']->Execute('SELECT template, data, type FROM pages WHERE id = ?', $page);
- }
+ function Copy($page, $type, $new_name) {
+ if($this->Exists($new_name, $type)) return false;
+ if(!$this->Exists($page, $type)) return false;
- $GLOBALS['db']->Execute('INSERT INTO pages (name, template, access, data, type) VALUES (?, ?, 0, ?, ?)',
- array($new_name, $res->fields[0], $res->fields[1], $res->fields[2]));
+ $pagedata = $this->GetPageData($page, $type);
- return $GLOBALS['db']->Insert_ID();
+ $string = '';
+
+ foreach($pagedata['data'] as $key => $val)
+ $string .= urlencode($key) . '=' . urlencode($val) . '&';
+
+ $GLOBALS['db']->Execute('INSERT INTO pages (name, template, access, data, type) VALUES (?, ?, "", ?, ?)',
+ array($new_name, $pagedata['template'], $string, $type));
+
+ return ($GLOBALS['db']->Affected_Rows() > 0);
}
- function Delete($page, $type = null) {
- if($type) $GLOBALS['db']->Execute('DELETE FROM pages WHERE name = ? AND type = ?', array($page, $type));
- else $GLOBALS['db']->Execute('DELETE FROM pages WHERE id = ?', $page);
+ function Delete($page, $type) {
+ $GLOBALS['db']->Execute('DELETE FROM pages WHERE name = ? AND type = ?', array($page, $type));
return ($GLOBALS['db']->Affected_Rows() > 0);
}
+
+ function GetList() {
+ $res = $GLOBALS['db']->Execute('SELECT name, type FROM pages');
+
+ $pages = array();
+
+ while($row = $res->FetchRow())
+ $pages[$row[0] . '.' . $row[1]] = null;
+
+ $pages = array_keys(array_merge($pages, $this->pages, $GLOBALS['modules']->pages));
+
+ sort($pages);
+
+ return $pages;
+ }
}
$GLOBALS['pages'] = new Pages;
diff --git a/code/util.inc.php b/code/util.inc.php
index 4b498e7..3ee2489 100644
--- a/code/util.inc.php
+++ b/code/util.inc.php
@@ -1,6 +1,6 @@
<?PHP
function Subst($string, $subst = array()) {
- $tr['$$'] = '$';
+ $tr = array('$$' => '$');
foreach($subst as $key => $value)
$tr['$' . $key] = $value;
diff --git a/code/xmlparser.inc.php b/code/xmlparser.inc.php
index 2d53a1f..0666c5a 100644
--- a/code/xmlparser.inc.php
+++ b/code/xmlparser.inc.php
@@ -1,27 +1,24 @@
<?PHP
class XMLParser {
- var $parser;
var $tags;
var $depth;
- function XMLParser() {
- $this->parser = xml_parser_create();
-
- xml_set_object($this->parser, $this);
- xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
-
- xml_set_element_handler($this->parser, 'openTagHandler', 'closeTagHandler');
- xml_set_character_data_handler($this->parser, 'cdataHandler');
- }
-
function ParseFile($filename) {
$this->tags = array();
$this->depth = 0;
+ $parser = xml_parser_create();
+
+ xml_set_object($parser, $this);
+ xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
+
+ xml_set_element_handler($parser, 'openTagHandler', 'closeTagHandler');
+ xml_set_character_data_handler($parser, 'cdataHandler');
+
$file = fopen($filename, 'r');
while ($xml = fread($file, 4096)) {
- if(!xml_parse($this->parser, $xml, feof($file))) {
+ if(!xml_parse($parser, $xml, feof($file))) {
$this->tags = null;
break;
}
@@ -29,6 +26,8 @@
fclose($file);
+ xml_parser_free($parser);
+
return $this->tags[0];
}
@@ -36,9 +35,19 @@
$this->tags = array();
$this->depth = 0;
- if(!xml_parse($this->parser, $xml, true))
+ $parser = xml_parser_create();
+
+ xml_set_object($parser, $this);
+ xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
+
+ xml_set_element_handler($parser, 'openTagHandler', 'closeTagHandler');
+ xml_set_character_data_handler($parser, 'cdataHandler');
+
+ if(!xml_parse($parser, $xml, true))
$this->tags = null;
+ xml_parser_free($parser);
+
return $this->tags[0];
}
@@ -50,6 +59,10 @@
}
function openTagHandler($parser, $name, $attribs) {
+ $children = &$this->tags[$this->depth-1]['children'];
+
+ $children[count($children)-1] = trim($children[count($children)-1]);
+
$this->tags[$this->depth] = array('tag' => $name,
'attribs' => $attribs,
'children' => array());
@@ -58,6 +71,10 @@
}
function closeTagHandler($parser, $name) {
+ $children = &$this->tags[$this->depth-1]['children'];
+
+ $children[count($children)-1] = trim($children[count($children)-1]);
+
$this->depth--;
if($this->depth > 0)
@@ -65,10 +82,12 @@
}
function cdataHandler($parser, $data) {
- $data = trim($data);
+ $children = &$this->tags[$this->depth-1]['children'];
- if($data != '')
- array_push($this->tags[$this->depth-1]['children'], $data);
+ if(is_string($children[count($children)-1]))
+ $children[count($children)-1] .= $data;
+ elseif(trim($data) != '')
+ array_push($children, $data);
}
}
diff --git a/config/neon.sql b/config/neon.sql
index 6b09422..266528a 100644
--- a/config/neon.sql
+++ b/config/neon.sql
@@ -1,11 +1,11 @@
-- phpMyAdmin SQL Dump
--- version 2.7.0-pl2-Debian-1
+-- version 2.8.0.2-Debian-4
-- http://www.phpmyadmin.net
--
-- Host: localhost
--- Erstellungszeit: 11. April 2006 um 22:16
--- Server Version: 5.0.18
--- PHP-Version: 5.1.2-1
+-- Erstellungszeit: 13. April 2006 um 02:38
+-- Server Version: 5.0.19
+-- PHP-Version: 5.1.2-1+b1
--
-- Datenbank: `neon`
--
@@ -76,36 +76,15 @@ CREATE TABLE `pages` (
`type` enum('c','n','e') NOT NULL default 'c',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`,`type`)
-) TYPE=MyISAM AUTO_INCREMENT=43 ;
+) TYPE=MyISAM AUTO_INCREMENT=56 ;
--
-- Daten für Tabelle `pages`
--
-INSERT INTO `pages` VALUES (1, 'Home:Startseite', 'default', 0x09, 'title=Startseite&content=Welcome+to+Neon', 'c');
-INSERT INTO `pages` VALUES (2, 'Login', 'phpexec', 0x01, 'code=%3C%3FPHP%0D%0A++if%28%24_POST%5B%27name%27%5D+%26%26+%24_POST%5B%27password%27%5D+%26%26+%24_POST%5B%27page%27%5D%29+%7B%0D%0A++++require_once%28%27code%2Fuser.inc.php%27%29%3B%0D%0A++++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++++require_once%28%27code%2Fmessage.inc.php%27%29%3B%0D%0A++++require_once%28%27code%2Futil.inc.php%27%29%3B%0D%0A++++%0D%0A++++if%28%24GLOBALS%5B%27user%27%5D-%3ELogin%28Unquote%28%24_POST%5B%27name%27%5D%29%2C+Unquote%28%24_POST%5B%27password%27%5D%29%29%29+%7B%0D%0A++++++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%24_POST%5B%27page%27%5D%2C+null%2C+false%29%29%3B%0D%0A++++++exit%28%29%3B%0D%0A++++%7D%0D%0A++%7D%0D%0A++%0D%0A++%24title+%3D+Message%28%27Error%27%29%3B%0D%0A++%0D%0A++echo+%27%3Cspan+class%3D%22error%22%3E%27+.+Message%28%27LoginError%27%29+.+%27%3C%2Fspan%3E%27%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (27, 'Privileges:Update', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++%0D%0A++if%28%24_POST%5B%27type%27%5D+%21%3D+%27c%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27n%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27e%27%29%0D%0A++++exit%28%29%3B%0D%0A++%0D%0A++%24groupres+%3D+%24GLOBALS%5B%27db%27%5D-%3EExecute%28%27SELECT+id+FROM+groups+ORDER+by+id%27%29%3B%0D%0A++%24pages+%3D+%24GLOBALS%5B%27db%27%5D-%3EExecute%28%27SELECT+id+FROM+pages+WHERE+type+%3D+%3F+ORDER+by+id%27%2C+%24_POST%5B%27type%27%5D%29%3B%0D%0A++%0D%0A++%24groups+%3D+%24groupres-%3EGetArray%28%29%3B%0D%0A++array_unshift%28%24groups%2C+array%280%29%29%3B%0D%0A++%0D%0A++%24group_max+%3D+%24groups%5Bcount%28%24groups%29-1%5D%5B0%5D%3B%0D%0A++%0D%0A++%24privileges+%3D+array%28%29%3B%0D%0A++%0D%0A++while%28%24page+%3D+%24pages-%3EFetchRow%28%29%29+%7B%0D%0A++++%24access+%3D+array_fill%280%2C+%24group_max%2F8+%2B+1%2C+0%29%3B%0D%0A++++%0D%0A++++foreach%28%24groups+as+%24group%29+%7B%0D%0A++++++if%28isset%28%24_POST%5B%24group%5B0%5D+.+%27%3A%27+.+%24page%5B0%5D%5D%29%29%0D%0A++++++++%24access%5B%24group%5B0%5D%2F8%5D+%7C%3D+%281+%3C%3C+%28%24group%5B0%5D%258%29%29%3B%0D%0A++++%7D%0D%0A++++%24privileges%5B%24page%5B0%5D%5D+%3D+array%28join%28%27%27%2C+array_map%28%27chr%27%2C+%24access%29%29%2C+%24page%5B0%5D%29%3B%0D%0A++%7D%0D%0A++%0D%0A++%24GLOBALS%5B%27db%27%5D-%3EExecute%28%27UPDATE+pages+SET+access+%3D+%3F+WHERE+id+%3D+%3F%27%2C+%24privileges%29%3B%0D%0A++%0D%0A++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Privileges%27%2C+%27type%3D%27+.+%24_POST%5B%27type%27%5D%2C+false%29%29%3B%0D%0A++exit%28%29%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (4, 'Test:LoremIpsum', 'default', 0x09, 'title=Lorem+Ipsum&content=Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Ut+a+sapien.+Aliquam+aliquet+purus+molestie+dolor.+Integer+quis+eros+ut+erat+posuere+dictum.+Curabitur+dignissim.+Integer+orci.+Fusce+vulputate+lacus+at+ipsum.+Quisque+in+libero+nec+mi+laoreet+volutpat.+Aliquam+eros+pede%2C+scelerisque+quis%2C+tristique+cursus%2C+placerat+convallis%2C+velit.+Nam+condimentum.+Nulla+ut+mauris.+Curabitur+adipiscing%2C+mauris+non+dictum+aliquam%2C+arcu+risus+dapibus+diam%2C+nec+sollicitudin+quam+erat+quis+ligula.+Aenean+massa+nulla%2C+volutpat+eu%2C+accumsan+et%2C+fringilla+eget%2C+odio.+Nulla+placerat+porta+justo.+Nulla+vitae+turpis.+Praesent+lacus.%0D%0AVestibulum+ante+ipsum+primis+in+faucibus+orci+luctus+et+ultrices+posuere+cubilia+Curae%3B+Aliquam+ultricies+lacus+eu+dui.+Duis+viverra+risus+et+eros.+Aenean+odio+dolor%2C+tristique+quis%2C+commodo+id%2C+posuere+sit+amet%2C+dui.+Pellentesque+velit.+Aliquam+erat+volutpat.+Duis+sagittis+nibh+sed+justo.+Sed+ultrices+nisl+sed+pede.+Sed+tempor+lorem+in+leo.+Integer+gravida+tincidunt+nunc.+Vivamus+ut+quam+vel+ligula+tristique+condimentum.+Proin+facilisis.+Aliquam+sagittis+lacinia+mi.+Donec+sagittis+luctus+dui.+Maecenas+quam+ante%2C+vestibulum+auctor%2C+blandit+in%2C+iaculis+in%2C+velit.+Aliquam+at+ligula.+Nam+a+tellus.+Aliquam+eu+nulla+at+turpis+vulputate+hendrerit.+Proin+at+diam.+Curabitur+euismod.%0D%0ALorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Pellentesque+habitant+morbi+tristique+senectus+et+netus+et+malesuada+fames+ac+turpis+egestas.+Quisque+vel+erat+eget+diam+consectetuer+iaculis.+Cras+ante+velit%2C+suscipit+et%2C+porta+tempus%2C+dignissim+quis%2C+magna.+Vivamus+viverra%2C+turpis+nec+rhoncus+ultricies%2C+diam+turpis+eleifend+nisl%2C+a+eleifend+ante+felis+ac+sapien.+Integer+bibendum.+Suspendisse+in+mi+non+neque+bibendum+convallis.+Suspendisse+potenti.+Sed+sit+amet+purus+at+felis+adipiscing+aliquam.+Vivamus+et+nisl+sit+amet+mauris+aliquet+molestie.+Integer+tortor+massa%2C+aliquam+a%2C+lacinia+nonummy%2C+sagittis+nec%2C+eros.+Nunc+non+mauris+id+eros+venenatis+adipiscing.+Cras+et+lectus+ut+nisl+pharetra+ornare.+Proin+leo+risus%2C+elementum+eget%2C+ultrices+vitae%2C+molestie+sed%2C+erat.+Curabitur+et+lectus+in+tellus+egestas+hendrerit.+Sed+dapibus+ipsum.+Quisque+sit+amet+ligula.+Suspendisse+odio+dolor%2C+semper+id%2C+feugiat+quis%2C+sodales+id%2C+mauris.+Curabitur+id+ligula+ac+libero+malesuada+pharetra.%0D%0ASuspendisse+potenti.+Cras+ut+mi+sit+amet+quam+consequat+consequat.+Aenean+ut+lectus.+Cum+sociis+natoque+penatibus+et+magnis+dis+parturient+montes%2C+nascetur+ridiculus+mus.+Suspendisse+vel+sapien.+Nullam+non+turpis.+Pellentesque+elementum+pharetra+ligula.+In+rhoncus.+Aliquam+vel+enim+consequat+sem+aliquet+hendrerit.+Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Nam+felis.%0D%0ACum+sociis+natoque+penatibus+et+magnis+dis+parturient+montes%2C+nascetur+ridiculus+mus.+Maecenas+tortor+metus%2C+pellentesque+nec%2C+vehicula+vitae%2C+suscipit+sed%2C+quam.+Aenean+scelerisque+sodales+tortor.+Sed+purus.+Curabitur+turpis+est%2C+bibendum+tristique%2C+porttitor+tempor%2C+pulvinar+vitae%2C+tortor.+Nullam+malesuada+dapibus+orci.+Vivamus+aliquet+tempus+velit.+Curabitur+interdum+posuere+risus.+Duis+egestas%2C+ipsum+sit+amet+molestie+tincidunt%2C+ligula+libero+pretium+risus%2C+non+faucibus+tellus+felis+mattis+sapien.+Ut+eu+velit+at+massa+auctor+mattis.+Nam+tristique+velit+quis+nisl.%0D%0AVivamus+neque+velit%2C+ornare+vitae%2C+tempor+vel%2C+ultrices+et%2C+wisi.+Cras+pede.+Phasellus+nunc+turpis%2C+cursus+non%2C+rhoncus+vitae%2C+sollicitudin+vel%2C+velit.+Vivamus+suscipit+lorem+sed+felis.+Vestibulum+vestibulum+ultrices+turpis.+Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Praesent+ornare+nulla+nec+justo.+Sed+nec+risus+ac+risus+fermentum+vestibulum.+Etiam+viverra+viverra+sem.+Etiam+molestie+mi+quis+metus+hendrerit+tristique.%0D%0AQuisque+lobortis+euismod+metus.+Nam+ante.+Nulla+fermentum%2C+risus+non+pulvinar+porttitor%2C+enim+pede+egestas+nibh%2C+sit+amet+posuere+metus+tortor+id+enim.+Donec+at+sem.+Vestibulum+in+lectus+ut+diam+lacinia+lacinia.+Maecenas+sit+amet+nulla.+Suspendisse+vel+dolor.+Nunc+hendrerit+elit+vitae+quam.+In+nonummy+velit+nec+lorem.+Etiam+rhoncus+felis+a+turpis.+Aliquam+vel+nulla.+Ut+nonummy%2C+nisl+non+sodales+iaculis%2C+mi+tellus+viverra+diam%2C+eget+euismod+dui+turpis+at+mi.+Class+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+hymenaeos.+Vestibulum+nec+quam+ac+lectus+sagittis+tincidunt.%0D%0ANulla+facilisi.+Nam+varius+ante+dignissim+arcu.+Suspendisse+molestie+dignissim+neque.+Suspendisse+leo+ipsum%2C+rutrum+cursus%2C+malesuada+id%2C+dapibus+sed%2C+urna.+Fusce+sollicitudin+laoreet+diam.+Mauris+eu+quam+eget+nulla+fermentum+adipiscing.+In+hac+habitasse+platea+dictumst.+Morbi+ut+odio+vitae+eros+luctus+luctus.+Ut+diam.+Phasellus+ullamcorper+arcu+vitae+wisi.+Pellentesque+urna+odio%2C+varius+eget%2C+dignissim+quis%2C+vehicula+placerat%2C+nunc.+Ut+nec+metus+quis+nulla+posuere+eleifend.%0D%0ASuspendisse+nibh.+Nunc+vulputate+leo+id+urna.+Donec+dictum.+Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Suspendisse+dictum%2C+magna+consectetuer+hendrerit+volutpat%2C+sapien+felis+faucibus+justo%2C+ac+dictum+lacus+pede+in+metus.+Nam+commodo.+Sed+consequat%2C+leo+pretium+sagittis+congue%2C+ante+nunc+laoreet+nisl%2C+ac+aliquam+risus+tellus+commodo+elit.+Cras+at+elit.+Pellentesque+suscipit+erat+vitae+mauris.+Sed+iaculis+eros+vitae+mauris.+Vestibulum+ante+ipsum+primis+in+faucibus+orci+luctus+et+ultrices+posuere+cubilia+Curae%3B+Suspendisse+id+ante+et+elit+accumsan+semper.+Sed+et+nibh+eget+purus+scelerisque+volutpat.+Sed+mi.+Proin+tellus+felis%2C+tincidunt+eget%2C+dictum+et%2C+adipiscing+et%2C+urna.+Cras+accumsan+diam+sed+turpis.+Etiam+sollicitudin+lacus.%0D%0ANam+iaculis+blandit+purus.+Mauris+odio+nibh%2C+hendrerit+id%2C+cursus+vel%2C+sagittis+a%2C+dolor.+Nullam+turpis+lacus%2C+ultrices+vel%2C+sagittis+vitae%2C+dapibus+vel%2C+elit.+Suspendisse+auctor%2C+sapien+et+suscipit+tempor%2C+turpis+enim+consequat+sem%2C+eu+dictum+nunc+lorem+at+massa.+Pellentesque+scelerisque+purus.+Etiam+sed+enim.+Maecenas+sed+tortor+id+turpis+consequat+consequat.+Curabitur+fringilla.+Sed+risus+wisi%2C+dictum+a%2C+sagittis+nec%2C+luctus+ac%2C+neque.+Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Sed+nibh+neque%2C+aliquam+ut%2C+sagittis+id%2C+gravida+et%2C+est.+Aenean+consectetuer+pretium+enim.+Aenean+tellus+quam%2C+condimentum+a%2C+adipiscing+et%2C+lacinia+vel%2C+ante.+Praesent+faucibus+dignissim+enim.+Aliquam+tincidunt.+Mauris+leo+ante%2C+condimentum+eget%2C+vestibulum+sit+amet%2C+fringilla+eget%2C+diam.+Nam+ultricies+ullamcorper+nibh.+Etiam+neque.+Ut+posuere+laoreet+pede.%0D%0A', 'c');
-INSERT INTO `pages` VALUES (5, 'Logout', 'phpexec', 0x08, 'code=%3C%3FPHP%0D%0A++require_once%28%27config%2Fconfig.inc.php%27%29%3B%0D%0A++%0D%0A++require_once%28%27code%2Fuser.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++%0D%0A++%24GLOBALS%5B%27user%27%5D-%3ELogout%28%29%3B%0D%0A++%0D%0A++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%24GLOBALS%5B%27config%27%5D%5B%27home%27%5D%2C+null%2C+false%29%29%3B%0D%0A++%0D%0A++exit%28%29%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (6, 'Login', 'phpexec', 0x01, 'code=%3C%3FPHP%0D%0A++if%28%21%24GLOBALS%5B%27user%27%5D-%3Euid%29+%7B%0D%0A++++require_once%28%27code%2Fuser.inc.php%27%29%3B%0D%0A++++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++++require_once%28%27code%2Futil.inc.php%27%29%3B%0D%0A++++%0D%0A++++echo+%27%3Cform+action%3D%22%27%3B%0D%0A++++echo+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Login%27%29%3B%0D%0A++++echo+%27%22+method%3D%22post%22%3E%27%3B%0D%0A++%3F%3E%0D%0A++%3Cdiv+class%3D%22login%22%3E%0D%0A++++User%3A%3Cbr+%2F%3E%0D%0A++++%3Cinput+type%3D%22text%22+name%3D%22name%22+%2F%3E%3Cbr+%2F%3E%0D%0A++++Passwort%3A%3Cbr+%2F%3E%0D%0A++++%3Cinput+type%3D%22password%22+name%3D%22password%22+%2F%3E%3Cbr+%2F%3E%0D%0A++++%3Cinput+type%3D%22hidden%22+name%3D%22page%22+value%3D%22%3C%3FPHP%0D%0A++++++if%28%24_POST%5B%27page%27%5D%29+echo+Unquote%28%24_POST%5B%27page%27%5D%29%3B%0D%0A++++++else+echo+%24GLOBALS%5B%27page%27%5D%3B%0D%0A++++%3F%3E%22+%2F%3E%0D%0A++++%3Cdiv+class%3D%22login_submit%22%3E%0D%0A++++++%3Cinput+type%3D%22submit%22+value%3D%22Login%22+%2F%3E%0D%0A%0D%0A++++%3C%2Fdiv%3E%0D%0A++%3C%2Fdiv%3E%0D%0A%3C%2Fform%3E%0D%0A%3C%3FPHP%0D%0A++%7D%0D%0A%3F%3E%0D%0A', 'n');
-INSERT INTO `pages` VALUES (7, 'Pages', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fdb.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++%0D%0A++%24title+%3D+%27Seiten%27%3B%0D%0A++%0D%0A++echo+%27%3Ch2%3ESeiten%3C%2Fh2%3E%27%3B%0D%0A++%0D%0A++%24type+%3D+%24_GET%5B%27type%27%5D%3B%0D%0A++if%28%24type+%21%3D+%27c%27+%26%26+%24type+%21%3D+%27n%27+%26%26+%24type+%21%3D+%27e%27%29+%24type+%3D+%27c%27%3B%0D%0A++%0D%0A++echo+%27Seitentyp%3A+%27%3B%0D%0A++echo+%27%3Ca+href%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%27%2C+%27type%3Dc%27%29+.+%27%22%27%3B%0D%0A++if%28%24type+%3D%3D+%27c%27%29+echo+%27+class%3D%22active_page_link%22%27%3B%0D%0A++echo+%27%3EInhalt%3C%2Fa%3E+%7C+%27%3B%0D%0A++echo+%27%3Ca+href%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%27%2C+%27type%3Dn%27%29+.+%27%22%27%3B%0D%0A++if%28%24type+%3D%3D+%27n%27%29+echo+%27+class%3D%22active_page_link%22%27%3B%0D%0A++echo+%27%3ENavigation%3C%2Fa%3E+%7C+%27%3B%0D%0A++echo+%27%3Ca+href%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%27%2C+%27type%3De%27%29+.+%27%22%27%3B%0D%0A++if%28%24type+%3D%3D+%27e%27%29+echo+%27+class%3D%22active_page_link%22%27%3B%0D%0A++echo+%27%3EEditor%3C%2Fa%3E%3Cbr+%2F%3E%3Cbr+%2F%3E%27%3B%0D%0A++%0D%0A++%24res+%3D+%24GLOBALS%5B%27db%27%5D-%3EExecute%28%27SELECT+id%2C+name+FROM+pages+WHERE+type+%3D+%3F+ORDER+BY+name%27%2C+%24type%29%3B%0D%0A++%0D%0A++echo+%27%3Cform+method%3D%22post%22+action%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%3AHandle%27%29+.+%27%22%3E%27%3B%0D%0A++%0D%0A++echo+%27%3Cinput+type%3D%22hidden%22+name%3D%22type%22+value%3D%22%27+.+%24type+.+%27%22+%2F%3E%27%3B%0D%0A++%0D%0A++echo+%27%3Cselect+name%3D%22id%22+size%3D%2215%22+class%3D%22pagelist+spaced-bottom%22%3E%27%3B%0D%0A++%0D%0A++while%28%24row+%3D+%24res-%3EFetchRow%28%29%29+%7B%0D%0A++++echo+%27%3Coption+value%3D%22%27+.+%24row%5B0%5D+.+%27%22%3E%27+.+%24row%5B1%5D+.+%27%3C%2Foption%3E%27%3B%0D%0A++%7D%0D%0A++%0D%0A++echo+%27%3C%2Fselect%3E%27%3B%0D%0A++echo+%27%3Cbr+%2F%3E%27%3B%0D%0A++if%28%24type+%3D%3D+%27c%27%29%0D%0A++++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22view%22+value%3D%22Anzeigen%22+%2F%3E+%27%3B%0D%0A++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22new%22+value%3D%22Neu%22+%2F%3E+%27%3B%0D%0A++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22edit%22+value%3D%22Bearbeiten%22+%2F%3E+%27%3B%0D%0A++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22copy%22+value%3D%22Kopieren%22+%2F%3E+%27%3B%0D%0A++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22rename%22+value%3D%22Umbenennen%22+%2F%3E+%27%3B%0D%0A++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22delete%22+value%3D%22L%C3%B6schen%22+%2F%3E%27%3B%0D%0A++echo+%27%3C%2Fform%3E%27%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (8, 'Pages:Handle', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fpages.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Ftemplates.inc.php%27%29%3B%0D%0A++%0D%0A++if%28%24_POST%5B%27type%27%5D+%21%3D+%27c%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27n%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27e%27%29%0D%0A++++exit%28%29%3B%0D%0A++%0D%0A++if%28isset%28%24_POST%5B%27view%27%5D%29%29+%7B%0D%0A++++if%28%24_POST%5B%27id%27%5D%29+%7B%0D%0A++++++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%24GLOBALS%5B%27pages%27%5D-%3EGetName%28%24_POST%5B%27id%27%5D%29%2C+null%2C+false%29%29%3B%0D%0A++++++%0D%0A++++++exit%28%29%3B%0D%0A++++%7D%0D%0A++%7D%0D%0A++elseif%28isset%28%24_POST%5B%27new%27%5D%29%29+%7B%0D%0A++++%24title+%3D+%27Neue+Seite%27%3B++%0D%0A++%3F%3E%0D%0A++%3Ch2%3ENeue+Seite%3C%2Fh2%3E%0D%0A++%0D%0A++%3Cform+method%3D%22post%22+action%3D%22%3C%3FPHP+echo+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%3ANew%27%29%3B+%3F%3E%22%3E%0D%0A++++%3Cinput+type%3D%22hidden%22+name%3D%22type%22+value%3D%22%3C%3FPHP+echo+%24_POST%5B%27type%27%5D%3B+%3F%3E%22+%2F%3E%0D%0A++++Name%3A+%3Cinput+type%3D%22text%22+id%3D%22pagename%22+name%3D%22name%22+size%3D%2270%22+%2F%3E%3Cbr+%2F%3E%0D%0A++++Template%3A+%3Cselect+type%3D%22text%22+class%3D%22spaced-top%22+name%3D%22template%22+size%3D%221%22+%2F%3E%0D%0A++++%3C%3FPHP%0D%0A++++++foreach%28array_keys%28%24GLOBALS%5B%27templates%27%5D%29+as+%24key%29%0D%0A++++++++echo+%27%3Coption%3E%27+.+%24key+.+%27%3C%2Foption%3E%27%3B%0D%0A++++%3F%3E%0D%0A++++%3C%2Fselect%3E%3Cbr+%2F%3E%0D%0A++++%3Cinput+type%3D%22submit%22+class%3D%22spaced-top%22+value%3D%22Neu%22+%2F%3E%0D%0A++++%3Cinput+type%3D%22submit%22+class%3D%22spaced-top%22+name%3D%22back%22+value%3D%22Zur%C3%BCck%22+%2F%3E%0D%0A++%3C%2Fform%3E%0D%0A++%3C%3FPHP%0D%0A++%7D%0D%0A++elseif%28isset%28%24_POST%5B%27edit%27%5D%29%29+%7B%0D%0A++++if%28%24_POST%5B%27id%27%5D%29+%7B%0D%0A++++++%24data+%3D+%24GLOBALS%5B%27pages%27%5D-%3EGetEditor%28%24_POST%5B%27id%27%5D%29%3B%0D%0A++++++%0D%0A++++++%24title+%3D+%24data%5B%27title%27%5D%3B%0D%0A++++++%0D%0A++++++echo+%24data%5B%27content%27%5D%3B%0D%0A++++%7D%0D%0A++%7D%0D%0A++elseif%28isset%28%24_POST%5B%27copy%27%5D%29%29+%7B%0D%0A++++if%28%24_POST%5B%27id%27%5D%29+%7B%0D%0A++++++%24name+%3D+strtr%28%24GLOBALS%5B%27pages%27%5D-%3EGetName%28%24_POST%5B%27id%27%5D%29%2C+array%28%27%3C%27+%3D%3E+%27%26lt%3B%27%2C+%27%3E%27+%3D%3E+%27%26gt%3B%27%2C+%27%26%27+%3D%3E+%27%26amp%3B%27%2C+%27%22%27+%3D%3E+%27%26quot%3B%27%29%29%3B%0D%0A++++++%0D%0A++++++%24title+%3D+%27%5C%27%27+.+%24name+.+%27%5C%27+kopieren%27%3B%0D%0A++++++++%0D%0A++++++echo+%27%3Ch2%3E%5C%27%27+.+%24name+.+%27%5C%27+kopieren%3C%2Fh2%3E%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Cform+method%3D%22post%22+action%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%3ACopy%27%29+.+%27%22%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22hidden%22+name%3D%22id%22+value%3D%22%27+.+%24_POST%5B%27id%27%5D+.+%27%22+%2F%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22hidden%22+name%3D%22type%22+value%3D%22%27+.+%24_POST%5B%27type%27%5D+.+%27%22+%2F%3E%27%3B%0D%0A++++++echo+%27Neuer+Name%3A+%3Cinput+type%3D%22text%22+name%3D%22name%22+value%3D%22%27+.+%24name+.+%27%22+size%3D%2270%22+%2F%3E%3Cbr+%2F%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+class%3D%22spaced-top%22+value%3D%22Kopieren%22+%2F%3E+%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+class%3D%22spaced-top%22+name%3D%22back%22+value%3D%22Zur%C3%BCck%22+%2F%3E%27%3B%0D%0A++++++echo+%27%3C%2Fform%3E%27%3B%0D%0A++++%7D%0D%0A++%7D%0D%0A++elseif%28isset%28%24_POST%5B%27rename%27%5D%29%29+%7B%0D%0A++++if%28%24_POST%5B%27id%27%5D%29+%7B%0D%0A++++++%24name+%3D+strtr%28%24GLOBALS%5B%27pages%27%5D-%3EGetName%28%24_POST%5B%27id%27%5D%29%2C+array%28%27%3C%27+%3D%3E+%27%26lt%3B%27%2C+%27%3E%27+%3D%3E+%27%26gt%3B%27%2C+%27%26%27+%3D%3E+%27%26amp%3B%27%2C+%27%22%27+%3D%3E+%27%26quot%3B%27%29%29%3B%0D%0A++++++%0D%0A++++++%24title+%3D+%27%5C%27%27+.+%24name+.+%27%5C%27+umbenennen%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Ch2%3E%5C%27%27+.+%24name+.+%27%5C%27+umbenennen%3C%2Fh2%3E%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Cform+method%3D%22post%22+action%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%3ARename%27%29+.+%27%22%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22hidden%22+name%3D%22id%22+value%3D%22%27+.+%24_POST%5B%27id%27%5D+.+%27%22+%2F%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22hidden%22+name%3D%22type%22+value%3D%22%27+.+%24_POST%5B%27type%27%5D+.+%27%22+%2F%3E%27%3B%0D%0A++++++echo+%27Neuer+Name%3A%3Cbr+%2F%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22text%22+name%3D%22name%22+value%3D%22%27+.+%24name+.+%27%22+size%3D%2270%22+%2F%3E%3Cbr+%2F%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+class%3D%22spaced-top%22+value%3D%22Umbenennen%22+%2F%3E+%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+class%3D%22spaced-top%22+name%3D%22back%22+value%3D%22Zur%C3%BCck%22+%2F%3E%27%3B%0D%0A++++++echo+%27%3C%2Fform%3E%27%3B%0D%0A++++%7D%0D%0A++%7D%0D%0A++elseif%28isset%28%24_POST%5B%27delete%27%5D%29%29+%7B%0D%0A++++if%28%24_POST%5B%27id%27%5D%29+%7B%0D%0A++++++%24name+%3D+strtr%28%24GLOBALS%5B%27pages%27%5D-%3EGetName%28%24_POST%5B%27id%27%5D%29%2C+array%28%27%3C%27+%3D%3E+%27%26lt%3B%27%2C+%27%3E%27+%3D%3E+%27%26gt%3B%27%2C+%27%26%27+%3D%3E+%27%26amp%3B%27%2C+%27%22%27+%3D%3E+%27%26quot%3B%27%29%29%3B%0D%0A++++++%0D%0A++++++%24title+%3D+%27%5C%27%27+.+%24name+.+%27%5C%27+l%C3%B6schen%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Ch2%3E%5C%27%27+.+%24name+.+%27%5C%27+l%C3%B6schen%3C%2Fh2%3E%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Cform+method%3D%22post%22+action%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%3ADelete%27%29+.+%27%22%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22hidden%22+name%3D%22id%22+value%3D%22%27+.+%24_POST%5B%27id%27%5D+.+%27%22+%2F%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22hidden%22+name%3D%22type%22+value%3D%22%27+.+%24_POST%5B%27type%27%5D+.+%27%22+%2F%3E%27%3B%0D%0A++++++echo+%27Wollen+Sie+die+Seite+%5C%27%27+.+%24name+.+%27%5C%27+wirklich+l%C3%B6schen%3F%3Cbr+%2F%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+class%3D%22spaced-top%22+value%3D%22L%C3%B6schen%22+%2F%3E+%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+class%3D%22spaced-top%22+name%3D%22back%22+value%3D%22Zur%C3%BCck%22+%2F%3E%27%3B%0D%0A++++++echo+%27%3C%2Fform%3E%27%3B%0D%0A++++%7D%0D%0A++%7D%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (10, 'Pages:Copy', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fpages.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Futil.inc.php%27%29%3B%0D%0A++%0D%0A++%0D%0A++if%28%24_POST%5B%27type%27%5D+%21%3D+%27c%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27n%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27e%27%29%0D%0A++++exit%28%29%3B%0D%0A++%0D%0A++if%28%24_POST%5B%27back%27%5D%29+%7B%0D%0A++++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%27%2C+%27type%3D%27+.+%24_POST%5B%27type%27%5D%2C+false%29%29%3B%0D%0A++++exit%28%29%3B%0D%0A++%7D%0D%0A++%0D%0A++if%28%21%24_POST%5B%27id%27%5D+%7C%7C+%21%24_POST%5B%27name%27%5D%29+exit%28%29%3B%0D%0A++%0D%0A++%24GLOBALS%5B%27pages%27%5D-%3ECopy%28%24_POST%5B%27id%27%5D%2C+Unquote%28%24_POST%5B%27name%27%5D%29%29%3B%0D%0A++%0D%0A++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%27%2C+%27type%3D%27+.+%24_POST%5B%27type%27%5D%2C+false%29%29%3B%0D%0A++exit%28%29%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (11, 'Pages:Rename', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fpages.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Futil.inc.php%27%29%3B%0D%0A++%0D%0A++%0D%0A++if%28%24_POST%5B%27type%27%5D+%21%3D+%27c%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27n%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27e%27%29%0D%0A++++exit%28%29%3B%0D%0A++%0D%0A++if%28%24_POST%5B%27back%27%5D%29+%7B%0D%0A++++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%27%2C+%27type%3D%27+.+%24_POST%5B%27type%27%5D%2C+false%29%29%3B%0D%0A++++exit%28%29%3B%0D%0A++%7D%0D%0A++%0D%0A++if%28%21%24_POST%5B%27id%27%5D+%7C%7C+%21%24_POST%5B%27name%27%5D%29+exit%28%29%3B%0D%0A++%0D%0A++%24GLOBALS%5B%27pages%27%5D-%3ERename%28%24_POST%5B%27id%27%5D%2C+Unquote%28%24_POST%5B%27name%27%5D%29%29%3B%0D%0A++%0D%0A++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%27%2C+%27type%3D%27+.+%24_POST%5B%27type%27%5D%2C+false%29%29%3B%0D%0A++exit%28%29%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (12, 'Pages:Edit', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fpages.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Futil.inc.php%27%29%3B%0D%0A++%0D%0A++%0D%0A++if%28%24_POST%5B%27type%27%5D+%21%3D+%27c%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27n%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27e%27%29%0D%0A++++exit%28%29%3B%0D%0A++%0D%0A++if%28%24_POST%5B%27back%27%5D%29+%7B%0D%0A++++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%27%2C+%27type%3D%27+.+%24_POST%5B%27type%27%5D%2C+false%29%29%3B%0D%0A++++exit%28%29%3B%0D%0A++%7D%0D%0A++%0D%0A++if%28%21%24_POST%5B%27id%27%5D%29+exit%28%29%3B%0D%0A++%0D%0A++%24data+%3D+array%28%29%3B%0D%0A++%0D%0A++foreach%28%24_POST+as+%24key+%3D%3E+%24val%29+%7B%0D%0A++++if%28substr%28%24key%2C+0%2C+5%29+%21%3D+%27data_%27%29+continue%3B%0D%0A++++%0D%0A++++%24data%5Bsubstr%28%24key%2C+5%29%5D+%3D+Unquote%28%24val%29%3B%0D%0A++%7D%0D%0A++%0D%0A++%24GLOBALS%5B%27pages%27%5D-%3EEdit%28%24_POST%5B%27id%27%5D%2C+%24data%29%3B%0D%0A++%0D%0A++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%27%2C+%27type%3D%27+.+%24_POST%5B%27type%27%5D%2C+false%29%29%3B%0D%0A++exit%28%29%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (14, 'Pages:New', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fpages.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Futil.inc.php%27%29%3B%0D%0A++%0D%0A++%0D%0A++if%28%24_POST%5B%27type%27%5D+%21%3D+%27c%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27n%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27e%27%29%0D%0A++++exit%28%29%3B%0D%0A++%0D%0A++if%28%24_POST%5B%27back%27%5D%29+%7B%0D%0A++++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%27%2C+%27type%3D%27+.+%24_POST%5B%27type%27%5D%2C+false%29%29%3B%0D%0A++++exit%28%29%3B%0D%0A++%7D%0D%0A++%0D%0A++if%28%21%24_POST%5B%27name%27%5D+%7C%7C+%21%24_POST%5B%27template%27%5D%29+exit%28%29%3B%0D%0A++%0D%0A++%24id+%3D+%24GLOBALS%5B%27pages%27%5D-%3EAdd%28Unquote%28%24_POST%5B%27name%27%5D%29%2C+Unquote%28%24_POST%5B%27template%27%5D%29%2C+%24_POST%5B%27type%27%5D%29%3B%0D%0A++++++%0D%0A++%24data+%3D+%24GLOBALS%5B%27pages%27%5D-%3EGetEditor%28%24id%29%3B%0D%0A++++++++%0D%0A++%24title+%3D+%24data%5B%27title%27%5D%3B%0D%0A++++++++%0D%0A++echo+%24data%5B%27content%27%5D%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (16, 'Pages:Delete', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fpages.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++%0D%0A++%0D%0A++if%28%24_POST%5B%27type%27%5D+%21%3D+%27c%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27n%27+%26%26+%24_POST%5B%27type%27%5D+%21%3D+%27e%27%29%0D%0A++++exit%28%29%3B%0D%0A++%0D%0A++if%28%24_POST%5B%27back%27%5D%29+%7B%0D%0A++++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%27%2C+%27type%3D%27+.+%24_POST%5B%27type%27%5D%2C+false%29%29%3B%0D%0A++++exit%28%29%3B%0D%0A++%7D%0D%0A++%0D%0A++if%28%21%24_POST%5B%27id%27%5D%29+exit%28%29%3B%0D%0A++%0D%0A++%24GLOBALS%5B%27pages%27%5D-%3EDelete%28%24_POST%5B%27id%27%5D%29%3B%0D%0A++%0D%0A++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%27%2C+%27type%3D%27+.+%24_POST%5B%27type%27%5D%2C+false%29%29%3B%0D%0A++exit%28%29%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (24, 'default', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++%24title+%3D+%27Edit+%5C%27%27+.+%24data%5B%27_data%27%5D%5B%27_page%27%5D+.+%27%5C%27%27%3B%0D%0A++%0D%0A++echo+%27%3Ch2%3E%27+.+%24title+.+%27%3C%2Fh2%3E%27%3B%0D%0A%3F%3E%0D%0A%3Cform+method%3D%22post%22+action%3D%22%3C%3FPHP+echo+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%3AEdit%27%29%3B+%3F%3E%22%3E%0D%0A++%3Cinput+type%3D%22hidden%22+name%3D%22id%22+value%3D%22%3C%3FPHP+echo+%24data%5B%27_data%27%5D%5B%27_id%27%5D+%3F%3E%22+%2F%3E%0D%0A++%3Cinput+type%3D%22hidden%22+name%3D%22type%22+value%3D%22%3C%3FPHP+echo+%24data%5B%27_data%27%5D%5B%27_type%27%5D%3B+%3F%3E%22+%2F%3E%0D%0A++Titel%3A+%3Cinput+type%3D%22text%22+name%3D%22data_title%22+value%3D%22%3C%3FPHP%0D%0A++++echo+strtr%28%24data%5B%27_data%27%5D%5B%27title%27%5D%2C+array%28%27%3C%27+%3D%3E+%27%26lt%3B%27%2C+%27%3E%27+%3D%3E+%27%26gt%3B%27%2C+%27%26%27+%3D%3E+%27%26amp%3B%27%2C+%27%22%27+%3D%3E+%27%26quot%3B%27%29%29%3B%0D%0A++%3F%3E%22+size%3D%2270%22+%2F%3E%3Cbr+%2F%3E%0D%0A++%3Ctextarea+name%3D%22data_content%22+class%3D%22pageedit+spaced-top+spaced-bottom%22+rows%3D%2225%22+cols%3D%2270%22%3E%3C%3FPHP%0D%0A++++echo+strtr%28%24data%5B%27_data%27%5D%5B%27content%27%5D%2C+array%28%27%3C%27+%3D%3E+%27%26lt%3B%27%2C+%27%3E%27+%3D%3E+%27%26gt%3B%27%2C+%27%26%27+%3D%3E+%27%26amp%3B%27%2C+%27%22%27+%3D%3E+%27%26quot%3B%27%29%29%3B%0D%0A++%3F%3E%3C%2Ftextarea%3E%3Cbr+%2F%3E%0D%0A++%3Cinput+type%3D%22submit%22+value%3D%22%C3%84nderungen+%C3%BCbernehmen%22+%2F%3E%0D%0A++%3Cinput+type%3D%22submit%22+name%3D%22back%22+value%3D%22Zur%C3%BCck%22+%2F%3E%0D%0A%3C%2Fform%3E%0D%0A', 'e');
-INSERT INTO `pages` VALUES (25, 'phpexec', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++%24title+%3D+%27Edit+%5C%27%27+.+%24data%5B%27_data%27%5D%5B%27_page%27%5D+.+%27%5C%27%27%3B%0D%0A++%0D%0A++echo+%27%3Ch2%3E%27+.+%24title+.+%27%3C%2Fh2%3E%27%3B%0D%0A%3F%3E%0D%0A%3Cform+method%3D%22post%22+action%3D%22%3C%3FPHP+echo+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Pages%3AEdit%27%29%3B+%3F%3E%22%3E%0D%0A++%3Cinput+type%3D%22hidden%22+name%3D%22id%22+value%3D%22%3C%3FPHP+echo+%24data%5B%27_data%27%5D%5B%27_id%27%5D+%3F%3E%22+%2F%3E%0D%0A++%3Cinput+type%3D%22hidden%22+name%3D%22type%22+value%3D%22%3C%3FPHP+echo+%24data%5B%27_data%27%5D%5B%27_type%27%5D%3B+%3F%3E%22+%2F%3E%0D%0A++%3Ctextarea+name%3D%22data_code%22+class%3D%22pageedit+spaced-bottom%22+rows%3D%2225%22+cols%3D%2270%22%3E%3C%3FPHP%0D%0A++++echo+strtr%28%24data%5B%27_data%27%5D%5B%27code%27%5D%2C+array%28%27%3C%27+%3D%3E+%27%26lt%3B%27%2C+%27%3E%27+%3D%3E+%27%26gt%3B%27%2C+%27%26%27+%3D%3E+%27%26amp%3B%27%2C+%27%22%27+%3D%3E+%27%26quot%3B%27%29%29%3B%0D%0A++%3F%3E%3C%2Ftextarea%3E%3Cbr+%2F%3E%0D%0A++%3Cinput+type%3D%22submit%22+value%3D%22%C3%84nderungen+%C3%BCbernehmen%22+%2F%3E%0D%0A++%3Cinput+type%3D%22submit%22+name%3D%22back%22+value%3D%22Zur%C3%BCck%22+%2F%3E%0D%0A%3C%2Fform%3E%0D%0A', 'e');
-INSERT INTO `pages` VALUES (26, 'Privileges', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++%0D%0A++%24title+%3D+%27Rechte%27%3B%0D%0A++%0D%0A++echo+%27%3Ch2%3ERechte%3C%2Fh2%3E%27%3B%0D%0A++%0D%0A++%24type+%3D+%24_GET%5B%27type%27%5D%3B%0D%0A++if%28%24type+%21%3D+%27c%27+%26%26+%24type+%21%3D+%27n%27+%26%26+%24type+%21%3D+%27e%27%29+%24type+%3D+%27c%27%3B%0D%0A++%0D%0A++echo+%27Seitentyp%3A+%27%3B%0D%0A++echo+%27%3Ca+href%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Privileges%27%2C+%27type%3Dc%27%29+.+%27%22%27%3B%0D%0A++if%28%24type+%3D%3D+%27c%27%29+echo+%27+class%3D%22active_page_link%22%27%3B%0D%0A++echo+%27%3EInhalt%3C%2Fa%3E+%7C+%27%3B%0D%0A++echo+%27%3Ca+href%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Privileges%27%2C+%27type%3Dn%27%29+.+%27%22%27%3B%0D%0A++if%28%24type+%3D%3D+%27n%27%29+echo+%27+class%3D%22active_page_link%22%27%3B%0D%0A++echo+%27%3ENavigation%3C%2Fa%3E+%7C+%27%3B%0D%0A++echo+%27%3Ca+href%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Privileges%27%2C+%27type%3De%27%29+.+%27%22%27%3B%0D%0A++if%28%24type+%3D%3D+%27e%27%29+echo+%27+class%3D%22active_page_link%22%27%3B%0D%0A++echo+%27%3EEditor%3C%2Fa%3E%3Cbr+%2F%3E%3Cbr+%2F%3E%27%3B%0D%0A++%0D%0A++echo+%27%3Cform+action%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Privileges%3AUpdate%27%29+.+%27%22+method%3D%22post%22%3E%27%3B%0D%0A++%0D%0A++echo+%27%3Cinput+type%3D%22hidden%22+name%3D%22type%22+value%3D%22%27+.+%24type+.+%27%22+%2F%3E%27%3B%0D%0A++%0D%0A++echo+%27%3Ctable+class%3D%22privtab%22%3E%27%3B%0D%0A++%0D%0A++%24groupres+%3D+%24GLOBALS%5B%27db%27%5D-%3EExecute%28%27SELECT+%2A+FROM+groups+ORDER+BY+id%27%29%3B%0D%0A++%24pages+%3D+%24GLOBALS%5B%27db%27%5D-%3EExecute%28%27SELECT+id%2C+name%2C+access+FROM+pages+WHERE+type+%3D+%3F+ORDER+BY+name%27%2C+%24type%29%3B%0D%0A++%0D%0A++%24groups+%3D+%24groupres-%3EGetArray%28%29%3B%0D%0A++array_unshift%28%24groups%2C+array%280%2C+%27Gast%27%29%29%3B%0D%0A++%0D%0A++echo+%27%3Ctr+class%3D%22group%22%3E%27%3B%0D%0A++%0D%0A++echo+%27%3Ctd%3E%3C%2Ftd%3E%27%3B%0D%0A++%0D%0A++foreach%28%24groups+as+%24group%29+%7B%0D%0A++++echo+%27%3Ctd%3E%27+.+%24group%5B1%5D+.+%27%3C%2Ftd%3E%27%3B%0D%0A++%7D%0D%0A++%0D%0A++echo+%27%3C%2Ftr%3E%27%3B%0D%0A++%0D%0A++%24linex+%3D+true%3B%0D%0A++%0D%0A++while%28%24page+%3D+%24pages-%3EFetchRow%28%29%29+%7B%0D%0A++++echo+%27%3Ctr+class%3D%22line%27+.+%28%24linex+%3F+%271%27+%3A+%272%27%29+.+%27%22%3E%27%3B%0D%0A++++%24linex+%3D+%21%24linex%3B%0D%0A++++%0D%0A++++echo+%27%3Ctd+class%3D%22page%22%3E%27+.+%24page%5B1%5D+.+%27%3C%2Ftd%3E%27%3B%0D%0A++++%0D%0A++++foreach%28%24groups+as+%24group%29+%7B%0D%0A++++++echo+%27%3Ctd%3E%3Cinput+type%3D%22checkbox%22+name%3D%22%27+.+%24group%5B0%5D+.+%27%3A%27+.+%24page%5B0%5D+.+%27%22+value%3D%22true%22+%27%3B%0D%0A++++++if%28%28ord%28%24page%5B2%5D%5B%24group%5B0%5D%2F8%5D%29+%26+%281+%3C%3C+%28%24group%5B0%5D%258%29%29%29+%21%3D+0%29+echo+%27checked%3D%22checked%22+%27%3B%0D%0A++++++echo+%27%2F%3E%3C%2Ftd%3E%27%3B%0D%0A++++%7D%0D%0A++++%0D%0A++++echo+%27%3C%2Ftr%3E%27%3B%0D%0A++%7D%0D%0A++%0D%0A++echo+%27%3Ctr%3E%3Ctd+colspan%3D%22%27+.+%28count%28%24groups%29%2B1%29+.+%27%22+class%3D%22submit%22%3E%27%3B%0D%0A++echo+%27%3Cinput+type%3D%22submit%22+value%3D%22%C3%84ndern%22+class%3D%22spaced-top%22+%2F%3E%27%3B%0D%0A++echo+%27%3C%2Ftd%3E%3C%2Ftr%3E%27%3B%0D%0A++%0D%0A++echo+%27%3C%2Ftable%3E%27%3B%0D%0A++%0D%0A++echo+%27%3C%2Fform%3E%27%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (36, 'Users:Handle', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fdb.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Fuser.inc.php%27%29%3B%0D%0A++%0D%0A++if%28isset%28%24_POST%5B%27new%27%5D%29%29+%7B%0D%0A++++%24title+%3D+%27Neuer+Benutzer%27%3B++%0D%0A++%3F%3E%0D%0A++%3Ch2%3ENeuer+Benutzer%3C%2Fh2%3E%0D%0A++%0D%0A++%3Cform+method%3D%22post%22+action%3D%22%3C%3FPHP+echo+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%3ANew%27%29%3B+%3F%3E%22%3E%0D%0A++++%3Cdiv+class%3D%22spaced-bottom%22%3EName%3A+%3Cinput+type%3D%22text%22+id%3D%22username%22+name%3D%22name%22+size%3D%2270%22+%2F%3E%3C%2Fdiv%3E%0D%0A++++Gruppe%3A%3Cbr+%2F%3E%0D%0A++++%3Cselect+name%3D%22gid%22+size%3D%2215%22+class%3D%22grouplist+spaced-bottom%22%3E%0D%0A++++++%3Coption+value%3D%220%22%3EAdministrator%3C%2Foption%3E%0D%0A++++++%3C%3FPHP%0D%0A++++++++%24res+%3D+%24GLOBALS%5B%27db%27%5D-%3EExecute%28%27SELECT+%2A+FROM+groups+ORDER+BY+name%27%29%3B%0D%0A++++++++%0D%0A++++++++while%28%24group+%3D+%24res-%3EFetchRow%28%29%29+%7B%0D%0A++++++++++echo+%27%3Coption+value%3D%22%27+.+%24group%5B0%5D+.+%27%22%3E%27+.+strtr%28%24group%5B1%5D%2C+array%28%27%3C%27+%3D%3E+%27%26lt%3B%27%2C+%27%3E%27+%3D%3E+%27%26gt%3B%27%2C+%27%26%27+%3D%3E+%27%26amp%3B%27%2C+%27%22%27+%3D%3E+%27%26quot%3B%27%29%29+.+%27%3C%2Foption%3E%27%3B%0D%0A++++++++%7D%0D%0A++++++%3F%3E%0D%0A++++%3C%2Fselect%3E%3Cbr+%2F%3E%0D%0A++++Passwort%3A%3Cbr+%2F%3E%0D%0A++++%3Cinput+type%3D%22password%22+class%3D%22spaced-bottom%22+name%3D%22password%22+size%3D%2230%22+%2F%3E%3Cbr+%2F%3E%0D%0A++++Best%C3%A4tigen%3A%3Cbr+%2F%3E%0D%0A++++%3Cinput+type%3D%22password%22+class%3D%22spaced-bottom%22+name%3D%22password2%22+size%3D%2230%22+%2F%3E%3Cbr+%2F%3E%0D%0A++++%3Cinput+type%3D%22submit%22+value%3D%22Neu%22+%2F%3E%0D%0A++++%3Cinput+type%3D%22submit%22+name%3D%22back%22+value%3D%22Zur%C3%BCck%22+%2F%3E%0D%0A++%3C%2Fform%3E%0D%0A++%3C%3FPHP%0D%0A++%7D%0D%0A++elseif%28isset%28%24_POST%5B%27group%27%5D%29%29+%7B%0D%0A++++if%28%24_POST%5B%27id%27%5D%29+%7B%0D%0A++++++%24name+%3D+strtr%28%24GLOBALS%5B%27user%27%5D-%3EGetName%28%24_POST%5B%27id%27%5D%29%2C+array%28%27%3C%27+%3D%3E+%27%26lt%3B%27%2C+%27%3E%27+%3D%3E+%27%26gt%3B%27%2C+%27%26%27+%3D%3E+%27%26amp%3B%27%2C+%27%22%27+%3D%3E+%27%26quot%3B%27%29%29%3B%0D%0A++++++%24gid+%3D+%24GLOBALS%5B%27user%27%5D-%3EGetGid%28%24_POST%5B%27id%27%5D%29%3B%0D%0A++++++%0D%0A++++++%24title+%3D+%27Gruppe+von+%5C%27%27+.+%24name+.+%27%5C%27+%C3%A4ndern%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Ch2%3EGruppe+von+%5C%27%27+.+%24name+.+%27%5C%27+%C3%A4ndern%3C%2Fh2%3E%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Cform+method%3D%22post%22+action%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%3AGroup%27%29+.+%27%22%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22hidden%22+name%3D%22id%22+value%3D%22%27+.+%24_POST%5B%27id%27%5D+.+%27%22+%2F%3E%27%3B%0D%0A++++++echo+%27Neue+Gruppe%3A%3Cbr+%2F%3E%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Cselect+name%3D%22gid%22+size%3D%2215%22+class%3D%22grouplist+spaced-bottom%22%3E%27%3B%0D%0A++++++%0D%0A++++++%24res+%3D+%24GLOBALS%5B%27db%27%5D-%3EExecute%28%27SELECT+%2A+FROM+groups+ORDER+BY+name%27%29%3B%0D%0A++++++%24groups+%3D+%24res-%3EGetArray%28%29%3B%0D%0A++++++array_unshift%28%24groups%2C+array%280%2C+%27Administrator%27%29%29%3B%0D%0A++++++%0D%0A++++++foreach%28%24groups+as+%24group%29+%7B%0D%0A++++++++echo+%27%3Coption+value%3D%22%27+.+%24group%5B0%5D+.+%27%22%27%3B%0D%0A++++++++if%28%24group%5B0%5D+%3D%3D+%24gid%29+echo+%27+selected%3D%22selected%22%27%3B%0D%0A++++++++echo+%27%3E%27+.+strtr%28%24group%5B1%5D%2C+array%28%27%3C%27+%3D%3E+%27%26lt%3B%27%2C+%27%3E%27+%3D%3E+%27%26gt%3B%27%2C+%27%26%27+%3D%3E+%27%26amp%3B%27%2C+%27%22%27+%3D%3E+%27%26quot%3B%27%29%29+.+%27%3C%2Foption%3E%27%3B%0D%0A++++++%7D%0D%0A++++++%0D%0A++++++echo+%27%3C%2Fselect%3E%3Cbr+%2F%3E%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+value%3D%22%C3%84ndern%22+%2F%3E+%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22back%22+value%3D%22Zur%C3%BCck%22+%2F%3E%27%3B%0D%0A++++++echo+%27%3C%2Fform%3E%27%3B%0D%0A++++%7D%0D%0A++%7D%0D%0A++elseif%28isset%28%24_POST%5B%27password%27%5D%29%29+%7B%0D%0A++++if%28%24_POST%5B%27id%27%5D%29+%7B%0D%0A++++++%24name+%3D+strtr%28%24GLOBALS%5B%27user%27%5D-%3EGetName%28%24_POST%5B%27id%27%5D%29%2C+array%28%27%3C%27+%3D%3E+%27%26lt%3B%27%2C+%27%3E%27+%3D%3E+%27%26gt%3B%27%2C+%27%26%27+%3D%3E+%27%26amp%3B%27%2C+%27%22%27+%3D%3E+%27%26quot%3B%27%29%29%3B%0D%0A++++++%0D%0A++++++%24title+%3D+%27Passwort+von+%5C%27%27+.+%24name+.+%27%5C%27+%C3%A4ndern%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Ch2%3EPasswort+von+%5C%27%27+.+%24name+.+%27%5C%27+%C3%A4ndern%3C%2Fh2%3E%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Cform+method%3D%22post%22+action%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%3APassword%27%29+.+%27%22%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22hidden%22+name%3D%22id%22+value%3D%22%27+.+%24_POST%5B%27id%27%5D+.+%27%22+%2F%3E%27%3B%0D%0A++++++echo+%27Neues+Passwort%3A%3Cbr+%2F%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22password%22+name%3D%22password%22+class%3D%22spaced-bottom%22+size%3D%2230%22+%2F%3E%3Cbr+%2F%3E%27%3B%0D%0A++++++echo+%27Best%C3%A4tigen%3A%3Cbr+%2F%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22password%22+name%3D%22password2%22+class%3D%22spaced-bottom%22+size%3D%2230%22+%2F%3E%3Cbr+%2F%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+value%3D%22%C3%84ndern%22+%2F%3E+%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22back%22+value%3D%22Zur%C3%BCck%22+%2F%3E%27%3B%0D%0A++++++echo+%27%3C%2Fform%3E%27%3B%0D%0A++++%7D%0D%0A++%7D%0D%0A++elseif%28isset%28%24_POST%5B%27rename%27%5D%29%29+%7B%0D%0A++++if%28%24_POST%5B%27id%27%5D%29+%7B%0D%0A++++++%24name+%3D+strtr%28%24GLOBALS%5B%27user%27%5D-%3EGetName%28%24_POST%5B%27id%27%5D%29%2C+array%28%27%3C%27+%3D%3E+%27%26lt%3B%27%2C+%27%3E%27+%3D%3E+%27%26gt%3B%27%2C+%27%26%27+%3D%3E+%27%26amp%3B%27%2C+%27%22%27+%3D%3E+%27%26quot%3B%27%29%29%3B%0D%0A++++++%0D%0A++++++%24title+%3D+%27%5C%27%27+.+%24name+.+%27%5C%27+umbenennen%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Ch2%3E%5C%27%27+.+%24name+.+%27%5C%27+umbenennen%3C%2Fh2%3E%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Cform+method%3D%22post%22+action%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%3ARename%27%29+.+%27%22%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22hidden%22+name%3D%22id%22+value%3D%22%27+.+%24_POST%5B%27id%27%5D+.+%27%22+%2F%3E%27%3B%0D%0A++++++echo+%27Neuer+Name%3A+%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22text%22+name%3D%22name%22+value%3D%22%27+.+%24name+.+%27%22+size%3D%2270%22+%2F%3E%3Cbr+%2F%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+class%3D%22spaced-top%22+value%3D%22Umbenennen%22+%2F%3E+%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+class%3D%22spaced-top%22+name%3D%22back%22+value%3D%22Zur%C3%BCck%22+%2F%3E%27%3B%0D%0A++++++echo+%27%3C%2Fform%3E%27%3B%0D%0A++++%7D%0D%0A++%7D%0D%0A++elseif%28isset%28%24_POST%5B%27delete%27%5D%29%29+%7B%0D%0A++++if%28%24_POST%5B%27id%27%5D%29+%7B%0D%0A++++++%24name+%3D+strtr%28%24GLOBALS%5B%27user%27%5D-%3EGetName%28%24_POST%5B%27id%27%5D%29%2C+array%28%27%3C%27+%3D%3E+%27%26lt%3B%27%2C+%27%3E%27+%3D%3E+%27%26gt%3B%27%2C+%27%26%27+%3D%3E+%27%26amp%3B%27%2C+%27%22%27+%3D%3E+%27%26quot%3B%27%29%29%3B%0D%0A++++++%0D%0A++++++%24title+%3D+%27%5C%27%27+.+%24name+.+%27%5C%27+l%C3%B6schen%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Ch2%3E%5C%27%27+.+%24name+.+%27%5C%27+l%C3%B6schen%3C%2Fh2%3E%27%3B%0D%0A++++++%0D%0A++++++echo+%27%3Cform+method%3D%22post%22+action%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%3ADelete%27%29+.+%27%22%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22hidden%22+name%3D%22id%22+value%3D%22%27+.+%24_POST%5B%27id%27%5D+.+%27%22+%2F%3E%27%3B%0D%0A++++++echo+%27Wollen+Sie+den+Benutzer+%5C%27%27+.+%24name+.+%27%5C%27+wirklich+l%C3%B6schen%3F%3Cbr+%2F%3E%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+class%3D%22spaced-top%22+value%3D%22L%C3%B6schen%22+%2F%3E+%27%3B%0D%0A++++++echo+%27%3Cinput+type%3D%22submit%22+class%3D%22spaced-top%22+name%3D%22back%22+value%3D%22Zur%C3%BCck%22+%2F%3E%27%3B%0D%0A++++++echo+%27%3C%2Fform%3E%27%3B%0D%0A++++%7D%0D%0A++%7D%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (34, 'Users', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fdb.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++%0D%0A++%24title+%3D+%27Benutzer%27%3B%0D%0A++%0D%0A++echo+%27%3Ch2%3EBenutzer%3C%2Fh2%3E%27%3B%0D%0A++%0D%0A++%24res+%3D+%24GLOBALS%5B%27db%27%5D-%3EExecute%28%27SELECT+id%2C+user+FROM+users+ORDER+BY+user%27%29%3B%0D%0A++%0D%0A++echo+%27%3Cform+method%3D%22post%22+action%3D%22%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%3AHandle%27%29+.+%27%22%3E%27%3B%0D%0A++%0D%0A++echo+%27%3Cselect+name%3D%22id%22+size%3D%2215%22+class%3D%22userlist+spaced-bottom%22%3E%27%3B%0D%0A++%0D%0A++while%28%24row+%3D+%24res-%3EFetchRow%28%29%29+%7B%0D%0A++++echo+%27%3Coption+value%3D%22%27+.+%24row%5B0%5D+.+%27%22%3E%27+.+%24row%5B1%5D+.+%27%3C%2Foption%3E%27%3B%0D%0A++%7D%0D%0A++%0D%0A++echo+%27%3C%2Fselect%3E%27%3B%0D%0A++echo+%27%3Cbr+%2F%3E%27%3B%0D%0A++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22new%22+value%3D%22Neu%22+%2F%3E+%27%3B%0D%0A++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22group%22+value%3D%22Gruppe+%C3%A4ndern%22+%2F%3E+%27%3B%0D%0A++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22password%22+value%3D%22Passwort+%C3%A4ndern%22+%2F%3E+%27%3B%0D%0A++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22rename%22+value%3D%22Umbenennen%22+%2F%3E+%27%3B%0D%0A++echo+%27%3Cinput+type%3D%22submit%22+name%3D%22delete%22+value%3D%22L%C3%B6schen%22+%2F%3E%27%3B%0D%0A++echo+%27%3C%2Fform%3E%27%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (37, 'Users:Delete', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fuser.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++%0D%0A++%0D%0A++if%28%24_POST%5B%27back%27%5D%29+%7B%0D%0A++++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%27%2C+null%2C+false%29%29%3B%0D%0A++++exit%28%29%3B%0D%0A++%7D%0D%0A++%0D%0A++if%28%21%24_POST%5B%27id%27%5D%29+exit%28%29%3B%0D%0A++%0D%0A++%24GLOBALS%5B%27user%27%5D-%3EDelete%28%24_POST%5B%27id%27%5D%29%3B%0D%0A++%0D%0A++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%27%2C+null%2C+false%29%29%3B%0D%0A++exit%28%29%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (38, 'Users:Rename', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fuser.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Futil.inc.php%27%29%3B%0D%0A++%0D%0A++%0D%0A++if%28%24_POST%5B%27back%27%5D%29+%7B%0D%0A++++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%27%2C+null%2C+false%29%29%3B%0D%0A++++exit%28%29%3B%0D%0A++%7D%0D%0A++%0D%0A++if%28%21%24_POST%5B%27id%27%5D+%7C%7C+%21%24_POST%5B%27name%27%5D%29+exit%28%29%3B%0D%0A++%0D%0A++%24GLOBALS%5B%27user%27%5D-%3ERename%28%24_POST%5B%27id%27%5D%2C+Unquote%28%24_POST%5B%27name%27%5D%29%29%3B%0D%0A++%0D%0A++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%27%2C+null%2C+false%29%29%3B%0D%0A++exit%28%29%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (39, 'Users:Password', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fuser.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Futil.inc.php%27%29%3B%0D%0A++%0D%0A++%0D%0A++if%28%24_POST%5B%27back%27%5D%29+%7B%0D%0A++++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%27%2C+null%2C+false%29%29%3B%0D%0A++++exit%28%29%3B%0D%0A++%7D%0D%0A++%0D%0A++if%28%21%24_POST%5B%27id%27%5D+%7C%7C+%21%24_POST%5B%27password%27%5D+%7C%7C+%21%24_POST%5B%27password2%27%5D%29+exit%28%29%3B%0D%0A++%0D%0A++if%28%24_POST%5B%27password%27%5D+%21%3D+%24_POST%5B%27password2%27%5D%29+exit%28%29%3B%0D%0A++%0D%0A++%24GLOBALS%5B%27user%27%5D-%3EChangePassword%28%24_POST%5B%27id%27%5D%2C+Unquote%28%24_POST%5B%27password%27%5D%29%29%3B%0D%0A++%0D%0A++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%27%2C+null%2C+false%29%29%3B%0D%0A++exit%28%29%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (41, 'Users:New', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fuser.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Futil.inc.php%27%29%3B%0D%0A++%0D%0A++%0D%0A++if%28%24_POST%5B%27back%27%5D%29+%7B%0D%0A++++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%27%2C+null%2C+false%29%29%3B%0D%0A++++exit%28%29%3B%0D%0A++%7D%0D%0A++%0D%0A++if%28%21%24_POST%5B%27name%27%5D+%7C%7C+%21isset%28%24_POST%5B%27gid%27%5D%29+%7C%7C+%21%24_POST%5B%27password%27%5D+%7C%7C+%21%24_POST%5B%27password2%27%5D%29+exit%28%29%3B%0D%0A++%0D%0A++if%28%24_POST%5B%27password%27%5D+%21%3D+%24_POST%5B%27password2%27%5D%29+exit%28%29%3B%0D%0A++%0D%0A++%24GLOBALS%5B%27user%27%5D-%3EAdd%28Unquote%28%24_POST%5B%27name%27%5D%29%2C+%24_POST%5B%27gid%27%5D%2C+Unquote%28%24_POST%5B%27password%27%5D%29%29%3B%0D%0A++%0D%0A++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%27%2C+null%2C+false%29%29%3B%0D%0A++exit%28%29%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (40, 'Users:Group', 'phpexec', 0x00, 'code=%3C%3FPHP%0D%0A++require_once%28%27code%2Fuser.inc.php%27%29%3B%0D%0A++require_once%28%27code%2Flinks.inc.php%27%29%3B%0D%0A++%0D%0A++%0D%0A++if%28%24_POST%5B%27back%27%5D%29+%7B%0D%0A++++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%27%2C+null%2C+false%29%29%3B%0D%0A++++exit%28%29%3B%0D%0A++%7D%0D%0A++%0D%0A++if%28%21isset%28%24_POST%5B%27id%27%5D%29+%7C%7C+%21isset%28%24_POST%5B%27gid%27%5D%29%29+exit%28%29%3B%0D%0A++%0D%0A++%24GLOBALS%5B%27user%27%5D-%3EChangeGroup%28%24_POST%5B%27id%27%5D%2C+%24_POST%5B%27gid%27%5D%29%3B%0D%0A++%0D%0A++header%28%27Location%3A+%27+.+%24GLOBALS%5B%27links%27%5D-%3EGetNeonLink%28%27Users%27%2C+null%2C+false%29%29%3B%0D%0A++exit%28%29%3B%0D%0A%3F%3E%0D%0A', 'c');
-INSERT INTO `pages` VALUES (42, 'Test:BBCode', 'bbcode', 0x09, 'title=BBCode&code=Test%0D%0A%5Bb%5DTest%5B%2Fb%5D%0D%0A%5Bi%5DTest%5B%2Fi%5D%0D%0A%5Bu%5DTest%5B%2Fu%5D', 'c');
+INSERT INTO `pages` VALUES (47, 'Home:Startseite', 'default', 0x09, 'title=Startseite&content=Welcome+to+Neon&', 'c');
+INSERT INTO `pages` VALUES (48, 'Test:LoremIpsum', 'default', 0x09, 'title=Lorem+Ipsum&content=Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Ut+a+sapien.+Aliquam+aliquet+purus+molestie+dolor.+Integer+quis+eros+ut+erat+posuere+dictum.+Curabitur+dignissim.+Integer+orci.+Fusce+vulputate+lacus+at+ipsum.+Quisque+in+libero+nec+mi+laoreet+volutpat.+Aliquam+eros+pede%2C+scelerisque+quis%2C+tristique+cursus%2C+placerat+convallis%2C+velit.+Nam+condimentum.+Nulla+ut+mauris.+Curabitur+adipiscing%2C+mauris+non+dictum+aliquam%2C+arcu+risus+dapibus+diam%2C+nec+sollicitudin+quam+erat+quis+ligula.+Aenean+massa+nulla%2C+volutpat+eu%2C+accumsan+et%2C+fringilla+eget%2C+odio.+Nulla+placerat+porta+justo.+Nulla+vitae+turpis.+Praesent+lacus.%0AVestibulum+ante+ipsum+primis+in+faucibus+orci+luctus+et+ultrices+posuere+cubilia+Curae%3B+Aliquam+ultricies+lacus+eu+dui.+Duis+viverra+risus+et+eros.+Aenean+odio+dolor%2C+tristique+quis%2C+commodo+id%2C+posuere+sit+amet%2C+dui.+Pellentesque+velit.+Aliquam+erat+volutpat.+Duis+sagittis+nibh+sed+justo.+Sed+ultrices+nisl+sed+pede.+Sed+tempor+lorem+in+leo.+Integer+gravida+tincidunt+nunc.+Vivamus+ut+quam+vel+ligula+tristique+condimentum.+Proin+facilisis.+Aliquam+sagittis+lacinia+mi.+Donec+sagittis+luctus+dui.+Maecenas+quam+ante%2C+vestibulum+auctor%2C+blandit+in%2C+iaculis+in%2C+velit.+Aliquam+at+ligula.+Nam+a+tellus.+Aliquam+eu+nulla+at+turpis+vulputate+hendrerit.+Proin+at+diam.+Curabitur+euismod.%0ALorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Pellentesque+habitant+morbi+tristique+senectus+et+netus+et+malesuada+fames+ac+turpis+egestas.+Quisque+vel+erat+eget+diam+consectetuer+iaculis.+Cras+ante+velit%2C+suscipit+et%2C+porta+tempus%2C+dignissim+quis%2C+magna.+Vivamus+viverra%2C+turpis+nec+rhoncus+ultricies%2C+diam+turpis+eleifend+nisl%2C+a+eleifend+ante+felis+ac+sapien.+Integer+bibendum.+Suspendisse+in+mi+non+neque+bibendum+convallis.+Suspendisse+potenti.+Sed+sit+amet+purus+at+felis+adipiscing+aliquam.+Vivamus+et+nisl+sit+amet+mauris+aliquet+molestie.+Integer+tortor+massa%2C+aliquam+a%2C+lacinia+nonummy%2C+sagittis+nec%2C+eros.+Nunc+non+mauris+id+eros+venenatis+adipiscing.+Cras+et+lectus+ut+nisl+pharetra+ornare.+Proin+leo+risus%2C+elementum+eget%2C+ultrices+vitae%2C+molestie+sed%2C+erat.+Curabitur+et+lectus+in+tellus+egestas+hendrerit.+Sed+dapibus+ipsum.+Quisque+sit+amet+ligula.+Suspendisse+odio+dolor%2C+semper+id%2C+feugiat+quis%2C+sodales+id%2C+mauris.+Curabitur+id+ligula+ac+libero+malesuada+pharetra.%0ASuspendisse+potenti.+Cras+ut+mi+sit+amet+quam+consequat+consequat.+Aenean+ut+lectus.+Cum+sociis+natoque+penatibus+et+magnis+dis+parturient+montes%2C+nascetur+ridiculus+mus.+Suspendisse+vel+sapien.+Nullam+non+turpis.+Pellentesque+elementum+pharetra+ligula.+In+rhoncus.+Aliquam+vel+enim+consequat+sem+aliquet+hendrerit.+Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Nam+felis.%0ACum+sociis+natoque+penatibus+et+magnis+dis+parturient+montes%2C+nascetur+ridiculus+mus.+Maecenas+tortor+metus%2C+pellentesque+nec%2C+vehicula+vitae%2C+suscipit+sed%2C+quam.+Aenean+scelerisque+sodales+tortor.+Sed+purus.+Curabitur+turpis+est%2C+bibendum+tristique%2C+porttitor+tempor%2C+pulvinar+vitae%2C+tortor.+Nullam+malesuada+dapibus+orci.+Vivamus+aliquet+tempus+velit.+Curabitur+interdum+posuere+risus.+Duis+egestas%2C+ipsum+sit+amet+molestie+tincidunt%2C+ligula+libero+pretium+risus%2C+non+faucibus+tellus+felis+mattis+sapien.+Ut+eu+velit+at+massa+auctor+mattis.+Nam+tristique+velit+quis+nisl.%0AVivamus+neque+velit%2C+ornare+vitae%2C+tempor+vel%2C+ultrices+et%2C+wisi.+Cras+pede.+Phasellus+nunc+turpis%2C+cursus+non%2C+rhoncus+vitae%2C+sollicitudin+vel%2C+velit.+Vivamus+suscipit+lorem+sed+felis.+Vestibulum+vestibulum+ultrices+turpis.+Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Praesent+ornare+nulla+nec+justo.+Sed+nec+risus+ac+risus+fermentum+vestibulum.+Etiam+viverra+viverra+sem.+Etiam+molestie+mi+quis+metus+hendrerit+tristique.%0AQuisque+lobortis+euismod+metus.+Nam+ante.+Nulla+fermentum%2C+risus+non+pulvinar+porttitor%2C+enim+pede+egestas+nibh%2C+sit+amet+posuere+metus+tortor+id+enim.+Donec+at+sem.+Vestibulum+in+lectus+ut+diam+lacinia+lacinia.+Maecenas+sit+amet+nulla.+Suspendisse+vel+dolor.+Nunc+hendrerit+elit+vitae+quam.+In+nonummy+velit+nec+lorem.+Etiam+rhoncus+felis+a+turpis.+Aliquam+vel+nulla.+Ut+nonummy%2C+nisl+non+sodales+iaculis%2C+mi+tellus+viverra+diam%2C+eget+euismod+dui+turpis+at+mi.+Class+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+hymenaeos.+Vestibulum+nec+quam+ac+lectus+sagittis+tincidunt.%0ANulla+facilisi.+Nam+varius+ante+dignissim+arcu.+Suspendisse+molestie+dignissim+neque.+Suspendisse+leo+ipsum%2C+rutrum+cursus%2C+malesuada+id%2C+dapibus+sed%2C+urna.+Fusce+sollicitudin+laoreet+diam.+Mauris+eu+quam+eget+nulla+fermentum+adipiscing.+In+hac+habitasse+platea+dictumst.+Morbi+ut+odio+vitae+eros+luctus+luctus.+Ut+diam.+Phasellus+ullamcorper+arcu+vitae+wisi.+Pellentesque+urna+odio%2C+varius+eget%2C+dignissim+quis%2C+vehicula+placerat%2C+nunc.+Ut+nec+metus+quis+nulla+posuere+eleifend.%0ASuspendisse+nibh.+Nunc+vulputate+leo+id+urna.+Donec+dictum.+Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Suspendisse+dictum%2C+magna+consectetuer+hendrerit+volutpat%2C+sapien+felis+faucibus+justo%2C+ac+dictum+lacus+pede+in+metus.+Nam+commodo.+Sed+consequat%2C+leo+pretium+sagittis+congue%2C+ante+nunc+laoreet+nisl%2C+ac+aliquam+risus+tellus+commodo+elit.+Cras+at+elit.+Pellentesque+suscipit+erat+vitae+mauris.+Sed+iaculis+eros+vitae+mauris.+Vestibulum+ante+ipsum+primis+in+faucibus+orci+luctus+et+ultrices+posuere+cubilia+Curae%3B+Suspendisse+id+ante+et+elit+accumsan+semper.+Sed+et+nibh+eget+purus+scelerisque+volutpat.+Sed+mi.+Proin+tellus+felis%2C+tincidunt+eget%2C+dictum+et%2C+adipiscing+et%2C+urna.+Cras+accumsan+diam+sed+turpis.+Etiam+sollicitudin+lacus.%0ANam+iaculis+blandit+purus.+Mauris+odio+nibh%2C+hendrerit+id%2C+cursus+vel%2C+sagittis+a%2C+dolor.+Nullam+turpis+lacus%2C+ultrices+vel%2C+sagittis+vitae%2C+dapibus+vel%2C+elit.+Suspendisse+auctor%2C+sapien+et+suscipit+tempor%2C+turpis+enim+consequat+sem%2C+eu+dictum+nunc+lorem+at+massa.+Pellentesque+scelerisque+purus.+Etiam+sed+enim.+Maecenas+sed+tortor+id+turpis+consequat+consequat.+Curabitur+fringilla.+Sed+risus+wisi%2C+dictum+a%2C+sagittis+nec%2C+luctus+ac%2C+neque.+Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Sed+nibh+neque%2C+aliquam+ut%2C+sagittis+id%2C+gravida+et%2C+est.+Aenean+consectetuer+pretium+enim.+Aenean+tellus+quam%2C+condimentum+a%2C+adipiscing+et%2C+lacinia+vel%2C+ante.+Praesent+faucibus+dignissim+enim.+Aliquam+tincidunt.+Mauris+leo+ante%2C+condimentum+eget%2C+vestibulum+sit+amet%2C+fringilla+eget%2C+diam.+Nam+ultricies+ullamcorper+nibh.+Etiam+neque.+Ut+posuere+laoreet+pede.&', 'c');
+INSERT INTO `pages` VALUES (49, 'Test:BBCode', 'bbcode', 0x09, 'title=BBCode&code=Test%0A%5Bb%5DTest%5Bb%5D%0A%5Bi%5DTest%5B%2Fi%5D%0A%5Bu%5DTest%5B%2Fu%5D&', 'c');
-- --------------------------------------------------------
@@ -122,12 +101,12 @@ CREATE TABLE `users` (
`lastaccess` timestamp NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user` (`user`)
-) TYPE=MyISAM AUTO_INCREMENT=5 ;
+) TYPE=MyISAM AUTO_INCREMENT=6 ;
--
-- Daten für Tabelle `users`
--
-INSERT INTO `users` VALUES (1, '', 0, 'NeoRaider', 'gamezock', '2006-04-11 22:15:35');
+INSERT INTO `users` VALUES (1, '', 0, 'NeoRaider', 'gamezock', '2006-04-13 02:30:31');
INSERT INTO `users` VALUES (3, '', 0, 'sicarius', 'armleuchter', '2006-03-05 23:46:46');
INSERT INTO `users` VALUES (4, '', 0, 'morti', 'return', '2006-03-05 22:02:27');
diff --git a/pages/Login.c.xml b/pages/Login.c.xml
new file mode 100644
index 0000000..5175136
--- /dev/null
+++ b/pages/Login.c.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Login</name>
+ <template>phpexec</template>
+ <access>01</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ if($_POST['name'] && $_POST['password'] && $_POST['page']) {
+ require_once('code/user.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/message.inc.php');
+ require_once('code/util.inc.php');
+
+ if($GLOBALS['user']->Login(Unquote($_POST['name']), Unquote($_POST['password']))) {
+ header('Location: ' . $GLOBALS['links']->GetNeonLink($_POST['page'], null, false));
+ exit();
+ }
+ }
+
+ $title = Message('Error');
+
+ echo '<span class="error">' . Message('LoginError') . '</span>';
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Login.n.xml b/pages/Login.n.xml
new file mode 100644
index 0000000..c6c50b3
--- /dev/null
+++ b/pages/Login.n.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Login</name>
+ <template>phpexec</template>
+ <access>01</access>
+ <type>n</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ if(!$GLOBALS['user']->uid) {
+ require_once('code/user.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/util.inc.php');
+
+ echo '<form action="';
+ echo $GLOBALS['links']->GetNeonLink('Login');
+ echo '" method="post">';
+ ?>
+ <div class="login">
+ User:<br />
+ <input type="text" name="name" /><br />
+ Passwort:<br />
+ <input type="password" name="password" /><br />
+ <input type="hidden" name="page" value="<?PHP
+ if($_POST['page']) echo Unquote($_POST['page']);
+ else echo $GLOBALS['page'];
+ ?>" />
+ <div class="login_submit">
+ <input type="submit" value="Login" />
+
+ </div>
+ </div>
+</form>
+<?PHP
+ }
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Logout.c.xml b/pages/Logout.c.xml
new file mode 100644
index 0000000..4fcb5b2
--- /dev/null
+++ b/pages/Logout.c.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Logout</name>
+ <template>phpexec</template>
+ <access>08</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ require_once('config/config.inc.php');
+
+ require_once('code/user.inc.php');
+ require_once('code/links.inc.php');
+
+ $GLOBALS['user']->Logout();
+
+ header('Location: ' . $GLOBALS['links']->GetNeonLink($GLOBALS['config']['home'], null, false));
+
+ exit();
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Pages.c.xml b/pages/Pages.c.xml
new file mode 100644
index 0000000..8435abd
--- /dev/null
+++ b/pages/Pages.c.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Pages</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ require_once('code/links.inc.php');
+ require_once('code/pages.inc.php');
+
+ $title = 'Seiten';
+
+ echo '<h2>Seiten</h2>';
+
+ $type = $_GET['type'];
+ if($type != 'c' && $type != 'n' && $type != 'e') $type = 'c';
+
+ echo 'Seitentyp: ';
+ echo '<a href="' . $GLOBALS['links']->GetNeonLink('Pages', 'type=c') . '"';
+ if($type == 'c') echo ' class="active_page_link"';
+ echo '>Inhalt</a> | ';
+ echo '<a href="' . $GLOBALS['links']->GetNeonLink('Pages', 'type=n') . '"';
+ if($type == 'n') echo ' class="active_page_link"';
+ echo '>Navigation</a> | ';
+ echo '<a href="' . $GLOBALS['links']->GetNeonLink('Pages', 'type=e') . '"';
+ if($type == 'e') echo ' class="active_page_link"';
+ echo '>Editor</a><br /><br />';
+
+ echo '<form method="post" action="' . $GLOBALS['links']->GetNeonLink('Pages:Handle') . '">';
+
+ echo '<input type="hidden" name="type" value="' . $type . '" />';
+
+ echo '<select name="name" size="15" class="pagelist spaced-bottom">';
+
+ foreach($GLOBALS['pages']->GetList() as $page)
+ if($page[strlen($page)-1] == $type)
+ echo '<option>' . substr($page, 0, -2) . '</option>';
+
+ echo '</select>';
+ echo '<br />';
+ if($type == 'c')
+ echo '<input type="submit" name="view" value="Anzeigen" /> ';
+ echo '<input type="submit" name="new" value="Neu" /> ';
+ echo '<input type="submit" name="edit" value="Bearbeiten" /> ';
+ echo '<input type="submit" name="copy" value="Kopieren" /> ';
+ echo '<input type="submit" name="rename" value="Umbenennen" /> ';
+ echo '<input type="submit" name="delete" value="Löschen" />';
+ echo '</form>';
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Pages/Copy.c.xml b/pages/Pages/Copy.c.xml
new file mode 100644
index 0000000..49aede8
--- /dev/null
+++ b/pages/Pages/Copy.c.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Pages:Copy</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ require_once('code/pages.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/util.inc.php');
+
+
+ if($_POST['type'] != 'c' && $_POST['type'] != 'n' && $_POST['type'] != 'e')
+ exit();
+
+ if($_POST['back']) {
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Pages', 'type=' . $_POST['type'], false));
+ exit();
+ }
+
+ if(!$_POST['name'] || !$_POST['newname']) exit();
+
+ $GLOBALS['pages']->Copy(Unquote($_POST['name']), $_POST['type'], Unquote($_POST['newname']));
+
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Pages', 'type=' . $_POST['type'], false));
+ exit();
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Pages/Delete.c.xml b/pages/Pages/Delete.c.xml
new file mode 100644
index 0000000..62c8f41
--- /dev/null
+++ b/pages/Pages/Delete.c.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Pages:Delete</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ require_once('code/pages.inc.php');
+ require_once('code/links.inc.php');
+
+
+ if($_POST['type'] != 'c' && $_POST['type'] != 'n' && $_POST['type'] != 'e')
+ exit();
+
+ if($_POST['back']) {
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Pages', 'type=' . $_POST['type'], false));
+ exit();
+ }
+
+ if(!$_POST['name']) exit();
+
+ $GLOBALS['pages']->Delete(Unquote($_POST['name']), $_POST['type']);
+
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Pages', 'type=' . $_POST['type'], false));
+ exit();
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Pages/Edit.c.xml b/pages/Pages/Edit.c.xml
new file mode 100644
index 0000000..bf4ea6a
--- /dev/null
+++ b/pages/Pages/Edit.c.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Pages:Edit</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ require_once('code/pages.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/util.inc.php');
+
+
+ if($_POST['type'] != 'c' && $_POST['type'] != 'n' && $_POST['type'] != 'e')
+ exit();
+
+ if($_POST['back']) {
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Pages', 'type=' . $_POST['type'], false));
+ exit();
+ }
+
+ if(!$_POST['name']) exit();
+
+ $data = array();
+
+ foreach($_POST as $key => $val) {
+ if(substr($key, 0, 5) != 'data_') continue;
+
+ $data[substr($key, 5)] = Unquote($val);
+ }
+
+ $GLOBALS['pages']->Edit(Unquote($_POST['name']), $_POST['type'], $data);
+
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Pages', 'type=' . $_POST['type'], false));
+ exit();
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Pages/Handle.c.xml b/pages/Pages/Handle.c.xml
new file mode 100644
index 0000000..55aae8b
--- /dev/null
+++ b/pages/Pages/Handle.c.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Pages:Handle</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ require_once('code/pages.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/templates.inc.php');
+
+ if($_POST['type'] != 'c' && $_POST['type'] != 'n' && $_POST['type'] != 'e')
+ exit();
+
+ if(isset($_POST['view'])) {
+ if($_POST['name']) {
+ header('Location: ' . $GLOBALS['links']->GetNeonLink(Unquote($_POST['name']), null, false));
+ exit();
+ }
+ }
+ elseif(isset($_POST['new'])) {
+ $title = 'Neue Seite';
+ ?>
+ <h2>Neue Seite</h2>
+
+ <form method="post" action="<?PHP echo $GLOBALS['links']->GetNeonLink('Pages:New'); ?>">
+ <input type="hidden" name="type" value="<?PHP echo $_POST['type']; ?>" />
+ Name: <input type="text" id="pagename" name="name" size="70" /><br />
+ Template: <select type="text" class="spaced-top" name="template" size="1" />
+ <?PHP
+ foreach(array_keys($GLOBALS['templates']) as $key)
+ echo '<option>' . $key . '</option>';
+ ?>
+ </select><br />
+ <input type="submit" class="spaced-top" value="Neu" />
+ <input type="submit" class="spaced-top" name="back" value="Zurück" />
+ </form>
+ <?PHP
+ }
+ elseif(isset($_POST['edit'])) {
+ if($_POST['name']) {
+ $data = $GLOBALS['pages']->GetEditor(Unquote($_POST['name']), $_POST['type']);
+
+ $title = $data['title'];
+
+ echo $data['content'];
+ }
+ }
+ elseif(isset($_POST['copy'])) {
+ if($_POST['name']) {
+ $name = strtr(Unquote($_POST['name']), array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+
+ $title = '\'' . $name . '\' kopieren';
+
+ echo '<h2>\'' . $name . '\' kopieren</h2>';
+
+ echo '<form method="post" action="' . $GLOBALS['links']->GetNeonLink('Pages:Copy') . '">';
+ echo '<input type="hidden" name="name" value="' . $name . '" />';
+ echo '<input type="hidden" name="type" value="' . $_POST['type'] . '" />';
+ echo 'Neuer Name: <input type="text" name="newname" value="' . $name . '" size="70" /><br />';
+ echo '<input type="submit" class="spaced-top" value="Kopieren" /> ';
+ echo '<input type="submit" class="spaced-top" name="back" value="Zurück" />';
+ echo '</form>';
+ }
+ }
+ elseif(isset($_POST['rename'])) {
+ if($_POST['name']) {
+ $name = strtr(Unquote($_POST['name']), array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+
+ $title = '\'' . $name . '\' umbenennen';
+
+ echo '<h2>\'' . $name . '\' umbenennen</h2>';
+
+ echo '<form method="post" action="' . $GLOBALS['links']->GetNeonLink('Pages:Rename') . '">';
+ echo '<input type="hidden" name="name" value="' . $name . '" />';
+ echo '<input type="hidden" name="type" value="' . $_POST['type'] . '" />';
+ echo 'Neuer Name:<br />';
+ echo '<input type="text" name="newname" value="' . $name . '" size="70" /><br />';
+ echo '<input type="submit" class="spaced-top" value="Umbenennen" /> ';
+ echo '<input type="submit" class="spaced-top" name="back" value="Zurück" />';
+ echo '</form>';
+ }
+ }
+ elseif(isset($_POST['delete'])) {
+ if($_POST['name']) {
+ $name = strtr(Unquote($_POST['name']), array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+
+ $title = '\'' . $name . '\' löschen';
+
+ echo '<h2>\'' . $name . '\' löschen</h2>';
+
+ echo '<form method="post" action="' . $GLOBALS['links']->GetNeonLink('Pages:Delete') . '">';
+ echo '<input type="hidden" name="name" value="' . $name . '" />';
+ echo '<input type="hidden" name="type" value="' . $_POST['type'] . '" />';
+ echo 'Wollen Sie die Seite \'' . $name . '\' wirklich löschen?<br />';
+ echo '<input type="submit" class="spaced-top" value="Löschen" /> ';
+ echo '<input type="submit" class="spaced-top" name="back" value="Zurück" />';
+ echo '</form>';
+ }
+ }
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Pages/New.c.xml b/pages/Pages/New.c.xml
new file mode 100644
index 0000000..8ee794e
--- /dev/null
+++ b/pages/Pages/New.c.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Pages:New</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ require_once('code/pages.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/util.inc.php');
+
+
+ if($_POST['type'] != 'c' && $_POST['type'] != 'n' && $_POST['type'] != 'e')
+ exit();
+
+ if($_POST['back']) {
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Pages', 'type=' . $_POST['type'], false));
+ exit();
+ }
+
+ if(!$_POST['name'] || !$_POST['template']) exit();
+
+ $GLOBALS['pages']->Add(Unquote($_POST['name']), $_POST['type'], Unquote($_POST['template']));
+
+ $data = $GLOBALS['pages']->GetEditor(Unquote($_POST['name']), $_POST['type']);
+
+ $title = $data['title'];
+
+ echo $data['content'];
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Pages/Rename.c.xml b/pages/Pages/Rename.c.xml
new file mode 100644
index 0000000..be485e2
--- /dev/null
+++ b/pages/Pages/Rename.c.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Pages:Rename</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ require_once('code/pages.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/util.inc.php');
+
+
+ if($_POST['type'] != 'c' && $_POST['type'] != 'n' && $_POST['type'] != 'e')
+ exit();
+
+ if($_POST['back']) {
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Pages', 'type=' . $_POST['type'], false));
+ exit();
+ }
+
+ if(!$_POST['name'] || !$_POST['newname']) exit();
+
+ $GLOBALS['pages']->Rename(Unquote($_POST['name']), $_POST['type'], Unquote($_POST['newname']));
+
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Pages', 'type=' . $_POST['type'], false));
+ exit();
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Privileges.c.xml b/pages/Privileges.c.xml
new file mode 100644
index 0000000..7374abb
--- /dev/null
+++ b/pages/Privileges.c.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Privileges</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ require_once('code/db.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/pages.inc.php');
+
+ $title = 'Rechte';
+
+ echo '<h2>Rechte</h2>';
+
+ $type = $_GET['type'];
+ if($type != 'c' && $type != 'n' && $type != 'e') $type = 'c';
+
+ echo 'Seitentyp: ';
+ echo '<a href="' . $GLOBALS['links']->GetNeonLink('Privileges', 'type=c') . '"';
+ if($type == 'c') echo ' class="active_page_link"';
+ echo '>Inhalt</a> | ';
+ echo '<a href="' . $GLOBALS['links']->GetNeonLink('Privileges', 'type=n') . '"';
+ if($type == 'n') echo ' class="active_page_link"';
+ echo '>Navigation</a> | ';
+ echo '<a href="' . $GLOBALS['links']->GetNeonLink('Privileges', 'type=e') . '"';
+ if($type == 'e') echo ' class="active_page_link"';
+ echo '>Editor</a><br /><br />';
+
+ echo '<form action="' . $GLOBALS['links']->GetNeonLink('Privileges:Update') . '" method="post">';
+
+ echo '<input type="hidden" name="type" value="' . $type . '" />';
+
+ echo '<table class="privtab">';
+
+ $groupres = $GLOBALS['db']->Execute('SELECT * FROM groups ORDER BY id');
+ $pages = $GLOBALS['pages']->GetList();
+
+ $groups = $groupres->GetArray();
+ array_unshift($groups, array(0, 'Gast'));
+
+ echo '<tr class="group">';
+
+ echo '<td></td>';
+
+ foreach($groups as $group) {
+ echo '<td>' . $group[1] . '</td>';
+ }
+
+ echo '</tr>';
+
+ $linex = true;
+
+ foreach($pages as $page) {
+ if($page[strlen($page)-1] != $type) continue;
+
+ $pagedata = $GLOBALS['pages']->GetPageData(substr($page, 0, -2), $type);
+
+ echo '<tr class="line' . ($linex ? '1' : '2') . '">';
+ $linex = !$linex;
+
+ echo '<td class="page">' . $pagedata['name'] . '</td>';
+
+ foreach($groups as $group) {
+ echo '<td><input type="checkbox" name="' . $pagedata['name'] . ':' . $group[0] . '" value="true" ';
+ if((hexdec(substr($pagedata['access'], ($group[0]/8)*2, 2)) & (1 << ($group[0]%8))) != 0) echo 'checked="checked" ';
+ echo '/></td>';
+ }
+
+ echo '</tr>';
+ }
+
+ echo '<tr><td colspan="' . (count($groups)+1) . '" class="submit">';
+ echo '<input type="submit" value="Ändern" class="spaced-top" />';
+ echo '</td></tr>';
+
+ echo '</table>';
+
+ echo '</form>';
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Privileges/Update.c.xml b/pages/Privileges/Update.c.xml
new file mode 100644
index 0000000..033bb7f
--- /dev/null
+++ b/pages/Privileges/Update.c.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Privileges:Update</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ require_once('code/db.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/pages.inc.php');
+
+ if($_POST['type'] != 'c' && $_POST['type'] != 'n' && $_POST['type'] != 'e')
+ exit();
+
+ $groupres = $GLOBALS['db']->Execute('SELECT id FROM groups ORDER by id');
+ $pages = $GLOBALS['pages']->GetList();
+
+ $groups = $groupres->GetArray();
+ array_unshift($groups, array(0));
+
+ $group_max = $groups[count($groups)-1][0];
+
+ foreach($pages as $page) {
+ if($page[strlen($page)-1] != $_POST['type']) continue;
+
+ $page = substr($page, 0, -2);
+
+ $access = array_fill(0, $group_max/8 + 1, 0);
+
+ foreach($groups as $group) {
+ if(isset($_POST[$page . ':' . $group[0]]))
+ $access[$group[0]/8] |= (1 << ($group[0]%8));
+ }
+
+ $privileges = join('', array_map('chr', $access));
+
+ $GLOBALS['db']->Execute('UPDATE pages SET access = ? WHERE name = ?', array($privileges, $page));
+
+ if($GLOBALS['db']->Affected_Rows()) continue;
+
+ $pagedata = $GLOBALS['pages']->GetPageData($page, $_POST['type']);
+
+ $access = '';
+
+ for($i = 0; $i < strlen($pagedata['access']); $i+=2)
+ $access .= chr(hexdec(substr($pagedata['access'], $i, 2)));
+
+ if($access == substr($privileges, 0, strlen($access))) {
+ for($i = strlen($access); $i < strlen($privileges); $i++)
+ if($privileges[$i] != 0) break;
+
+ if($i == strlen($privileges)) continue;
+ }
+
+ $string = '';
+
+ foreach($pagedata['data'] as $key => $val)
+ $string .= urlencode($key) . '=' . urlencode($val) . '&';
+
+ $GLOBALS['db']->Execute('INSERT INTO pages (name, template, access, data, type) VALUES (?, ?, ?, ?, ?)',
+ array($page, $pagedata['template'], $access, $string, $_POST['type']));
+ }
+
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Privileges', 'type=' . $_POST['type'], false));
+ exit();
+
+ $GLOBALS['pages']->GetPageData()
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Users.c.xml b/pages/Users.c.xml
new file mode 100644
index 0000000..076f035
--- /dev/null
+++ b/pages/Users.c.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Users</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ require_once('code/db.inc.php');
+ require_once('code/links.inc.php');
+
+ $title = 'Benutzer';
+
+ echo '<h2>Benutzer</h2>';
+
+ $res = $GLOBALS['db']->Execute('SELECT id, user FROM users ORDER BY user');
+
+ echo '<form method="post" action="' . $GLOBALS['links']->GetNeonLink('Users:Handle') . '">';
+
+ echo '<select name="id" size="15" class="userlist spaced-bottom">';
+
+ while($row = $res->FetchRow()) {
+ echo '<option value="' . $row[0] . '">' . $row[1] . '</option>';
+ }
+
+ echo '</select>';
+ echo '<br />';
+ echo '<input type="submit" name="new" value="Neu" /> ';
+ echo '<input type="submit" name="group" value="Gruppe ändern" /> ';
+ echo '<input type="submit" name="password" value="Passwort ändern" /> ';
+ echo '<input type="submit" name="rename" value="Umbenennen" /> ';
+ echo '<input type="submit" name="delete" value="Löschen" />';
+ echo '</form>';
+?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Users/Delete.c.xml b/pages/Users/Delete.c.xml
new file mode 100644
index 0000000..c4d9594
--- /dev/null
+++ b/pages/Users/Delete.c.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Users:Delete</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+ <?PHP
+ require_once('code/user.inc.php');
+ require_once('code/links.inc.php');
+
+
+ if($_POST['back']) {
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Users', null, false));
+ exit();
+ }
+
+ if(!$_POST['id']) exit();
+
+ $GLOBALS['user']->Delete($_POST['id']);
+
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Users', null, false));
+ exit();
+ ?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Users/Group.c.xml b/pages/Users/Group.c.xml
new file mode 100644
index 0000000..3a7f216
--- /dev/null
+++ b/pages/Users/Group.c.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Users:Group</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+ <?PHP
+ require_once('code/user.inc.php');
+ require_once('code/links.inc.php');
+
+
+ if($_POST['back']) {
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Users', null, false));
+ exit();
+ }
+
+ if(!isset($_POST['id']) || !isset($_POST['gid'])) exit();
+
+ $GLOBALS['user']->ChangeGroup($_POST['id'], $_POST['gid']);
+
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Users', null, false));
+ exit();
+ ?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Users/Handle.c.xml b/pages/Users/Handle.c.xml
new file mode 100644
index 0000000..9002d9f
--- /dev/null
+++ b/pages/Users/Handle.c.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Users:Handle</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+ <?PHP
+ require_once('code/db.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/user.inc.php');
+
+ if(isset($_POST['new'])) {
+ $title = 'Neuer Benutzer';
+ ?>
+ <h2>Neuer Benutzer</h2>
+
+ <form method="post" action="<?PHP echo $GLOBALS['links']->GetNeonLink('Users:New'); ?>">
+ <div class="spaced-bottom">Name: <input type="text" id="username" name="name" size="70" /></div>
+ Gruppe:<br />
+ <select name="gid" size="15" class="grouplist spaced-bottom">
+ <option value="0">Administrator</option>
+ <?PHP
+ $res = $GLOBALS['db']->Execute('SELECT * FROM groups ORDER BY name');
+
+ while($group = $res->FetchRow()) {
+ echo '<option value="' . $group[0] . '">' . strtr($group[1], array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;')) . '</option>';
+ }
+ ?>
+ </select><br />
+ Passwort:<br />
+ <input type="password" class="spaced-bottom" name="password" size="30" /><br />
+ Bestätigen:<br />
+ <input type="password" class="spaced-bottom" name="password2" size="30" /><br />
+ <input type="submit" value="Neu" />
+ <input type="submit" name="back" value="Zurück" />
+ </form>
+ <?PHP
+ }
+ elseif(isset($_POST['group'])) {
+ if($_POST['id']) {
+ $name = strtr($GLOBALS['user']->GetName($_POST['id']), array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+ $gid = $GLOBALS['user']->GetGid($_POST['id']);
+
+ $title = 'Gruppe von \'' . $name . '\' ändern';
+
+ echo '<h2>Gruppe von \'' . $name . '\' ändern</h2>';
+
+ echo '<form method="post" action="' . $GLOBALS['links']->GetNeonLink('Users:Group') . '">';
+ echo '<input type="hidden" name="id" value="' . $_POST['id'] . '" />';
+ echo 'Neue Gruppe:<br />';
+
+ echo '<select name="gid" size="15" class="grouplist spaced-bottom">';
+
+ $res = $GLOBALS['db']->Execute('SELECT * FROM groups ORDER BY name');
+ $groups = $res->GetArray();
+ array_unshift($groups, array(0, 'Administrator'));
+
+ foreach($groups as $group) {
+ echo '<option value="' . $group[0] . '"';
+ if($group[0] == $gid) echo ' selected="selected"';
+ echo '>' . strtr($group[1], array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;')) . '</option>';
+ }
+
+ echo '</select><br />';
+
+ echo '<input type="submit" value="Ändern" /> ';
+ echo '<input type="submit" name="back" value="Zurück" />';
+ echo '</form>';
+ }
+ }
+ elseif(isset($_POST['password'])) {
+ if($_POST['id']) {
+ $name = strtr($GLOBALS['user']->GetName($_POST['id']), array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+
+ $title = 'Passwort von \'' . $name . '\' ändern';
+
+ echo '<h2>Passwort von \'' . $name . '\' ändern</h2>';
+
+ echo '<form method="post" action="' . $GLOBALS['links']->GetNeonLink('Users:Password') . '">';
+ echo '<input type="hidden" name="id" value="' . $_POST['id'] . '" />';
+ echo 'Neues Passwort:<br />';
+ echo '<input type="password" name="password" class="spaced-bottom" size="30" /><br />';
+ echo 'Bestätigen:<br />';
+ echo '<input type="password" name="password2" class="spaced-bottom" size="30" /><br />';
+ echo '<input type="submit" value="Ändern" /> ';
+ echo '<input type="submit" name="back" value="Zurück" />';
+ echo '</form>';
+ }
+ }
+ elseif(isset($_POST['rename'])) {
+ if($_POST['id']) {
+ $name = strtr($GLOBALS['user']->GetName($_POST['id']), array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+
+ $title = '\'' . $name . '\' umbenennen';
+
+ echo '<h2>\'' . $name . '\' umbenennen</h2>';
+
+ echo '<form method="post" action="' . $GLOBALS['links']->GetNeonLink('Users:Rename') . '">';
+ echo '<input type="hidden" name="id" value="' . $_POST['id'] . '" />';
+ echo 'Neuer Name: ';
+ echo '<input type="text" name="name" value="' . $name . '" size="70" /><br />';
+ echo '<input type="submit" class="spaced-top" value="Umbenennen" /> ';
+ echo '<input type="submit" class="spaced-top" name="back" value="Zurück" />';
+ echo '</form>';
+ }
+ }
+ elseif(isset($_POST['delete'])) {
+ if($_POST['id']) {
+ $name = strtr($GLOBALS['user']->GetName($_POST['id']), array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+
+ $title = '\'' . $name . '\' löschen';
+
+ echo '<h2>\'' . $name . '\' löschen</h2>';
+
+ echo '<form method="post" action="' . $GLOBALS['links']->GetNeonLink('Users:Delete') . '">';
+ echo '<input type="hidden" name="id" value="' . $_POST['id'] . '" />';
+ echo 'Wollen Sie den Benutzer \'' . $name . '\' wirklich löschen?<br />';
+ echo '<input type="submit" class="spaced-top" value="Löschen" /> ';
+ echo '<input type="submit" class="spaced-top" name="back" value="Zurück" />';
+ echo '</form>';
+ }
+ }
+ ?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Users/New.c.xml b/pages/Users/New.c.xml
new file mode 100644
index 0000000..2356c37
--- /dev/null
+++ b/pages/Users/New.c.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Users:New</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+ <?PHP
+ require_once('code/user.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/util.inc.php');
+
+
+ if($_POST['back']) {
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Users', null, false));
+ exit();
+ }
+
+ if(!$_POST['name'] || !isset($_POST['gid']) || !$_POST['password'] || !$_POST['password2']) exit();
+
+ if($_POST['password'] != $_POST['password2']) exit();
+
+ $GLOBALS['user']->Add(Unquote($_POST['name']), $_POST['gid'], Unquote($_POST['password']));
+
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Users', null, false));
+ exit();
+ ?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Users/Password.c.xml b/pages/Users/Password.c.xml
new file mode 100644
index 0000000..5544e6b
--- /dev/null
+++ b/pages/Users/Password.c.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Users:Password</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+ <?PHP
+ require_once('code/user.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/util.inc.php');
+
+
+ if($_POST['back']) {
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Users', null, false));
+ exit();
+ }
+
+ if(!$_POST['id'] || !$_POST['password'] || !$_POST['password2']) exit();
+
+ if($_POST['password'] != $_POST['password2']) exit();
+
+ $GLOBALS['user']->ChangePassword($_POST['id'], Unquote($_POST['password']));
+
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Users', null, false));
+ exit();
+ ?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/Users/Rename.c.xml b/pages/Users/Rename.c.xml
new file mode 100644
index 0000000..c076b10
--- /dev/null
+++ b/pages/Users/Rename.c.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>Users:Rename</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>c</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+ <?PHP
+ require_once('code/user.inc.php');
+ require_once('code/links.inc.php');
+ require_once('code/util.inc.php');
+
+
+ if($_POST['back']) {
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Users', null, false));
+ exit();
+ }
+
+ if(!$_POST['id'] || !$_POST['name']) exit();
+
+ $GLOBALS['user']->Rename($_POST['id'], Unquote($_POST['name']));
+
+ header('Location: ' . $GLOBALS['links']->GetNeonLink('Users', null, false));
+ exit();
+ ?>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/default.e.xml b/pages/default.e.xml
new file mode 100644
index 0000000..da641dd
--- /dev/null
+++ b/pages/default.e.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>phpexec</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>e</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ $title = 'Edit \'' . $data['_data']['_page'] . '\'';
+
+ echo '<h2>' . $title . '</h2>';
+?>
+<form method="post" action="<?PHP echo $GLOBALS['links']->GetNeonLink('Pages:Edit'); ?>">
+ <input type="hidden" name="name" value="<?PHP echo $data['_data']['_page'] ?>" />
+ <input type="hidden" name="type" value="<?PHP echo $data['_data']['_type']; ?>" />
+ Titel: <input type="text" name="data_title" value="<?PHP
+ echo strtr($data['_data']['title'], array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+ ?>" size="70" /><br />
+ <textarea name="data_content" class="pageedit spaced-top spaced-bottom" rows="25" cols="70"><?PHP
+ echo strtr($data['_data']['content'], array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+ ?></textarea><br />
+ <input type="submit" value="Änderungen übernehmen" />
+ <input type="submit" name="back" value="Zurück" />
+</form>
+ ]]>
+ </code>
+ </data>
+</page>
diff --git a/pages/phpexec.e.xml b/pages/phpexec.e.xml
new file mode 100644
index 0000000..d56262d
--- /dev/null
+++ b/pages/phpexec.e.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<page>
+ <info>
+ <name>phpexec</name>
+ <template>phpexec</template>
+ <access>00</access>
+ <type>e</type>
+ </info>
+ <data>
+ <code>
+ <![CDATA[
+<?PHP
+ $title = 'Edit \'' . $data['_data']['_page'] . '\'';
+
+ echo '<h2>' . $title . '</h2>';
+?>
+<form method="post" action="<?PHP echo $GLOBALS['links']->GetNeonLink('Pages:Edit'); ?>">
+ <input type="hidden" name="name" value="<?PHP echo $data['_data']['_page'] ?>" />
+ <input type="hidden" name="type" value="<?PHP echo $data['_data']['_type']; ?>" />
+ <textarea name="data_code" class="pageedit spaced-bottom" rows="25" cols="70"><?PHP
+ echo strtr($data['_data']['code'], array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+ ?></textarea><br />
+ <input type="submit" value="Änderungen übernehmen" />
+ <input type="submit" name="back" value="Zurück" />
+</form>
+ ]]>
+ </code>
+ </data>
+</page>