/** * コンストラクタ */ public function __construct() { global $adminpass, $vars; // if (!isset($this->auth_name)) throw new Exception('$this->auth_name has not set.'); // コールバック先のページ $page = isset($vars['page']) ? $vars['page'] : null; // 管理人のパスワードのハッシュを暗号/復号のキーとする list(, $salt) = Auth::passwd_parse($adminpass); // 暗号化/復号化用 $this->bc = BlockCipher::factory('mcrypt', array('algo' => 'des', 'mode' => 'cfb', 'hash' => 'sha512', 'salt' => $salt)); // コールバック先のURL。通常プラグインのコールバックアドレスが返される $this->callbackUrl = isset($this->auth_name) ? Router::get_resolve_uri($this->auth_name, $vars['page'], 'full') : null; // セッション名 $this->session_name = self::SESSION_PREFIX . md5(Router::get_script_absuri() . session_id()); }
function get_location_uri($cmd = '', $page = '', $query = '', $fragment = '') { return Router::get_resolve_uri($cmd, $page, 'full', $query, $fragment, 1); }
/** * 認証要求 * @return void */ public static function notAuth($realm) { global $_string, $_title, $_button, $vars; $response = new Response(); // URLが空の場合、ページのアドレスか、スクリプトのアドレスを返す if (empty($url)) { $url = isset($vars['page']) ? Router::get_resolve_uri(null, $vars['page']) : Router::get_script_uri(); } $s_url = self::htmlsc($url); $response->setStatusCode(Response::STATUS_CODE_301); $response->getHeaders()->addHeaderLine('Location', $s_url); $html = array(); $html[] = '<!doctype html>'; $html[] = '<html>'; $html[] = '<head>'; $html[] = '<meta charset="utf-8">'; $html[] = '<meta name="robots" content="noindex,nofollow,noarchive,noodp,noydir" />'; if (!DEBUG) { $html[] = '<meta http-equiv="refresh" content="' . $time . '; URL=' . $s_url . '" />'; } $html[] = '<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/' . Render::TWITTER_BOOTSTRAP_VER . '/css/bootstrap.min.css" type="text/css" />'; $html[] = '<title>' . $_title['redirect'] . '</title>'; $html[] = '</head>'; $html[] = '<body>'; $html[] = '<div class="container">'; $html[] = '<p class="alert alert-success">'; $html[] = '<span class="glyphicon glyphicon-info-sign"></span>'; $html[] = $_string['redirect1'] . '<br />'; $html[] = sprintf($_string['redirect2'], $s_url); if (!DEBUG) { $html[] = '<br />NOTICE: No auto redirect when Debug mode.'; } $html[] = '</p>'; $html[] = '</div>'; $html[] = '</body>'; $html[] = '</html>'; $content = join("\n", $html); $response->getHeaders()->addHeaderLine('Content-Length', strlen($content)); $response->setContent($content); if (!headers_sent()) { header($response->renderStatusLine()); foreach ($response->getHeaders() as $header) { header($header->toString()); } } echo $response->getBody(); exit; }
/** * ページのアドレスを取得 * @return string */ public function uri($cmd = 'read', $query = array(), $fragment = '') { return Router::get_resolve_uri($cmd, $this->page, 'rel', $query, $fragment); }
/** * リンク一覧を取得 * @param string $_page ページ名 * @return array */ private static function getLinkSet($_page = '') { static $d_links; if (!isset($d_links)) { global $defaultpage, $whatsnew, $whatsdeleted, $interwiki, $aliaspage, $glossarypage; global $menubar, $sidebar, $navigation, $headarea, $footarea, $protect; // Set $_LINK for skin $d_links = array('search' => Router::get_cmd_uri('search'), 'opensearch' => Router::get_cmd_uri('search', null, null, array('format' => 'xml')), 'list' => Router::get_cmd_uri('list'), 'filelist' => Router::get_cmd_uri('filelist'), 'sitemap' => Router::get_resolve_uri('list', null, 'full', array('type' => 'sitemap')), 'rss' => Router::get_resolve_uri('feed', null, 'full'), 'atom' => Router::get_resolve_uri('feed', null, 'full', array('type' => 'atom')), 'read' => Router::get_resolve_uri('read', $_page), 'reload' => Router::get_resolve_uri('read', $_page, 'full'), 'related' => Router::get_resolve_uri('related', $_page), 'login' => Router::get_cmd_uri('login', $_page), 'logout' => Router::get_cmd_uri('login', $_page, null, array('action' => 'logout')), 'help' => Router::get_cmd_uri('help'), 'top' => Router::get_resolve_uri('read', $defaultpage), 'recent' => Router::get_resolve_uri('read', $whatsnew), 'deleted' => Router::get_resolve_uri('read', $whatsdeleted), 'interwiki' => Router::get_resolve_uri('read', $interwiki), 'alias' => Router::get_resolve_uri('read', $aliaspage), 'glossary' => Router::get_resolve_uri('read', $glossarypage), 'menu' => Router::get_resolve_uri('read', $menubar), 'side' => Router::get_resolve_uri('read', $sidebar), 'navigation' => Router::get_resolve_uri('read', $navigation), 'head' => Router::get_resolve_uri('read', $headarea), 'foot' => Router::get_resolve_uri('read', $footarea), 'protect' => Router::get_resolve_uri('read', $protect), 'add' => Router::get_cmd_uri('add'), 'backup' => Router::get_cmd_uri('backup'), 'copy' => Router::get_cmd_uri('template'), 'log' => Router::get_cmd_uri('logview'), 'log_browse' => Router::get_cmd_uri('logview', null, null, array('kind' => 'browse')), 'log_check' => Router::get_cmd_uri('logview', null, null, array('kind' => 'check')), 'log_down' => Router::get_cmd_uri('logview', null, null, array('kind' => 'download')), 'log_login' => Router::get_cmd_uri('logview', null, null, array('kind' => 'login')), 'log_update' => Router::get_cmd_uri('logview'), 'new' => Router::get_cmd_uri('newpage'), 'newsub' => Router::get_cmd_uri('newpage_subdir'), 'rename' => Router::get_cmd_uri('rename'), 'upload_list' => Router::get_cmd_uri('attach', null, null, array('pcmd' => 'list')), 'referer' => Router::get_cmd_uri('referer'), 'pingback' => Router::get_cmd_uri('xmlrpc')); } $links = $d_links; if (!empty($_page)) { static $p_links; if (!isset($p_links[$_page])) { $p_links[$_page] = array('add' => Router::get_cmd_uri('add', $_page), 'backup' => Router::get_cmd_uri('backup', $_page), 'brokenlink' => Router::get_cmd_uri('brokenlink', $_page), 'copy' => Router::get_cmd_uri('template', null, null, array('refer' => $_page)), 'diff' => Router::get_cmd_uri('diff', $_page), 'edit' => Router::get_cmd_uri('edit', $_page), 'freeze' => Router::get_cmd_uri('freeze', $_page), 'guiedit' => Router::get_cmd_uri('guiedit', $_page), 'log' => Router::get_cmd_uri('logview', $_page), 'log_browse' => Router::get_cmd_uri('logview', $_page, null, array('kind' => 'browse')), 'log_check' => Router::get_cmd_uri('logview', $_page, null, array('kind' => 'check')), 'log_down' => Router::get_cmd_uri('logview', $_page, null, array('kind' => 'download')), 'log_login' => Router::get_cmd_uri('logview', null, null, array('kind' => 'login')), 'log_update' => Router::get_cmd_uri('logview', $_page), 'new' => Router::get_cmd_uri('newpage', null, null, array('refer' => $_page)), 'newsub' => Router::get_cmd_uri('newpage_subdir', null, null, array('directory' => $_page)), 'rename' => Router::get_cmd_uri('rename', null, null, array('refer' => $_page)), 'source' => Router::get_cmd_uri('source', $_page), 'unfreeze' => Router::get_cmd_uri('unfreeze', $_page), 'upload' => Router::get_cmd_uri('attach', $_page, null, array('pcmd' => 'upload')), 'template' => Router::get_cmd_uri('template', null, null, array('refer' => $_page)), 'referer' => Router::get_cmd_uri('referer', $_page)); } $links = array_merge($d_links, $p_links[$_page]); } ksort($links); return $links; }