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;
    }
}
Beispiel #2
0
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('&amp;', $tmp) . '">' . $title . '</a></p>' . "\n";
}
Beispiel #3
0
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('&amp;', $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;
}
Beispiel #5
0
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;
    }
}
Beispiel #6
0
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);
}
Beispiel #9
0
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);
}
Beispiel #10
0
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));
            }
        }
    }
}
Beispiel #11
0
/**
 * ページ内で #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&amp;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);
}
Beispiel #14
0
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);
}
Beispiel #15
0
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;
}
Beispiel #17
0
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));
}
Beispiel #19
0
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));
}
Beispiel #20
0
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;
}
Beispiel #23
0
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&amp;prefix=' . rawurlencode($prefix);
    if (isset($params['title'])) {
        $tmp[] = 'title=1';
    }
    if (isset($params['include'])) {
        $tmp[] = 'include=1';
    }
    return '<p><a href="' . $script . '?' . join('&amp;', $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;
 }
Beispiel #25
0
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 == '' ? '' : '&amp;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&amp;page=' . $r_page . $r_refer . '">' . $_symbol_noexists . '</a>';
        if ($link_compact) {
            return $retval;
        } else {
            return '<span class="noexists">' . $retval . '</span>';
        }
    }
}
Beispiel #26
0
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;
}
Beispiel #27
0
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">&nbsp;</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' ? '&amp;refer=' . rawurlencode($page) : '';
        if ($cmd == 'read' && !is_page($name)) {
            $link = '<strong>' . $day . '</strong>';
        } else {
            $link = '<a href="' . $script . '?cmd=' . $cmd . '&amp;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">&nbsp;</td>' . "\n";
            ++$wday;
        }
    }
    $ret .= '  </tr>' . "\n" . '</table>' . "\n";
    return $ret;
}
Beispiel #28
0
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;
}
Beispiel #29
0
        $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);
Beispiel #30
0
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&amp;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;
}