diff options
Diffstat (limited to 'code/pages.inc.php')
-rw-r--r-- | code/pages.inc.php | 57 |
1 files changed, 22 insertions, 35 deletions
diff --git a/code/pages.inc.php b/code/pages.inc.php index f24f283..24d0ec4 100644 --- a/code/pages.inc.php +++ b/code/pages.inc.php @@ -7,56 +7,43 @@ include('code/handlers.inc.php'); class Pages { - function Get($name, $type) { - if(!$this->Exists($name, $type)) { - $message = $GLOBALS['handlers']['default']->ErrorMessage('PageNotFound', array('page' => $name)); - - if(!$message['title']) $message['title'] = $name; - - return $message; - } + function Get($name, $type, $extra = null) { + if(!$this->Exists($name, $type)) + return array('title' => $name, + 'content' => ErrorMessage('PageNotFound', array('page' => $name))); - $res = DBQuery('SELECT handler, data FROM pages WHERE name = ? AND type = ?', array($name, $type)); + $res = DBQuery('SELECT id, handler, data FROM pages WHERE name = ? AND type = ?', array($name, $type)); - if(!$this->HasAccess($name, $type)) { - $message = $GLOBALS['handlers'][$res->fields[0]]->ErrorMessage('Forbidden', array('page' => $name)); - - if(!$message['title']) $message['title'] = $name; - - return $message; - } + if(!$this->HasAccess($name, $type)) + return array('title' => $name, + 'content' => ErrorMessage('Forbidden', array('page' => $name))); - parse_str($res->fields[1], $data); + parse_str($res->fields[2], $data); $data = array_map('stripslashes', $data); + if($extra) $data = array_merge($data, $extra); + $data['_id'] = $res->fields[0]; $data['_page'] = $name; - return $GLOBALS['handlers'][$res->fields[0]]->Get($data); + return $GLOBALS['handlers'][$res->fields[1]]->Get($data); } function Edit($name, $type) { - if(!$this->Exists($name, $type)) { - $message = $GLOBALS['handlers']['default']->ErrorMessage('PageNotFound', array('page' => $name)); - - if(!$message['title']) $message['title'] = $name; - - return $message; - } + if(!$this->Exists($name, $type)) + return array('title' => $name, + 'content' => ErrorMessage('PageNotFound', array('page' => $name))); - $res = DBQuery('SELECT handler, data FROM pages WHERE name = ? AND type = ?', array($name, $type)); + $res = DBQuery('SELECT id, handler, data FROM pages WHERE name = ? AND type = ?', array($name, $type)); - if(!$GLOBALS['user']->IsAdmin()) { - $message = $GLOBALS['handlers'][$res->fields[0]]->ErrorMessage('Forbidden', array('page' => $name)); - - if(!$message['title']) $message['title'] = $name; - - return $message; - } + if(!$GLOBALS['user']->IsAdmin()) + return array('title' => $name, + 'content' => ErrorMessage('Forbidden', array('page' => $name))); - parse_str($res->fields[1], $data); + parse_str($res->fields[2], $data = null); $data = array_map('stripslashes', $data); + $data['_id'] = $res->fields[0]; $data['_page'] = $name; - return $GLOBALS['handlers'][$res->fields[0]]->Edit($data); + return $this->Get($res->fields[1], 'e', array('_data' => $data)); } function Exists($name, $type) { |