コード例 #1
0
ファイル: redirect.inc.php プロジェクト: big2men/qhm
function plugin_redirect_convert()
{
    global $vars, $script;
    $qm = get_qm();
    $qt = get_qt();
    //キャッシュしない
    $qt->enable_cache = false;
    $page = isset($vars['page']) ? $vars['page'] : '';
    $args = func_get_args();
    $url = strip_autolink(array_shift($args));
    $status = array_shift($args);
    $status_codes = array('301' => 'HTTP/1.1 301 Moved Permanently');
    if (isset($status_codes[$status])) {
        $headers[] = $status_codes[$status];
    }
    if ($url == '') {
        $url = $script . '?FrontPage';
    } else {
        $url = is_url($url) ? $url : $script . '?' . rawurlencode($url);
    }
    $editable = ss_admin_check();
    //自分自身にリダイレクトして、ループする場合は警告する
    if ($url === $script . '?' . rawurlencode($page)) {
        return $qm->m['plg_redirect']['err_self_ref'];
    }
    if ($editable) {
        return $qm->replace('plg_redirect.ntc_admin', $url);
    } else {
        $headers[] = 'Location: ' . $url;
        foreach ($headers as $header) {
            header($header);
        }
        exit;
    }
}
コード例 #2
0
ファイル: close.inc.php プロジェクト: big2men/qhm
function plugin_close_convert()
{
    global $vars, $script;
    $qm = get_qm();
    $qt = get_qt();
    $page = isset($vars['page']) ? $vars['page'] : '';
    //キャッシュ無効
    $qt->enable_cache = false;
    $title = $qm->m['plg_close']['title'];
    $msg = $qm->m['plg_close']['ntc'];
    //parse arguments
    $args = func_get_args();
    $num = count($args);
    if ($num == 0) {
        //do nothing
    } else {
        if ($num == 1) {
            $title = array_pop($args);
        } else {
            list($title, $msg) = $args;
        }
    }
    $editable = edit_auth($page, FALSE, FALSE);
    if ($editable) {
        return $qm->m['plg_close']['ntc_admin'];
    } else {
        force_output_message($title, '', $msg);
    }
}
コード例 #3
0
ファイル: lookup.inc.php プロジェクト: big2men/qhm
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;
}
コード例 #4
0
ファイル: online.inc.php プロジェクト: big2men/qhm
function plugin_online_itself($type = 0)
{
    static $count, $result, $base;
    $qm = get_qm();
    if (!isset($count)) {
        if (isset($_SERVER['REMOTE_ADDR'])) {
            $host =& $_SERVER['REMOTE_ADDR'];
        } else {
            $host = '';
        }
        // Try read
        if (plugin_online_check_online($count, $host)) {
            $result = TRUE;
        } else {
            // Write
            $result = plugin_online_sweep_records($host);
        }
    }
    if ($result) {
        return $count;
        // Integer
    } else {
        if (!isset($base)) {
            $base = basename(PLUGIN_ONLINE_USER_LIST);
        }
        $error = $qm->replace('plg_online.err_not_writable', $base);
        if ($type == 0) {
            $error = $qm->replace('plg_online.err_convert', $error) . "\n";
        } else {
            $error = $qm->replace('plg_online.err_inline', $error);
        }
        return $error;
        // String
    }
}
コード例 #5
0
ファイル: ga_link.inc.php プロジェクト: big2men/qhm
function plugin_ga_link_inline()
{
    global $accesstag_moved;
    global $accesstag;
    global $vars;
    $qm = get_qm();
    $qt = get_qt();
    $page = isset($vars['page']) ? $vars['page'] : '';
    //parameter check
    $args = func_get_args();
    $num = func_num_args();
    if ($num != 2) {
        return $qm->replace('fmt_err_iln', 'ga_link', $qm->m['plg_ga_link']['err_usage']);
    }
    $text = strip_autolink(array_pop($args));
    //テキストデータ
    $url = array_pop($args);
    if (!is_url($url)) {
        $url = 'index.php?' . rawurlencode($url);
    }
    $acc_tag = '';
    //初めて呼び出される場合、accesstag情報を表示する
    if (!$accesstag_moved) {
        $accesstag_moved = TRUE;
        //accesstag_movedを設定
        $editable = edit_auth($page, FALSE, FALSE);
        if (!$editable) {
            $qt->setv('toolkit_upper', $accesstag);
        }
    }
    //Google Analytics用のjavascriptを先に読み込んでから、関数を呼び出す
    $ret = '<a href="index.php?cmd=ga_link&url=' . rawurlencode($url) . '" onClick="javascript:pageTracker._link(this.href);return false;">' . $text . '</a>';
    return $ret;
}
コード例 #6
0
ファイル: pp_button.inc.php プロジェクト: big2men/qhm
/**
 *   PayPal Shopping Cart Button Plugin
 *   -------------------------------------------
 *   pp_button.inc.php
 *   
 *   Copyright (c) 2010 hokuken
 *   http://hokuken.com/
 *   
 *   created  : 
 *   modified : 2010-08-27
 *   
 *   PayPal のショッピングカートボタンを設置します
 *   日本語商品名は文字化けが起こることが多いです
 *
 *   USAGE:
 *     &pp_button($paypal_account, product name, price);
 */
function plugin_pp_button_inline()
{
    $qm = get_qm();
    $args = func_get_args();
    $num = func_num_args();
    if ($num < 3) {
        return $qm->m['plg_pp_button']['err_usage'];
    }
    list($account, $pname, $price, $pcode) = array_pad($args, 4, '');
    $pname = h($pname);
    $price = h($price);
    $pcode = $pcode == '' ? $pname : h($pcode);
    return <<<EOD
<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
<input type="image" src="https://www.paypal.com/ja_JP/JP/i/btn/btn_cart_LG.gif" border="0" name="submit" alt="{$qm->m['plg_pp_button']['title_paypal']}">
<img alt="" border="0" src="https://www.paypal.com/ja_JP/i/scr/pixel.gif" width="1" height="1">
<input type="hidden" name="add" value="1">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="business" value="{$account}">
<input type="hidden" name="item_name" value="{$pname}">
<input type="hidden" name="item_number" value="{$pcode}">
<input type="hidden" name="amount" value="{$price}">
<input type="hidden" name="no_shipping" value="0">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="currency_code" value="JPY">
<input type="hidden" name="lc" value="JP">
<input type="hidden" name="bn" value="PP-ShopCartBF">
</form>\t
EOD;
}
コード例 #7
0
ファイル: insert.inc.php プロジェクト: big2men/qhm
function plugin_insert_convert()
{
    global $script, $vars, $digest;
    $qm = get_qm();
    static $numbers = array();
    if (PKWK_READONLY) {
        return '';
    }
    // Show nothing
    if (!isset($numbers[$vars['page']])) {
        $numbers[$vars['page']] = 0;
    }
    $insert_no = $numbers[$vars['page']]++;
    $s_page = htmlspecialchars($vars['page']);
    $s_digest = htmlspecialchars($digest);
    $s_cols = INSERT_COLS;
    $s_rows = INSERT_ROWS;
    $string = <<<EOD
<form action="{$script}" method="post">
 <div>
  <input type="hidden" name="insert_no" value="{$insert_no}" />
  <input type="hidden" name="refer"  value="{$s_page}" />
  <input type="hidden" name="plugin" value="insert" />
  <input type="hidden" name="digest" value="{$s_digest}" />
  <textarea name="msg" rows="{$s_rows}" cols="{$s_cols}"></textarea><br />
  <input type="submit" name="insert" value="{$qm->m['plg_insert']['btn_label']}" />
 </div>
</form>
EOD;
    return $string;
}
コード例 #8
0
ファイル: ganatracker.inc.php プロジェクト: big2men/qhm
function plugin_ganatracker_convert()
{
    global $accesstag;
    global $vars;
    $qm = get_qm();
    $page = isset($vars['page']) ? $vars['page'] : '';
    $args = func_get_args();
    $num = func_num_args();
    if ($num != 1) {
        return $qm->replace('fmt_err_cvt', 'ganatracker', $qm->m['plg_ganatracker']['err_usage_cvt']);
    }
    $name = $args[0];
    //versionをチェックして、置換
    $version = $qm->m['plg_ganatracker']['old'];
    if (strstr($accesstag, "gaJsHost") == false) {
        //Old version
        $repstr = 'urchinTracker(\'' . $name . '\')';
        $accesstag = str_replace('urchinTracker()', $repstr, $accesstag);
    } else {
        $version = $qm->m['plg_ganatracker']['old'];
        $repstr = 'pageTracker._trackPageview(\'' . $name . '\')';
        $accesstag = str_replace('pageTracker._trackPageview()', $repstr, $accesstag);
    }
    $editable = edit_auth($page, FALSE, FALSE);
    if ($editable) {
        return '<div style="margin:1em;border:dashed 2px #f00;background-color:#fee">' . $qm->replace('plg_ganatracker.ntc_admin_cvt', $version, $name) . '</div>';
    } else {
        return '';
    }
}
コード例 #9
0
ファイル: img.inc.php プロジェクト: big2men/qhm
function plugin_img_convert()
{
    $qm = get_qm();
    if (PKWK_DISABLE_INLINE_IMAGE_FROM_URI) {
        return $qm->replace('fmt_err_deny_uri_img', '#img');
    }
    $args = func_get_args();
    // Check the 2nd argument first, for compatibility
    $arg = isset($args[1]) ? strtoupper($args[1]) : '';
    if ($arg == '' || $arg == 'L' || $arg == 'LEFT') {
        $align = 'left';
    } else {
        if ($arg == 'R' || $arg == 'RIGHT') {
            $align = 'right';
        } else {
            // Stop word-wrapping only (Ugly but compatible)
            // Short usage: #img(,clear)
            return PLUGIN_IMG_CLEAR;
        }
    }
    $url = isset($args[0]) ? $args[0] : '';
    if (!is_url($url) || !preg_match('/\\.(jpe?g|gif|png)$/i', $url)) {
        return $qm->replace('fmt_err_cvt', 'img', $qm->m['plg_img']['err_usage']);
    }
    $arg = isset($args[2]) ? strtoupper($args[2]) : '';
    $clear = $arg == 'C' || $arg == 'CLEAR' ? PLUGIN_IMG_CLEAR : '';
    return <<<EOD
<div style="float:{$align};padding:.5em 1.5em .5em 1.5em">
 <img src="{$url}" alt="" />
</div>{$clear}
EOD;
}
コード例 #10
0
ファイル: counter.inc.php プロジェクト: big2men/qhm
function plugin_counter_get_count($page)
{
    global $vars;
    static $counters = array();
    static $default;
    $qm = get_qm();
    if (!isset($default)) {
        $default = array('total' => 0, 'date' => get_date('Y/m/d'), 'today' => 0, 'yesterday' => 0, 'ip' => '');
    }
    if (!is_page($page)) {
        return $default;
    }
    if (isset($counters[$page])) {
        return $counters[$page];
    }
    // Set default
    $counters[$page] = $default;
    $modify = FALSE;
    $file = COUNTER_DIR . encode($page) . PLUGIN_COUNTER_SUFFIX;
    $fp = fopen($file, file_exists($file) ? 'r+' : 'w+') or die('counter.inc.php: ' . $qm->replace('fmt_err_open_counterdir', basename($file)));
    set_file_buffer($fp, 0);
    flock($fp, LOCK_EX);
    rewind($fp);
    foreach ($default as $key => $val) {
        // Update
        $counters[$page][$key] = rtrim(fgets($fp, 256));
        if (feof($fp)) {
            break;
        }
    }
    if ($counters[$page]['date'] != $default['date']) {
        // New day
        $modify = TRUE;
        $is_yesterday = $counters[$page]['date'] == get_date('Y/m/d', time() - 86400);
        $counters[$page]['ip'] = $_SERVER['REMOTE_ADDR'];
        $counters[$page]['date'] = $default['date'];
        $counters[$page]['yesterday'] = $is_yesterday ? $counters[$page]['today'] : 0;
        $counters[$page]['today'] = 1;
        $counters[$page]['total']++;
    } else {
        if ($counters[$page]['ip'] != $_SERVER['REMOTE_ADDR']) {
            // Not the same host
            $modify = TRUE;
            $counters[$page]['ip'] = $_SERVER['REMOTE_ADDR'];
            $counters[$page]['today']++;
            $counters[$page]['total']++;
        }
    }
    // Modify
    if ($modify && $vars['cmd'] == 'read') {
        rewind($fp);
        ftruncate($fp, 0);
        foreach (array_keys($default) as $key) {
            fputs($fp, $counters[$page][$key] . "\n");
        }
    }
    flock($fp, LOCK_UN);
    fclose($fp);
    return $counters[$page];
}
コード例 #11
0
ファイル: fb_likebutton.inc.php プロジェクト: big2men/qhm
function plugin_fb_likebutton_body($args)
{
    global $script, $vars, $defaultpage;
    $page = $vars['page'];
    $r_page = rawurlencode($page);
    $qm = get_qm();
    $qt = get_qt();
    $layouts = array('standard', 'button_count', 'box_count');
    $actions = array('like', 'recommend');
    // scaffold
    $def_attrs = array('href' => '', 'layout' => array('standard', $layouts), 'show-faces' => 'true', 'width' => FALSE, 'colorscheme' => FALSE, 'action' => array('like', $actions), 'ref' => FALSE, 'share' => 'true', 'kid-directed-site' => FALSE);
    $attrs = plugin_fb_root_parse_args($args, $def_attrs);
    //default URL set
    if ($attrs['href'] == '') {
        if ($page === $defaultpage) {
            $attrs['href'] = dirname($script . 'dummy');
        } else {
            $attrs['href'] = $script . '?' . $r_page;
        }
    }
    plugin_fb_root_set_jsapi(TRUE);
    $tag = plugin_fb_root_create_tag('fb-like', $attrs);
    $body = $tag;
    return $body;
}
コード例 #12
0
ファイル: conversion_r.inc.php プロジェクト: big2men/qhm
function plugin_conversion_r_inline()
{
    global $vars, $script;
    $qm = get_qm();
    $page = isset($vars['page']) ? $vars['page'] : '';
    $args = func_get_args();
    if (count($args) != 6) {
        return $qm->replace('fmt_err_iln', 'conversion_r', $qm->m['plg_conversion_r']['err_usage']);
    }
    $text = array_pop($args);
    list($step, $group, $name, $url, $site_url) = $args;
    if (!is_url($url)) {
        return $qm->replace('fmt_err_iln', 'conversion_r', $qm->m['plg_conversion_r']['err_url']);
    }
    $raw_url = $url;
    $step = rawurlencode($step);
    $group = rawurlencode($group);
    $name = rawurlencode($name);
    $url = rawurlencode($url);
    $site_url .= preg_match('/\\/$/', $site_url) ? '' : '/';
    $dest = $site_url . '?cmd=conversion&mode=link&step=' . $step . '&group=' . $group . '&name=' . $name . '&url=' . $url;
    //edit auth check
    $editable = edit_auth($page, FALSE, FALSE);
    if ($editable) {
        return '<a href="' . $dest . '">' . $text . '</a><span style="font-size:11px;background-color:#fdd">←' . $qm->m['plg_conversion_r']['ntc_admin'] . '</span>';
    } else {
        return '<a href="' . $dest . '">' . $text . '</a>';
    }
}
コード例 #13
0
ファイル: fb_recommends.inc.php プロジェクト: big2men/qhm
function plugin_fb_recommends_convert()
{
    if ($alt = plugin_fb_root_is_deprecated('recommends')) {
        $args = func_get_args();
        return call_user_func_array($alt, $args);
    }
    global $script, $vars;
    $page = $vars['page'];
    $r_page = rawurlencode($page);
    $qm = get_qm();
    $qt = get_qt();
    $args = func_get_args();
    // scaffold
    $def_attrs = array('site' => '', 'width' => FALSE, 'height' => FALSE, 'header' => 'true', 'colorscheme' => 'light', 'ref' => FALSE, 'action' => 'og.likes', 'app-id' => FALSE, 'linktarget' => FALSE, 'max-age' => FALSE);
    $attrs = plugin_fb_root_parse_args($args, $def_attrs);
    //default site set
    if ($attrs['site'] == '') {
        $parsed = parse_url($script);
        $host = $parsed['host'];
        $attrs['site'] = $host;
    }
    plugin_fb_root_set_jsapi(TRUE);
    $body = plugin_fb_root_create_tag('fb-recommendations', $attrs);
    if (edit_auth($page, FALSE, FALSE)) {
        $fb_pagebox_help = h(QHM_HOME . '?PageName');
        $warning = <<<EOM
\t\t\t<div class="alert alert-warning">
\t\t\t\tFacebook Recommends は Graph API v2.3 より廃止されました。<br>
\t\t\t\t<strong>2015 年 6 月 23 日</strong>に完全に使えなくなります。
\t\t\t</div>
EOM;
        $body = $warning . $body;
    }
    return $body;
}
コード例 #14
0
ファイル: iframe.inc.php プロジェクト: big2men/qhm
function plugin_iframe_convert()
{
    global $pkwk_dtd;
    $qm = get_qm();
    $qt = get_qt();
    $qt->setv('jquery_include', true);
    $args = func_get_args();
    $args_cnt = count($args);
    list($formurl, $height, $width, $align) = array_pad($args, 4, '');
    if (strlen(trim($formurl)) == 0) {
        return $qm->replace('fmt_err_cvt', 'iframe', $qm->m['plg_iframe']['err_usage']);
    }
    $fit = '';
    if ($args_cnt < 3) {
        //correct args
        $height = '200';
        $width = '100%';
        $fit = ' class="autofit_iframe" ';
        $qt->appendv_once('plugin_iframe', 'beforescript', PLUGIN_IFRAME_FIT_IFRAME_JS);
    }
    if ($args_cnt < 4) {
        $align = 'center';
    }
    if (PLUGIN_IFRAME_ALLOW_CSS === TRUE || !isset($pkwk_dtd) || $pkwk_dtd == PKWK_DTD_XHTML_1_1) {
        return '<div style="text-align:' . $align . '"><iframe src="' . $formurl . '" frameborder="0" height="' . $height . '" width="' . $width . '" style="margin:0px;text-align:' . $align . ';" ' . $fit . '><p>' . $qm->replace('plg_iframe.ntc', $formurl) . '</p></iframe></div>';
    } else {
        return 'Invalid argument';
    }
}
コード例 #15
0
ファイル: search_menu.inc.php プロジェクト: big2men/qhm
function plugin_search_menu_convert()
{
    global $script;
    $qm = get_qm();
    return <<<EOF
<div id="searchmenu">
<h2>{$qm->m['plg_search_menu']['hdr']}</h2>
<form action="{$script}" method="get">
<div style="text-align:center">
  <div class="form-group">
    <div class="input-group">
    \t<input type="text" name="word" value="" tabindex="1" accesskey="k" class="form-control input-sm" />
      <span class="input-group-btn">
    \t  <input type="submit" value="{$qm->m['plg_search']['btn']}" tabindex="2" accesskey="s" class="btn btn-default btn-sm" />
      </span>
    </div>
  </div>
  <div class="form-group">
    <label for="and_search" class="radio-inline" style="display:inline-block;line-height:normal">
    \t<input type="radio" name="type" value="AND" checked="checked" id="and_search" tabindex="3" accesskey="a" />{$qm->m['plg_search']['lbl_and']}
    </label>
    <label for="or_search" class="radio-inline" style="display:inline-block;line-height:normal">
      <input type="radio" name="type" value="OR" id="or_search" tabindex="3" accesskey="o" />{$qm->m['plg_search']['lbl_or']}
    </label>
  </div>

\t<input type="hidden" name="cmd" value="search" />
\t<input type="hidden" name="encode_hint" value="ぷ" />
</div>
</form>
</div>
EOF;
}
コード例 #16
0
ファイル: qhmpw.inc.php プロジェクト: big2men/qhm
/**
* パスワード再発行のフォーム表示
*/
function plugin_qhmpw_form_remind($error_msg = '')
{
    global $script, $vars;
    $qm = get_qm();
    $title = $qm->m['plg_qhmpw']['title'];
    $attention = $qm->m['plg_qhmpw']['attention'];
    $label_email = $qm->m['plg_qhmpw']['label_email'];
    $btn_send = $qm->m['plg_qhmpw']['btn_send'];
    if ($error_msg != '') {
        $error_msg = '<p style="color:#ff0000;font-size:12px;">' . $error_msg . '</p>';
    }
    $body = <<<EOD
<h2>{$title}</h2>
{$attention}
{$error_msg}
<form method="post" action="{$script}">
<p><label style="display:block;font-weight:bold;">{$label_email}</label>
<input type="text" name="qhmpw[email]" size="40" value=""  />
</p>
<p><input type="submit" value="{$btn_send}" style="font-size:16px" /></p>
<input type="hidden" name="mode" value="send" />
<input type="hidden" name="plugin" value="qhmpw" />
</form>

EOD;
    return array('msg' => $title, 'body' => $body);
}
コード例 #17
0
ファイル: chpassword.inc.php プロジェクト: big2men/qhm
function plugin_chpassword_inline()
{
    global $script, $vars;
    global $auth_users;
    $qm = get_qm();
    $args = func_get_args();
    $text = strip_autolink(array_pop($args));
    // Already htmlspecialchars(text)
    list($dispflg) = array_pad($args, 1, 'false');
    $_page = isset($vars['page']) ? $vars['page'] : '';
    $url = $script . '?plugin=qhmsetting&mode=form&phase=';
    if ($text == '') {
        $text = $qm->m['plg_chpassword']['label'];
    }
    $is_login = false;
    if (isset($_SESSION['usr']) && array_key_exists($_SESSION['usr'], $auth_users)) {
        if (ss_admin_check()) {
            // 管理者
            $url .= 'admin';
        } else {
            $url .= 'user2';
        }
        $is_login = true;
    } else {
        // ログイン
        $url = $script . '?cmd=qhmauth';
    }
    $ret = '';
    if ($dispflg == 'true' || $dispflg == 'false' && $is_login) {
        $ret = '<a href="' . $url . '" >' . $text . '</a>';
    }
    return $ret;
}
コード例 #18
0
ファイル: fb_comments.inc.php プロジェクト: big2men/qhm
function plugin_fb_comments_convert()
{
    global $script, $vars;
    $page = $vars['page'];
    $r_page = rawurlencode($page);
    $qm = get_qm();
    $qt = get_qt();
    $args = func_get_args();
    if (!exist_plugin("fb_root")) {
        die('Fatal error: fb_root plugin not found');
    }
    $orders = array('social', 'reverse_time', 'time');
    // scaffold
    $def_attrs = array('href' => '', 'width' => FALSE, 'numposts' => '2', 'colorscheme' => 'light', 'mobile' => FALSE, 'order-by' => array(FALSE, $orders));
    $attrs = plugin_fb_root_parse_args($args, $def_attrs);
    //default URL set
    if ($attrs['href'] == '') {
        if ($page === $defaultpage) {
            $attrs['href'] = dirname($script . 'dummy');
        } else {
            $attrs['href'] = $script . '?' . $r_page;
        }
    }
    plugin_fb_root_set_jsapi(TRUE);
    $tag = plugin_fb_root_create_tag('fb-comments', $attrs);
    $body = $tag;
    return $tag;
}
コード例 #19
0
ファイル: ls2.inc.php プロジェクト: big2men/qhm
function plugin_ls2_show_lists($prefix, &$params)
{
    $qm = get_qm();
    $pages = array();
    if ($prefix != '') {
        foreach (get_existpages() as $_page) {
            if (strpos($_page, $prefix) === 0) {
                $pages[] = $_page;
            }
        }
    } else {
        $pages = get_existpages();
    }
    natcasesort($pages);
    if ($params['reverse']) {
        $pages = array_reverse($pages);
    }
    foreach ($pages as $page) {
        $params["page_{$page}"] = 0;
    }
    if (empty($pages)) {
        return str_replace('$1', htmlspecialchars($prefix), $qm->m['plg_ls2']['err_nopages']);
    } else {
        $params['result'] = $params['saved'] = array();
        foreach ($pages as $page) {
            plugin_ls2_get_headings($page, $params, 1);
        }
        return join("\n", $params['result']) . join("\n", $params['saved']);
    }
}
コード例 #20
0
ファイル: redirect_iframe.inc.php プロジェクト: big2men/qhm
function plugin_redirect_iframe_convert()
{
    global $vars, $script;
    $qm = get_qm();
    $page = isset($vars['page']) ? $vars['page'] : '';
    $args = func_get_args();
    $url = strip_autolink(array_pop($args));
    if ($url == '') {
        $url = $script . '?' . rawurlencode($page);
    } else {
        $url = is_url($url) ? $url : $script . '?' . rawurlencode($url);
    }
    $editable = ss_admin_check();
    if ($editable) {
        return $qm->replace('plg_redirect_iframe.ntc_admin', $url);
    } else {
        return <<<EOD
<span id="redirect_iframe_msg"><p style="color:gray"><a href="{$url}" target="new">{$qm->m['plg_redirect_iframe']['link']}</a></p></span>
<script type="text/javascript">
<!--
if(parent != self){
parent.location.href="{$url}";
}
else{
var element = document.getElementById("redirect_iframe_msg");
element.innerHTML = "";
}

//-->
</script>
EOD;
    }
}
コード例 #21
0
ファイル: greybox.inc.php プロジェクト: big2men/qhm
function plugin_greybox_inline()
{
    $qm = get_qm();
    $addscript = '
	<script type="text/javascript">
    	var GB_ROOT_DIR = "./plugin/greybox/";
	</script>
	<script type="text/javascript" src="./plugin/greybox/AJS.js"></script>
	<script type="text/javascript" src="./plugin/greybox/AJS_fx.js"></script>
	<script type="text/javascript" src="./plugin/greybox/gb_scripts.js"></script>
	<link href="./plugin/greybox/gb_styles.css" rel="stylesheet" type="text/css" />
';
    $qt = get_qt();
    $qt->appendv_once('plugin_greybox', 'beforescript', $addscript);
    $args = func_get_args();
    $text = strip_autolink(array_pop($args));
    // Already htmlspecialchars(text)
    list($url, $title, $group) = array_pad($args, 3, '');
    if ($url == '' && $group == '' || $text == '' || func_num_args() > 4) {
        return $qm->replace('fmt_err_iln', 'greybox', $qm->m['plg_greybox']['err_usage']);
    }
    $url = htmlspecialchars($url);
    $title = htmlspecialchars($title);
    $group = htmlspecialchars($group);
    $title = $title == '' ? '' : ' title="' . $title . '"';
    //image grey box
    if (preg_match("/.*(jpg|jpeg|png|gif)\$/i", $url)) {
        $rel = $group == '' ? ' rel="gb_image[]"' : ' rel="gb_imageset[' . $group . ']"';
    } else {
        //web grey box
        $rel = $group == '' ? ' rel="gb_page_fs[]"' : 'rel="gb_pageset[' . $group . ']"';
    }
    $ret = '<a href="' . $url . '" ' . $title . $rel . '>' . $text . '</a>';
    return $ret;
}
コード例 #22
0
ファイル: read_url.inc.php プロジェクト: big2men/qhm
function plugin_read_url_inline()
{
    $qt = get_qt();
    //---- キャッシュのための処理を登録 -----
    if ($qt->create_cache) {
        $args = func_get_args();
        return $qt->get_dynamic_plugin_mark(__FUNCTION__, $args);
    }
    //------------------------------------
    global $vars;
    $qm = get_qm();
    $page = $vars['page'];
    $args = func_get_args();
    $num = func_num_args();
    if ($num > 0) {
        $url = $args[0];
    }
    $from_en = "auto";
    if (isset($args[1]) && $args[1] != '') {
        $from_en = h($args[1]);
    }
    if (is_url($url)) {
        $_data = null;
        if ($_http = fopen($url, "r")) {
            while (!feof($_http)) {
                $_data .= fgets($_http, 1024);
            }
            fclose($_http);
        }
        return mb_convert_encoding($_data, SOURCE_ENCODING, $from_en);
    } else {
        return "<p>" . $qm->replace('plg_read_url.err_invalid_url', $url) . "</p>";
    }
}
コード例 #23
0
ファイル: newpage.inc.php プロジェクト: big2men/qhm
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;
    }
}
コード例 #24
0
ファイル: addgoogle.inc.php プロジェクト: big2men/qhm
function plugin_addgoogle_inline()
{
    global $script;
    $qm = get_qm();
    return '<a href="http://fusion.google.com/add?feedurl=' . $script . '%3Fcmd%3Drss%26ver%3D1.0"><img
src="http://buttons.googlesyndication.com/fusion/add.gif" width="104"
height="17" border="0" alt="' . $qm->m['plg_addgoogle']['title'] . '"></a>';
}
コード例 #25
0
ファイル: versionlist.inc.php プロジェクト: big2men/qhm
function plugin_versionlist_action()
{
    $qm = get_qm();
    if (PKWK_SAFE_MODE) {
        die_message('PKWK_SAFE_MODE prohibits this');
    }
    return array('msg' => $qm->m['plg_versionlist']['title_versionlist'], 'body' => plugin_versionlist_convert());
}
コード例 #26
0
ファイル: video.inc.php プロジェクト: big2men/qhm
function plugin_video_convert()
{
    global $vars, $script;
    $qm = get_qm();
    $qt = get_qt();
    $args = func_get_args();
    return plugin_video_body($args);
}
コード例 #27
0
ファイル: back.inc.php プロジェクト: big2men/qhm
function plugin_back_convert()
{
    global $script;
    $qm = get_qm();
    if (func_num_args() > 4) {
        return $qm->replace('fmt_err_cvt', 'back', $qm->m['err_usage']);
    }
    list($word, $align, $hr, $href) = array_pad(func_get_args(), 4, '');
    $word = trim($word);
    $word = $word == '' ? $qm->m['plg_back']['back_word'] : htmlspecialchars($word);
    $align = strtolower(trim($align));
    switch ($align) {
        case '':
            $align = 'center';
            /*FALLTHROUGH*/
        /*FALLTHROUGH*/
        case 'center':
            /*FALLTHROUGH*/
        /*FALLTHROUGH*/
        case 'left':
            /*FALLTHROUGH*/
        /*FALLTHROUGH*/
        case 'right':
            break;
        default:
            return $qm->replace('fmt_err_cvt', 'back', $qm->m['err_usage']);
    }
    $hr = trim($hr) != '0' ? '<hr class="full_hr" />' . "\n" : '';
    $link = TRUE;
    $href = trim($href);
    if ($href != '') {
        if (PLUGIN_BACK_ALLOW_PAGELINK) {
            if (is_url($href)) {
                $href = rawurlencode($href);
            } else {
                $array = anchor_explode($href);
                $array[0] = rawurlencode($array[0]);
                $array[1] = $array[1] != '' ? '#' . rawurlencode($array[1]) : '';
                $href = $script . '?' . $array[0] . $array[1];
                $link = is_page($array[0]);
            }
        } else {
            $href = rawurlencode($href);
        }
    } else {
        if (!PLUGIN_BACK_ALLOW_JAVASCRIPT) {
            return $qm->replace('fmt_err_cvt', 'back', $qm->m['err_usage']) . ': ' . $qm->m['plg_back']['usage_hint'];
        }
        $href = 'javascript:history.go(-1)';
    }
    if ($link) {
        // Normal link
        return $hr . '<div style="text-align:' . $align . '">' . '[ <a href="' . $href . '">' . $word . '</a> ]</div>' . "\n";
    } else {
        // Dangling link
        return $hr . '<div style="text-align:' . $align . '">' . '[ <span class="noexists">' . $word . '<a href="' . $href . '">?</a></span> ]</div>' . "\n";
    }
}
コード例 #28
0
ファイル: nav.inc.php プロジェクト: big2men/qhm
/**
 *   QHM Nav plugin
 *   -------------------------------------------
 *
 *   Copyright (c) 2014 hokuken
 *   http://hokuken.com/
 *
 *   created  : 2014/06/11
 *   modified :
 *
 *   Switch Nav content and convert
 *
 *   Usage :
 *     #nav(OtherSiteNavigator)
 *
 */
function plugin_nav_convert()
{
    global $vars, $navbar;
    static $nav = NULL;
    $qm = get_qm();
    $qt = get_qt();
    $num = func_num_args();
    if ($num > 0) {
        // Try to change default 'SiteNavigator' page name (only)
        if ($num > 1) {
            return '#nav: 引数が多すぎます。' . "<br />\n";
        }
        if ($nav !== NULL) {
            return '#nav: 既に変更されています:' . h($nav) . "<br />\n";
        }
        if ($qt->getv('plugin_nav_source')) {
            return '#nav: 既にナビの内容を変更しています。' . "<br />\n";
        }
        $args = func_get_args();
        //ナビの内容を受け取る
        if (strpos($args[0], "\r") !== FALSE) {
            if (isset($vars['page_alt'])) {
                return '#nav: 利用できません。';
            }
            $source = str_replace("\r", "\n", $args[0]);
            $qt->setv_once('plugin_nav_source', $source);
            return '';
        }
        if (!is_page($args[0])) {
            return 'ページがみつかりません:' . h($args[0]) . "<br />\n";
        } else {
            $nav = $args[0];
            // Set
            return '';
        }
    } else {
        // Output navbar page data
        $page = $nav === NULL ? $navbar : $nav;
        if ($source = $qt->getv('plugin_nav_source')) {
            // Cut fixed anchors
            $source = preg_replace('/^(\\*{1,3}.*)\\[#[A-Za-z][\\w-]+\\](.*)$/m', '$1$2', $source);
            return convert_html($source);
        }
        if (!is_page($page)) {
            return '';
        } else {
            if (isset($vars['preview']) && $vars['page'] == $page) {
                // Cut fixed anchors
                $navtext = preg_replace('/^(\\*{1,3}.*)\\[#[A-Za-z][\\w-]+\\](.*)$/m', '$1$2', $vars['msg']);
                return convert_html($navtext);
            } else {
                // Cut fixed anchors
                $navtext = preg_replace('/^(\\*{1,3}.*)\\[#[A-Za-z][\\w-]+\\](.*)$/m', '$1$2', get_source($page));
                return convert_html($navtext);
            }
        }
    }
}
コード例 #29
0
ファイル: fb_likegate.inc.php プロジェクト: big2men/qhm
function plugin_fb_likegate_convert()
{
    global $vars, $script, $nowindow;
    $qm = get_qm();
    $qt = get_qt();
    $editable = edit_auth($page, FALSE, FALSE);
    //本文部分以外のページに設置した場合、無効にする
    if (isset($vars['page_alt']) && is_page($vars['page_alt'])) {
        if ($editable) {
            return 'error: #fb_likegate: 本文に設置してください。';
        } else {
            return '';
        }
    }
    $page = isset($vars['page']) ? $vars['page'] : '';
    //キャッシュ無効
    $qt->enable_cache = false;
    $args = func_get_args();
    if (count($args) === 0) {
        return $qm->replace('fmt_err_cvt', 'fb_likegate', $qm->m['plg_fb_likegate']['err_usage']);
    }
    list($unlike_page) = $args;
    $fb_apps_url = plugin_fb_root_get_apps_url();
    //Facebook からのアクセス
    if ($signed_request = plugin_fb_root_parse_request()) {
        $nowindow = 1;
        $edit_url = $script . '?cmd=edit&page=' . rawurlencode($page);
        plugin_fb_root_set_page();
        $liked = (isset($signed_request->page->liked) and !is_null($signed_request->page->liked)) ? $signed_request->page->liked : $signed_request->page['liked'];
        if ($liked) {
            $src = get_source($page);
            foreach ($src as $i => $line) {
                if (strpos($line, '#fb_likegate') === 0) {
                    unset($src[$i]);
                    break;
                }
            }
            $body = convert_html($src);
        } else {
            $src = get_source($unlike_page);
            foreach ($src as $i => $line) {
                if (strpos($line, '#fb_page') === 0) {
                    unset($src[$i]);
                }
            }
            $body = convert_html($src);
        }
        if ($editable) {
            $add_body = convert_html($qm->replace('plg_fb_likegate.ntc_admin_fb', $edit_url, $unlike_page, $fb_apps_url));
        }
        force_output_message('', '', $add_body . $body);
    } else {
        if ($editable) {
            return convert_html($qm->replace('plg_fb_likegate.ntc_admin', $unlike_page, $fb_apps_url));
        }
        force_output_message($qm->m['plg_fb_likegate']['ntc_title'], '', $qm->m['plg_fb_likegate']['ntc_msg']);
    }
}
コード例 #30
0
ファイル: aname.inc.php プロジェクト: big2men/qhm
function plugin_aname_tag($args = array(), $convert = TRUE)
{
    global $vars;
    static $_id = array();
    $qm = get_qm();
    if (empty($args) || $args[0] == '') {
        return plugin_aname_usage($convert);
    }
    $id = array_shift($args);
    $body = '';
    if (!empty($args)) {
        $body = array_pop($args);
    }
    $f_noid = in_array('noid', $args);
    // Option: Without id attribute
    $f_super = in_array('super', $args);
    // Option: CSS class
    $f_full = in_array('full', $args);
    // Option: With full(absolute) URI
    if ($body == '') {
        if ($f_noid) {
            return plugin_aname_usage($convert, $qm->m['plg_aname']['err_notitle_noid']);
        }
        if ($f_super) {
            return plugin_aname_usage($convert, $qm->m['plg_aname']['err_notitle_super']);
        }
        if ($f_full) {
            return plugin_aname_usage($convert, $qm->m['plg_aname']['err_notitle_full']);
        }
    }
    if (PLUGIN_ANAME_ID_MUST_UNIQUE && isset($_id[$id]) && !$f_noid) {
        return plugin_aname_usage($convert, $qm->replace('plg_aname.err_not_unique', h($id)));
    } else {
        if (strlen($id) > PLUGIN_ANAME_ID_MAX) {
            return plugin_aname_usage($convert, $qm->m['plg_aname']['err_longid']);
        }
        if (!preg_match(PLUGIN_ANAME_ID_REGEX, $id)) {
            return plugin_aname_usage($convert, $qm->replace('plg_aname.err_invalidid', h($id)));
        }
        $_id[$id] = TRUE;
        // Set
    }
    if ($convert) {
        $body = htmlspecialchars($body);
    }
    $id = htmlspecialchars($id);
    // Insurance
    $class = $f_super ? 'anchor_super' : 'anchor';
    $attr_id = $f_noid ? '' : ' id="' . $id . '" name="' . $id . '"';
    $url = $f_full ? get_script_uri() . '?' . rawurlencode($vars['page']) : '';
    if ($body != '') {
        $href = ' href="' . $url . '#' . $id . '"';
        $title = ' title="' . $id . '"';
    } else {
        $href = $title = '';
    }
    return '<a class="' . $class . '"' . $attr_id . $href . $title . '>' . $body . '</a>';
}