function action_login($args) { global $manager, $tree, $user, $config, $lang; if ($config->get('inlineLogin')) { $page = new theme(); $t = new Template($this->getTemplate('inline.template')); $l =& $lang; } else { $page = new admin(); $t = new Template($this->getTemplate('form.template')); $l =& $user->lang; } if (count($args)) { $id = array_shift($args); // Check if the id contains an file extension if (preg_match('/(.*)\\.([a-z0-9]+)$/i', $id, $matches)) { $id = $matches[1]; } $t->set('url', url::item($id, 'login')); if ($_SERVER['REQUEST_METHOD'] == 'POST') { $user->login(url::item($id)); // If we end up here, we did not properly login... probably // username or password not correct... $t->set('error', $l->s('passwordnotcorrect')); } else { if (!$config->get('redirectToLogin')) { $page->template->set('error', $l->s('notenoughrights') . ' ' . $l->s('logintoview')); } } } else { $t->set('url', url::action('login')); if ($_SERVER['REQUEST_METHOD'] == 'POST') { $user->login(); // If we end up here, we did not properly login... probably // username or password not correct... $t->set('error', $l->s('passwordnotcorrect')); } } // Notify plugins of a PreSkinParse event; $data = array('page' => &$page, 'template' => &$page->template, 'type' => null, 'params' => array('action' => 'login', 'id' => null, 'args' => $args)); $manager->handleEvent('PreSkinParse', $data); $page->template->set('title', $l->s('login')); $page->template->set('content', $t->fetch()); $page->template->set('type', 'login'); $page->show(); }
function action_settings($args) { global $manager, $tree, $user, $lang; /* Get all admins */ $admins = $manager->adminHandlers; /* Sort admins based on position */ $compare_position = create_function('$a, $b', 'return ($a["position"] == $b["position"]) ? 0 : (($a["position"] < $b["position"]) ? -1 : 1);'); uasort($admins, $compare_position); /* Decode arguments */ $current = ''; if (count($args)) { $current = array_shift($args); } if ($current == '' && count($admins)) { $current = key($admins); } reset($admins); // Setup template $page = new admin(); // Notify plugins of a PreSkinParse event; $data = array('page' => &$page, 'template' => &$page->template, 'type' => 'admin', 'params' => array('action' => 'admin', 'args' => $args)); $manager->handleEvent('PreSkinParse', $data); // Handle authorisation $ticket = false; if (isset($_REQUEST['ticket'])) { if (ticket::authorize($_REQUEST['ticket']) == $current) { $ticket = true; } } if ($ticket || $user->root() || $user->admin() && $admins[$current]['public']) { $t = new Template($this->getTemplate('tab.template')); $t->set('tabs', $admins); $t->set('current', $current); $page->template->set('tabs', $t->fetch()); $manager->handleAdmin($current, $data); $page->show(); } else { header('Location: ' . url::root()); exit; } }
function action_view($args) { global $manager, $tree, $config, $user, $lang; // If no arguments are provided redirect if (!count($args)) { $id = $tree->getHome(); if (!is_null($id)) { header('Location: ' . url::item($id)); exit; } // There are no pages $id = 0; $type = ''; $ext = ''; $item = null; if ($user->admin()) { // Allow admins to add pages... $action = 'edit'; $page = new admin(); // Notify plugins of a PreSkinParse event; $data = array('page' => &$page, 'template' => &$page->template, 'type' => $type, 'params' => array('action' => $action, 'id' => $id, 'ext' => $ext, 'args' => $args)); $manager->handleEvent('PreSkinParse', $data); $page->show(); exit; } else { if ($lang->id != _DEFAULT_LANGUAGE_) { // Redirect to the default language header('Location: ' . url::language(_DEFAULT_LANGUAGE_)); } else { // Show error message that website is offline $config = new config(); $lang = new language(_DEFAULT_LANGUAGE_, _DEFAULT_SITE_, true); $page = new theme(); $page->showError(_OFFLINE_MESSAGE_, 4); } } } else { // Decode argumenst $id = array_shift($args); // Check if the id contains an file extension if (preg_match('/(.*)\\.([a-z0-9]+)$/i', $id, $matches)) { $id = $matches[1]; $ext = $matches[2]; } else { $ext = ''; } // Load the page $item =& $tree->getItemById($id); $id = $item['id']; $type = $item['type']; $action = 'view'; // Setup Theme $page = new theme($id, $type); } // Notify plugins of a PreSkinParse event; $data = array('page' => &$page, 'template' => &$page->template, 'type' => $type, 'params' => array('action' => $action, 'id' => $id, 'ext' => $ext, 'args' => $args)); $manager->handleEvent('PreSkinParse', $data); // Handle authorisation $ticket = false; if (isset($_REQUEST['ticket'])) { if (ticket::authorize($_REQUEST['ticket']) == $data['params']['id']) { $ticket = true; } } if ($ticket || $tree->_hasRights('view', $item['rights'])) { $page->title->set($item['name']); if ($item['title'] != '') { $page->title->set($item['title']); } $manager->handleType($type, $data); $page->template->set('action', $action); $page->template->set('id', $id); $page->template->set('slug', isset($item['slug']) ? $item['slug'] : ''); $page->template->set('type', $type); if (isset($item)) { if (!isset($manager->types[$item['type']]['generated']) || !$manager->types[$item['type']]['generated']) { if ($config->get('showLastModified')) { $page->template->set('modified', revisions::getModificationDate($id, $item['revision'])); } } } } else { if ($config->get('redirectToLogin') && $user->anonymous()) { array_unshift($args, $id); $manager->handleAction('login', $args); //header ('Location: ' . url::item($id, 'login')); exit; } else { $page->template->set('error', $lang->s('notenoughrights')); } } $page->show(); }