function plugin_mypage_convert() { global $_mypage_msg; @(list($is_page) = func_get_args()); $is_page = empty($is_page) ? false : true; $auth_key = Auth::get_user_info(); // 認証確認 if (empty($auth_key['key'])) { return ''; } // マイページ利用の確認 if (empty($auth_key['mypage'])) { return ''; } // マイページの作成により制御 // マイページ未作成の場合 // is_page : true -> プラグイン利用ページに遷移 -> #mypage(1) // : false -> 新規作成画面に遷移 -> #mypage // The page cannot be prepared. -> ページの準備ができていません。 if ($is_page && !is_page($auth_key['mypage'])) { return $_mypage_msg['msg_no_page']; } // 画面に誘導 header('Location: ' . get_page_location_uri($auth_key['mypage'])); // 誘導失敗時の対処(ブラウザによる) die_message($_mypage_msg['err_jump']); }
function plugin_group_convert() { global $_group_msg; $auth_key = Auth::get_user_info(); if (empty($auth_key['group'])) { return ''; } $argv = func_get_args(); $i = count($argv); if ($i < 2) { return <<<EOD <div> \t<label>{$_group_msg['group']}</label>: \t{$auth_key['group']} </div> EOD; } $msg = $argv[$i - 1]; array_pop($argv); if (in_array($auth_key['group'], $argv)) { return RendererFactory::factory(str_replace("\r", "\n", $msg)); } return ''; }
function plugin_navibar_convert() { global $do_backup, $trackback, $referer; global $function_freeze; global $vars; global $whatsnew, $whatsdeleted; /* if ($_LINK['reload'] == '') { return '<p class="message_box ui-state-error ui-corner-all">#navibar: plugin called from wikipage. skipped.</p>'; } */ $_page = isset($vars['page']) ? $vars['page'] : null; $is_read = arg_check('read') && is_page($_page); $is_freeze = is_freeze($_page); $is_readonly = Auth::check_role('readonly') || PKWK_READONLY == Auth::ROLE_AUTH && Auth::get_role_level() > Auth::ROLE_AUTH ? true : false; $cmd = isset($vars['cmd']) ? $vars['cmd'] : null; $num = func_num_args(); $args = $num ? func_get_args() : array(); if (IS_MOBILE) { $ret[] = '<ul data-role="listview">'; } else { $ret[] = '<ul>'; } while (!empty($args)) { $name = array_shift($args); switch ($name) { case 'freeze': case 'unfreeze': if ($is_read && $function_freeze && !($_page == $whatsnew || $_page == $whatsdeleted)) { if ($is_freeze) { $name = 'unfreeze'; } else { $name = 'freeze'; } $ret[] = _navibar($name); } break; case 'list': if ($cmd !== 'list') { $ret[] = _navibar($name); } else { $ret[] = _navibar('filelist'); } break; case 'backup': if ($do_backup) { $ret[] = _navibar($name); } break; case 'brokenlink': case 'template': case 'source': case 'diff': case 'reload': case 'copy': if ($is_read || !empty($_page) && !($_page == $whatsnew || $_page == $whatsdeleted)) { $ret[] = _navibar($name); } break; case 'trackback': if ($trackback) { if (!empty($_page) && !($_page == $whatsnew || $_page == $whatsdeleted)) { $ret[] = _navibar($name, 'Trackback(' . tb_count($_page) . ')'); } else { // $ret[] = _navibar($name, 'Trackback list'); } } break; case 'referer': case 'skeylist': case 'linklist': if ($referer && !empty($_page)) { $ret[] = _navibar($name); } break; case 'log': if (!empty($_page)) { $ret[] = _navibar($name); } case '|': if (end($ret) !== '<ul>') { $ret[] = '</ul>'; $ret[] = "\n"; $ret[] = !IS_MOBILE ? '<ul>' : '<ul data-role="listview">'; } break; case 'attach': case 'upload': if ($is_read && (bool) ini_get('file_uploads') && !$is_freeze && !($_page == $whatsnew || $_page == $whatsdeleted) && !$is_readonly) { $ret[] = _navibar($name); } break; case 'new': case 'newsub': case 'edit': case 'guiedit': if (!empty($_page) && $is_read && $function_freeze && !$is_freeze && !($_page == $whatsnew || $_page == $whatsdeleted) && !$is_readonly) { $ret[] = _navibar($name); } break; case 'login': $auth_key = Auth::get_user_info(); if (empty($auth_key['key'])) { $ret[] = _navibar($name); } break; default: $ret[] = _navibar($name); break; } } if (end($ret) === '<ul>') { array_pop($ret); array_pop($ret); } else { $ret[] = '</ul>'; } $body = "\n" . join('', $ret) . "\n"; if (IS_MOBILE) { return $body; } else { return '<nav class="navibar">' . $body . '</nav>' . "\n"; } }
/** * ページのリンクリストを作る * @param $pages ページ * @param $cmd 使用するプラグイン * @param boolean $with_filename ページのファイル名も表示する * @return string */ private static function getPageLists($pages, $cmd, $with_filename) { global $read_auth_pages; $contents = array(); // ユーザ名取得 $auth_key = Auth::get_user_info(); // コンテンツ管理者以上は、: のページも閲覧可能 $has_permisson = Auth::check_role('role_contents_admin'); foreach ($pages as $page) { $wiki = Factory::Wiki($page); // 存在しない場合、当然スルー if (!$wiki->has()) { continue; } // 隠しページの場合かつ、隠しページを表示できる権限がない場合スルー if ($wiki->isHidden() && $has_permisson) { continue; } // 閲覧できる権限がない場合はスルー if (!$wiki->isReadable()) { continue; } $_page = Utility::htmlsc($page, ENT_QUOTES); $url = $wiki->uri($cmd); if (!IS_MOBILE) { $contents[] = '<li><a href="' . $url . '">' . $_page . '</a> ' . $wiki->passage() . ($with_filename ? '<br /><var>' . Utility::htmlsc($wiki->filename) . '</var>' : '') . '</li>'; } else { $contents[] = '<li><a href="' . $url . '" data-transition="slide">' . $_page . '</a>' . '<span class="ui-li-count">' . $wiki->passage(false, false) . '</span></li>'; } } return $contents; }
function dav_get_existpages_cache() { static $retval, $attaches; $cache_name = CACHE_DIR . PKWK_EXSISTS_DATA_CACHE; if (!cache_timestamp_compare_date('wiki', $cache_name)) { unset($retval); } if (isset($retval)) { return $retval; } $retval = array(); $auth_key = Auth::get_user_info(); $pages = get_existpages_cache(DATA_DIR, PKWK_TXT_EXTENTION, false); if (!isset($attaches)) { $attaches = get_attachfiles_cache(); } foreach ($pages as $file => $val) { $_page = $val['page']; $_time = $val['time']; $wiki = Factory::Wiki($_page); if ($wiki->isHidden()) { continue; } //if (is_ignore_page($_page)) continue; if (!$wiki->isReadable()) { continue; } if (PLUGIN_DAV_SHOWONLYEDITABLE && !$wiki->isEditable()) { continue; } $retval[$_page]['time'] = $_time; $retval[$_page]['file'] = isset($attaches[$_page]) ? $attaches[$_page] : array(); } asort($retval); return $retval; }
function plugin_login_inline() { if (PKWK_READONLY != Auth::ROLE_AUTH) { return ''; } $auth_key = Auth::get_user_info(); // Offline if (empty($auth_key['key'])) { return plugin_login_auth_guide(); } // Online return PluginRenderer::hasPlugin($auth_key['api']) ? PluginRenderer::executePluginInline($auth_key['api']) : ''; }
Utility::dieMessage(sprintf($_string['plugin_not_implemented'], Utility::htmlsc($cmd)), 501); } else { // プラグインのactionを実行する。 // 帰り値:array('title', 'body', 'http_code'); $retvars = PluginRenderer::executePluginAction($cmd); } } if ($is_protect) { // Location で飛ぶようなプラグインの対応のため // 上のアクションプラグインの実行後に処理を実施 PluginRenderer::executePluginBlock('protect'); die('<var>PLUS_PROTECT_MODE</var> is set.'); } /////////////////////////////////////// // Page output $auth_key = Auth::get_user_info(); $base = $defaultpage; if (!empty($auth_key['home']) && isset($vars['page']) && ($vars['page'] == $defaultpage || $vars['page'] == $auth_key['home'])) { // ログイン時のホームページを基準とする(実際はあまり使われてないが) $base = $defaultpage = $auth_key['home']; } else { $base = isset($vars['page']) ? $vars['page'] : $defaultpage; } $s_base = Utility::htmlsc(Utility::stripBracket($base)); if (isset($retvars['msg']) && !empty($retvars['msg'])) { $title = str_replace('$1', $s_base, $retvars['msg']); $page = str_replace('$1', Factory::Wiki($base)->link('related'), $retvars['msg']); } else { $title = $s_base; $page = Factory::Wiki($base)->link('related'); }