示例#1
0
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
function plugin_commu_value_convert()
{
    if (func_num_args() != 1) {
        return PLUGIN_COMMU_USAGE_CONV;
    }
    //キャッシュを無効に
    if (QHM_VERSION < 4.6) {
        global $enable_cache;
        $enable_cache = false;
    } else {
        $qt = get_qt();
        $qt->enable_cache = false;
    }
    list($name) = func_get_args();
    // strip_autolink() is not needed for size plugin
    //$body = strip_htmltag($body);
    if ($name == '') {
        return PLUGIN_COMMU_USAGE_CONV;
    }
    if (isset($_SESSION['commu_user'])) {
        $userdata = $_SESSION['commu_user'];
        if (isset($userdata[$name])) {
            $buffer = $userdata[$name];
            $buffer = mb_convert_encoding($buffer, "UTF-8", "UTF-8,EUC-JP");
            if ($name == 'expiration' && $buffer != '') {
                $buffer = date('Y年m月d日', $buffer);
            }
            return $buffer;
        } else {
            return PLUGIN_NOT_COMMU_FIELD;
        }
    } else {
        return PLUGIN_NOT_COMMU_FIELD;
    }
}
示例#3
0
function plugin_canonical_show_info()
{
    global $vars, $style_name;
    $qt = get_qt();
    $page = $vars['page'];
    if (edit_auth($page, FALSE, FALSE)) {
        if (strpos($style_name, 'haik_') !== 0) {
            return '
<div style="border:solid 1px #00e;background-color:#eef;max-width:80%;width:80%;text-align:left;padding:0 1.5em;margin:1em auto;">
  <p>
    <strong>このページは canonical URL が指定されています。</strong><br>
    <a href="' . h($qt->getv('canonical_url')) . '" target="_blank">確認</a>
  </p>
</div>';
        } else {
            return '
<div class="alert alert-info">
  <button type="button" class="close" data-dismiss="alert">
    <span aria-hidden="true">&times;</span>
    <span class="sr-only">Close</span>
  </button>

  <strong>このページは canonical URL が指定されています。</strong><br>
  <a href="' . h($qt->getv('canonical_url')) . '" target="_blank" class="btn btn-info">確認</a>
</div>';
        }
    }
}
示例#4
0
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>";
    }
}
示例#5
0
文件: uname.inc.php 项目: big2men/qhm
function plugin_uname_inline()
{
    $qt = get_qt();
    //---- キャッシュのための処理を登録 -----
    if ($qt->create_cache) {
        $args = func_get_args();
        return $qt->get_dynamic_plugin_mark(__FUNCTION__, $args);
    }
    //------------------------------------
    global $vars;
    $name = isset($vars['uname']) ? $vars['uname'] : '';
    //unameパラメータがセットされていない場合
    if ($name == '') {
        return 'あなた';
    } else {
        $name = htmlspecialchars(mb_convert_encoding($name, SOURCE_ENCODING, 'UTF8,EUC-JP,Shift_JIS'));
    }
    $args = func_get_args();
    $num = count($args);
    $ntitle = "さん";
    if ($num > 1) {
        strip_htmltag(array_pop($args), FALSE);
        $tmpstr = strip_htmltag(array_pop($args), FALSE);
        if ($tmpstr == "none") {
            $ntitle = '';
        } else {
            $ntitle = $tmpstr;
        }
    }
    return $name . $ntitle;
}
示例#6
0
/**
 *   QBlog Achives Plugin
 *   -------------------------------------------
 *   ./plugin/qblog_archives.inc.php
 *
 *   Copyright (c) 2012 hokuken
 *   http://hokuken.com/
 *
 *   created  : 12/07/27
 *   modified :
 *
 *   Description
 *   
 *   
 *   Usage :
 *   
 */
function plugin_qblog_archives_convert()
{
    global $vars, $script, $qblog_close;
    //閉鎖中は何も表示しない
    if ($qblog_close && !ss_admin_check()) {
        return '';
    }
    //---- キャッシュのための処理を登録 -----
    $qt = get_qt();
    if ($qt->create_cache) {
        $args = func_get_args();
        return $qt->get_dynamic_plugin_mark(__FUNCTION__, $args);
    }
    //------------------------------------
    $archives_file = CACHEQBLOG_DIR . 'qblog_archives.dat';
    if (file_exists($archives_file)) {
        $archives_list = file_get_contents($archives_file);
    } else {
        $archives_list = array();
    }
    $list = '';
    $list .= '<ul class="qblog_archives">';
    foreach (explode("\n", $archives_list) as $line) {
        if (rtrim($line) != '') {
            list($year, $month, $num) = explode(",", rtrim($line));
            $archives_url = $script . '?QBlog&amp;mode=archives&amp;date=' . rawurlencode($year . $month);
            $list .= '<li><a href="' . $archives_url . '">' . $year . '年' . $month . '月 (' . $num . ')' . '</a></li>';
        }
    }
    $list .= '</ul>';
    return $list;
}
示例#7
0
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;
}
示例#8
0
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;
}
示例#9
0
function plugin_commu_logout_inline()
{
    //キャッシュを無効に
    if (QHM_VERSION < 4.6) {
        global $enable_cache;
        $enable_cache = false;
    } else {
        $qt = get_qt();
        $qt->enable_cache = false;
    }
    $args = func_get_args();
    $text = strip_autolink(array_pop($args));
    if ($text == "") {
        $text = 'ログアウト';
    }
    $dirpath = '';
    if ($handle = opendir('./commu')) {
        $dirpath = "./commu/";
        closedir($handle);
    } else {
        if ($handle = opendir('../commu')) {
            $dirpath = "../commu/";
            closedir($handle);
        } else {
            return PLUGIN_COMMU_INFO_NOCOMMU;
        }
    }
    return '<a href="' . $dirpath . 'user_logout.php">' . $text . '</a>';
}
示例#10
0
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';
    }
}
示例#11
0
function plugin_newpage_action()
{
    global $vars;
    $qm = get_qm();
    if (PKWK_READONLY) {
        die_message($qm->m['fmt_err_pkwk_readonly']);
    }
    if ($vars['page'] == '') {
        $retvars['msg'] = $qm->m['plg_newpage']['label'];
        $retvars['body'] = plugin_newpage_convert();
        if (preg_match('/id="([^"]+)"/', $retvars['body'], $ms)) {
            $domid = $ms[1];
            //jquery ライブラリの読み込み
            $qt = get_qt();
            $qt->setv('jquery_include', true);
            $addscript = <<<EOS
<script type="text/javascript">
jQuery(function(){
\tjQuery("#{$domid}").focus().select();
});
</script>
EOS;
            $qt->appendv_once('plugin_select_fsize', 'beforescript', $addscript);
        }
        return $retvars;
    } else {
        $page = strip_bracket($vars['page']);
        $r_page = rawurlencode(isset($vars['refer']) ? get_fullname($page, $vars['refer']) : $page);
        $r_refer = rawurlencode($vars['refer']);
        pkwk_headers_sent();
        header('Location: ' . get_script_uri() . '?cmd=read&page=' . $r_page . '&refer=' . $r_refer);
        exit;
    }
}
示例#12
0
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;
}
示例#13
0
文件: qcart.inc.php 项目: big2men/qhm
function plugin_qcart_convert()
{
    global $script;
    $args = func_get_args();
    $cnt = func_num_args();
    $dir = 'qcart';
    $position = 'right';
    list($position, $dir) = array_pad($args, 2, '');
    $dir = $dir == '' ? 'qcart' : htmlspecialchars($dir);
    $position = $position == '' ? 'right' : htmlspecialchars($position);
    $position = $position == 'right' || $position == 'left' ? $position : 'right';
    if ($position == 'right') {
        $position .= ';margin-left:1em;';
    } else {
        $position .= ';margin-right:1em;';
    }
    $addscript = <<<EOD
<script src="./{$dir}/shop/quickcart.js" type="text/javascript" language="javascript"></script>
EOD;
    $qt = get_qt();
    $qt->appendv_once('plugin_qcart', 'beforescript', $addscript);
    $myurl = str_replace('index.php', '', $script);
    return <<<EOD
  <div style="width:200px;float:{$position};">
  <script>cart('{$myurl}{$dir}/cgi-bin/')</script>
  </div>
EOD;
}
示例#14
0
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;
}
示例#15
0
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;
}
示例#16
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);
    }
}
示例#17
0
function plugin_qblog_recent_convert()
{
    global $vars, $script, $qblog_page_re, $qblog_close;
    //閉鎖中は何も表示しない
    if ($qblog_close && !ss_admin_check()) {
        return '';
    }
    //---- キャッシュのための処理を登録 -----
    $qt = get_qt();
    if ($qt->create_cache) {
        $args = func_get_args();
        return $qt->get_dynamic_plugin_mark(__FUNCTION__, $args);
    }
    //------------------------------------
    $display_num = PLUGIN_QBLOG_RECENT_DEFAULT_NUM;
    if (func_num_args()) {
        $args = func_get_args();
        $display_num = $args[0];
    }
    $recent_file = CACHEQBLOG_DIR . 'qblog_recent.dat';
    if (file_exists($recent_file)) {
        $recent_list = explode("\n", file_get_contents($recent_file));
    } else {
        $recent_list = array();
    }
    //件数を抜く
    $size = array_shift($recent_list);
    $list = '';
    $list .= '<ul class="qblog_recent">';
    foreach ($recent_list as $i => $line) {
        if ($i >= $display_num) {
            break;
        }
        if (rtrim($line) != '') {
            $pagename = rtrim($line);
            $title = get_page_title($pagename);
            if ($pagename == $title) {
                if (preg_match($qblog_page_re, $pagename, $mts)) {
                    $blog_date = "{$mts[1]}年{$mts[2]}月{$mts[3]}日";
                    $title = " No.{$mts[4]}";
                }
            }
            //! 表示方法 要検討
            $list .= '<li><a href="' . $script . '?' . rawurldecode($pagename) . '">' . $blog_date . $title . '</a></li>';
        }
    }
    $list .= '</ul>';
    if (!is_bootstrap_skin()) {
        $include_bs = '
<link rel="stylesheet" href="skin/bootstrap/css/bootstrap-custom.min.css" />
<script type="text/javascript" src="skin/bootstrap/js/bootstrap.min.js"></script>';
        $qt->appendv_once('include_bootstrap_pub', 'beforescript', $include_bs);
    }
    //qblog.css を読み込む
    $head = '
    <link rel="stylesheet" href="plugin/qblog/qblog.css" />';
    $qt->appendv_once('qblog_beforescript', 'beforescript', $head);
    return $list;
}
示例#18
0
/**
 *   QHM Secret Plugin ver 0.9
 *   -------------------------------------------
 *   plugin/secret.inc.php
 *   
 *   Copyright (c) 2010 hokuken
 *   http://hokuken.com/
 *   
 *   created  : 2007-09-11
 *   modified :
 *   
 *   簡易パスワード認証ページを作るプラグイン
 *   
 *   Usage :
 *     &secret(パスワード(英数のみ));
 *   
 */
function plugin_secret_convert()
{
    global $vars, $script;
    $qm = get_qm();
    $qt = get_qt();
    //---- キャッシュのための処理を登録 -----
    if ($qt->create_cache) {
        $args = func_get_args();
        return $qt->get_dynamic_plugin_mark(__FUNCTION__, $args);
    }
    //------------------------------------
    $page = isset($vars['page']) ? $vars['page'] : '';
    $en_page = rawurlencode($page);
    $secretplugin = isset($vars['secretplugin']) ? $vars['secretplugin'] : '';
    $password = isset($vars['password']) ? $vars['password'] : '';
    $auth_url = $script . "?plugin=secret&page=" . urlencode($page);
    $args = func_get_args();
    $masterpasswd = array_pop($args);
    if ($masterpasswd == "") {
        return $qm->replace('fmt_err_cvt', 'secret', 'パスワードを設定して下さい。');
    }
    $editable = edit_auth($page, FALSE, FALSE);
    if ($editable) {
        return "<div style=\"border:dashed 1px #f00;background-color:#fee;padding:1em;\"><p><strong>{$qm->m['plg_secret']['ntc_admin']}</strong></p></div>";
    } else {
        //session check
        if (isset($_SESSION['secretplugin_' . $en_page]) && $_SESSION['secretplugin_' . $en_page] == $en_page) {
            return '';
        }
        if ($secretplugin == "secretplugin") {
            //passwd check
            if ($password == $masterpasswd) {
                $_SESSION['secretplugin_' . $en_page] = $en_page;
                return "";
            } else {
                header("Location: {$auth_url}&errmsg=true");
                exit;
            }
        }
        //携帯アクセスのことを考えての処理(cookieをちぇっくして、処理を行う)
        if (isset($vars['chkck'])) {
            $cookie = $_COOKIE['QHMDUMMY'];
            setcookie('QHMDUMMY', '', time() - 3600);
            //del cookie
            if ($cookie) {
                header("Location: {$auth_url}");
                exit;
            } else {
                header("Location: {$auth_url}&mobssid=yes");
                exit;
            }
        } else {
            //はじめてのアクセス
            setcookie('QHMDUMMY', TRUE);
            header('Location: ' . $script . '?cmd=read&page=' . $en_page . '&chkck');
            exit;
        }
    }
}
示例#19
0
文件: icon.inc.php 项目: big2men/qhm
function plugin_icon_set_font_awesome()
{
    $qt = get_qt();
    $addcss = '
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
';
    $qt->appendv_once('plugin_icon_font_awesome', 'beforescript', $addcss);
}
示例#20
0
function plugin_showrss_convert()
{
    global $script;
    $qm = get_qm();
    $qt = get_qt();
    if (func_num_args() == 0) {
        // 引数がない場合はエラー
        return $qm->replace('fmt_err_cvt', 'showrss', $qm->m['plg_showrss']['err_noparams']);
    }
    if (!extension_loaded('xml')) {
        // xml 拡張機能が有効でない場合。
        return $qm->replace('fmt_err_cvt', 'showrss', $qm->m['plg_showrss']['err_ex_xml_load']);
    }
    //---- キャッシュのための処理を登録 -----
    if ($qt->create_cache) {
        $args = func_get_args();
        return $qt->get_dynamic_plugin_mark(__FUNCTION__, $args);
    }
    //------------------------------------
    $array = func_get_args();
    $rssurl = $tmplname = $showline = $usecache = $usetimestamp = '';
    switch (func_num_args()) {
        case 5:
            $usetimestamp = trim($array[4]);
        case 4:
            $usecache = $array[3];
        case 3:
            $showline = trim($array[2]);
        case 2:
            $tmplname = strtolower(trim($array[1]));
        case 1:
            $rssurl = trim($array[0]);
    }
    //自己参照を防止する
    $p = parse_url($rssurl);
    if (strpos($p['query'], 'cmd=blog_rss') === FALSE && strpos(dirname($rssurl) . '/index.php', $script) === 0) {
        return '<strong style="color:red">Error</strong><br />#showrss: 自分自身のRSSは読み込めません。#recent をお使いください。';
    }
    // RSS パスの値チェック
    if (!is_url($rssurl)) {
        return $qm->replace('fmt_err_cvt', 'showrss', $qm->replace('plg_showrss.err_syntax', h($rssurl)));
    }
    $class = "ShowRSS_html_{$tmplname}";
    if (!class_exists($class)) {
        $class = 'ShowRSS_html';
    }
    list($rss, $time) = plugin_showrss_get_rss($rssurl, $usecache);
    if ($rss === FALSE) {
        return $qm->replace('fmt_err_cvt', 'showrss', $qm->m['plg_showrss.err_cannot_get']);
    }
    $obj = new $class($rss, $showline);
    $timestamp = '';
    if ($usetimestamp > 0) {
        $time = get_date('Y/m/d H:i:s', $time);
        $timestamp = "<p style=\"font-size:10px; font-weight:bold\">Last-Modified:{$time}</p>";
    }
    return $obj->toString($timestamp);
}
示例#21
0
function plugin_qblog_category_convert()
{
    global $vars, $script;
    global $qblog_default_cat, $qblog_close;
    //閉鎖中は何も表示しない
    if ($qblog_close && !ss_admin_check()) {
        return '';
    }
    //---- キャッシュのための処理を登録 -----
    $qt = get_qt();
    if ($qt->create_cache) {
        $args = func_get_args();
        return $qt->get_dynamic_plugin_mark(__FUNCTION__, $args);
    }
    //------------------------------------
    $display_number = TRUE;
    $display_zero = FALSE;
    if (func_num_args()) {
        $args = func_get_args();
        foreach ($args as $arg) {
            if ($arg == 'numoff') {
                $display_number = FALSE;
            }
            if ($arg == 'displayall') {
                $display_zero = TRUE;
            }
        }
    }
    $catlist_file = CACHEQBLOG_DIR . 'qblog_categories.dat';
    if (file_exists($catlist_file)) {
        $cat_list = explode("\n", file_get_contents($catlist_file));
    } else {
        $cat_list = array();
    }
    $li = $first_li = '';
    foreach ($cat_list as $line) {
        if (rtrim($line) != '') {
            list($cat, $num) = explode("\t", rtrim($line));
            if (!$display_zero && $num == 0) {
                continue;
            }
            $cat_link = $script . '?QBlog&mode=category&catname=' . rawurlencode($cat);
            $number_str = $display_number ? ' (' . $num . ')' : '';
            if (trim($cat) == $qblog_default_cat) {
                $first_li .= '<li><a href="' . $cat_link . '">' . $cat . $number_str . '</a></li>';
            } else {
                $li .= '<li><a href="' . $cat_link . '">' . $cat . $number_str . '</a></li>';
            }
        }
    }
    $list = <<<EOD
<ul class="qblog_categories">
{$first_li}
{$li}
</ul>
EOD;
    return $list;
}
示例#22
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);
            }
        }
    }
}
示例#23
0
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']);
    }
}
示例#24
0
function plugin_checkagree_convert()
{
    static $s_chkagree_cnt = 0;
    //jquery ライブラリの読み込み
    $qt = get_qt();
    $qm = get_qm();
    $qt->setv('jquery_include', true);
    $body = '';
    $args = func_get_args();
    $body = array_pop($args);
    if (count($args) > 2) {
        return $qm->replace('fmt_err_iln', 'size', $qm->m['plg_checkagree']['err_usage']);
    }
    list($label, $align) = array_pad($args, 2, '');
    if (array_key_exists($label, array('left' => '', 'center' => '', 'right' => ''))) {
        $align = $label;
        $label = $qm->m['plg_checkagree']['label'];
    }
    $label = $label != '' ? $label : $qm->m['plg_checkagree']['label'];
    $align = $align != '' ? $align : $qm->m['plg_checkagree']['align'];
    if (!array_key_exists($align, array('left' => '', 'center' => '', 'right' => ''))) {
        $align = $qm->m['plg_checkagree']['align'];
    }
    //Convert multi-line args to HTML
    if (isset($body)) {
        $body = str_replace("\r", "\n", str_replace("\r\n", "\n", $body));
        $lines = explode("\n", $body);
        $body = convert_html($lines);
        $body = '<div style="text-align:' . $align . ';"><label><input type="checkbox" name="agreement" value="1" style="margin-right:3px;" />' . $label . '</label></div><div class="agree_box">' . $body . '</div>';
    } else {
        $body = '';
    }
    // はじめての定義の場合、javascriptを出力
    if ($s_chkagree_cnt == 0) {
        $head = '
<script type="text/javascript">
$(document).ready(function(){
	$("div.agree_box").css({display:"none"});
	$("input:checkbox[name=agreement]")
		.click(function(){
			if ($(this).is(":checked")) {
				$(this).parent().parent().next("div.agree_box").fadeIn();
			}
			else {
				$(this).parent().parent().next("div.agree_box").fadeOut();
			}
		});
});
</script>
<style type="text/css">
</style>
';
        $qt->appendv_once('plugin_checkagree', 'beforescript', $head);
    }
    return $body;
}
示例#25
0
/**
 *   トップに戻るリンク
 *   -------------------------------------------
 *   scrollup.inc.php
 *
 *   Copyright (c) 2014 hokuken
 *   http://hokuken.com/
 *
 *   created  : 14/08/26
 *   modified :
 *
 *   Usage :
 *     #scrollup
 *
 */
function plugin_scrollup_convert()
{
    $args = func_get_args();
    $qt = get_qt();
    $target = 'body';
    $title = 'トップ';
    if (count($args) > 0) {
        $target = h(trim($args[0]));
        if (isset($args[1])) {
            $title = h(trim($args[1]));
        }
    }
    if (exist_plugin('icon')) {
        plugin_icon_set_font_awesome();
    }
    $add_style = <<<EOD
<style data-qhm-plugin="scrollup">
.qhm-plugin-scrollup {
  color: inherit;
  bottom: 10px;
  right: 10px;
  cursor: pointer;
}
.qhm-plugin-scrollup.affix:hover {
  color: inherit;
  opacity: .8;
}
</style>
EOD;
    $qt->appendv_once('plugin_scrollup_style', 'beforescript', $add_style);
    $add_script = <<<EOD
<script data-qhm-plugin="scrollup">
\$(function() {
    \$("body").append('<a class="qhm-plugin-scrollup"></a>').find(".qhm-plugin-scrollup")
    .html('<i class="fa fa-arrow-up fa-2x"></i>')
    .attr({
      'data-target': "{$target}",
      'title': "{$title}"
    })
    .affix({
      offset: {
        top: 50
      }
    });

    \$(".qhm-plugin-scrollup").on("click", function(e){
      QHM.scroll(\$(this).data("target"));
      e.preventDefault();
      return false;
    });
});
</script>
EOD;
    $qt->appendv_once('plugin_scrollup_script', 'lastscript', $add_script);
    return;
}
示例#26
0
文件: nonav.inc.php 项目: big2men/qhm
function plugin_nonav_set_js()
{
    $qt = get_qt();
    $addscript = <<<EOD
<script>
\$(function(){
  \$("button.navbar-toggle").hide();
});
</script>
EOD;
    $qt->appendv_once('plugin_nonav_script', 'lastscript', $addscript);
}
示例#27
0
/**
 *   Switch Design Layout Plugin
 *   -------------------------------------------
 *   plugin/layout.inc.php
 *   
 *   Copyright (c) 2014 hokuken
 *   http://hokuken.com/
 *   
 *   created  : 2014-05-21
 *   modified :
 *   
 *   指定したレイアウトテンプレートを使用します。
 *   
 *   Usage :
 *     #layout(template_name)
 */
function plugin_layout_convert()
{
    global $vars, $include_skin_file_path, $style_name;
    $qm = get_qm();
    $qt = get_qt();
    $args = func_get_args();
    if (count($args) < 1) {
        return $qm->replace('必ずレイアウト名を指定してください。');
    }
    $template_name = array_pop($args);
    $qt->setv('layout_name', $template_name);
    return '';
}
示例#28
0
文件: html.inc.php 项目: big2men/qhm
function plugin_html_convert()
{
    global $script, $vars;
    $qm = get_qm();
    $qt = get_qt();
    $page = isset($vars['page_alt']) ? $vars['page_alt'] : $vars['page'];
    $ids = $qt->getv('plugin_html_id');
    if (!$ids) {
        $ids = array($page => 0);
    }
    $id = ++$ids[$page];
    $qt->setv('plugin_html_id', $ids);
    if (!(PKWK_READONLY > 0 or is_freeze($page) or plugin_html_is_edit_auth($page))) {
        return $qm->replace('fmt_msg_not_editable', '#html', $page);
    }
    $args = func_get_args();
    $body = array_pop($args);
    $size = '';
    $class = 'autofit_iframe';
    foreach ($args as $arg) {
        if ($arg == 'noskin') {
            $noskin = true;
            break;
        } else {
            if ($arg == 'iframe') {
                $iframe = true;
            } else {
                if (preg_match('/^(\\d+)(?:x(\\d+))?$/', $arg, $mts)) {
                    $x = "width:{$mts[1]}px;";
                    $y = isset($mts[2]) ? "height:{$mts[2]}px;" : '';
                    $size = $x . $y;
                    $class = '';
                }
            }
        }
    }
    if ($noskin) {
        pkwk_common_headers();
        print $body;
        exit;
    } else {
        if ($iframe) {
            $qt->setv('jquery_include', true);
            exist_plugin('iframe');
            $qt->appendv_once('plugin_iframe', 'beforescript', PLUGIN_IFRAME_FIT_IFRAME_JS);
            $r_page = rawurlencode($page);
            $body = '<iframe src="' . $script . '?cmd=html&page=' . $r_page . '&id=' . $id . '" frameborder="0" class="' . $class . '" style="' . $size . '"></iframe>';
        }
    }
    return $body;
}
示例#29
0
function plugin_beforescript_convert()
{
    global $vars;
    $qm = get_qm();
    $page = $vars['page'];
    if (!(PKWK_READONLY > 0 or is_freeze($page) or plugin_beforescript_is_edit_auth($page))) {
        return $qm->replace('fmt_err_not_editable', '#html', $page);
    }
    $args = func_get_args();
    $addscript = array_pop($args);
    $qt = get_qt();
    $qt->appendv('beforescript', $addscript);
    return "";
}
示例#30
0
function plugin_blog_body_convert()
{
    static $blog_body_called = false;
    $qm = get_qm();
    $qt = get_qt();
    if ($blog_body_called) {
        if ($qt->getv('blog_rss_mode')) {
            return '';
        }
        return $qm->replace('fmt_err_already_called', '#blog_body');
    }
    $blog_body_called = true;
    return '';
}