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; } }
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; } }
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">×</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>'; } } }
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>"; } }
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; }
/** * 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&mode=archives&date=' . rawurlencode($year . $month); $list .= '<li><a href="' . $archives_url . '">' . $year . '年' . $month . '月 (' . $num . ')' . '</a></li>'; } } $list .= '</ul>'; return $list; }
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; }
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; }
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>'; }
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'; } }
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; } }
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; }
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; }
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; }
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; }
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); } }
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; }
/** * 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; } } }
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); }
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); }
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; }
/** * 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); } } } }
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']); } }
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; }
/** * トップに戻るリンク * ------------------------------------------- * 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; }
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); }
/** * 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 ''; }
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; }
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 ""; }
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 ''; }