function plugin_newpage_action() { global $vars; $_btn_edit = _('Edit'); $_msg_newpage = _('New page'); // if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing'); if (auth::check_role('readonly')) { die_message(_('PKWK_READONLY prohibits editing')); } if (auth::is_check_role(PKWK_CREATE_PAGE)) { die_message(_('PKWK_CREATE_PAGE prohibits editing')); } if ($vars['page'] == '') { $retvars['msg'] = $_msg_newpage; $retvars['body'] = plugin_newpage_convert(); return $retvars; } else { $page = strip_bracket($vars['page']); if (isset($vars['refer'])) { $r_page = get_fullname($page, $vars['refer']); $r_refer = 'refer=' . $vars['refer']; } else { $r_page = $page; $r_refer = ''; } pkwk_headers_sent(); header('Location: ' . get_page_location_uri($r_page, $r_refer)); exit; } }
function plugin_ls2_convert() { global $script, $vars, $_ls2_msg_title; $params = array('link' => FALSE, 'title' => FALSE, 'include' => FALSE, 'reverse' => FALSE, 'compact' => PLUGIN_LS2_LIST_COMPACT, '_args' => array(), '_done' => FALSE); $args = array(); $prefix = ''; if (func_num_args()) { $args = func_get_args(); $prefix = array_shift($args); } if ($prefix == '') { $prefix = strip_bracket($vars['page']) . '/'; } foreach ($args as $arg) { plugin_ls2_check_arg($arg, $params); } $title = !empty($params['_args']) ? join(',', $params['_args']) : str_replace('$1', htmlsc($prefix), $_ls2_msg_title); // Auto if (!$params['link']) { return plugin_ls2_show_lists($prefix, $params); } $tmp = array(); $tmp[] = 'plugin=ls2&prefix=' . rawurlencode($prefix); if (isset($params['title'])) { $tmp[] = 'title=1'; } if (isset($params['include'])) { $tmp[] = 'include=1'; } return '<p><a href="' . $script . '?' . join('&', $tmp) . '">' . $title . '</a></p>' . "\n"; }
function plugin_ls2_convert() { global $vars; if (!isset($vars['page'])) { return ''; } $params = array('link' => FALSE, 'title' => FALSE, 'include' => FALSE, 'reverse' => FALSE, 'compact' => PLUGIN_LS2_LIST_COMPACT, '_args' => array(), '_done' => FALSE); $args = func_get_args(); $prefix = ''; if (!empty($args)) { $prefix = array_shift($args); } if ($prefix == '') { $prefix = strip_bracket($vars['page']) . '/'; } foreach ($args as $arg) { plugin_ls2_check_arg($arg, $params); } $title = !empty($params['_args']) ? join(',', $params['_args']) : str_replace('$1', htmlsc($prefix), T_("List of pages which begin with ' \$1'")); // Auto if (!$params['link']) { return '<div class="list_pages">' . plugin_ls2_show_lists($prefix, $params) . '</div>'; } $tmp = array(); if (isset($params['title'])) { $tmp[] = 'title=1'; } if (isset($params['include'])) { $tmp[] = 'include=1'; } return '<p><a href="' . get_cmd_uri('ls2', $prefix) . join('&', $tmp) . '">' . $title . '</a></p>' . "\n"; }
function plugin_splitinclude_convert() { global $vars, $get, $post; global $_msg_splitinclude_restrict; static $splitinclude_list = array(); //処理済ページ名の配列 if (func_num_args() == 0) { return; } $splitinclude_list[$vars['page']] = TRUE; $func_vars_num = func_num_args(); $func_vars_array = func_get_args(); $incbody = ""; foreach ($func_vars_array as $page) { $page = strip_bracket($page); if (!is_page($page) or isset($splitinclude_list[$page])) { return ''; } $splitinclude_list[$page] = TRUE; $_page = $vars['page']; $get['page'] = $post['page'] = $vars['page'] = $page; $wiki = Factory::Wiki($page); // splitincludeのときは、認証画面をいちいち出さず、後始末もこちらでつける if ($wiki->isReadable()) { $body = $wiki->render(); } else { $body = str_replace('$1', $page, $_msg_splitinclude_restrict); } $get['page'] = $post['page'] = $vars['page'] = $_page; $incbody .= "<div style=\"width:" . intval(96 / $func_vars_num) . "%;margin:0px 2px;vartical-align:top;float:left;\">{$body}</div>\n"; } $incbody = "<div style=\"width:100%\">\n{$incbody}</div>\n<div style=\"display:block;\"></div>\n"; return $incbody; }
function plugin_newpage_action() { global $vars; $qm = get_qm(); if (PKWK_READONLY) { die_message($qm->m['fmt_err_pkwk_readonly']); } if ($vars['page'] == '') { $retvars['msg'] = $qm->m['plg_newpage']['label']; $retvars['body'] = plugin_newpage_convert(); if (preg_match('/id="([^"]+)"/', $retvars['body'], $ms)) { $domid = $ms[1]; //jquery ライブラリの読み込み $qt = get_qt(); $qt->setv('jquery_include', true); $addscript = <<<EOS <script type="text/javascript"> jQuery(function(){ \tjQuery("#{$domid}").focus().select(); }); </script> EOS; $qt->appendv_once('plugin_select_fsize', 'beforescript', $addscript); } return $retvars; } else { $page = strip_bracket($vars['page']); $r_page = rawurlencode(isset($vars['refer']) ? get_fullname($page, $vars['refer']) : $page); $r_refer = rawurlencode($vars['refer']); pkwk_headers_sent(); header('Location: ' . get_script_uri() . '?cmd=read&page=' . $r_page . '&refer=' . $r_refer); exit; } }
function plugin_unfreeze_action() { global $script, $vars, $function_freeze; global $_title_isunfreezed, $_title_unfreezed, $_title_unfreeze; global $_msg_invalidpass, $_msg_unfreezing, $_btn_unfreeze; $page = isset($vars['page']) ? $vars['page'] : ''; if (!$function_freeze || !is_page($page)) { return array('msg' => '', 'body' => ''); } $pass = isset($vars['pass']) ? $vars['pass'] : NULL; $msg = $body = ''; if (!is_freeze($page)) { // Unfreezed already $msg =& $_title_isunfreezed; $body = str_replace('$1', htmlspecialchars(strip_bracket($page)), '<p>' . $_title_isunfreezed . '</p>'); } else { if ($pass !== NULL && pkwk_login($pass)) { // Unfreeze $postdata = get_source($page); array_shift($postdata); $postdata = join('', $postdata); file_write(DATA_DIR, $page, $postdata, TRUE); // Update is_freeze($page, TRUE); if (PLUGIN_UNFREEZE_EDIT) { $vars['cmd'] = 'read'; // To show 'Freeze' link $msg =& $_title_unfreezed; $body = edit_form($page, $postdata); } else { $vars['cmd'] = 'read'; $msg =& $_title_unfreezed; $body = ''; } } else { // Show unfreeze form // kazuwaya $msg =& $_title_unfreeze; $s_page = htmlspecialchars($page); $body = $pass === NULL ? '' : "<p><strong>{$_msg_invalidpass}</strong></p>\n"; $body .= <<<EOD <p>{$_msg_unfreezing}</p> <form action="{$script}" method="post"> <p> <input type="hidden" name="cmd" value="unfreeze" /> <input type="hidden" name="page" value="{$s_page}" /> <input type="password" name="pass" size="12" /> <input type="submit" name="ok" value="{$_btn_unfreeze}" /> </p> </form> EOD; } } return array('msg' => $msg, 'body' => $body); }
function plugin_navibar2_convert() { global $vars, $hr; $page = strip_bracket($vars['page']); $navi_page = plugin_navibar2_search_navipage($page); if (!empty($navi_page)) { return plugin_navibar2_makehtml($navi_page); } exist_plugin('navibar'); return do_plugin_convert('navibar', NAVIBAR2_DEFAULT_PARM) . $hr; }
function plugin_freeze_action() { global $script, $vars, $function_freeze; $_title_isfreezed = _(' $1 has already been frozen'); $_title_freezed = _(' $1 has been frozen.'); $_title_freeze = _('Freeze $1'); $_msg_invalidpass = _('Invalid password.'); $_msg_freezing = _('Please input the password for freezing.'); $_btn_freeze = _('Freeze'); $page = isset($vars['page']) ? $vars['page'] : ''; if (!$function_freeze || is_cantedit($page) || !is_page($page)) { return array('msg' => '', 'body' => ''); } $pass = isset($vars['pass']) ? $vars['pass'] : NULL; $msg = $body = ''; if (is_freeze($page)) { // Freezed already $msg =& $_title_isfreezed; $body = str_replace('$1', htmlspecialchars(strip_bracket($page)), $_title_isfreezed); } else { if (!auth::check_role('role_adm_contents') || $pass !== NULL && pkwk_login($pass)) { // Freeze $postdata = get_source($page); array_unshift($postdata, "#freeze\n"); file_write(DATA_DIR, $page, join('', $postdata), TRUE); // Update is_freeze($page, TRUE); $vars['cmd'] = 'read'; $msg =& $_title_freezed; $body = ''; } else { // Show a freeze form $msg =& $_title_freeze; $s_page = htmlspecialchars($page); $body = $pass === NULL ? '' : "<p><strong>{$_msg_invalidpass}</strong></p>\n"; $body .= <<<EOD <p>{$_msg_freezing}</p> <form action="{$script}" method="post"> <div> <input type="hidden" name="cmd" value="freeze" /> <input type="hidden" name="page" value="{$s_page}" /> <input type="password" name="pass" size="12" /> <input type="submit" name="ok" value="{$_btn_freeze}" /> </div> </form> EOD; } } return array('msg' => $msg, 'body' => $body); }
function plugin_freeze_action() { global $script, $vars, $function_freeze; global $_title_isfreezed, $_title_freezed, $_title_freeze; global $_msg_invalidpass, $_msg_freezing, $_btn_freeze; $qt = get_qt(); //キャッシュしない $qt->enable_cache = false; $page = isset($vars['page']) ? $vars['page'] : ''; if (!$function_freeze || !is_page($page)) { return array('msg' => '', 'body' => ''); } $pass = isset($vars['pass']) ? $vars['pass'] : NULL; $msg = $body = ''; if (is_freeze($page)) { // Freezed already $msg =& $_title_isfreezed; $body = str_replace('$1', htmlspecialchars(strip_bracket($page)), $_title_isfreezed); } else { if ($pass !== NULL && pkwk_login($pass)) { // Freeze $postdata = get_source($page); array_unshift($postdata, "#freeze\n"); file_write(DATA_DIR, $page, join('', $postdata), TRUE); // Update is_freeze($page, TRUE); $vars['cmd'] = 'read'; $msg =& $_title_freezed; $body = ''; } else { // Show a freeze form $msg =& $_title_freeze; $s_page = htmlspecialchars($page); $body = $pass === NULL ? '' : "<p><strong>{$_msg_invalidpass}</strong></p>\n"; $body .= <<<EOD <p>{$_msg_freezing}</p> <form action="{$script}" method="post"> <div> <input type="hidden" name="cmd" value="freeze" /> <input type="hidden" name="page" value="{$s_page}" /> <input type="password" name="pass" size="12" /> <input type="submit" name="ok" value="{$_btn_freeze}" /> </div> </form> EOD; } } return array('msg' => $msg, 'body' => $body); }
function plugin_menu_convert() { global $vars, $menubar; static $menu = NULL; $num = func_num_args(); if ($num > 0) { // Try to change default 'MenuBar' page name (only) if ($num > 1) { return '#menu(): Zero or One argument needed'; } if ($menu !== NULL) { return '#menu(): Already set: ' . htmlspecialchars($menu); } $args = func_get_args(); if (!is_page($args[0])) { return '#menu(): No such page: ' . htmlspecialchars($args[0]); } else { $menu = $args[0]; // Set return ''; } } else { // Output menubar page data $page = $menu === NULL ? $menubar : $menu; if (MENU_ENABLE_SUBMENU) { $path = explode('/', strip_bracket($vars['page'])); while (!empty($path)) { $_page = join('/', $path) . '/' . MENU_SUBMENUBAR; if (is_page($_page)) { $page = $_page; break; } array_pop($path); } } if (!is_page($page)) { return ''; } else { if ($vars['page'] == $page) { return '<!-- #menu(): You already view ' . htmlspecialchars($page) . ' -->'; } else { // Cut fixed anchors $menutext = preg_replace('/^(\\*{1,3}.*)\\[#[A-Za-z][\\w-]+\\](.*)$/m', '$1$2', get_source($page)); return preg_replace('/<ul[^>]*>/', '<ul>', convert_html($menutext)); } } } }
/** * ページ内で #todo 指定された場合の呼び出しエントリポイント。 * * @returns $result = $content */ function plugin_todo_convert() { global $vars, $script; // default is to traverse all subtopics under own topic $page = strip_bracket($vars['page']); switch (func_num_args()) { case 2: $mark = func_get_arg(1); case 1: $page = func_get_arg(0); default: } $body = todo_generate_index($vars, $page, $mark); # echo "<pre>"; print_r($body); exit; return $body; }
function plugin_includesubmenu_convert() { global $script, $vars; $ShowPageName = FALSE; if (func_num_args()) { $aryargs = func_get_args(); if ($aryargs[0] == 'showpagename') { $ShowPageName = TRUE; } } $SubMenuPageName = ''; $tmppage = strip_bracket($vars['page']); //下階層のSubMenuページ名 $SubMenuPageName1 = $tmppage . '/SubMenu'; //同階層のSubMenuページ名 $LastSlash = strrpos($tmppage, '/'); if ($LastSlash === FALSE) { $SubMenuPageName2 = 'SubMenu'; } else { $SubMenuPageName2 = substr($tmppage, 0, $LastSlash) . '/SubMenu'; } //echo "$SubMenuPageName1 <br />"; //echo "$SubMenuPageName2 <br />"; //下階層にSubMenuがあるかチェック //あれば、それを使用 if (is_page($SubMenuPageName1)) { //下階層にSubMenu有り $SubMenuPageName = $SubMenuPageName1; } else { if (is_page($SubMenuPageName2)) { //同階層にSubMenu有り $SubMenuPageName = $SubMenuPageName2; } else { //SubMenu無し return ""; } } $body = convert_html(get_source($SubMenuPageName)); if ($ShowPageName) { $r_page = rawurlencode($SubMenuPageName); $s_page = htmlspecialchars($SubMenuPageName); $link = "<a href=\"{$script}?cmd=edit&page={$r_page}\">{$s_page}</a>"; $body = "<h1>{$link}</h1>\n{$body}"; } return $body; }
function plugin_footarea_convert() { global $vars, $footarea, $use_open_uri_in_new_window; static $foot = NULL; static $foothtml = NULL; //miko patched // Cached MenuHTML if ($foothtml !== NULL) { return preg_replace('/<ul class="list[^>]*>/', '<ul class="foot">', $foothtml); } //miko patched if (func_num_args()) { $args = func_get_args(); if (is_page($args[0])) { $foot = $args[0]; } return ''; } $page = $foot === NULL ? $footarea : $foot; if (FOOT_ENABLE_SUBFOOT) { $path = explode('/', strip_bracket($vars['page'])); while (count($path)) { $_page = join('/', $path) . '/' . FOOT_SUBFOOTBAR; if (is_page($_page)) { $page = $_page; break; } array_pop($path); } } if (!is_page($page)) { return ''; // } else if ($vars['page'] == $page) { // return '<!-- #footarea(): You already view ' . htmlspecialchars($page) . ' -->'; } $foottext = preg_replace('/^(\\*{1,3}.*)\\[#[A-Za-z][\\w-]+\\](.*)$/m', '$1$2', get_source($page)); if (function_exists('convert_filter')) { $foottext = convert_filter($foottext); } $save_newwindow = $use_open_uri_in_new_window; $use_open_uri_in_new_window = 0; $foothtml = convert_html($foottext); $use_open_uri_in_new_window = $save_newwindow; $foothtml = str_replace("\n", '', $foothtml); return preg_replace('/<ul class="list[^>]*>/', '<ul class="foot">', $foothtml); }
function plugin_headarea_convert() { global $vars, $headarea, $use_open_uri_in_new_window; static $head = NULL; static $headhtml = NULL; //miko patched // Cached MenuHTML if ($headhtml !== NULL) { return preg_replace('/<ul class="list[^>]*>/', '<ul class="head">', $headhtml); } //miko patched if (func_num_args()) { $args = func_get_args(); if (is_page($args[0])) { $head = $args[0]; } return ''; } $page = $head === NULL ? $headarea : $head; if (HEAD_ENABLE_SUBHEAD) { $path = explode('/', strip_bracket($vars['page'])); while (count($path)) { $_page = join('/', $path) . '/' . HEAD_SUBHEADBAR; if (is_page($_page)) { $page = $_page; break; } array_pop($path); } } if (!is_page($page)) { return ''; // } else if ($vars['page'] == $page) { // return '<!-- #headarea(): You already view ' . htmlsc($page) . ' -->'; } $headtext = preg_replace('/^(\\*{1,3}.*)\\[#[A-Za-z][\\w-]+\\](.*)$/m', '$1$2', get_source($page)); if (function_exists('convert_filter')) { $headtext = convert_filter($headtext); } $save_newwindow = $use_open_uri_in_new_window; $use_open_uri_in_new_window = 0; $headhtml = RendererFactory::factory($headtext); $use_open_uri_in_new_window = $save_newwindow; $headhtml = str_replace("\n", '', $headhtml); return preg_replace('/<ul class="list[^>]*>/', '<ul class="head">', $headhtml); }
function plugin_random_action() { global $vars; $pattern = strip_bracket($vars['refer']) . '/'; $pages = array(); foreach (get_existpages() as $_page) { if (strpos($_page, $pattern) === 0) { $pages[$_page] = strip_bracket($_page); } } srand((double) microtime() * 1000000); $page = array_rand($pages); if ($page != '') { $vars['refer'] = $page; } return array('body' => '', 'msg' => ''); }
function plugin_includesubmenu_convert() { global $vars; $ShowPageName = FALSE; if (func_num_args()) { $aryargs = func_get_args(); if ($aryargs[0] == 'showpagename') { $ShowPageName = TRUE; } } $SubMenuPageName = ''; $tmppage = strip_bracket($vars['page']); //下階層のSubMenuページ名 $SubMenuPageName1 = $tmppage . '/SubMenu'; //同階層のSubMenuページ名 $LastSlash = strrpos($tmppage, '/'); if ($LastSlash === FALSE) { $SubMenuPageName2 = 'SubMenu'; } else { $SubMenuPageName2 = substr($tmppage, 0, $LastSlash) . '/SubMenu'; } //echo "$SubMenuPageName1 <br />"; //echo "$SubMenuPageName2 <br />"; //下階層にSubMenuがあるかチェック //あれば、それを使用 if (is_page($SubMenuPageName1)) { //下階層にSubMenu有り $SubMenuPageName = $SubMenuPageName1; } else { if (is_page($SubMenuPageName2)) { //同階層にSubMenu有り $SubMenuPageName = $SubMenuPageName2; } else { //SubMenu無し return ""; } } $wiki = WikiFactory::Wiki($SubMenuPageName); $body = $wiki->render(); if ($ShowPageName) { $s_page = htmlsc($SubMenuPageName); $link = '<a href="' . $wiki->get_uri('edit') . '">$s_page</a>'; $body = "<h1>{$link}</h1>\n{$body}"; } return $body; }
function plugin_newpage_action() { global $vars, $_btn_edit, $_msg_newpage; if (PKWK_READONLY) { die_message('PKWK_READONLY prohibits editing'); } if ($vars['page'] == '') { $retvars['msg'] = $_msg_newpage; $retvars['body'] = plugin_newpage_convert(); return $retvars; } else { $page = strip_bracket($vars['page']); $r_page = rawurlencode(isset($vars['refer']) ? get_fullname($page, $vars['refer']) : $page); $r_refer = rawurlencode($vars['refer']); pkwk_headers_sent(); header('Location: ' . get_script_uri() . '?cmd=read&page=' . $r_page . '&refer=' . $r_refer); exit; } }
function plugin_lastmod_inline() { global $vars; global $WikiName, $BracketName; $args = func_get_args(); if ($args[0]) { if (preg_match("/^({$WikiName}|\\[\\[{$BracketName}\\]\\])\$/", $args[0])) { $_page = get_fullname(strip_bracket($args[0]), $vars["page"]); } else { return FALSE; } } else { $_page = $vars["page"]; } if (!is_page($_page)) { return FALSE; } return format_date(get_filetime($_page)); }
function plugin_lastmod_inline() { global $vars, $WikiName, $BracketName; $args = func_get_args(); $page = $args[0]; if ($page == '') { $page = $vars['page']; // Default: page itself } else { if (preg_match("/^({$WikiName}|{$BracketName})\$/", strip_bracket($page))) { $page = get_fullname(strip_bracket($page), $vars['page']); } else { return false; } } if (!is_page($page)) { return false; } return format_date(get_filetime($page)); }
function plugin_tooltip_get_page_title($term) { $page = strip_bracket($term); $wiki = Factory::Wiki($page); if (!$wiki->has($page)) { return FALSE; } $ct = 0; foreach ($wiki->get() as $line) { if ($ct++ > 99) { break; } if (preg_match('/^\\*{1,3}(.*)\\[#[A-Za-z0-9][\\w\\-]+\\].*$/', $line, $match)) { return trim($match[1]); } else { if (preg_match('/^\\*{1,3}(.*)$/', $line, $match)) { return trim($match[1]); } } } return FALSE; }
function plugin_tooltip_get_page_title($term) { $page = strip_bracket($term); if (!is_page($page)) { return FALSE; } $src = get_source($page); $ct = 0; foreach ($src as $line) { if ($ct++ > 99) { break; } if (preg_match('/^\\*{1,3}(.*)\\[#[A-Za-z][\\w\\-]+\\].*$/', $line, $match)) { return trim($match[1]); } else { if (preg_match('/^\\*{1,3}(.*)$/', $line, $match)) { return trim($match[1]); } } } return FALSE; }
function plugin_weblog_field_inline() { global $script, $vars, $wiki_user_dir; $prmcnt = func_num_args(); if ($prmcnt < 2) { return ""; } $prms = func_get_args(); $body = array_pop($prms); switch ($prms[0]) { case "__AUTHOR": $body = convert_html(sprintf($wiki_user_dir, $body), false, false); $body = preg_replace("/^<p>(.*)<\\/p>\$/ms", "\\1", $body); break; case "__TIMESTAMP": $body = date("Yǯm·îdÆü H»þiʬsÉÃ", $body); break; case "__CATEGORY": $body = convert_html("[[Category {$prms[1]}>{$prms[1]}]]:", false, false); $body = preg_replace("/^<p>(.*)<\\/p>\$/ms", "\\1", $body); break; case "__SUBJECT": $page = strip_bracket($vars['page']); $body = convert_html("[[{$body}>{$page}]]", false, false); $body = preg_replace("/^<p>(.*)<\\/p>\$/ms", "\\1", $body); break; case "__EDIT": if (!is_freeze($page, FALSE)) { $_page = preg_replace("/(.*\\/)?([0-9\\-]+)\$/", "\\2", strip_bracket($vars['page'])); $body = "<a href=\"{$script}?plugin=weblog&mode=edit&conf={$prms[1]}&page_name={$_page}\">"; $body .= "<img src=\"image/edit.png\" alt=\"Edit\" title=\"Edit\" /></a>"; } break; default: } return $body; }
function plugin_ls2_convert() { global $script, $vars; $qm = get_qm(); $qt = get_qt(); //---- キャッシュのための処理を登録 ----- if ($qt->create_cache) { $args = func_get_args(); return $qt->get_dynamic_plugin_mark(__FUNCTION__, $args); } //------------------------------------ $params = array('link' => FALSE, 'title' => FALSE, 'include' => FALSE, 'reverse' => FALSE, 'compact' => PLUGIN_LS2_LIST_COMPACT, '_args' => array(), '_done' => FALSE); $args = array(); $prefix = ''; if (func_num_args()) { $args = func_get_args(); $prefix = array_shift($args); } if ($prefix == '') { $prefix = strip_bracket($vars['page']) . '/'; } array_walk($args, 'plugin_ls2_check_arg', $params); $title = !empty($params['_args']) ? join(',', $params['_args']) : str_replace('$1', htmlspecialchars($prefix), $qm->m['plg_ls2']['title']); // Auto if (!$params['link']) { return plugin_ls2_show_lists($prefix, $params); } $tmp = array(); $tmp[] = 'plugin=ls2&prefix=' . rawurlencode($prefix); if (isset($params['title'])) { $tmp[] = 'title=1'; } if (isset($params['include'])) { $tmp[] = 'include=1'; } return '<p><a href="' . $script . '?' . join('&', $tmp) . '">' . $title . '</a></p>' . "\n"; }
function addRow($pagename, $rescan = FALSE) { // Generate/Regenerate regex if needed if ($this->_generate_regex() === FALSE) { return FALSE; } if (isset($this->_added[$pagename])) { return TRUE; } $this->_added[$pagename] = TRUE; $source = plugin_tracker_get_source($pagename, TRUE); if ($source === FALSE) { $source = ''; } // Compat: 'move to [[page]]' (like bugtrack plugin) $matches = array(); if (!$rescan && !empty($source) && preg_match('/move\\sto\\s(.+)/', $source, $matches)) { $to_page = strip_bracket(trim($matches[1])); if (is_page($to_page)) { unset($source, $matches); // Release return $this->addRow($to_page, TRUE); // Recurse(Rescan) once } } // Default column $filetime = get_filetime($pagename); $row = array('_page' => $pagename, '_real' => $pagename, '_update' => $filetime, '_past' => $filetime); // Load / Redefine cell $matches = array(); if (preg_match($this->pattern, $source, $matches)) { array_shift($matches); // $matches[0] = all of the captured string foreach ($this->pattern_fields as $key => $fieldname) { $row[$fieldname] = trim($matches[$key]); unset($matches[$key]); } $this->rows[] = $row; } else { if (PLUGIN_TRACKER_LIST_SHOW_ERROR_PAGE) { $this->rows[] = $row; // Error } } return TRUE; }
function make_pagelink($page, $alias = '', $anchor = '', $refer = '', $isautolink = FALSE) { global $script, $vars, $link_compact, $related, $_symbol_noexists; $s_page = htmlspecialchars(strip_bracket($page)); $s_alias = $alias == '' ? $s_page : $alias; if ($page == '') { return '<a href="' . $anchor . '">' . $s_alias . '</a>'; } $r_page = rawurlencode($page); $r_refer = $refer == '' ? '' : '&refer=' . rawurlencode($refer); if (!isset($related[$page]) && $page != $vars['page'] && is_page($page)) { $related[$page] = get_filetime($page); } if ($isautolink || is_page($page)) { // Hyperlink to the page if ($link_compact) { $title = ''; } else { $title = ' title="' . $s_page . get_pg_passage($page, FALSE) . '"'; } // AutoLink marker if ($isautolink) { $al_left = '<!--autolink-->'; $al_right = '<!--/autolink-->'; } else { $al_left = $al_right = ''; } return $al_left . '<a ' . 'href="' . $script . '?' . $r_page . $anchor . '"' . $title . '>' . $s_alias . '</a>' . $al_right; } else { // Dangling link if (PKWK_READONLY) { return $s_alias; } // No dacorations $retval = $s_alias . '<a href="' . $script . '?cmd=edit&page=' . $r_page . $r_refer . '">' . $_symbol_noexists . '</a>'; if ($link_compact) { return $retval; } else { return '<span class="noexists">' . $retval . '</span>'; } } }
function plugin_navi_convert() { global $vars, $script, $head_tags; global $_navi_prev, $_navi_next, $_navi_up, $_navi_home; static $navi = array(); $current = $vars['page']; $reverse = FALSE; if (func_num_args()) { list($home, $reverse) = array_pad(func_get_args(), 2, ''); // strip_bracket() is not necessary but compatible $home = get_fullname(strip_bracket($home), $current); $is_home = $home == $current; if (!is_page($home)) { return '#navi(contents-page-name): No such page: ' . htmlspecialchars($home) . '<br />'; } else { if (!$is_home && !preg_match('/^' . preg_quote($home, '/') . '/', $current)) { return '#navi(' . htmlspecialchars($home) . '): Not a child page like: ' . htmlspecialchars($home . '/' . basename($current)) . '<br />'; } } $reverse = strtolower($reverse) == 'reverse'; } else { $home = $vars['page']; $is_home = TRUE; // $home == $current } $pages = array(); $footer = isset($navi[$home]); // The first time: FALSE, the second: TRUE if (!$footer) { $navi[$home] = array('up' => '', 'prev' => '', 'prev1' => '', 'next' => '', 'next1' => '', 'home' => '', 'home1' => ''); $pages = preg_grep('/^' . preg_quote($home, '/') . '($|\\/)/', get_existpages()); if (PLUGIN_NAVI_EXCLUSIVE_REGEX != '') { // If old PHP could use preg_grep(,,PREG_GREP_INVERT)... $pages = array_diff($pages, preg_grep(PLUGIN_NAVI_EXCLUSIVE_REGEX, $pages)); } $pages[] = $current; // Sentinel :) $pages = array_unique($pages); natcasesort($pages); if ($reverse) { $pages = array_reverse($pages); } $prev = $home; foreach ($pages as $page) { if ($page == $current) { break; } $prev = $page; } $next = current($pages); $pos = strrpos($current, '/'); $up = ''; if ($pos > 0) { $up = substr($current, 0, $pos); $navi[$home]['up'] = make_pagelink($up, $_navi_up); } if (!$is_home) { $navi[$home]['prev'] = make_pagelink($prev); $navi[$home]['prev1'] = make_pagelink($prev, $_navi_prev); } if ($next != '') { $navi[$home]['next'] = make_pagelink($next); $navi[$home]['next1'] = make_pagelink($next, $_navi_next); } $navi[$home]['home'] = make_pagelink($home); $navi[$home]['home1'] = make_pagelink($home, $_navi_home); // Generate <link> tag: start next prev(previous) parent(up) // Not implemented: contents(toc) search first(begin) last(end) if (PLUGIN_NAVI_LINK_TAGS) { foreach (array('start' => $home, 'next' => $next, 'prev' => $prev, 'up' => $up) as $rel => $_page) { if ($_page != '') { $s_page = htmlspecialchars($_page); $r_page = rawurlencode($_page); $head_tags[] = ' <link rel="' . $rel . '" href="' . $script . '?' . $r_page . '" title="' . $s_page . '" />'; } } } } $ret = ''; if ($is_home) { // Show contents $count = count($pages); if ($count == 0) { return '#navi(contents-page-name): You already view the result<br />'; } else { if ($count == 1) { // Sentinel only: Show usage and warning $home = htmlspecialchars($home); $ret .= '#navi(' . $home . '): No child page like: ' . $home . '/Foo'; } else { $ret .= '<ul>'; foreach ($pages as $page) { if ($page != $home) { $ret .= ' <li>' . make_pagelink($page) . '</li>'; } } $ret .= '</ul>'; } } } else { if (!$footer) { // Header $ret = <<<EOD <ul class="navi"> <li class="navi_left">{$navi[$home]['prev1']}</li> <li class="navi_right">{$navi[$home]['next1']}</li> <li class="navi_none">{$navi[$home]['home']}</li> </ul> <hr class="full_hr" /> EOD; } else { // Footer $ret = <<<EOD <hr class="full_hr" /> <ul class="navi"> <li class="navi_left">{$navi[$home]['prev1']}<br />{$navi[$home]['prev']}</li> <li class="navi_right">{$navi[$home]['next1']}<br />{$navi[$home]['next']}</li> <li class="navi_none">{$navi[$home]['home1']}<br />{$navi[$home]['up']}</li> </ul> EOD; } } return $ret; }
function plugin_calendar_convert() { global $script, $weeklabels, $vars, $command; $args = func_get_args(); $date_str = get_date('Ym'); $page = ''; if (func_num_args() == 1) { if (is_numeric($args[0]) && strlen($args[0]) == 6) { $date_str = $args[0]; } else { $page = $args[0]; } } else { if (func_num_args() == 2) { if (is_numeric($args[0]) && strlen($args[0]) == 6) { $date_str = $args[0]; $page = $args[1]; } else { if (is_numeric($args[1]) && strlen($args[1]) == 6) { $date_str = $args[1]; $page = $args[0]; } } } } if ($page == '') { $page = $vars['page']; } else { if (!is_pagename($page)) { return FALSE; } } $pre = $page; $prefix = $page . '/'; if (!$command) { $cmd = 'read'; } else { $cmd = $command; } $prefix = strip_tags($prefix); $yr = substr($date_str, 0, 4); $mon = substr($date_str, 4, 2); if ($yr != get_date('Y') || $mon != get_date('m')) { $now_day = 1; $other_month = 1; } else { $now_day = get_date('d'); $other_month = 0; } $today = getdate(mktime(0, 0, 0, $mon, $now_day, $yr) - LOCALZONE + ZONETIME); $m_num = $today['mon']; $d_num = $today['mday']; $year = $today['year']; $f_today = getdate(mktime(0, 0, 0, $m_num, 1, $year) - LOCALZONE + ZONETIME); $wday = $f_today['wday']; $day = 1; $m_name = $year . '.' . $m_num . ' (' . $cmd . ')'; $prefix_url = rawurlencode(is_pagename($pre) ? $pre : '[[' . $pre . ']]'); $pre = strip_bracket($pre); $ret = <<<EOD <table class="style_calendar" cellspacing="1" width="150" border="0"> <tr> <td class="style_td_caltop" colspan="7"> <strong>{$m_name}</strong><br /> [<a href="{$script}?{$prefix_url}">{$pre}</a>] </td> </tr> <tr> EOD; foreach ($weeklabels as $label) { $ret .= ' <td class="style_td_week"><strong>' . $label . '</strong></td>' . "\n"; } $ret .= ' </tr>' . "\n" . ' <tr>' . "\n"; // Blank for ($i = 0; $i < $wday; $i++) { $ret .= ' <td class="style_td_blank"> </td>' . "\n"; } while (checkdate($m_num, $day, $year)) { $dt = sprintf('%04d%02d%02d', $year, $m_num, $day); $name = $prefix . $dt; $r_page = rawurlencode($name); $s_page = htmlsc($name); $refer = $cmd == 'edit' ? '&refer=' . rawurlencode($page) : ''; if ($cmd == 'read' && !is_page($name)) { $link = '<strong>' . $day . '</strong>'; } else { $link = '<a href="' . $script . '?cmd=' . $cmd . '&page=' . $r_page . $refer . '" title="' . $s_page . '"><strong>' . $day . '</strong></a>'; } if ($wday == 0 && $day > 1) { $ret .= ' </tr><tr>' . "\n"; } if (!$other_month && $day == $today['mday'] && $m_num == $today['mon'] && $year == $today['year']) { // Today $ret .= ' <td class="style_td_today"><span class="small">' . $link . '</span></td>' . "\n"; } else { if ($wday == 0) { // Sunday $ret .= ' <td class="style_td_sun"><span class="small">' . $link . '</span></td>' . "\n"; } else { if ($wday == 6) { // Saturday $ret .= ' <td class="style_td_sat"><span class="small">' . $link . '</span></td>' . "\n"; } else { // Weekday $ret .= ' <td class="style_td_day"><span class="small">' . $link . '</span></td>' . "\n"; } } } ++$day; ++$wday; $wday = $wday % 7; } if ($wday > 0) { while ($wday < 7) { // Blank $ret .= ' <td class="style_td_blank"> </td>' . "\n"; ++$wday; } } $ret .= ' </tr>' . "\n" . '</table>' . "\n"; return $ret; }
function plugin_calendar2_action() { global $vars; $page = strip_bracket($vars['page']); $vars['page'] = '*'; if ($vars['file']) { $vars['page'] = $vars['file']; } $date = $vars['date']; if ($date == '') { $date = get_date('Ym'); } $yy = sprintf('%04d.%02d', substr($date, 0, 4), substr($date, 4, 2)); $aryargs = array($vars['page'], $date); $s_page = htmlsc($vars['page']); $ret['msg'] = 'calendar ' . $s_page . '/' . $yy; $ret['body'] = call_user_func_array('plugin_calendar2_convert', $aryargs); $vars['page'] = $page; return $ret; }
$retvars = array('msg' => $msg, 'body' => $msg); $base =& $defaultpage; } } $title = htmlsc(strip_bracket($base)); $page = make_search($base); if (isset($retvars['msg']) && $retvars['msg'] != '') { $title = str_replace('$1', $title, $retvars['msg']); $page = str_replace('$1', $page, $retvars['msg']); } if (isset($retvars['body']) && $retvars['body'] != '') { $body =& $retvars['body']; } else { if ($base == '' || !is_page($base)) { $base =& $defaultpage; $title = htmlsc(strip_bracket($base)); $page = make_search($base); } $vars['cmd'] = 'read'; $vars['page'] =& $base; $body = convert_html(get_source($base)); if ($trackback) { $body .= tb_get_rdf($base); } // Add TrackBack-Ping URI if ($referer) { ref_save($base); } } // Output catbody($title, $page, $body);
function plugin_include_convert() { global $script, $vars, $get, $post, $menubar, $_msg_include_restrict; static $included = array(); static $count = 1; if (func_num_args() == 0) { return PLUGIN_INCLUDE_USAGE . '<br />' . "\n"; } // $menubar will already be shown via menu plugin if (!isset($included[$menubar])) { $included[$menubar] = true; } // Loop yourself $root = isset($vars['page']) ? $vars['page'] : ''; $included[$root] = true; // Get arguments $args = func_get_args(); // strip_bracket() is not necessary but compatible $page = isset($args[0]) ? get_fullname(strip_bracket(array_shift($args)), $root) : ''; $with_title = PLUGIN_INCLUDE_WITH_TITLE; if (isset($args[0])) { switch (strtolower(array_shift($args))) { case 'title': $with_title = true; break; case 'notitle': $with_title = false; break; } } $s_page = htmlsc($page); $r_page = rawurlencode($page); $link = '<a href="' . $script . '?' . $r_page . '">' . $s_page . '</a>'; // Read link // I'm stuffed if (isset($included[$page])) { return '#include(): Included already: ' . $link . '<br />' . "\n"; } if (!is_page($page)) { return '#include(): No such page: ' . $s_page . '<br />' . "\n"; } if ($count > PLUGIN_INCLUDE_MAX) { return '#include(): Limit exceeded: ' . $link . '<br />' . "\n"; } else { ++$count; } // One page, only one time, at a time $included[$page] = true; // Include A page, that probably includes another pages $get['page'] = $post['page'] = $vars['page'] = $page; if (check_readable($page, false, false)) { $body = convert_html(get_source($page)); } else { $body = str_replace('$1', $page, $_msg_include_restrict); } $get['page'] = $post['page'] = $vars['page'] = $root; // Put a title-with-edit-link, before including document if ($with_title) { $link = '<a href="' . $script . '?cmd=edit&page=' . $r_page . '">' . $s_page . '</a>'; if ($page == $menubar) { $body = '<span align="center"><h5 class="side_label">' . $link . '</h5></span><small>' . $body . '</small>'; } else { $body = '<h1>' . $link . '</h1>' . "\n" . $body . "\n"; } } return $body; }