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_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_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; }
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 } }
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; }
/** * 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; }
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; }
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 ''; } }
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; }
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]; }
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_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>'; } }
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_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_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; }
/** * パスワード再発行のフォーム表示 */ 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); }
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; }
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_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']); } }
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; } }
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_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_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_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>'; }
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()); }
function plugin_video_convert() { global $vars, $script; $qm = get_qm(); $qt = get_qt(); $args = func_get_args(); return plugin_video_body($args); }
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"; } }
/** * 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_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>'; }