コード例 #1
0
ファイル: read.inc.php プロジェクト: geoemon2k/source_wiki
function plugin_read_action()
{
    global $vars, $_title_invalidwn, $_msg_invalidiwn;
    $page = isset($vars['page']) ? $vars['page'] : '';
    if (is_page($page)) {
        // ページを表示
        check_readable($page, true, true);
        header_lastmod($page);
        return array('msg' => '', 'body' => '');
    } else {
        if (!PKWK_SAFE_MODE && is_interwiki($page)) {
            return do_plugin_action('interwiki');
            // InterWikiNameを処理
        } else {
            if (is_pagename($page)) {
                $vars['cmd'] = 'edit';
                return do_plugin_action('edit');
                // 存在しないので、編集フォームを表示
            } else {
                // 無効なページ名
                return array('msg' => $_title_invalidwn, 'body' => str_replace('$1', htmlsc($page), str_replace('$2', 'WikiName', $_msg_invalidiwn)));
            }
        }
    }
}
コード例 #2
0
function plugin_doc_ini_action()
{
    global $script, $vars, $_doc_ini_msg;
    if (auth::check_role('role_adm_contents')) {
        die_message('NOT AUTHORIZED.');
    }
    if (empty($vars['page'])) {
        return;
    }
    if (!is_pagename($vars['page'])) {
        return '';
    }
    // Invalid page name;
    $action = empty($vars['action']) ? '' : $vars['action'];
    $retval = array();
    $msg_title = sprintf($_doc_ini_msg['msg_confirmation'], $vars['page']);
    if ($action === 'exec') {
        return plugin_doc_ini_exec($vars['page']);
    }
    $retval['body'] = <<<EOD
<form action="{$script}" method="post">
        <div>
\t{$msg_title}
                <input type="hidden" name="plugin" value="doc_ini" />
                <input type="hidden" name="action" value="exec" />
                <input type="hidden" name="page" value="{$vars['page']}" />
                <input type="submit" value="{$_doc_ini_msg['btn_exec']}" />
        </div>
</form>

EOD;
    $retval['msg'] = $_doc_ini_msg['title_confirmation'];
    return $retval;
}
コード例 #3
0
ファイル: func.php プロジェクト: aterai/pukiwiki-plus-i18n
function is_editable($page)
{
    static $is_editable = array();
    if (!isset($is_editable[$page])) {
        $is_editable[$page] = is_pagename($page) && !is_freeze($page) && !is_cantedit($page);
    }
    return $is_editable[$page];
}
コード例 #4
0
function plugin_read_action()
{
    global $vars, $_title_invalidwn, $_msg_invalidiwn;
    $page = isset($vars['page']) ? $vars['page'] : '';
    if (is_page($page)) {
        // ページを表示
        check_readable($page, true, true);
        header_lastmod($page);
        return array('msg' => '', 'body' => '');
        // } else if (! PKWK_SAFE_MODE && is_interwiki($page)) {
    } else {
        if (!auth::check_role('safemode') && is_interwiki($page)) {
            return do_plugin_action('interwiki');
            // InterWikiNameを処理
        } else {
            if (is_pagename($page)) {
                $realpages = get_autoaliases($page);
                if (count($realpages) == 1) {
                    $realpage = $realpages[0];
                    if (is_page($realpage)) {
                        header('HTTP/1.0 301 Moved Permanently');
                        header('Location: ' . get_page_location_uri($realpage));
                        return;
                    } elseif (is_url($realpage)) {
                        header('HTTP/1.0 301 Moved Permanently');
                        header('Location: ' . $realpage);
                        return;
                    } elseif (is_interwiki($realpage)) {
                        header('HTTP/1.0 301 Moved Permanently');
                        $vars['page'] = $realpage;
                        return do_plugin_action('interwiki');
                        // header('Location');
                    } else {
                        // 存在しない場合、直接編集フォームに飛ばす // To avoid infinite loop
                        header('Location: ' . get_location_uri('edit', $realpage));
                        return;
                    }
                } elseif (count($realpages) >= 2) {
                    $body = '<p>';
                    $body .= _('This pagename is an alias to') . '<br />';
                    $link = '';
                    foreach ($realpages as $realpage) {
                        $link .= '[[' . $realpage . '>' . $realpage . ']]&br;';
                    }
                    $body .= make_link($link);
                    $body .= '</p>';
                    return array('msg' => _('Redirect'), 'body' => $body);
                }
                $vars['cmd'] = 'edit';
                return do_plugin_action('edit');
                // 存在しないので、編集フォームを表示
            } else {
                // 無効なページ名
                return array('msg' => $_title_invalidwn, 'body' => str_replace('$1', htmlspecialchars($page), str_replace('$2', 'WikiName', $_msg_invalidiwn)));
            }
        }
    }
}
コード例 #5
0
ファイル: func.php プロジェクト: KimuraYoichi/PukiWiki
function is_editable($page)
{
    global $cantedit;
    static $is_editable = array();
    if (!isset($is_editable[$page])) {
        $is_editable[$page] = is_pagename($page) && !is_freeze($page) && !in_array($page, $cantedit);
    }
    return $is_editable[$page];
}
コード例 #6
0
function plugin_rename_action()
{
    global $whatsnew;
    // if (PKWK_READONLY) die_message('PKWK_READONLY prohibits this');
    if (auth::check_role('readonly')) {
        die_message('PKWK_READONLY prohibits this');
    }
    $method = plugin_rename_getvar('method');
    if ($method == 'regex') {
        $src = plugin_rename_getvar('src');
        if ($src == '') {
            return plugin_rename_phase1();
        }
        $src_pattern = '/' . preg_quote($src, '/') . '/';
        $arr0 = preg_grep($src_pattern, auth::get_existpages());
        if (!is_array($arr0) || empty($arr0)) {
            return plugin_rename_phase1('nomatch');
        }
        $dst = plugin_rename_getvar('dst');
        $arr1 = preg_replace($src_pattern, $dst, $arr0);
        foreach ($arr1 as $page) {
            if (!is_pagename($page)) {
                return plugin_rename_phase1('notvalid');
            }
        }
        return plugin_rename_regex($arr0, $arr1);
    } else {
        // $method == 'page'
        $page = plugin_rename_getvar('page');
        $refer = plugin_rename_getvar('refer');
        if ($refer === '') {
            return plugin_rename_phase1();
        } else {
            if (!is_page($refer)) {
                return plugin_rename_phase1('notpage', $refer);
            } else {
                if ($refer === $whatsnew) {
                    return plugin_rename_phase1('norename', $refer);
                } else {
                    if ($page === '' || $page === $refer) {
                        return plugin_rename_phase2();
                    } else {
                        if (!is_pagename($page)) {
                            return plugin_rename_phase2('notvalid');
                        } else {
                            return plugin_rename_refer();
                        }
                    }
                }
            }
        }
    }
}
コード例 #7
0
ファイル: read.inc.php プロジェクト: big2men/qhm
function plugin_read_action()
{
    global $vars, $script;
    global $post;
    $qm = get_qm();
    $qt = get_qt();
    $page = isset($vars['page']) ? $vars['page'] : '';
    //キャッシュを無効化
    if (isset($vars['word'])) {
        $qt->enable_cache = false;
    }
    if (is_page($page)) {
        // ページを表示
        check_readable($page, true, true);
        header_lastmod($page);
        return array('msg' => '', 'body' => '');
    } else {
        if (!PKWK_SAFE_MODE && is_interwiki($page)) {
            return do_plugin_action('interwiki');
            // InterWikiNameを処理
        } else {
            if (is_pagename($page)) {
                $vars['cmd'] = 'edit';
                // 編集権限があれば、編集モードへ。なければ、メッセージを表示
                $editable = edit_auth($page, FALSE, FALSE);
                if ($editable) {
                    return do_plugin_action('edit');
                    // 存在しないので、編集フォームを表示
                } else {
                    //404 NOT FOUND
                    header('HTTP/1.1 404 Not Found');
                    return array('msg' => $qm->m['fmt_err_notfoundpage_title'], 'body' => $qm->replace('fmt_err_notfoundpage', $script));
                }
            } else {
                //EUCエンコーディングかチェック
                if (mb_detect_encoding($post['page'], 'UTF-8,EUC-JP') == 'EUC-JP') {
                    $u_page = mb_convert_encoding($post['page'], 'UTF-8', 'EUC-JP');
                    $enc_page = rawurlencode($u_page);
                    //redirect
                    header("HTTP/1.1 301 Moved Permanently");
                    header('Location: ' . $script . '?' . $enc_page);
                    exit;
                }
                // 無効なページ名
                return array('msg' => $qm->m['fmt_title_invalidiwn'], 'body' => $qm->replace('fmt_err_invalidiwn', h($page), 'WikiName'));
            }
        }
    }
}
コード例 #8
0
ファイル: func.php プロジェクト: severnaya99/Sg-2010
function is_editable($page)
{
	global $cantedit;
	static $is_editable = array();
	
	if (!array_key_exists($page,$is_editable))
	{
		$is_editable[$page] = (
			is_pagename($page) and
			!is_freeze($page) and
			!in_array($page,$cantedit)
		);
	}
	
	return $is_editable[$page];
}
コード例 #9
0
ファイル: diff.inc.php プロジェクト: geoemon2k/source_wiki
function plugin_diff_delete($page)
{
    global $script, $vars;
    global $_title_diff_delete, $_msg_diff_deleted;
    global $_msg_diff_adminpass, $_btn_delete, $_msg_invalidpass;
    $filename = DIFF_DIR . encode($page) . '.txt';
    $body = '';
    if (!is_pagename($page)) {
        $body = 'Invalid page name';
    }
    if (!file_exists($filename)) {
        $body = make_pagelink($page) . '\'s diff seems not found';
    }
    if ($body) {
        return array('msg' => $_title_diff_delete, 'body' => $body);
    }
    if (isset($vars['pass'])) {
        if (pkwk_login($vars['pass'])) {
            unlink($filename);
            return array('msg' => $_title_diff_delete, 'body' => str_replace('$1', make_pagelink($page), $_msg_diff_deleted));
        } else {
            $body .= '<p><strong>' . $_msg_invalidpass . '</strong></p>' . "\n";
        }
    }
    $s_page = htmlsc($page);
    $body .= <<<EOD
<p>{$_msg_diff_adminpass}</p>
<form action="{$script}" method="post">
 <div>
  <input type="hidden"   name="cmd"    value="diff" />
  <input type="hidden"   name="page"   value="{$s_page}" />
  <input type="hidden"   name="action" value="delete" />
  <input type="password" name="pass"   size="12" />
  <input type="submit"   name="ok"     value="{$_btn_delete}" />
 </div>
</form>
EOD;
    return array('msg' => $_title_diff_delete, 'body' => $body);
}
コード例 #10
0
ファイル: attach.inc.php プロジェクト: geoemon2k/source_wiki
function attach_upload($file, $page, $pass = NULL)
{
    global $_attach_messages, $notify, $notify_subject;
    if (PKWK_READONLY) {
        die_message('PKWK_READONLY prohibits editing');
    }
    // Check query-string
    $query = 'plugin=attach&amp;pcmd=info&amp;refer=' . rawurlencode($page) . '&amp;file=' . rawurlencode($file['name']);
    if (PKWK_QUERY_STRING_MAX && strlen($query) > PKWK_QUERY_STRING_MAX) {
        pkwk_common_headers();
        echo 'Query string (page name and/or file name) too long';
        exit;
    } else {
        if (!is_page($page)) {
            die_message('No such page');
        } else {
            if ($file['tmp_name'] == '' || !is_uploaded_file($file['tmp_name'])) {
                return array('result' => FALSE);
            } else {
                if ($file['size'] > PLUGIN_ATTACH_MAX_FILESIZE) {
                    return array('result' => FALSE, 'msg' => $_attach_messages['err_exceed']);
                } else {
                    if (!is_pagename($page) || $pass !== TRUE && !is_editable($page)) {
                        return array('result' => FALSE, '
			msg' => $_attach_messages['err_noparm']);
                    } else {
                        if (PLUGIN_ATTACH_UPLOAD_ADMIN_ONLY && $pass !== TRUE && ($pass === NULL || !pkwk_login($pass))) {
                            return array('result' => FALSE, 'msg' => $_attach_messages['err_adminpass']);
                        }
                    }
                }
            }
        }
    }
    $obj =& new AttachFile($page, $file['name']);
    if ($obj->exist) {
        return array('result' => FALSE, 'msg' => $_attach_messages['err_exists']);
    }
    if (move_uploaded_file($file['tmp_name'], $obj->filename)) {
        chmod($obj->filename, PLUGIN_ATTACH_FILE_MODE);
    }
    if (is_page($page)) {
        touch(get_filename($page));
    }
    $obj->getstatus();
    $obj->status['pass'] = $pass !== TRUE && $pass !== NULL ? md5($pass) : '';
    $obj->putstatus();
    if ($notify) {
        $footer['ACTION'] = 'File attached';
        $footer['FILENAME'] =& $file['name'];
        $footer['FILESIZE'] =& $file['size'];
        $footer['PAGE'] =& $page;
        $footer['URI'] = get_script_uri() . '?plugin=attach' . '&refer=' . rawurlencode($page) . '&file=' . rawurlencode($file['name']) . '&pcmd=info';
        $footer['USER_AGENT'] = TRUE;
        $footer['REMOTE_ADDR'] = TRUE;
        pkwk_mail_notify($notify_subject, "\n", $footer) or die('pkwk_mail_notify(): Failed');
    }
    return array('result' => TRUE, 'msg' => $_attach_messages['msg_uploaded']);
}
コード例 #11
0
ファイル: tracker.inc.php プロジェクト: geoemon2k/source_wiki
 function format_value($value)
 {
     global $WikiName;
     $value = strip_bracket($value);
     if (is_pagename($value)) {
         $value = "[[{$value}]]";
     }
     return parent::format_value($value);
 }
コード例 #12
0
ファイル: html.php プロジェクト: geoemon2k/source_wiki
function catbody($title, $page, $body)
{
    global $script, $vars, $arg, $defaultpage, $whatsnew, $help_page, $hr;
    global $attach_link, $related_link, $cantedit, $function_freeze;
    global $search_word_color, $_msg_word, $foot_explain, $note_hr, $head_tags;
    global $trackback, $trackback_javascript, $referer, $javascript;
    global $nofollow;
    global $_LANG, $_LINK, $_IMAGE;
    global $pkwk_dtd;
    // XHTML 1.1, XHTML1.0, HTML 4.01 Transitional...
    global $page_title;
    // Title of this site
    global $do_backup;
    // Do backup or not
    global $modifier;
    // Site administrator's  web page
    global $modifierlink;
    // Site administrator's name
    if (!file_exists(SKIN_FILE) || !is_readable(SKIN_FILE)) {
        die_message('SKIN_FILE is not found');
    }
    $_LINK = $_IMAGE = array();
    // Add JavaScript header when ...
    if ($trackback && $trackback_javascript) {
        $javascript = 1;
    }
    // Set something If you want
    if (!PKWK_ALLOW_JAVASCRIPT) {
        unset($javascript);
    }
    $_page = isset($vars['page']) ? $vars['page'] : '';
    $r_page = rawurlencode($_page);
    // Set $_LINK for skin
    $_LINK['add'] = "{$script}?cmd=add&amp;page={$r_page}";
    $_LINK['backup'] = "{$script}?cmd=backup&amp;page={$r_page}";
    $_LINK['copy'] = "{$script}?plugin=template&amp;refer={$r_page}";
    $_LINK['diff'] = "{$script}?cmd=diff&amp;page={$r_page}";
    $_LINK['edit'] = "{$script}?cmd=edit&amp;page={$r_page}";
    $_LINK['filelist'] = "{$script}?cmd=filelist";
    $_LINK['freeze'] = "{$script}?cmd=freeze&amp;page={$r_page}";
    $_LINK['help'] = "{$script}?" . rawurlencode($help_page);
    $_LINK['list'] = "{$script}?cmd=list";
    $_LINK['new'] = "{$script}?plugin=newpage&amp;refer={$r_page}";
    $_LINK['rdf'] = "{$script}?cmd=rss&amp;ver=1.0";
    $_LINK['recent'] = "{$script}?" . rawurlencode($whatsnew);
    $_LINK['refer'] = "{$script}?plugin=referer&amp;page={$r_page}";
    $_LINK['reload'] = "{$script}?{$r_page}";
    $_LINK['rename'] = "{$script}?plugin=rename&amp;refer={$r_page}";
    $_LINK['rss'] = "{$script}?cmd=rss";
    $_LINK['rss10'] = "{$script}?cmd=rss&amp;ver=1.0";
    // Same as 'rdf'
    $_LINK['rss20'] = "{$script}?cmd=rss&amp;ver=2.0";
    $_LINK['search'] = "{$script}?cmd=search";
    $_LINK['top'] = "{$script}?" . rawurlencode($defaultpage);
    if ($trackback) {
        $tb_id = tb_get_id($_page);
        $_LINK['trackback'] = "{$script}?plugin=tb&amp;__mode=view&amp;tb_id={$tb_id}";
    }
    $_LINK['unfreeze'] = "{$script}?cmd=unfreeze&amp;page={$r_page}";
    $_LINK['upload'] = "{$script}?plugin=attach&amp;pcmd=upload&amp;page={$r_page}";
    // Compat: Skins for 1.4.4 and before
    $link_add =& $_LINK['add'];
    $link_new =& $_LINK['new'];
    // New!
    $link_edit =& $_LINK['edit'];
    $link_diff =& $_LINK['diff'];
    $link_top =& $_LINK['top'];
    $link_list =& $_LINK['list'];
    $link_filelist =& $_LINK['filelist'];
    $link_search =& $_LINK['search'];
    $link_whatsnew =& $_LINK['recent'];
    $link_backup =& $_LINK['backup'];
    $link_help =& $_LINK['help'];
    $link_trackback =& $_LINK['trackback'];
    // New!
    $link_rdf =& $_LINK['rdf'];
    // New!
    $link_rss =& $_LINK['rss'];
    $link_rss10 =& $_LINK['rss10'];
    // New!
    $link_rss20 =& $_LINK['rss20'];
    // New!
    $link_freeze =& $_LINK['freeze'];
    $link_unfreeze =& $_LINK['unfreeze'];
    $link_upload =& $_LINK['upload'];
    $link_template =& $_LINK['copy'];
    $link_refer =& $_LINK['refer'];
    // New!
    $link_rename =& $_LINK['rename'];
    // Init flags
    $is_page = is_pagename($_page) && !arg_check('backup') && $_page != $whatsnew;
    $is_read = arg_check('read') && is_page($_page);
    $is_freeze = is_freeze($_page);
    // Last modification date (string) of the page
    $lastmodified = $is_read ? format_date(get_filetime($_page)) . ' ' . get_pg_passage($_page, FALSE) : '';
    // List of attached files to the page
    $attaches = $attach_link && $is_read && exist_plugin_action('attach') ? attach_filelist() : '';
    // List of related pages
    $related = $related_link && $is_read ? make_related($_page) : '';
    // List of footnotes
    ksort($foot_explain, SORT_NUMERIC);
    $notes = !empty($foot_explain) ? $note_hr . join("\n", $foot_explain) : '';
    // Tags will be inserted into <head></head>
    $head_tag = !empty($head_tags) ? join("\n", $head_tags) . "\n" : '';
    // 1.3.x compat
    // Last modification date (UNIX timestamp) of the page
    $fmt = $is_read ? get_filetime($_page) + LOCALZONE : 0;
    // Search words
    if ($search_word_color && isset($vars['word'])) {
        $body = '<div class="small">' . $_msg_word . htmlsc($vars['word']) . '</div>' . $hr . "\n" . $body;
        // BugTrack2/106: Only variables can be passed by reference from PHP 5.0.5
        // with array_splice(), array_flip()
        $words = preg_split('/\\s+/', $vars['word'], -1, PREG_SPLIT_NO_EMPTY);
        $words = array_splice($words, 0, 10);
        // Max: 10 words
        $words = array_flip($words);
        $keys = array();
        foreach ($words as $word => $id) {
            $keys[$word] = strlen($word);
        }
        arsort($keys, SORT_NUMERIC);
        $keys = get_search_words(array_keys($keys), TRUE);
        $id = 0;
        foreach ($keys as $key => $pattern) {
            $s_key = htmlsc($key);
            $pattern = '/' . '<textarea[^>]*>.*?<\\/textarea>' . '|' . '<[^>]*>' . '|' . '&[^;]+;' . '|' . '(' . $pattern . ')' . '/sS';
            $decorate_Nth_word = create_function('$matches', 'return (isset($matches[1])) ? ' . '\'<strong class="word' . $id . '">\' . $matches[1] . \'</strong>\' : ' . '$matches[0];');
            $body = preg_replace_callback($pattern, $decorate_Nth_word, $body);
            $notes = preg_replace_callback($pattern, $decorate_Nth_word, $notes);
            ++$id;
        }
    }
    $longtaketime = getmicrotime() - MUTIME;
    $taketime = sprintf('%01.03f', $longtaketime);
    require SKIN_FILE;
}
コード例 #13
0
function plugin_csv2newpage_write($ary, $base, $postdata, $config)
{
    global $vars, $now, $num;
    $name = empty($ary['_name']) ? '' : $ary['_name'];
    if (!empty($ary['_page'])) {
        $page = $real = $ary['_page'];
        $page = $base . '/' . $page;
    } else {
        $real = is_pagename($name) ? $name : ++$num;
        $page = get_fullname('./' . $real, $base);
    }
    if (!Factory::Wiki($page)->isValied()) {
        $page = $base;
    }
    while (Factory::Wiki($page)->isValied()) {
        $real = ++$num;
        $page = $base . '/' . $real;
    }
    // 規定のデータ
    $_post = array_merge($ary, $vars, $_FILES);
    $_post['_date'] = $now;
    $_post['_page'] = $page;
    $_post['_name'] = $name;
    $_post['_real'] = $real;
    // $_post['_refer'] = $_post['refer'];
    if (!exist_plugin('tracker')) {
        return array('msg' => 'plugin not found', 'body' => 'The tracker plugin is not found.');
    }
    $fields = plugin_tracker_get_fields($base, $page, $config);
    foreach ($fields as $key => $class) {
        if (array_key_exists($key, $_post)) {
            $val = $class->format_value($_post[$key]);
        } else {
            $val = $class->default_value;
        }
        $postdata = str_replace('[' . $key . ']', $val, $postdata);
    }
    // 書き込み
    Factory::Wiki($page)->set($postdata);
    return $page;
}
コード例 #14
0
ファイル: file.php プロジェクト: aterai/pukiwiki-plus-i18n
function file_write($dir, $page, $str, $notimestamp = FALSE)
{
    global $update_exec;
    global $notify, $notify_diff_only, $notify_subject;
    global $notify_exclude;
    global $whatsdeleted, $maxshow_deleted;
    global $_string;
    // if (PKWK_READONLY) return; // Do nothing
    if (auth::check_role('readonly')) {
        return;
    }
    // Do nothing
    if ($dir != DATA_DIR && $dir != DIFF_DIR) {
        die('file_write(): Invalid directory');
    }
    $page = strip_bracket($page);
    $file = $dir . encode($page) . '.txt';
    $file_exists = file_exists($file);
    // ----
    // Delete?
    if ($dir == DATA_DIR && $str === '') {
        // Page deletion
        if (!$file_exists) {
            return;
        }
        // Ignore null posting for DATA_DIR
        // Update RecentDeleted (Add the $page)
        add_recent($page, $whatsdeleted, '', $maxshow_deleted);
        // Remove the page
        unlink($file);
        // Update RecentDeleted, and remove the page from RecentChanges
        lastmodified_add($whatsdeleted, $page);
        // Clear is_page() cache
        is_page($page, TRUE);
        return;
    } else {
        if ($dir == DIFF_DIR && $str === " \n") {
            return;
            // Ignore null posting for DIFF_DIR
        }
    }
    // ----
    // File replacement (Edit)
    if (!is_pagename($page)) {
        die_message(str_replace('$1', htmlspecialchars($page), str_replace('$2', 'WikiName', $_msg_invalidiwn)));
    }
    $str = rtrim(preg_replace('/' . "\r" . '/', '', $str)) . "\n";
    $timestamp = $file_exists && $notimestamp ? filemtime($file) : FALSE;
    $fp = fopen($file, 'a') or die('fopen() failed: ' . htmlspecialchars(basename($dir) . '/' . encode($page) . '.txt') . '<br />' . "\n" . 'Maybe permission is not writable or filename is too long');
    set_file_buffer($fp, 0);
    @flock($fp, LOCK_EX);
    $last = ignore_user_abort(1);
    ftruncate($fp, 0);
    rewind($fp);
    fputs($fp, $str);
    ignore_user_abort($last);
    @flock($fp, LOCK_UN);
    fclose($fp);
    if ($timestamp) {
        pkwk_touch_file($file, $timestamp);
    }
    // Optional actions
    if ($dir == DATA_DIR) {
        if ($timestamp === FALSE) {
            lastmodified_add($page);
        }
        // Command execution per update
        if (defined('PKWK_UPDATE_EXEC') && PKWK_UPDATE_EXEC) {
            system(PKWK_UPDATE_EXEC . ' > /dev/null &');
        } elseif ($update_exec) {
            system($update_exec . ' > /dev/null &');
        }
    } else {
        if ($dir == DIFF_DIR && $notify) {
            $notify_exec = TRUE;
            foreach ($notify_exclude as $exclude) {
                $exclude = preg_quote($exclude);
                if (substr($exclude, -1) == '.') {
                    $exclude = $exclude . '*';
                }
                if (preg_match('/^' . $exclude . '/', $_SERVER["REMOTE_ADDR"])) {
                    $notify_exec = FALSE;
                    break;
                }
            }
            if ($notify_exec !== FALSE) {
                if ($notify_diff_only) {
                    $str = preg_replace('/^[^-+].*\\n/m', '', $str);
                }
                $summary['ACTION'] = 'Page update';
                $summary['PAGE'] =& $page;
                $summary['URI'] = get_page_absuri($page);
                $summary['USER_AGENT'] = TRUE;
                $summary['REMOTE_ADDR'] = TRUE;
                pkwk_mail_notify($notify_subject, $str, $summary);
                //			pkwk_mail_notify($notify_subject, $str, $summary) or
                //				die('pkwk_mail_notify(): Failed');
            }
        }
    }
    is_page($page, TRUE);
    // Clear is_page() cache
}
コード例 #15
0
ファイル: html.php プロジェクト: big2men/qhm
function catbody($title, $page, $body)
{
    global $script, $script_ssl, $vars, $arg, $defaultpage, $whatsnew, $help_page, $hr;
    global $attach_link, $related_link, $cantedit, $function_freeze;
    global $search_word_color, $_msg_word, $foot_explain, $note_hr, $head_tags;
    global $trackback, $trackback_javascript, $referer, $javascript;
    global $nofollow, $non_list;
    global $_LANG, $_LINK, $_IMAGE;
    global $pkwk_dtd;
    // XHTML 1.1, XHTML1.0, HTML 4.01 Transitional...
    global $page_title;
    // Title of this site
    global $do_backup;
    // Do backup or not
    global $modifier;
    // Site administrator's  web page
    global $modifierlink;
    // Site administrator's name
    global $owneraddr;
    // Site owner address
    global $ownertel;
    // Site owner tel
    global $headcopy;
    // Site headcopy
    global $menuadmin;
    // Menu Administrate Page
    global $style_type, $style_name, $logo_image, $logo_header;
    global $keywords, $description, $accesstag, $ga_tracking_id, $killer_fg, $killer_bg, $noindex, $accesstag_moved;
    //for skin by hokuken
    global $qhm_adminmenu;
    // Site administration menu 20 JUN 2007
    global $custom_meta;
    // Insert meta tag for specific meta tag
    global $adcode;
    // AD code (exp. Google Adwords, Analytics ... )  25 JLY 2007 by hokuken.com
    global $nowindow;
    // Disable including external_link.js
    global $killer_page2;
    // for Killer page Design 2
    global $no_qhm_licence;
    // qhm licence
    global $include_skin_file_path;
    //orignal skin setting
    global $qhm_access_key;
    global $reg_exp_host;
    global $unload_confirm, $check_login;
    global $enable_wp_theme, $enable_wp_theme_name, $wp_add_css;
    //WordPress用のテーマ
    global $mobile_redirect, $googlemaps_apikey;
    global $other_plugins, $other_plugin_categories;
    global $default_script, $init_scripts;
    global $enable_smart_style, $smart_name;
    // smart phone
    global $is_update;
    global $enable_fitvids;
    // body部分以外は、元々の$script を使う(通常のリンク設定)を使う
    // 結果、$body内は、script_sslを使ったリンクになるが、ナビ、メニューなどは、元の$scriptを必ず使う
    $script = $init_scripts['normal'];
    $script_ssl = $init_scripts['ssl'];
    if (!file_exists(SKIN_FILE) || !is_readable(SKIN_FILE)) {
        die_message('SKIN_FILE is not found');
    }
    $_LINK = $_IMAGE = array();
    // Add JavaScript header when ...
    if ($trackback && $trackback_javascript) {
        $javascript = 1;
    }
    // Set something If you want
    if (!PKWK_ALLOW_JAVASCRIPT) {
        unset($javascript);
    }
    $_page = isset($vars['page']) ? $vars['page'] : '';
    $r_page = rawurlencode($_page);
    //QHM Template
    $qt = get_qt();
    if (!$qt->set_page) {
        $qt->set_page($_page);
    }
    //QHM Messages
    $qm = get_qm();
    // Set $_LINK for skin
    $_LINK['add'] = "{$script}?cmd=add&amp;page={$r_page}";
    $_LINK['backup'] = "{$script}?cmd=backup&amp;page={$r_page}";
    $_LINK['copy'] = "{$script}?plugin=template&amp;refer={$r_page}";
    $_LINK['diff'] = "{$script}?cmd=diff&amp;page={$r_page}";
    $_LINK['edit'] = "{$script}?cmd=edit&amp;page={$r_page}";
    $_LINK['filelist'] = "{$script}?cmd=filelist";
    $_LINK['freeze'] = "{$script}?cmd=freeze&amp;page={$r_page}";
    $_LINK['help'] = "{$script}?" . rawurlencode($help_page);
    $_LINK['list'] = "{$script}?cmd=list";
    $_LINK['new'] = "{$script}?plugin=newpage&amp;refer={$r_page}";
    $_LINK['rdf'] = "{$script}?cmd=rss&amp;ver=1.0";
    $_LINK['recent'] = "{$script}?" . rawurlencode($whatsnew);
    $_LINK['refer'] = "{$script}?plugin=referer&amp;page={$r_page}";
    $_LINK['reload'] = "{$script}?{$r_page}";
    $_LINK['rename'] = "{$script}?plugin=rename&amp;refer={$r_page}";
    $_LINK['delete'] = "{$script}?plugin=delete&amp;page={$r_page}";
    $_LINK['rss'] = "{$script}?cmd=rss";
    $_LINK['rss10'] = "{$script}?cmd=rss&amp;ver=1.0";
    // Same as 'rdf'
    $_LINK['rss20'] = "{$script}?cmd=rss&amp;ver=2.0";
    $_LINK['search'] = "{$script}?cmd=search";
    $_LINK['top'] = dirname($script . 'dummy.php') . '/';
    if ($trackback) {
        $tb_id = tb_get_id($_page);
        $_LINK['trackback'] = "{$script}?plugin=tb&amp;__mode=view&amp;tb_id={$tb_id}";
    }
    $_LINK['unfreeze'] = "{$script}?cmd=unfreeze&amp;page={$r_page}";
    $_LINK['upload'] = "{$script}?plugin=attach&amp;pcmd=upload&amp;page={$r_page}";
    $_LINK['menuadmin'] = "{$script}?" . rawurlencode($menuadmin);
    //Hokuken.com original
    $_LINK['qhm_adminmenu'] = qhm_get_script_path() . "?cmd=qhmauth";
    $_LINK['qhm_logout'] = "{$script}?cmd=qhmlogout";
    $_LINK['qhm_setting'] = "{$script}?cmd=qhmsetting";
    $_LINK['edit_menu'] = "{$script}?cmd=edit&amp;page=MenuBar";
    $_LINK['edit_menu2'] = "{$script}?cmd=edit&amp;page=MenuBar2";
    $_LINK['edit_navi'] = "{$script}?cmd=edit&amp;page=SiteNavigator";
    $_LINK['edit_navi2'] = "{$script}?cmd=edit&amp;page=SiteNavigator2";
    $_LINK['edit_header'] = "{$script}?cmd=edit&amp;page=SiteHeader";
    $_LINK['yetlist'] = "{$script}?cmd=yetlist";
    // Compat: Skins for 1.4.4 and before
    $link_add =& $_LINK['add'];
    $link_new =& $_LINK['new'];
    // New!
    $link_edit =& $_LINK['edit'];
    $link_diff =& $_LINK['diff'];
    $link_top =& $_LINK['top'];
    $link_list =& $_LINK['list'];
    $link_filelist =& $_LINK['filelist'];
    $link_search =& $_LINK['search'];
    $link_whatsnew =& $_LINK['recent'];
    $link_backup =& $_LINK['backup'];
    $link_help =& $_LINK['help'];
    $link_trackback =& $_LINK['trackback'];
    // New!
    $link_rdf =& $_LINK['rdf'];
    // New!
    $link_rss =& $_LINK['rss'];
    $link_rss10 =& $_LINK['rss10'];
    // New!
    $link_rss20 =& $_LINK['rss20'];
    // New!
    $link_freeze =& $_LINK['freeze'];
    $link_unfreeze =& $_LINK['unfreeze'];
    $link_upload =& $_LINK['upload'];
    $link_template =& $_LINK['copy'];
    $link_refer =& $_LINK['refer'];
    // New!
    $link_rename =& $_LINK['rename'];
    $link_delete =& $_LINK['delete'];
    $link_menuadmin =& $_LINK['menuadmin'];
    //Hokuken.com original
    $link_copy =& $_LINK['copy'];
    $link_qhm_adminmenu =& $_LINK['qhm_adminmenu'];
    //Hokuken.com original
    $link_qhm_logout =& $_LINK['qhm_logout'];
    //Hokuken.com original
    $link_qhm_setting =& $_LINK['qhm_setting'];
    //Hokuken.com original
    $link_edit_menu =& $_LINK['edit_menu'];
    //Hokuken.com original
    $link_edit_menu2 =& $_LINK['edit_menu2'];
    $link_edit_navi =& $_LINK['edit_navi'];
    //Hokuken.com original
    $link_edit_navi2 =& $_LINK['edit_navi2'];
    //Hokuken.com original
    $link_edit_header =& $_LINK['edit_header'];
    //Hokuken.com original
    $link_yetlist =& $_LINK['yetlist'];
    //Hokuken.com original
    // Init flags
    $is_page = is_pagename($_page) && $_page != $whatsnew;
    $is_read = arg_check('read') && is_page($_page);
    $is_freeze = is_freeze($_page);
    // Last modification date (string) of the page
    $lastmodified = $is_read ? format_date(get_filetime($_page)) . ' ' . get_pg_passage($_page, FALSE) : '';
    // List of attached files to the page
    $attaches = $attach_link && $is_read && exist_plugin_action('attach') ? attach_filelist() : '';
    // List of related pages
    $related = $related_link && $is_read ? make_related($_page) : '';
    // List of footnotes
    ksort($foot_explain, SORT_NUMERIC);
    $notes = !empty($foot_explain) ? $note_hr . join("\n", $foot_explain) : '';
    // Tags will be inserted into <head></head>
    $head_tag = !empty($head_tags) ? join("\n", $head_tags) . "\n" : '';
    // 1.3.x compat
    // Last modification date (UNIX timestamp) of the page
    $fmt = $is_read ? get_filetime($_page) + LOCALZONE : 0;
    // Search words
    if ($search_word_color && isset($vars['word'])) {
        $body = '<div class="small">' . $_msg_word . htmlspecialchars($vars['word']) . '</div>' . $hr . "\n" . $body;
        // BugTrack2/106: Only variables can be passed by reference from PHP 5.0.5
        // with array_splice(), array_flip()
        $words = preg_split('/\\s+/', $vars['word'], -1, PREG_SPLIT_NO_EMPTY);
        $words = array_splice($words, 0, 10);
        // Max: 10 words
        $words = array_flip($words);
        $keys = array();
        foreach ($words as $word => $id) {
            $keys[$word] = strlen($word);
        }
        arsort($keys, SORT_NUMERIC);
        $keys = get_search_words(array_keys($keys), TRUE);
        $id = 0;
        foreach ($keys as $key => $pattern) {
            $s_key = htmlspecialchars($key);
            $pattern = '/' . '<textarea[^>]*>.*?<\\/textarea>' . '|' . '<[^>]*>' . '|' . '&[^;]+;' . '|' . '(' . $pattern . ')' . '/sS';
            $decorate_Nth_word = create_function('$matches', 'return (isset($matches[1])) ? ' . '\'<strong class="word' . $id . '">\' . $matches[1] . \'</strong>\' : ' . '$matches[0];');
            $body = preg_replace_callback($pattern, $decorate_Nth_word, $body);
            $notes = preg_replace_callback($pattern, $decorate_Nth_word, $notes);
            ++$id;
        }
    }
    //-----------------------------------------------------------------------
    //
    // customized by hokuken for QHM (2009/1/28)
    //
    //-----------------------------------------------------------------------
    //----------------- 携帯の場合の処理 --------------------------------------
    if (preg_match('/keitai.skin.php$/', SKIN_FILE)) {
        require LIB_DIR . 'qhm_init.php';
        require LIB_DIR . 'qhm_init_main.php';
        require SKIN_FILE;
        return;
    }
    //------------------- IF UA is mobile, end here -----------------------
    //---------- KILLERPAGE: でもKILLERPAGE2:に統合 いつか消したい --------------
    if ($killer_fg != '') {
        //load common setting and output header
        require LIB_DIR . 'qhm_init.php';
        $killer_page2['fg'] = $killer_fg;
        $killer_page2['bg'] = $killer_bg;
        $killer_page2['width'] = 700;
        $killer_page2['padding'] = 60;
        $killer_page2['bg_body'] = '#fff';
        $killer_page2['fg_body'] = '#000';
        require LIB_DIR . 'qhm_init_killer.php';
        $longtaketime = getmicrotime() - MUTIME;
        $taketime = sprintf('%01.03f', $longtaketime);
        $qt->setv('taketime', $taketime);
    }
    //--------------------------- いつか消したい end here ----------------
    ///////////////////////////////////////////////////////////////////
    //
    // Main
    //
    //common setting
    require LIB_DIR . 'qhm_init.php';
    $qt->enable_cache = $qt->getv('editable') ? false : $qt->enable_cache;
    $qt->set_encode($shiftjis || $eucjp ? true : false);
    if ($shiftjis) {
        $output_encode = 'Shift_JIS';
    } else {
        if ($eucjp) {
            $output_encode = 'EUC-JP';
        } else {
            $output_encode = CONTENT_CHARSET;
        }
    }
    define('WORDPRESS_CHARSET', $output_encode);
    //output common header (available change encode)
    $qt->setv('meta_content_type', qhm_output_dtd($pkwk_dtd, CONTENT_CHARSET, $output_encode));
    //------- KILLERPAGE2: セールスレター型デザイン -------------------
    if (isset($killer_page2['fg']) != '') {
        require LIB_DIR . 'qhm_init_killer.php';
        //JQuery Include
        $jquery_script = '';
        $jquery_cookie_script = '';
        if ($qt->getv('jquery_include')) {
            $jquery_script = '<script type="text/javascript" src="js/jquery.js"></script>';
            $jquery_cookie_script = '<script type="text/javascript" src="js/jquery.cookie.js"></script>';
        }
        $bootstrap_style = $bootstrap_script = '';
        if ($qt->getv('bootstrap_script')) {
            $bootstrap_style = $qt->getv('bootstrap_style');
            $bootstrap_script = $qt->getv('bootstrap_script');
        }
        $qt->setv('jquery_script', $bootstrap_style . $jquery_script . $bootstrap_script);
        $qt->setv('jquery_cookie_script', $jquery_cookie_script);
        $longtaketime = getmicrotime() - MUTIME;
        $taketime = sprintf('%01.03f', $longtaketime);
        $qt->setv('taketime', $taketime);
        $qt->read('skin/killerpage2/pukiwiki.skin.php');
        return;
    }
    //-------------------------------------------------------------
    // ---- include main design skin file ----
    if (isset($_SESSION['temp_skin']) && strlen($_SESSION['temp_skin']) > 0) {
        $style_type = $_SESSION['temp_style_type'];
    }
    //pluginでデザインが指定されている場合
    if ($include_skin_file_path != '') {
        $style_name = $include_skin_file_path;
    }
    require LIB_DIR . 'qhm_init_main.php';
    // meta:GENERATOR
    $generator_tag = '<meta name="GENERATOR" content="Quick Homepage Maker; version=' . QHM_VERSION . '; haik=' . (is_bootstrap_skin() ? 'true' : 'false') . '" />' . "\n";
    $qt->prependv_once('generator_tag', 'beforescript', $generator_tag);
    //-------------------------------------------------
    // ogp タグを挿入
    //-------------------------------------------------
    if (exist_plugin('ogp')) {
        plugin_ogp_set_template($body);
    }
    //独自のテンプレートファイルをチェック
    $skin_file = SKIN_DIR . "{$style_name}/pukiwiki.skin.php";
    if ($qt->getv('layout_name')) {
        $layout_file = $qt->getv('layout_name') . '.skin.php';
        $layout_path = SKIN_DIR . "{$style_name}/{$layout_file}";
        if (file_exists($layout_path)) {
            $skin_file = $layout_path;
        }
    } else {
        $layout_prefix = 'content';
        if ($_page === $defaultpage) {
            $layout_prefix = 'default';
        } else {
            if (is_qblog()) {
                $layout_prefix = 'article';
            }
        }
        $layout_name = isset($style_config["{$layout_prefix}_layout"]) ? $style_config["{$layout_prefix}_layout"] : "";
        $layout_path = SKIN_DIR . "{$style_name}/{$layout_name}.skin.php";
        if (file_exists($layout_path)) {
            $skin_file = $layout_path;
        }
    }
    if (!file_exists($skin_file)) {
        $skin_file = SKIN_FILE;
        //デフォルトの位置
    }
    // Read design config for customize
    $style_config = read_skin_config($style_name);
    $skin_custom_vars = get_skin_custom_vars($style_name);
    $custom_css = make_custom_css($style_name);
    $qt->prependv('beforescript', $custom_css);
    if (isset($style_config['bootstrap']) && $style_config['bootstrap'] !== false) {
        $qt->setv('jquery_include', true);
    }
    // Default Eyecatch
    if (isset($skin_custom_vars['default_eyecatch']) && $skin_custom_vars['default_eyecatch'] && $qt->getv('main_visual') === '' && exist_plugin('eyecatch')) {
        $bg_image = $color = '';
        if (isset($skin_custom_vars['eyecatch_bgimage'])) {
            $bg_image = $skin_custom_vars['eyecatch_bgimage'];
            $bg_image = is_url($bg_image, TRUE, TRUE) || file_exists(get_file_path($bg_image)) ? $bg_image : '';
        }
        if (isset($skin_custom_vars['enable_eyecatch_bgimage']) && !$skin_custom_vars['enable_eyecatch_bgimage']) {
            $bg_image = '';
        }
        if (isset($skin_custom_vars['eyecatch_color'])) {
            $color = 'color=' . $skin_custom_vars['eyecatch_color'];
        }
        if (is_qblog()) {
            $title_copy = $qblog_title;
        } else {
            if (isset($skin_custom_vars['eyecatch_title_type']) && trim($skin_custom_vars['eyecatch_title_type']) == 'site') {
                $title_copy = $page_title;
            } else {
                if ($_page === $defaultpage) {
                    $title_copy = $page_title;
                } else {
                    $title_copy = get_page_title($_page);
                }
            }
        }
        $content = <<<EOD
! {$title_copy}
EOD;
        plugin_eyecatch_convert($bg_image, $color, '__default', $content);
    }
    if ($qt->getv('no_eyecatch')) {
        $qt->setv('main_visual', "<!-- no eyecatch -->");
    }
    // Determine emptiness of eyecatch
    $qt->setv('eyecatch_is_empty', $qt->getv('no_eyecatch') || $qt->getv('main_visual') === '');
    if (isset($skin_custom_vars['palette_color']) && trim($skin_custom_vars['palette_color'])) {
        $qt->setv('palette_color', trim($skin_custom_vars['palette_color']));
        $qt->setv('palette_color_class', 'haik-palette-' . trim($skin_custom_vars['palette_color']));
    }
    //JQuery Include
    $jquery_script = '';
    $jquery_cookie_script = '';
    if ($qt->getv('jquery_include')) {
        $jquery_script = '<script type="text/javascript" src="js/jquery.js"></script>';
        $jquery_cookie_script = '<script type="text/javascript" src="js/jquery.cookie.js"></script>';
    }
    if ($qt->getv('bootstrap_script')) {
        $bootstrap_script = $qt->getv('bootstrap_script');
    }
    $qt->setv('jquery_script', $jquery_script . $bootstrap_script);
    $qt->setv('jquery_cookie_script', $jquery_cookie_script);
    $longtaketime = getmicrotime() - MUTIME;
    $taketime = sprintf('%01.03f', $longtaketime);
    $qt->setv('taketime', $taketime);
    //UniversalAnalytics Tracking Code
    if ($code = $qt->getv('ga_universal_analytics')) {
        $qt->appendv('beforescript', $code);
    }
    //------------------------------------------------------------------
    // WordPressデザイン
    if ($enable_wp_theme && ($vars['cmd'] != 'qhmsetting' && $vars['plugin'] != 'qhmsetting')) {
        define('TEMPLATEPATH', 'skin/wordpress/' . $enable_wp_theme_name);
        include LIB_DIR . 'wp_adapter.php';
        wp_load_functions();
        $skin_file = get_wp_skin_file();
    }
    //-------------------------------------------------------------------
    //-------------------------------------------------------------------
    // 	プレビュー用のskinファイルを表示
    $tmpfilename = '';
    if (isset($_SESSION['temp_skin']) && strlen($_SESSION['temp_skin']) > 0) {
        $tmpfilename = $skin_file = tempnam(realpath(CACHEQHM_DIR), 'qhmdesign');
        file_put_contents($skin_file, $_SESSION['temp_skin']);
        $qt->setv('default_css', $bootstrap_css . $_SESSION['temp_css']);
        $qt->setv('style_path', $_SESSION['temp_style_path']);
    }
    //-------------------------------------------------------------------
    //skinファイルを読み込んで、表示
    $qt->read($skin_file, $_page);
    // 一時ファイルの削除
    if (file_exists($tmpfilename) && strpos(basename($tmpfilename), 'qhmdesign') === 0) {
        unlink($tmpfilename);
    }
}
コード例 #16
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;
}
コード例 #17
0
ファイル: button.inc.php プロジェクト: big2men/qhm
function plugin_button_body($args, $text)
{
    global $script, $vars;
    $type = ' btn-default';
    $size = '';
    $block = '';
    $class = '';
    if (count($args) > 0) {
        $href = array_shift($args);
        if (is_page($href)) {
            $href = $script . '?' . rawurlencode($href);
        } else {
            if (!is_url($href) && is_pagename($href)) {
                $href = $script . '?cmd=edit&page=' . rawurlencode($href);
            }
        }
        $target = FALSE;
        foreach ($args as $arg) {
            $arg = trim($arg);
            switch ($arg) {
                case 'primary':
                case 'info':
                case 'success':
                case 'warning':
                case 'danger':
                case 'link':
                case 'default':
                    $type = ' btn-' . $arg;
                    break;
                case 'large':
                case 'lg':
                    $size = ' btn-lg';
                    break;
                case 'small':
                case 'sm':
                    $size = ' btn-sm';
                    break;
                case 'mini':
                case 'xs':
                    $size = ' btn-xs';
                    break;
                case 'block':
                    $block = ' btn-' . $arg;
                    break;
                case 'round':
                case 'rounded':
                    $class .= ' btn-round';
                    break;
                case 'gradient':
                case 'ghost':
                case 'ghost-w':
                    $class .= ' btn-' . $arg;
                    break;
                default:
                    if (preg_match('/\\Awindow=(.+)\\z/', $arg, $mts)) {
                        $target = $mts[1];
                    } else {
                        $class .= ' ' . $arg;
                    }
            }
        }
    } else {
        $href = "#";
    }
    $target = $target !== FALSE ? ' target="' . h($target) . '"' : '';
    $html = '<a class="btn' . $type . $block . $size . $class . '" href="' . h($href) . '"' . $target . '>' . $text . '</a>';
    return $html;
}
コード例 #18
0
ファイル: file.php プロジェクト: big2men/qhm
function file_write($dir, $page, $str, $notimestamp = FALSE)
{
    global $notify, $notify_diff_only, $notify_subject;
    global $whatsdeleted, $maxshow_deleted;
    global $qblog_page_re;
    $qm = get_qm();
    if (PKWK_READONLY) {
        return;
    }
    // Do nothing
    if ($dir != DATA_DIR && $dir != DIFF_DIR) {
        die($qm->m['file']['err_invalid_dir']);
    }
    $page = strip_bracket($page);
    $file = $dir . encode($page) . '.txt';
    $file_exists = file_exists($file);
    // ----
    // Record last modified date for QHM cache func.
    $lm_file = CACHE_DIR . QHM_LASTMOD;
    file_put_contents($lm_file, date('Y-m-d H:i:s'));
    // ----
    // Delete?
    if ($dir == DATA_DIR && $str === '') {
        // Page deletion
        if (!$file_exists) {
            return;
        }
        // Ignore null posting for DATA_DIR
        // Update RecentDeleted (Add the $page)
        add_recent($page, $whatsdeleted, '', $maxshow_deleted);
        //QBlog 記事 であれば、削除処理を呼び出す
        if (preg_match($qblog_page_re, $page)) {
            qblog_remove_post($page);
        }
        // Remove the page
        unlink($file);
        // Update RecentDeleted, and remove the page from RecentChanges
        lastmodified_add($whatsdeleted, $page);
        // Clear is_page() cache
        is_page($page, TRUE);
        return;
    } else {
        if ($dir == DIFF_DIR && $str === " \n") {
            return;
            // Ignore null posting for DIFF_DIR
        }
    }
    // ----
    // File replacement (Edit)
    if (!is_pagename($page)) {
        die_message(str_replace('$1', htmlspecialchars($page), str_replace('$2', 'WikiName', $qm->m['fmt_err_invalidiwn'])));
    }
    $str = rtrim(preg_replace('/' . "\r" . '/', '', $str)) . "\n";
    $timestamp = $file_exists && $notimestamp ? filemtime($file) : FALSE;
    $fp = fopen($file, 'a') or die($qm->replace('file.err_not_writable', h(basename($dir)), encode($page)));
    set_file_buffer($fp, 0);
    flock($fp, LOCK_EX);
    ftruncate($fp, 0);
    rewind($fp);
    fputs($fp, $str);
    flock($fp, LOCK_UN);
    fclose($fp);
    if ($timestamp) {
        pkwk_touch_file($file, $timestamp);
    }
    // Optional actions
    if ($dir == DATA_DIR) {
        // Update RecentChanges (Add or renew the $page)
        if ($timestamp === FALSE) {
            lastmodified_add($page);
        }
        add_tinycode($page);
        // Command execution per update
        if (defined('PKWK_UPDATE_EXEC') && PKWK_UPDATE_EXEC) {
            system(PKWK_UPDATE_EXEC . ' > /dev/null &');
        }
    } else {
        if ($dir == DIFF_DIR && $notify) {
            if ($notify_diff_only) {
                $str = preg_replace('/^[^-+].*\\n/m', '', $str);
            }
            $footer['ACTION'] = 'Page update';
            $footer['PAGE'] =& $page;
            $footer['URI'] = get_script_uri() . '?' . rawurlencode($page);
            $footer['USER_AGENT'] = TRUE;
            $footer['REMOTE_ADDR'] = TRUE;
            if (isset($_SESSION['usr'])) {
                $str .= "\n\n " . $qm->replace('file.lbl_editor', $_SESSION['usr']) . "\n";
            }
            pkwk_mail_notify($notify_subject, $str, $footer) or die($qm->m['file']['err_mail_failed']);
        }
    }
    is_page($page, TRUE);
    // Clear is_page() cache
}
コード例 #19
0
 function _format($page)
 {
     $page = strip_bracket($page);
     if (is_pagename($page)) {
         $page = '[[' . $page . ']]';
     }
     return $page;
 }
コード例 #20
0
ファイル: template.inc.php プロジェクト: nsmr0604/pukiwiki
function plugin_template_action()
{
    global $script, $vars;
    global $_title_edit;
    global $_msg_template_start, $_msg_template_end, $_msg_template_page, $_msg_template_refer;
    global $_btn_template_create, $_title_template;
    global $_err_template_already, $_err_template_invalid, $_msg_template_force;
    if (PKWK_READONLY) {
        die_message('PKWK_READONLY prohibits editing');
    }
    if (!isset($vars['refer']) || !is_page($vars['refer'])) {
        return false;
    }
    $lines = get_source($vars['refer']);
    // Remove '#freeze'
    if (!empty($lines) && strtolower(rtrim($lines[0])) == '#freeze') {
        array_shift($lines);
    }
    $begin = isset($vars['begin']) && is_numeric($vars['begin']) ? $vars['begin'] : 0;
    $end = isset($vars['end']) && is_numeric($vars['end']) ? $vars['end'] : count($lines) - 1;
    if ($begin > $end) {
        $temp = $begin;
        $begin = $end;
        $end = $temp;
    }
    $page = isset($vars['page']) ? $vars['page'] : '';
    $is_page = is_page($page);
    // edit
    if ($is_pagename = is_pagename($page) && (!$is_page || !empty($vars['force']))) {
        $postdata = join('', array_splice($lines, $begin, $end - $begin + 1));
        $retvar['msg'] = $_title_edit;
        $retvar['body'] = edit_form($vars['page'], $postdata);
        $vars['refer'] = $vars['page'];
        return $retvar;
    }
    $begin_select = $end_select = '';
    for ($i = 0; $i < count($lines); $i++) {
        $line = htmlsc(mb_strimwidth($lines[$i], 0, MAX_LEN, '...'));
        $tag = $i == $begin ? ' selected="selected"' : '';
        $begin_select .= "<option value=\"{$i}\"{$tag}>{$line}</option>\n";
        $tag = $i == $end ? ' selected="selected"' : '';
        $end_select .= "<option value=\"{$i}\"{$tag}>{$line}</option>\n";
    }
    $_page = htmlsc($page);
    $msg = $tag = '';
    if ($is_page) {
        $msg = $_err_template_already;
        $tag = '<input type="checkbox" name="force" value="1" />' . $_msg_template_force;
    } elseif ($page != '' && !$is_pagename) {
        $msg = str_replace('$1', $_page, $_err_template_invalid);
    }
    $s_refer = htmlsc($vars['refer']);
    $s_page = $page == '' ? str_replace('$1', $s_refer, $_msg_template_page) : $_page;
    $ret = <<<EOD
<form action="{$script}" method="post">
 <div>
  <input type="hidden" name="plugin" value="template" />
  <input type="hidden" name="refer"  value="{$s_refer}" />
  {$_msg_template_start} <select name="begin" size="10">{$begin_select}</select><br /><br />
  {$_msg_template_end}   <select name="end"   size="10">{$end_select}</select><br /><br />
  <label for="_p_template_refer">{$_msg_template_refer}</label>
  <input type="text" name="page" id="_p_template_refer" value="{$s_page}" />
  <input type="submit" name="submit" value="{$_btn_template_create}" /> {$tag}
 </div>
</form>
EOD;
    $retvar['msg'] = $msg == '' ? $_title_template : $msg;
    $retvar['body'] = $ret;
    return $retvar;
}
コード例 #21
0
/**
 * @author     lunt
 * @license    http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GPL 2
 * @version    $Id: monobook_getlink.inc.php 267 2007-08-03 11:25:16Z lunt $
 */
function plugin_monobook_getlink($tab, $message, $check_selected = FALSE)
{
    global $vars, $plugin, $_LINK;
    global $do_backup, $function_freeze, $referer, $trackback;
    global $defaultpage, $whatsnew, $help_page, $cantedit;
    static $page, $is_page, $is_pagename, $is_editable, $is_freeze;
    if (is_null($page)) {
        $page = empty($vars['page']) ? '' : $vars['page'];
        $is_page = is_page($page);
        $is_pagename = is_pagename($page);
        $is_editable = is_editable($page);
        $is_freeze = is_freeze($page);
    }
    if ($tab === 'nowplugin') {
        $tab = $plugin;
        if ($plugin === 'attach') {
            if (isset($vars['pcmd']) && $vars['pcmd'] === 'info') {
                $tab = 'attachinfo';
            } elseif (isset($vars['pcmd']) && $vars['pcmd'] === 'list') {
                $tab = empty($vars['refer']) ? 'attachlistall' : 'attachlist';
            } else {
                $tab = 'upload';
            }
        }
    }
    $link = $title = '';
    $selected = 0;
    switch ($tab) {
        case 'add':
        case 'edit':
            if (auth::check_role('readonly') || !$is_editable) {
                break;
            }
            $link = $_LINK[$tab];
            $title = $message[$tab];
            break;
        case 'attach':
        case 'upload':
            if (auth::check_role('readonly') || !ini_get('file_uploads') || !$is_page || !$is_editable) {
                break;
            }
            $link = $_LINK['upload'];
            $title = $message['upload'];
            if ($plugin === 'attach' && isset($vars['pcmd']) && $vars['pcmd'] === 'upload') {
                $selected = 1;
            }
            break;
        case 'attachinfo':
            $link = get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?');
            $title = $message['attachinfo'];
            $selected = 1;
            break;
        case 'attachlist':
            if ($is_pagename) {
                $link = get_script_uri() . '?plugin=attach&amp;pcmd=list&amp;refer=' . rawurlencode($page);
            } elseif ($plugin === 'attach' && isset($vars['pcmd']) && $vars['pcmd'] === 'list' && !empty($vars['refer'])) {
                $link = get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?');
                $selected = 1;
            }
            $title = $message['attachlist'];
            break;
        case 'attachlistall':
            $link = get_script_uri() . '?plugin=attach&amp;pcmd=list';
            $title = $message['attachlistall'];
            if ($plugin === 'attach' && isset($vars['pcmd']) && $vars['pcmd'] === 'list' && empty($vars['refer'])) {
                $selected = 1;
            }
            break;
        case 'backlink':
        case 'related':
            if (!$is_pagename) {
                break;
            }
            $link = get_script_uri() . '?plugin=related&amp;page=' . rawurlencode($page);
            $title = $message['related'];
            $tab = 'related';
            break;
        case 'backup':
            if (!$do_backup || !$is_pagename) {
                break;
            }
            $link = $_LINK['backup'];
            $title = $message['backup'];
            break;
        case 'copy':
        case 'template':
            if (auth::check_role('readonly')) {
                break;
            }
            if ($is_page) {
                $link = $_LINK['copy'];
            } elseif ($plugin === 'template') {
                $link = get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?');
            }
            $title = $message['copy'];
            $tab = 'template';
            break;
        case 'diff':
            if (!$is_pagename) {
                break;
            }
            $link = $_LINK['diff'];
            $title = $message['diff'];
            break;
        case 'filelist':
        case 'help':
        case 'list':
        case 'rdf':
        case 'recent':
        case 'rss':
        case 'rss10':
        case 'rss20':
        case 'search':
        case 'top':
            $link = $_LINK[$tab];
            $title = $message[$tab];
            break;
        case 'freeze':
        case 'unfreeze':
            if (auth::check_role('readonly') || !$function_freeze || !$is_page || in_array($page, $cantedit)) {
                break;
            }
            $tab = $is_freeze ? 'unfreeze' : 'freeze';
            $link = $_LINK[$tab];
            $title = $message[$tab];
            break;
        case 'new':
        case 'newpage':
            if (auth::check_role('readonly')) {
                break;
            }
            $link = $_LINK['new'];
            $title = $message['new'];
            $tab = 'newpage';
            break;
        case 'paraedit':
            $link = get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?');
            $title = $message['edit'];
            break;
        case 'read':
            $link = $_LINK['reload'];
            $title = $message['article'];
            break;
        case 'refer':
        case 'referer':
            if (!$referer || !$is_pagename) {
                break;
            }
            $link = $_LINK['refer'];
            $title = $message['refer'];
            $tab = 'referer';
            break;
        case 'reload':
            if (!$page) {
                break;
            }
            $link = $_LINK['reload'];
            $title = $message['reload'];
            break;
        case 'rename':
            if (auth::check_role('readonly')) {
                break;
            }
            if ($is_page && $is_editable) {
                $link = $_LINK['rename'];
            } elseif ($plugin === 'rename') {
                $link = get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?');
            }
            $title = $message['rename'];
            break;
        case 'revert':
            $link = plugin_revert_getlink();
            $link = $link ? $link : get_script_uri() . strrchr($_SERVER['REQUEST_URI'], '?');
            $title = $message['revert'];
            break;
        case 'source':
            if (!$is_page || PKWK_SAFE_MODE) {
                break;
            }
            $link = get_script_uri() . '?cmd=source&amp;page=' . rawurlencode($page);
            $title = $message['source'];
            break;
        case 'trackback':
            if (!$trackback || !$is_pagename) {
                break;
            }
            $link = $_LINK['trackback'];
            $title = $message['trackback'] . ' (' . tb_count($page) . ')';
            break;
        case 'yetlist':
            if (auth::check_role('readonly')) {
                break;
            }
            $link = get_script_uri() . '?plugin=yetlist';
            $title = $message['yetlist'];
            break;
    }
    if ($link) {
        $link = '<a href="' . $link . '">' . $title . '</a>';
    }
    if (!$check_selected) {
        return $link;
    }
    if ($plugin !== 'attach' && $plugin === $tab || $page === $defaultpage && $tab === 'top' || $page === $whatsnew && $tab === 'recent' || $page === $help_page && $tab === 'help') {
        $selected = 1;
    }
    return array($link, $selected);
}
コード例 #22
0
ファイル: link.php プロジェクト: orangeal2o3/pukiwiki-plugin
function links_init()
{
    global $whatsnew;
    // if (PKWK_READONLY) return; // Do nothing
    if (auth::check_role('readonly')) {
        return;
    }
    // Do nothing
    if (ini_get('safe_mode') == '0') {
        set_time_limit(0);
    }
    // Init database
    foreach (get_existfiles(CACHE_DIR, '.ref') as $cache) {
        unlink($cache);
    }
    foreach (get_existfiles(CACHE_DIR, '.rel') as $cache) {
        unlink($cache);
    }
    $ref = array();
    // 参照元
    foreach (get_existpages() as $page) {
        if ($page == $whatsnew) {
            continue;
        }
        $rel = array();
        // 参照先
        $links = links_get_objects($page);
        foreach ($links as $_obj) {
            if (!isset($_obj->type) || $_obj->type != 'pagename' || $_obj->name == $page || $_obj->name == '') {
                continue;
            }
            if (is_a($_obj, 'Link_autoalias')) {
                $_aliases = get_autoaliases($_obj->name);
                foreach ($_aliases as $_alias) {
                    if (is_pagename($_alias)) {
                        $rel[] = $_alias;
                    }
                }
            } else {
                $rel[] = $_obj->name;
            }
        }
        $rel = array_unique($rel);
        foreach ($rel as $_name) {
            if (!isset($ref[$_name][$page])) {
                $ref[$_name][$page] = 1;
            }
            if (!is_a($_obj, 'Link_autolink')) {
                $ref[$_name][$page] = 0;
            }
        }
        if (!empty($rel)) {
            $fp = fopen(CACHE_DIR . encode($page) . '.rel', 'w') or die_message('cannot write ' . htmlspecialchars(CACHE_DIR . encode($page) . '.rel'));
            fputs($fp, join("\t", $rel));
            fclose($fp);
        }
    }
    foreach ($ref as $page => $arr) {
        $fp = fopen(CACHE_DIR . encode($page) . '.ref', 'w') or die_message('cannot write ' . htmlspecialchars(CACHE_DIR . encode($page) . '.ref'));
        foreach ($arr as $ref_page => $ref_auto) {
            fputs($fp, $ref_page . "\t" . $ref_auto . "\n");
        }
        fclose($fp);
    }
}
コード例 #23
0
ファイル: html.php プロジェクト: severnaya99/Sg-2010
function catbody($title,$page,$body)
{
	global $script,$vars,$arg,$defaultpage,$whatsnew,$help_page,$hr;
	global $related_link,$cantedit,$function_freeze,$search_word_color,$_msg_word;
	global $foot_explain,$note_hr,$head_tags;
	
	global $html_transitional; // FALSE:XHTML1.1 TRUE:XHTML1.0 Transitional
	global $page_title;        // ホームページのタイトル
	global $do_backup;         // バックアップを行うかどうか
	global $modifier;          // 編集者のホームページ
	global $modifierlink;      // 編集者の名前

	$_page = $vars['page'];
	$r_page = rawurlencode($_page);
	
	$link_add      = "$script?cmd=add&amp;page=$r_page";
	$link_edit     = "$script?cmd=edit&amp;page=$r_page";
	$link_diff     = "$script?cmd=diff&amp;page=$r_page";
	$link_top      = "$script?".rawurlencode($defaultpage);
	$link_list     = "$script?cmd=list";
	$link_filelist = "$script?cmd=filelist";
	$link_search   = "$script?cmd=search";
	$link_whatsnew = "$script?".rawurlencode($whatsnew);
	$link_backup   = "$script?cmd=backup&amp;page=$r_page";
	$link_help     = "$script?".rawurlencode($help_page);
	$link_rss      = "$script?cmd=rss10";
	$link_freeze   = "$script?cmd=freeze&amp;page=$r_page";
	$link_unfreeze = "$script?cmd=unfreeze&amp;page=$r_page";
	$link_upload   = "$script?plugin=attach&amp;pcmd=upload&amp;page=$r_page";
	$link_template = "$script?plugin=template&amp;refer=$r_page";
	$link_rename   = "$script?plugin=rename&amp;refer=$r_page";
	
	// ページの表示時TRUE(バックアップの表示、RecentChangesの表示を除く)
	$is_page = (is_pagename($_page) and !arg_check('backup') and $_page != $whatsnew);
	
	// ページの読み出し時TRUE
	$is_read = (arg_check('read') and is_page($_page));
	
	// ページが凍結されているときTRUE
	$is_freeze = is_freeze($_page);
	
	// ページの最終更新時刻(文字列)
	$lastmodified = $is_read ?
		get_date('D, d M Y H:i:s T',get_filetime($_page)).' '.get_pg_passage($_page,FALSE) : '';
	
	// 関連するページのリスト
	$related = ($is_read and $related_link) ? make_related($_page) : '';
	
	// 添付ファイルのリスト
	$attaches = ($is_read and exist_plugin_action('attach')) ? attach_filelist() : '';
	
	// 注釈のリスト
	ksort($foot_explain,SORT_NUMERIC);
	$notes = count($foot_explain) ? $note_hr.join("\n",$foot_explain) : '';
	
	// <head>内に追加するタグ
	$head_tag = count($head_tags) ? join("\n",$head_tags)."\n" : '';
	
	// 1.3.x compat
	// ページの最終更新時刻(UNIX timestamp)
	$fmt = $is_read ? get_filetime($_page) + LOCALZONE : 0;

	//単語検索
	if ($search_word_color and array_key_exists('word',$vars))
	{
		$body = '<div class="small">'.$_msg_word.htmlspecialchars($vars['word'])."</div>$hr\n$body";
		$words = array_flip(array_splice(preg_split('/\s+/',$vars['word'],-1,PREG_SPLIT_NO_EMPTY),0,10));
		$keys = array();
		foreach ($words as $word=>$id)
		{
			$keys[$word] = strlen($word);
		}
		arsort($keys,SORT_NUMERIC);
		$keys = get_search_words(array_keys($keys),TRUE);
		$id = 0;
		foreach ($keys as $key=>$pattern)
		{
			$s_key = htmlspecialchars($key);
			$pattern = "/(<[^>]*>)|($pattern)/";
			$callback = create_function(
				'$arr',
				'return $arr[1] ? $arr[1] : "<strong class=\"word'.$id++.'\">{$arr[2]}</strong>";'
			);
			$body = preg_replace_callback($pattern,$callback,$body);
			$notes = preg_replace_callback($pattern,$callback,$notes);
		}
	}
	
	$longtaketime = getmicrotime() - MUTIME;
	$taketime = sprintf('%01.03f',$longtaketime);
	
	if (!file_exists(SKIN_FILE)||!is_readable(SKIN_FILE))
	{
		die_message(SKIN_FILE.'(skin file) is not found.');
	}
	require(SKIN_FILE);
}
コード例 #24
0
function plugin_bugtrack_list_convert()
{
    global $script, $vars, $_plugin_bugtrack;
    $page = $vars['page'];
    if (func_num_args()) {
        list($_page) = func_get_args();
        $_page = get_fullname(strip_bracket($_page), $page);
        if (is_pagename($_page)) {
            $page = $_page;
        }
    }
    $data = array();
    $pattern = $page . '/';
    $pattern_len = strlen($pattern);
    foreach (get_existpages() as $page) {
        if (strpos($page, $pattern) === 0 && is_numeric(substr($page, $pattern_len))) {
            array_push($data, plugin_bugtrack_list_pageinfo($page));
        }
    }
    $count_list = count($_plugin_bugtrack['state_list']);
    $table = array();
    for ($i = 0; $i <= $count_list + 1; ++$i) {
        $table[$i] = array();
    }
    foreach ($data as $line) {
        list($page, $no, $summary, $name, $priority, $state, $category) = $line;
        foreach (array('summary', 'name', 'priority', 'state', 'category') as $item) {
            ${$item} = htmlsc(${$item});
        }
        $page_link = make_pagelink($page);
        $state_no = array_search($state, $_plugin_bugtrack['state_sort']);
        if ($state_no === NULL || $state_no === FALSE) {
            $state_no = $count_list;
        }
        $bgcolor = htmlsc($_plugin_bugtrack['state_bgcolor'][$state_no]);
        $row = <<<EOD
 <tr>
  <td style="background-color:{$bgcolor}">{$page_link}</td>
  <td style="background-color:{$bgcolor}">{$state}</td>
  <td style="background-color:{$bgcolor}">{$priority}</td>
  <td style="background-color:{$bgcolor}">{$category}</td>
  <td style="background-color:{$bgcolor}">{$name}</td>
  <td style="background-color:{$bgcolor}">{$summary}</td>
 </tr>
EOD;
        $table[$state_no][$no] = $row;
    }
    $table_html = ' <tr>' . "\n";
    $bgcolor = htmlsc($_plugin_bugtrack['header_bgcolor']);
    foreach (array('pagename', 'state', 'priority', 'category', 'name', 'summary') as $item) {
        $table_html .= '  <th style="background-color:' . $bgcolor . '">' . htmlsc($_plugin_bugtrack[$item]) . '</th>' . "\n";
    }
    $table_html .= ' </tr>' . "\n";
    for ($i = 0; $i <= $count_list; ++$i) {
        ksort($table[$i], SORT_NUMERIC);
        $table_html .= join("\n", $table[$i]);
    }
    return '<table border="1" width="100%">' . "\n" . $table_html . "\n" . '</table>';
}
コード例 #25
0
function plugin_template_action()
{
    global $script, $vars;
    //	global $_title_edit;
    //	global $_msg_template_start, $_msg_template_end, $_msg_template_page, $_msg_template_refer;
    //	global $_btn_template_create, $_title_template;
    //	global $_err_template_already, $_err_template_invalid, $_msg_template_force;
    $_title_edit = _('Edit of  $1');
    $_msg_template_start = _('Start:<br />');
    $_msg_template_end = _('End:<br />');
    $_msg_template_page = _('$1/copy');
    $_msg_template_refer = _('Page:');
    $_msg_template_force = _('Edit with a page name which already exists');
    $_err_template_already = _(' $1 already exists.');
    $_err_template_invalid = _(' $1 is not a valid page name.');
    $_btn_template_create = _('Create');
    $_title_template = _('create a new page, using  $1 as a template.');
    // if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
    // if (auth::check_role('readonly')) die_message('PKWK_READONLY prohibits editing');
    if (auth::check_role('safemode') || auth::check_role('readonly')) {
        die_message(_('Prohibited'));
    }
    if (!isset($vars['refer']) || !is_page($vars['refer'])) {
        return FALSE;
    }
    if (!is_page($vars['refer']) || !check_readable($vars['refer'], false, false)) {
        return array('msg' => _(' $1 was not found.'), 'body' => _('cannot display the page source.'));
    }
    $lines = get_source($vars['refer']);
    auth::is_role_page($lines);
    // Remove '#freeze'
    if (!empty($lines) && strtolower(rtrim($lines[0])) == '#freeze') {
        array_shift($lines);
    }
    $begin = isset($vars['begin']) && is_numeric($vars['begin']) ? $vars['begin'] : 0;
    $end = isset($vars['end']) && is_numeric($vars['end']) ? $vars['end'] : count($lines) - 1;
    if ($begin > $end) {
        $temp = $begin;
        $begin = $end;
        $end = $temp;
    }
    $page = isset($vars['page']) ? $vars['page'] : '';
    $is_page = is_page($page);
    // edit
    if ($is_pagename = is_pagename($page) && (!$is_page || !empty($vars['force']))) {
        $postdata = join('', array_splice($lines, $begin, $end - $begin + 1));
        $retvar['msg'] = $_title_edit;
        $retvar['body'] = edit_form($vars['page'], $postdata);
        $vars['refer'] = $vars['page'];
        return $retvar;
    }
    $begin_select = $end_select = '';
    for ($i = 0; $i < count($lines); $i++) {
        $line = htmlspecialchars(mb_strimwidth($lines[$i], 0, MAX_LEN, '...'));
        $tag = $i == $begin ? ' selected="selected"' : '';
        $begin_select .= "<option value=\"{$i}\"{$tag}>{$line}</option>\n";
        $tag = $i == $end ? ' selected="selected"' : '';
        $end_select .= "<option value=\"{$i}\"{$tag}>{$line}</option>\n";
    }
    $_page = htmlspecialchars($page);
    $msg = $tag = '';
    if ($is_page) {
        $msg = $_err_template_already;
        $tag = '<input type="checkbox" name="force" value="1" />' . $_msg_template_force;
    } else {
        if ($page != '' && !$is_pagename) {
            $msg = str_replace('$1', $_page, $_err_template_invalid);
        }
    }
    $s_refer = htmlspecialchars($vars['refer']);
    $s_page = $page == '' ? str_replace('$1', $s_refer, $_msg_template_page) : $_page;
    $ret = <<<EOD
<form action="{$script}" method="post">
 <div>
  <input type="hidden" name="plugin" value="template" />
  <input type="hidden" name="refer"  value="{$s_refer}" />
  {$_msg_template_start} <select name="begin" size="10">{$begin_select}</select><br /><br />
  {$_msg_template_end}   <select name="end"   size="10">{$end_select}</select><br /><br />
  <label for="_p_template_refer">{$_msg_template_refer}</label>
  <input type="text" name="page" id="_p_template_refer" value="{$s_page}" />
  <input type="submit" name="submit" value="{$_btn_template_create}" /> {$tag}
 </div>
</form>
EOD;
    $retvar['msg'] = $msg == '' ? $_title_template : $msg;
    $retvar['body'] = $ret;
    return $retvar;
}
コード例 #26
0
ファイル: rename.inc.php プロジェクト: logue/pukiwiki_adv
function plugin_rename_action()
{
    global $_string;
    // if (PKWK_READONLY) die_message('PKWK_READONLY prohibits this');
    if (Auth::check_role('readonly')) {
        die_message($_string['prohibit']);
    }
    $method = plugin_rename_getvar('method');
    if ($method == 'regex') {
        $src = plugin_rename_getvar('src');
        if ($src == '') {
            return plugin_rename_phase1();
        }
        $src_pattern = '/' . preg_quote($src, '/') . '/';
        $arr0 = preg_grep($src_pattern, Auth::get_existpages());
        if (!is_array($arr0) || empty($arr0)) {
            return plugin_rename_phase1('nomatch');
        }
        $dst = plugin_rename_getvar('dst');
        $arr1 = preg_replace($src_pattern, $dst, $arr0);
        foreach ($arr1 as $page) {
            if (!is_pagename($page)) {
                return plugin_rename_phase1('notvalid');
            } else {
                if (preg_match(Wiki::INVALIED_PAGENAME_PATTERN, $page)) {
                    die_message($_string['illegal_chars']);
                }
            }
        }
        // Phase one or three
        return plugin_rename_regex($arr0, $arr1);
    } else {
        // $method == 'page'
        $page = plugin_rename_getvar('page');
        $refer = plugin_rename_getvar('refer');
        // Check Illigal Chars
        if (preg_match(Wiki::INVALIED_PAGENAME_PATTERN, $page)) {
            die_message($_string['illegal_chars']);
        }
        if (empty($refer)) {
            return plugin_rename_phase1();
        } else {
            if (!is_page($refer)) {
                return plugin_rename_phase1('notpage', $refer);
            } else {
                if (is_cantedit($refer)) {
                    return plugin_rename_phase1('norename', $refer);
                } else {
                    if (empty($page) && is_page($refer)) {
                        return plugin_rename_phase2();
                    } else {
                        if (!is_pagename($page)) {
                            return plugin_rename_phase2('notvalid');
                        } else {
                            // Phase three
                            return plugin_rename_refer();
                        }
                    }
                }
            }
        }
    }
}
コード例 #27
0
ファイル: html.php プロジェクト: aterai/pukiwiki-plus-i18n
function catbody($title, $page, $body)
{
    global $script;
    // MUST BE SKIN.FILE. Do not delete line.
    global $vars, $arg, $defaultpage, $whatsnew, $help_page, $hr;
    global $attach_link, $related_link, $function_freeze;
    global $search_word_color, $foot_explain, $note_hr, $head_tags, $foot_tags;
    global $trackback, $referer, $javascript;
    global $newtitle, $newbase, $language, $use_local_time;
    // Plus! skin extension
    global $nofollow;
    global $_LANG, $_LINK, $_IMAGE;
    global $pkwk_dtd;
    // XHTML 1.1, XHTML1.0, HTML 4.01 Transitional...
    global $page_title;
    // Title of this site
    global $do_backup;
    // Do backup or not
    global $modifier;
    // Site administrator's  web page
    global $modifierlink;
    // Site administrator's name
    global $skin_file, $menubar, $sidebar;
    global $_string;
    if (!defined('SKIN_FILE') || !file_exists(SKIN_FILE) || !is_readable(SKIN_FILE)) {
        if (!file_exists($skin_file) || !is_readable($skin_file)) {
            die_message(SKIN_FILE . '(skin file) is not found.');
        } else {
            define('SKIN_FILE', $skin_file);
        }
    }
    $_LINK = $_IMAGE = array();
    // Add JavaScript header when ...
    if (!PKWK_ALLOW_JAVASCRIPT) {
        unset($javascript);
    }
    $_page = isset($vars['page']) ? $vars['page'] : '';
    $r_page = rawurlencode($_page);
    // Set $_LINK for skin
    $_LINK['add'] = get_cmd_uri('add', $_page);
    $_LINK['backup'] = get_cmd_uri('backup', $_page);
    $_LINK['brokenlink'] = get_cmd_uri('brokenlink', $_page);
    $_LINK['copy'] = get_cmd_uri('template', '', '', 'refer=' . $r_page);
    $_LINK['diff'] = get_cmd_uri('diff', $_page);
    $_LINK['edit'] = get_cmd_uri('edit', $_page);
    $_LINK['guiedit'] = get_cmd_uri('guiedit', $_page);
    $_LINK['filelist'] = get_cmd_uri('filelist');
    $_LINK['freeze'] = get_cmd_uri('freeze', $_page);
    $_LINK['help'] = get_cmd_uri('help');
    $_LINK['linklist'] = get_cmd_uri('linklist', $_page);
    $_LINK['list'] = get_cmd_uri('list');
    $_LINK['log_login'] = get_cmd_uri('logview', '', '', 'kind=login');
    $_LINK['log_browse'] = get_cmd_uri('logview', $_page, '', 'kind=browse');
    $_LINK['log_update'] = get_cmd_uri('logview', $_page);
    $_LINK['log_down'] = get_cmd_uri('logview', $_page, '', 'kind=download');
    $_LINK['log_check'] = get_cmd_uri('logview', $_page, '', 'kind=check');
    $_LINK['menu'] = get_page_uri($menubar);
    $_LINK['new'] = get_cmd_uri('newpage', '', '', 'refer=' . $r_page);
    $_LINK['newsub'] = get_cmd_uri('newpage_subdir', '', '', 'directory=' . $r_page);
    $_LINK['print'] = get_cmd_uri('print', $_page);
    $_LINK['full'] = get_cmd_uri('print', $_page) . '&amp;nohead&amp;nofoot';
    $_LINK['read'] = get_page_uri($_page);
    $_LINK['recent'] = get_page_uri($whatsnew);
    $_LINK['refer'] = get_cmd_uri('referer', $_page);
    $_LINK['reload'] = get_page_absuri($_page);
    // 本当は、get_script_uri でいいけど、絶対パスでないと、スキンに影響が出る
    $_LINK['reload_rel'] = get_page_uri($_page);
    $_LINK['rename'] = get_cmd_uri('rename', '', '', 'refer=' . $r_page);
    $_LINK['skeylist'] = get_cmd_uri('skeylist', $_page);
    $_LINK['search'] = get_cmd_uri('search');
    $_LINK['side'] = get_page_uri($sidebar);
    $_LINK['source'] = get_cmd_uri('source', $_page);
    $_LINK['template'] = get_cmd_uri('template', '', '', 'refer=' . $r_page);
    $_LINK['top'] = get_page_uri($defaultpage);
    if ($trackback) {
        $tb_id = tb_get_id($_page);
        $_LINK['trackback'] = get_cmd_uri('tb', '', '', '__mode=view&tb_id=' . $tb_id);
    }
    $_LINK['unfreeze'] = get_cmd_uri('unfreeze', $_page);
    $_LINK['upload'] = get_cmd_uri('attach', $_page, '', 'pcmd=upload');
    // link rel="alternate" にも利用するため absuri にしておく
    $_LINK['rdf'] = get_cmd_absuri('rss', '', 'ver=1.0');
    $_LINK['rss'] = get_cmd_absuri('rss');
    $_LINK['rss10'] = get_cmd_absuri('rss', '', 'ver=1.0');
    // Same as 'rdf'
    $_LINK['rss20'] = get_cmd_absuri('rss', '', 'ver=2.0');
    $_LINK['mixirss'] = get_cmd_absuri('mixirss');
    // Same as 'rdf' for mixi
    // Compat: Skins for 1.4.4 and before
    $link_add =& $_LINK['add'];
    $link_backup =& $_LINK['backup'];
    $link_brokenlink =& $_LINK['brokenlink'];
    $link_template =& $_LINK['copy'];
    $link_diff =& $_LINK['diff'];
    $link_edit =& $_LINK['edit'];
    $link_guiedit =& $_LINK['guiedit'];
    $link_filelist =& $_LINK['filelist'];
    $link_freeze =& $_LINK['freeze'];
    $link_help =& $_LINK['help'];
    $link_linklist =& $_LINK['linklist'];
    $link_list =& $_LINK['list'];
    $link_log_login =& $_LINK['log_login'];
    $link_log_browse =& $_LINK['log_browse'];
    $link_log_update =& $_LINK['log_update'];
    $link_log_down =& $_LINK['log_down'];
    $link_log_check =& $_LINK['log_check'];
    $link_menu =& $_LINK['menu'];
    $link_new =& $_LINK['new'];
    $link_newsub =& $_LINK['newsub'];
    $link_print =& $_LINK['print'];
    $link_full =& $_LINK['full'];
    $link_read =& $_LINK['read'];
    $link_whatsnew =& $_LINK['recent'];
    $link_refer =& $_LINK['refer'];
    $link_reload =& $_LINK['reload'];
    $link_reload_rel =& $_LINK['reload_rel'];
    $link_rename =& $_LINK['rename'];
    $link_skeylist =& $_LINK['skeylist'];
    $link_search =& $_LINK['search'];
    $link_side =& $_LINK['side'];
    $link_source =& $_LINK['source'];
    $link_top =& $_LINK['top'];
    if ($trackback) {
        $link_trackback =& $_LINK['trackback'];
    }
    $link_unfreeze =& $_LINK['unfreeze'];
    $link_upload =& $_LINK['upload'];
    //
    $link_rdf =& $_LINK['rdf'];
    $link_rss =& $_LINK['rss'];
    $link_rss10 =& $_LINK['rss10'];
    $link_rss20 =& $_LINK['rss20'];
    $link_mixirss =& $_LINK['mixirss'];
    // Init flags
    $is_page = is_pagename($_page) && !arg_check('backup') && !is_cantedit($_page);
    $is_read = arg_check('read') && is_page($_page);
    $is_freeze = is_freeze($_page);
    // Last modification date (string) of the page
    $lastmodified = $is_read ? get_date('D, d M Y H:i:s T', get_filetime($_page)) . ' ' . get_pg_passage($_page, FALSE) : '';
    // List of attached files to the page
    $attaches = '';
    if ($attach_link && $is_read && exist_plugin_action('attach')) {
        if (do_plugin_init('attach') !== FALSE) {
            $attaches = attach_filelist();
        }
    }
    // List of related pages
    $related = $related_link && $is_read ? make_related($_page) : '';
    // List of footnotes
    ksort($foot_explain, SORT_NUMERIC);
    $notes = !empty($foot_explain) ? $note_hr . join("\n", $foot_explain) : '';
    // Tags will be inserted into <head></head>
    $head_tag = !empty($head_tags) ? join("\n", $head_tags) . "\n" : '';
    $foot_tag = !empty($foot_tags) ? join("\n", $foot_tags) . "\n" : '';
    // 1.3.x compat
    // Last modification date (UNIX timestamp) of the page
    $fmt = $is_read ? get_filetime($_page) : 0;
    // Search words
    if ($search_word_color && isset($vars['word'])) {
        $body = '<div class="small">' . $_string['word'] . htmlspecialchars($vars['word']) . '</div>' . $hr . "\n" . $body;
        // BugTrack2/106: Only variables can be passed by reference from PHP 5.0.5
        $words = preg_split('/\\s+/', $vars['word'], -1, PREG_SPLIT_NO_EMPTY);
        $words = array_splice($words, 0, 10);
        // Max: 10 words
        $words = array_flip($words);
        $keys = array();
        foreach ($words as $word => $id) {
            $keys[$word] = strlen($word);
        }
        arsort($keys, SORT_NUMERIC);
        $keys = get_search_words(array_keys($keys), TRUE);
        $id = 0;
        foreach ($keys as $key => $pattern) {
            $s_key = htmlspecialchars($key);
            $pattern = '/' . '<textarea[^>]*>.*?<\\/textarea>' . '|' . '<[^>]*>' . '|' . '&[^;]+;' . '|' . '(' . $pattern . ')' . '/sS';
            $decorate_Nth_word = create_function('$matches', 'return (isset($matches[1])) ? ' . '\'<strong class="word' . $id . '">\' . $matches[1] . \'</strong>\' : ' . '$matches[0];');
            $body = preg_replace_callback($pattern, $decorate_Nth_word, $body);
            $notes = preg_replace_callback($pattern, $decorate_Nth_word, $notes);
            ++$id;
        }
    }
    // Compat: 'HTML convert time' without time about MenuBar and skin
    $taketime = elapsedtime();
    require SKIN_FILE;
}
コード例 #28
0
ファイル: spam.php プロジェクト: orangeal2o3/pukiwiki-plugin
function pkwk_spamnotify($action, $page, $target = array('title' => ''), $progress = array(), $method = array())
{
    global $notify, $notify_subject;
    if (!$notify) {
        return;
    }
    $asap = isset($method['asap']);
    $summary['ACTION'] = 'Blocked by: ' . summarize_spam_progress($progress, TRUE);
    if (!$asap) {
        $summary['METRICS'] = summarize_spam_progress($progress);
    }
    $tmp = summarize_detail_badhost($progress);
    if ($tmp != '') {
        $summary['DETAIL_BADHOST'] = $tmp;
    }
    $tmp = summarize_detail_newtral($progress);
    if (!$asap && $tmp != '') {
        $summary['DETAIL_NEUTRAL_HOST'] = $tmp;
    }
    $summary['COMMENT'] = $action;
    $summary['PAGE'] = '[blocked] ' . (is_pagename($page) ? $page : '');
    $summary['URI'] = get_script_uri() . '?' . rawurlencode($page);
    $summary['USER_AGENT'] = TRUE;
    $summary['REMOTE_ADDR'] = TRUE;
    pkwk_mail_notify($notify_subject, var_export($target, TRUE), $summary, TRUE);
}
コード例 #29
0
ファイル: make_link.php プロジェクト: KimuraYoichi/PukiWiki
 function set($arr, $page)
 {
     global $WikiName;
     list(, $alias, , $name, $this->anchor) = $this->splice($arr);
     if ($name == '' && $this->anchor == '') {
         return FALSE;
     }
     if ($name == '' || !preg_match('/^' . $WikiName . '$/', $name)) {
         if ($alias == '') {
             $alias = $name . $this->anchor;
         }
         if ($name != '') {
             $name = get_fullname($name, $page);
             if (!is_pagename($name)) {
                 return FALSE;
             }
         }
     }
     return parent::setParam($page, $name, '', 'pagename', $alias);
 }
コード例 #30
0
function plugin_pcomment_insert()
{
    global $vars, $now, $_title_updated, $_no_name, $_pcmt_messages;
    $refer = isset($vars['refer']) ? $vars['refer'] : '';
    $page = isset($vars['page']) ? $vars['page'] : '';
    $page = get_fullname($page, $refer);
    if (!is_pagename($page)) {
        return array('msg' => 'Invalid page name', 'body' => 'Cannot add comment', 'collided' => TRUE);
    }
    check_editable($page, true, true);
    $ret = array('msg' => $_title_updated, 'collided' => FALSE);
    $msg = str_replace('$msg', rtrim($vars['msg']), PLUGIN_PCOMMENT_FORMAT_MSG);
    $name = !isset($vars['name']) || $vars['name'] == '' ? $_no_name : $vars['name'];
    $name = $name == '' ? '' : str_replace('$name', $name, PLUGIN_PCOMMENT_FORMAT_NAME);
    $date = !isset($vars['nodate']) || $vars['nodate'] != '1' ? str_replace('$now', $now, PLUGIN_PCOMMENT_FORMAT_NOW) : '';
    if ($date != '' || $name != '') {
        $msg = str_replace("" . 'MSG' . "", $msg, PLUGIN_PCOMMENT_FORMAT_STRING);
        $msg = str_replace("" . 'NAME' . "", $name, $msg);
        $msg = str_replace("" . 'DATE' . "", $date, $msg);
    }
    $reply_hash = isset($vars['reply']) ? $vars['reply'] : '';
    if ($reply_hash || !is_page($page)) {
        $msg = preg_replace('/^\\-+/', '', $msg);
    }
    $msg = rtrim($msg);
    if (!is_page($page)) {
        $postdata = '[[' . htmlsc(strip_bracket($refer)) . ']]' . "\n\n" . '-' . $msg . "\n";
    } else {
        $postdata = get_source($page);
        $count = count($postdata);
        $digest = isset($vars['digest']) ? $vars['digest'] : '';
        if (md5(join('', $postdata)) != $digest) {
            $ret['msg'] = $_pcmt_messages['title_collided'];
            $ret['body'] = $_pcmt_messages['msg_collided'];
        }
        $start_position = 0;
        while ($start_position < $count) {
            if (preg_match('/^\\-/', $postdata[$start_position])) {
                break;
            }
            ++$start_position;
        }
        $end_position = $start_position;
        $dir = isset($vars['dir']) ? $vars['dir'] : '';
        // Find the comment to reply
        $level = 1;
        $b_reply = FALSE;
        if ($reply_hash != '') {
            while ($end_position < $count) {
                $matches = array();
                if (preg_match('/^(\\-{1,2})(?!\\-)(.*)$/', $postdata[$end_position++], $matches) && md5($matches[2]) == $reply_hash) {
                    $b_reply = TRUE;
                    $level = strlen($matches[1]) + 1;
                    while ($end_position < $count) {
                        if (preg_match('/^(\\-{1,3})(?!\\-)/', $postdata[$end_position], $matches) && strlen($matches[1]) < $level) {
                            break;
                        }
                        ++$end_position;
                    }
                    break;
                }
            }
        }
        if ($b_reply == FALSE) {
            $end_position = $dir == '0' ? $start_position : $count;
        }
        // Insert new comment
        array_splice($postdata, $end_position, 0, str_repeat('-', $level) . $msg . "\n");
        if (PLUGIN_PCOMMENT_AUTO_LOG) {
            $_count = isset($vars['count']) ? $vars['count'] : '';
            plugin_pcomment_auto_log($page, $dir, $_count, $postdata);
        }
        $postdata = join('', $postdata);
    }
    page_write($page, $postdata, PLUGIN_PCOMMENT_TIMESTAMP);
    if (PLUGIN_PCOMMENT_TIMESTAMP) {
        if ($refer != '') {
            pkwk_touch_file(get_filename($refer));
        }
        put_lastmodified();
    }
    return $ret;
}