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;
    }
}
Example #2
0
function plugin_lookup_action()
{
    global $post;
    // Deny GET method to avlid GET loop
    $qm = get_qm();
    $page = isset($post['page']) ? $post['page'] : '';
    $inter = isset($post['inter']) ? $post['inter'] : '';
    if ($page == '') {
        return FALSE;
    }
    // Do nothing
    if ($inter == '') {
        return array('msg' => $qm->m['plg_lookup']['err_invalid_access'], 'body' => '');
    }
    $url = get_interwiki_url($inter, $page);
    if ($url === FALSE) {
        $msg = $qm->replace('fmt_err_iw_not_found', $inter);
        $msg = h($msg);
        return array('msg' => $qm->m['plg_lookup']['title_not_found'], 'body' => $msg);
    }
    pkwk_headers_sent();
    header('Location: ' . $url);
    // Publish as GET method
    exit;
}
Example #3
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;
    }
}
Example #4
0
function plugin_rss10_action()
{
    pkwk_headers_sent();
    header('Status: 301 Moved Permanently');
    header('Location: ' . get_script_uri() . '?cmd=rss&ver=1.0');
    // HTTP
    exit;
}
Example #5
0
function plugin_rss10_action()
{
    pkwk_headers_sent();
    header('Status: 301 Moved Permanently');
    header('Location: ' . get_location_uri('rss', '', 'ver=1.0'));
    // HTTP
    exit;
}
function plugin_touchgraph_action()
{
    global $vars;
    pkwk_headers_sent();
    header('Content-type: text/plain');
    if (isset($vars['reverse'])) {
        plugin_touchgraph_ref();
    } else {
        plugin_touchgraph_rel();
    }
    exit;
}
Example #7
0
function plugin_interwiki_action()
{
    global $vars, $InterWikiName;
    if (PKWK_SAFE_MODE) {
        die_message('InterWiki plugin is not allowed');
    }
    $match = array();
    if (!preg_match("/^{$InterWikiName}\$/", $vars['page'], $match)) {
        return plugin_interwiki_invalid();
    }
    $url = get_interwiki_url($match[2], $match[3]);
    if ($url === FALSE) {
        return plugin_interwiki_invalid();
    }
    pkwk_headers_sent();
    header('Location: ' . $url);
    exit;
}
Example #8
0
function plugin_pcomment_action()
{
    global $vars;
    if (PKWK_READONLY) {
        die_message('PKWK_READONLY prohibits editing');
    }
    if (!isset($vars['msg']) || $vars['msg'] == '') {
        return array();
    }
    $refer = isset($vars['refer']) ? $vars['refer'] : '';
    $retval = plugin_pcomment_insert();
    if ($retval['collided']) {
        $vars['page'] = $refer;
        return $retval;
    }
    pkwk_headers_sent();
    header('Location: ' . get_script_uri() . '?' . rawurlencode($refer));
    exit;
}
Example #9
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_pcomment_action()
{
    global $post, $vars;
    // if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
    if (auth::check_role('readonly')) {
        die_message('PKWK_READONLY prohibits editing');
    }
    // Petit SPAM Check (Client(Browser)-Server Ticket Check)
    $b = FALSE;
    if (!isset($post['encode_hint']) && PKWK_ENCODING_HINT == '') {
        $b = TRUE;
    } elseif (isset($post['encode_hint']) && $post['encode_hint'] == PKWK_ENCODING_HINT) {
        $b = TRUE;
    }
    if ($b === FALSE) {
        honeypot_write();
        return array('msg' => '', 'body' => '');
        // Do nothing
    }
    if (!isset($vars['msg']) || $vars['msg'] == '') {
        return array();
    }
    // Validate
    if (is_spampost(array('msg'))) {
        honeypot_write();
        return array('msg' => '', 'body' => '');
        // Do nothing
    }
    $refer = isset($vars['refer']) ? $vars['refer'] : '';
    if (!is_page($refer) && auth::is_check_role(PKWK_CREATE_PAGE)) {
        die_message(_('PKWK_CREATE_PAGE prohibits editing'));
    }
    $retval = plugin_pcomment_insert();
    if ($retval['collided']) {
        $vars['page'] = $refer;
        return $retval;
    }
    pkwk_headers_sent();
    header('Location: ' . get_page_location_uri($refer));
    exit;
}
Example #11
0
function plugin_lookup_action()
{
    global $post;
    // Deny GET method to avlid GET loop
    $page = isset($post['page']) ? $post['page'] : '';
    $inter = isset($post['inter']) ? $post['inter'] : '';
    if ($page == '') {
        return false;
    }
    // Do nothing
    if ($inter == '') {
        return array('msg' => 'Invalid access', 'body' => '');
    }
    $url = get_interwiki_url($inter, $page);
    if ($url === false) {
        $msg = sprintf('InterWikiName "%s" not found', $inter);
        $msg = htmlsc($msg);
        return array('msg' => 'Not found', 'body' => $msg);
    }
    pkwk_headers_sent();
    header('Location: ' . $url);
    // Publish as GET method
    exit;
}
Example #12
0
function plugin_tracker_action()
{
    global $post, $vars, $now;
    if (PKWK_READONLY) {
        die_message('PKWK_READONLY prohibits editing');
    }
    $config_name = array_key_exists('_config', $post) ? $post['_config'] : '';
    $config = new Config('plugin/tracker/' . $config_name);
    if (!$config->read()) {
        return "<p>config file '" . htmlsc($config_name) . "' not found.</p>";
    }
    $config->config_name = $config_name;
    $source = $config->page . '/page';
    $refer = array_key_exists('_refer', $post) ? $post['_refer'] : $post['_base'];
    if (!is_pagename($refer)) {
        return array('msg' => 'cannot write', 'body' => 'page name (' . htmlsc($refer) . ') is not valid.');
    }
    if (!is_page($source)) {
        return array('msg' => 'cannot write', 'body' => 'page template (' . htmlsc($source) . ') is not exist.');
    }
    // ページ名を決定
    $base = $post['_base'];
    $num = 0;
    $name = array_key_exists('_name', $post) ? $post['_name'] : '';
    if (array_key_exists('_page', $post)) {
        $page = $real = $post['_page'];
    } else {
        $real = is_pagename($name) ? $name : ++$num;
        $page = get_fullname('./' . $real, $base);
    }
    if (!is_pagename($page)) {
        $page = $base;
    }
    while (is_page($page)) {
        $real = ++$num;
        $page = "{$base}/{$real}";
    }
    // ページデータを生成
    $postdata = plugin_tracker_get_source($source);
    // 規定のデータ
    $_post = array_merge($post, $_FILES);
    $_post['_date'] = $now;
    $_post['_page'] = $page;
    $_post['_name'] = $name;
    $_post['_real'] = $real;
    // $_post['_refer'] = $_post['refer'];
    $fields = plugin_tracker_get_fields($page, $refer, $config);
    // Creating an empty page, before attaching files
    touch(get_filename($page));
    foreach (array_keys($fields) as $key) {
        $value = array_key_exists($key, $_post) ? $fields[$key]->format_value($_post[$key]) : '';
        foreach (array_keys($postdata) as $num) {
            if (trim($postdata[$num]) == '') {
                continue;
            }
            $postdata[$num] = str_replace("[{$key}]", ($postdata[$num][0] == '|' or $postdata[$num][0] == ':') ? str_replace('|', '&#x7c;', $value) : $value, $postdata[$num]);
        }
    }
    // Writing page data, without touch
    page_write($page, join('', $postdata));
    $r_page = rawurlencode($page);
    pkwk_headers_sent();
    header('Location: ' . get_script_uri() . '?' . $r_page);
    exit;
}
Example #13
0
function plugin_amazon_action()
{
    global $vars, $script, $edit_auth, $edit_auth_users;
    global $amazon_body, $asin, $asin_all;
    $qm = get_qm();
    if (PKWK_READONLY) {
        die_message($qm->m['fmt_err_pkwk_readonly']);
    }
    $s_page = isset($vars['refer']) ? $vars['refer'] : '';
    $asin_all = isset($vars['asin']) ? htmlspecialchars(rawurlencode(strip_bracket($vars['asin']))) : '';
    if (!is_asin()) {
        $retvars['msg'] = $qm->m['plg_amazon']['review_title'];
        $retvars['refer'] =& $s_page;
        $retvars['body'] = plugin_amazon_convert();
        return $retvars;
    } else {
        $r_page = $s_page . '/' . $asin;
        $r_page_url = rawurlencode($r_page);
        $auth_user = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : '';
        pkwk_headers_sent();
        if ($edit_auth && ($auth_user == '' || !isset($edit_auth_users[$auth_user]) || $edit_auth_users[$auth_user] != $_SERVER['PHP_AUTH_PW'])) {
            // Edit-auth failed. Just look the page
            header('Location: ' . get_script_uri() . '?' . $r_page_url);
        } else {
            $title = plugin_amazon_get_asin_title();
            if ($title == '' || preg_match('#^/#', $s_page)) {
                // Invalid page name
                header('Location: ' . get_script_uri() . '?' . rawurlencode($s_page));
            } else {
                $body = '#amazon(' . $asin_all . ',,image)' . "\n" . '*' . $title . "\n" . $amazon_body;
                plugin_amazon_review_save($r_page, $body);
                header('Location: ' . get_script_uri() . '?cmd=edit&page=' . $r_page_url);
            }
        }
        exit;
    }
}
function plugin_approve_action()
{
    global $vars, $post;
    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'));
    }
    // Petit SPAM Check (Client(Browser)-Server Ticket Check)
    $spam = FALSE;
    if (function_exists('pkwk_session_start') && pkwk_session_start() != 0) {
        $s_tracker = md5(get_ticket() . 'Approve');
        error_log("\$s_tracker: " . $s_tracker);
        error_log("\$_SESSION['tracker']: " . $_SESSION['tracker']);
    } else {
        if (isset($post['encode_hint']) && $post['encode_hint'] != '') {
            error_log("\$post['encode_hint']: " . $post['encode_hint']);
            if (PKWK_ENCODING_HINT != $post['encode_hint']) {
                $spam = TRUE;
            }
        } else {
            error_log("PKWK_ENCODING_HINT: " . PKWK_ENCODING_HINT);
            if (PKWK_ENCODING_HINT != '') {
                $spam = TRUE;
            }
        }
        error_log("is_spampost: " . is_spampost(array('body'), PLUGIN_TRACKER_REJECT_SPAMCOUNT));
        if (is_spampost(array('body'), PLUGIN_TRACKER_REJECT_SPAMCOUNT)) {
            $spam = TRUE;
        }
    }
    error_log("isSpam: " . $spam);
    if ($spam) {
        honeypot_write();
        return array('msg' => 'cannot write', 'body' => '<p>prohibits editing</p>');
    }
    $name = isset($post['name']) ? $post['name'] : '';
    $page = isset($post['_page']) ? $post['_page'] : '';
    if ($name == '') {
        return '<p>approve(): empty name.</p>';
    }
    if ($page == '') {
        return '<p>approve(): empty page.</p>';
    }
    $config_path = PLUGIN_APPROVE_CONFIG_ROOT . $name;
    $config = new YamlConfig($config_path);
    if (!$config->read()) {
        return array('msg' => 'Approve', 'body' => '<p>approve(): failed to load config. "' . $config_path . '"</p>');
    }
    $pattern = $config[PLUGIN_APPROVE_KEY_PATTERN];
    $replace = $config[PLUGIN_APPROVE_KEY_REPLACE];
    $page_regex = $config[PLUGIN_APPROVE_KEY_PAGE_REGEX];
    if ($page == '') {
        return array('msg' => 'Approve', 'body' => '<p>approve(): empty page.</p>');
    }
    if ($pattern == '') {
        return array('msg' => 'Approve', 'body' => '<p>approve(): empty pattern.</p>');
    }
    if ($page_regex == '') {
        return array('msg' => 'Approve', 'body' => '<p>approve(): empty page_regex.</p>');
    }
    if (!preg_match($page_regex, $page)) {
        return array('msg' => 'Approve', 'body' => '<p>approve(): page not match.</p>');
    }
    if (PKWK_READONLY > 0 || is_freeze($vars['page']) || !plugin_approve_is_edit_authed($page)) {
        return array('msg' => 'Approve', 'body' => '<p>approve(): prohibit editing. "' . $page . '"</p>');
    }
    $source = get_source($page, TRUE, TRUE);
    if ($source === FALSE) {
        return array('msg' => 'Approve', 'body' => '<p>approve(): failed to load page. "' . $page . '"</p>');
    }
    if (strpos($source, $pattern) === FALSE) {
        return array('msg' => 'Approve', 'body' => '<p>approve(): pattern not match.</p>');
    }
    $source = str_replace($pattern, $replace, $source);
    //return array('msg'=>'Approve', 'body'=>$source);
    page_write($page, $source);
    pkwk_headers_sent();
    header('Location: ' . get_page_location_uri($page));
    exit;
}
function plugin_bugtrack_action()
{
    global $post;
    global $_plugin_bugtrack;
    // 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 ($post['mode'] != 'submit') {
        return FALSE;
    }
    // Petit SPAM Check (Client(Browser)-Server Ticket Check)
    $spam = FALSE;
    if (isset($post['encode_hint']) && $post['encode_hint'] != '') {
        if (PKWK_ENCODING_HINT != $post['encode_hint']) {
            $spam = TRUE;
        }
    } else {
        if (PKWK_ENCODING_HINT != '') {
            $spam = TRUE;
        }
    }
    // Vaildation foreign values(by miko)
    if (!in_array($post['priority'], $_plugin_bugtrack['priority_list'])) {
        $spam = TRUE;
    }
    if (!in_array($post['state'], $_plugin_bugtrack['state_list'])) {
        $spam = TRUE;
    }
    if ($spam) {
        honeypot_write();
        return array('msg' => 'cannot write', 'body' => '<p>prohibits editing</p>');
    }
    $page = plugin_bugtrack_write($post['base'], $post['pagename'], $post['summary'], $post['name'], $post['priority'], $post['state'], $post['category'], $post['version'], $post['body']);
    pkwk_headers_sent();
    header('Location: ' . get_page_location_uri($page));
    exit;
}
Example #16
0
function pkwk_common_headers()
{
    if (!PKWK_OPTIMISE) {
        pkwk_headers_sent();
    }
    if (defined('PKWK_ZLIB_LOADABLE_MODULE')) {
        $matches = array();
        if (ini_get('zlib.output_compression') && preg_match('/\\b(gzip|deflate)\\b/i', $_SERVER['HTTP_ACCEPT_ENCODING'], $matches)) {
            // Bug #29350 output_compression compresses everything _without header_ as loadable module
            // http://bugs.php.net/bug.php?id=29350
            header('Content-Encoding: ' . $matches[1]);
            header('Vary: Accept-Encoding');
        }
    }
}
Example #17
0
function plugin_edit_cancel()
{
    global $vars;
    pkwk_headers_sent();
    header('Location: ' . get_page_location_uri($vars['page']));
    exit;
}
Example #18
0
function plugin_rename_phase4($pages, $files, $exists)
{
    global $now, $_rename_messages;
    if (plugin_rename_getvar('exist') == '') {
        foreach ($exists as $key => $arr) {
            unset($files[$key]);
        }
    }
    set_time_limit(0);
    foreach ($files as $page => $arr) {
        foreach ($arr as $old => $new) {
            if (isset($exists[$page][$old]) && $exists[$page][$old]) {
                unlink($new);
            }
            rename($old, $new);
            // Update link database (BugTrack/327) arino
            //links_update($old);
            //links_update($new);
            $links = new Relational();
            $links->update($old);
            $links->update($new);
        }
    }
    $wiki = Factory::Wiki(PLUGIN_RENAME_LOGPAGE);
    $postdata = $wiki->get();
    $postdata[] = '*' . $now . "\n";
    if (plugin_rename_getvar('method') == 'regex') {
        $postdata[] = '-' . $_rename_messages['msg_regex'] . "\n";
        $postdata[] = '--From:[[' . plugin_rename_getvar('src') . ']]' . "\n";
        $postdata[] = '--To:[[' . plugin_rename_getvar('dst') . ']]' . "\n";
    } else {
        $postdata[] = '-' . $_rename_messages['msg_page'] . "\n";
        $postdata[] = '--From:[[' . plugin_rename_getvar('refer') . ']]' . "\n";
        $postdata[] = '--To:[[' . plugin_rename_getvar('page') . ']]' . "\n";
    }
    if (!empty($exists)) {
        $postdata[] = "\n" . $_rename_messages['msg_result'] . "\n";
        foreach ($exists as $page => $arr) {
            $postdata[] = '-' . decode($page) . $_rename_messages['msg_arrow'] . decode($pages[$page]) . "\n";
            foreach ($arr as $ofile => $nfile) {
                $postdata[] = '--' . $ofile . $_rename_messages['msg_arrow'] . $nfile . "\n";
            }
        }
        $postdata[] = '----' . "\n";
    }
    foreach ($pages as $old => $new) {
        $postdata[] = '-' . decode($old) . $_rename_messages['msg_arrow'] . decode($new) . "\n";
    }
    // At this time, collision detection is not implemented
    $wiki->set($postdata);
    //未定義
    //	cache_timestamp_touch();
    $page = plugin_rename_getvar('page');
    if ($page == '') {
        $page = PLUGIN_RENAME_LOGPAGE;
    }
    // Redirection
    if (!pkwk_headers_sent()) {
        header('Location: ' . get_page_location_uri($page));
    }
    exit;
}
Example #19
0
function plugin_edit_cancel()
{
    global $vars;
    pkwk_headers_sent();
    header('Location: ' . get_script_uri() . '?' . rawurlencode($vars['page']));
    exit;
}
Example #20
0
 function redirect($page)
 {
     pkwk_headers_sent();
     header('Location: ' . get_script_uri() . '?' . rawurlencode($page));
     exit;
 }
Example #21
0
function plugin_edit_cancel()
{
    global $vars, $layout_pages, $qblog_menubar, $qblog_defaultpage;
    pkwk_headers_sent();
    if ($vars['page'] === $qblog_menubar) {
        header('Location: ' . get_script_uri() . '?' . $qblog_defaultpage);
    } else {
        if (is_qblog($vars['page']) && !is_page($vars['page'])) {
            header('Location: ' . get_script_uri() . '?' . $qblog_defaultpage);
        } else {
            if (array_key_exists($vars['page'], $layout_pages) or count(get_source($vars['page'])) == 0) {
                header('Location: ' . get_script_uri());
            } else {
                header('Location: ' . get_script_uri() . '?' . rawurlencode($vars['page']));
            }
        }
    }
    exit;
}
Example #22
0
function plugin_bugtrack_action()
{
    global $post;
    if (PKWK_READONLY) {
        die_message('PKWK_READONLY prohibits editing');
    }
    if ($post['mode'] != 'submit') {
        return FALSE;
    }
    $page = plugin_bugtrack_write($post['base'], $post['pagename'], $post['summary'], $post['name'], $post['priority'], $post['state'], $post['category'], $post['version'], $post['body']);
    pkwk_headers_sent();
    header('Location: ' . get_script_uri() . '?' . rawurlencode($page));
    exit;
}
Example #23
0
function header_lastmod($page = NULL)
{
    global $lastmod;
    if ($lastmod && is_page($page)) {
        pkwk_headers_sent();
        header('Last-Modified: ' . date('D, d M Y H:i:s', get_filetime($page)) . ' GMT');
    }
}
Example #24
0
	$next = $pageno + 1;
	if ($pageno > 0) {
		$navi[] = '<a href="' . $script . '?cmd=read&amp;page=' . $r_page .
			'&amp;p=' . $prev . '" ' . $accesskey . '="7">7.Prev</a>';
	}
	$navi[] = $next . '/' . $pagecount . ' ';
	if ($pageno < $pagecount - 1) {
		$navi[] = '<a href="' . $script . '?cmd=read&amp;page=' . $r_page .
			'&amp;p=' . $next . '" ' . $accesskey . '="8">8.Next</a>';
	}
}
*/
$navi = join(' | ', $navi);
// ----
// Output HTTP headers
pkwk_headers_sent();
if (TRUE) {
    // Force Shift JIS encode for Japanese embedded browsers and devices
    header('Content-Type: text/html; charset=Shift_JIS');
    $title = mb_convert_encoding($title, 'SJIS', SOURCE_ENCODING);
    $navi = mb_convert_encoding($navi, 'SJIS', SOURCE_ENCODING);
    $body = mb_convert_encoding($body, 'SJIS', SOURCE_ENCODING);
} else {
    header('Content-Type: text/html; charset=' . CONTENT_CHARSET);
}
// Output
?>
<html><head><title><?php 
echo $title;
?>
</title></head><body><?php 
Example #25
0
function plugin_guiedit_cancel()
{
    global $vars;
    $location = 'Location: ' . get_script_uri() . '?' . rawurlencode($vars['page']);
    if (!empty($vars['id'])) {
        $location .= '#' . $vars['id'];
    }
    pkwk_headers_sent();
    header($location);
    exit;
}
function plugin_tracker_action()
{
    global $post, $vars, $now;
    //	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'));
    }
    $base = isset($post['_base']) ? $post['_base'] : '';
    $refer = isset($post['_refer']) ? $post['_refer'] : '';
    $createProxy = isset($post['_createProxy']) ? $post['_createProxy'] : '';
    // $page name to add will be decided here
    $num = 0;
    $name = isset($post['_name']) ? $post['_name'] : '';
    if (isset($post['_page'])) {
        $real = $page = $post['_page'];
    } else {
        $real = is_pagename($name) ? $name : ++$num;
        $page = get_fullname('./' . $real, $base);
    }
    if (!is_pagename($page)) {
        $page = $base;
    }
    while (is_page($page)) {
        $real = ++$num;
        $page = $base . '/' . $real;
    }
    $config = isset($post['_config']) ? $post['_config'] : '';
    $createProxy = isset($post['_createProxy']) ? $post['_createProxy'] : '';
    // Petit SPAM Check (Client(Browser)-Server Ticket Check)
    $spam = FALSE;
    if (function_exists('pkwk_session_start') && pkwk_session_start() != 0) {
        $s_tracker = md5(get_ticket() . $config_name);
        error_log("\$s_tracker: " . $s_tracker);
        error_log("\$_SESSION['tracker']: " . $_SESSION['tracker']);
        //		if ($_SESSION['tracker'] != $s_tracker) {
        //			$spam = TRUE;
        //		}
    } else {
        if (isset($post['encode_hint']) && $post['encode_hint'] != '') {
            if (PKWK_ENCODING_HINT != $post['encode_hint']) {
                $spam = TRUE;
            }
        } else {
            if (PKWK_ENCODING_HINT != '') {
                $spam = TRUE;
            }
        }
        if (is_spampost(array('body'), PLUGIN_TRACKER_REJECT_SPAMCOUNT)) {
            $spam = TRUE;
        }
    }
    if ($spam) {
        honeypot_write();
        return array('msg' => 'cannot write', 'body' => '<p>prohibits editing</p>');
    }
    // TODO: Why here
    // Default
    $_post = array_merge($post, $_FILES);
    $_post['_date'] = $now;
    $_post['_page'] = $page;
    $_post['_name'] = $name;
    $_post['_real'] = $real;
    // $_post['_refer'] = $_post['refer'];
    // TODO: Why here => See BugTrack/662
    // Creating an empty page, before attaching files
    pkwk_touch_file(get_filename($page));
    $from = $to = array();
    $tracker_form =& new Tracker_form();
    if (!$tracker_form->init($base, $refer, $config)) {
        return array('msg' => 'Cannot write', 'body' => htmlspecialchars($tracker_form->error));
    }
    // Load $template
    $template_page = $tracker_form->config->page . '/' . PLUGIN_TRACKER_DEFAULT_PAGE;
    $template = plugin_tracker_get_source($template_page);
    if ($template === FALSE || empty($template)) {
        return array('msg' => 'Cannot write', 'body' => 'Page template (' . htmlspecialchars($template_page) . ') not found');
    }
    if (!$tracker_form->initFields(plugin_tracker_field_pickup(implode('', $template)))) {
        return array('msg' => 'Cannot write', 'body' => htmlspecialchars($tracker_form->error));
    }
    $fields = $tracker_form->fields;
    unset($tracker_form);
    foreach (array_keys($fields) as $field) {
        $from[] = '[' . $field . ']';
        $to[] = isset($_post[$field]) ? $fields[$field]->format_value($_post[$field]) : '';
        unset($fields[$field]);
    }
    // Repalace every [$field]s (found inside $template) to real values
    $subject = $escape = array();
    foreach (array_keys($template) as $linenum) {
        if (trim($template[$linenum]) == '') {
            continue;
        }
        // Escape some TextFormattingRules
        $letter = $template[$linenum][0];
        if ($letter == '|' || $letter == ':') {
            $escape['|'][$linenum] = $template[$linenum];
        } else {
            if ($letter == ',') {
                $escape[','][$linenum] = $template[$linenum];
            } else {
                // TODO: Escape "\n" except multiline-allowed fields
                $subject[$linenum] = $template[$linenum];
            }
        }
    }
    foreach (str_replace($from, $to, $subject) as $linenum => $line) {
        $template[$linenum] = $line;
    }
    if ($escape) {
        // Escape for some TextFormattingRules
        foreach (array_keys($escape) as $hint) {
            $to_e = plugin_tracker_escape($to, $hint);
            foreach (str_replace($from, $to_e, $escape[$hint]) as $linenum => $line) {
                $template[$linenum] = $line;
            }
        }
        unset($to_e);
    }
    unset($from, $to);
    // Write $template, without touch
    page_write($page, join('', $template));
    // Create proxy page
    if ($createProxy && ($proxyPage = isset($_post[$createProxy]) ? $_post[$createProxy] : '')) {
        page_write($proxyPage, '#include(' . $page . ',notitle)');
    }
    pkwk_headers_sent();
    header('Location: ' . get_page_location_uri($page));
    exit;
}
Example #27
0
function plugin_rename_proceed($pages, $files, $exists)
{
    global $now, $_rename_messages;
    if (plugin_rename_getvar('exist') == '') {
        foreach ($exists as $key => $arr) {
            unset($files[$key]);
        }
    }
    set_time_limit(0);
    foreach ($files as $page => $arr) {
        foreach ($arr as $old => $new) {
            if (isset($exists[$page][$old]) && $exists[$page][$old]) {
                unlink($new);
            }
            rename($old, $new);
            // linkデータベースを更新する BugTrack/327 arino
            links_update($old);
            links_update($new);
        }
    }
    $postdata = get_source(PLUGIN_RENAME_LOGPAGE);
    $postdata[] = '*' . $now . "\n";
    if (plugin_rename_getvar('method') == 'regex') {
        $postdata[] = '-' . $_rename_messages['msg_regex'] . "\n";
        $postdata[] = '--From:[[' . plugin_rename_getvar('src') . ']]' . "\n";
        $postdata[] = '--To:[[' . plugin_rename_getvar('dst') . ']]' . "\n";
    } else {
        $postdata[] = '-' . $_rename_messages['msg_page'] . "\n";
        $postdata[] = '--From:[[' . plugin_rename_getvar('refer') . ']]' . "\n";
        $postdata[] = '--To:[[' . plugin_rename_getvar('page') . ']]' . "\n";
    }
    if (!empty($exists)) {
        $postdata[] = "\n" . $_rename_messages['msg_result'] . "\n";
        foreach ($exists as $page => $arr) {
            $postdata[] = '-' . decode($page) . $_rename_messages['msg_arrow'] . decode($pages[$page]) . "\n";
            foreach ($arr as $ofile => $nfile) {
                $postdata[] = '--' . $ofile . $_rename_messages['msg_arrow'] . $nfile . "\n";
            }
        }
        $postdata[] = '----' . "\n";
    }
    foreach ($pages as $old => $new) {
        $postdata[] = '-' . decode($old) . $_rename_messages['msg_arrow'] . decode($new) . "\n";
    }
    // 更新の衝突はチェックしない。
    // ファイルの書き込み
    page_write(PLUGIN_RENAME_LOGPAGE, join('', $postdata));
    //リダイレクト
    $page = plugin_rename_getvar('page');
    if ($page == '') {
        $page = PLUGIN_RENAME_LOGPAGE;
    }
    pkwk_headers_sent();
    header('Location: ' . get_page_location_uri($page));
    exit;
}