function do_plugin_convert($name, $args = '') { return PluginRenderer::executePluginBlock($name, $args); }
public function toString() { // Call #plugin return PluginRenderer::executePluginBlock($this->name, $this->param); }
/** * ページ出力の内容を生成 * @return string */ public function getContent() { global $_LINK, $info, $_LANG; global $site_name, $newtitle, $modifier, $modifierlink, $menubar, $sidebar, $headarea, $footarea, $navigation; $body = $this->body; // Linkタグ $_LINK = self::getLinkSet($this->page); // ページをコンストラクト $view = new View(THEME_NAME); // ページ名が指定されているか $view->is_page = isset($this->page); // readプラグイン(通常時動作)か? $view->is_read = $this->cmd === 'read'; // ページが凍結されているか $view->is_freeze = isset($this->page) ? Factory::Wiki($this->page)->isFreezed() : false; if ($this->cmd === 'read') { // ページを読み込む場合 global $adminpass, $_string, $menubar, $sidebar; // パスワードがデフォルトのままだった時に警告を出す if ($adminpass == '{x-php-md5}1a1dc91c907325c69271ddf0c944bc72' || $adminpass == '') { $body = '<p class="alert alert-danger"><span class="fa fa-exclamation-triangle"></span>' . '<strong>' . $_string['warning'] . '</strong> ' . $_string['changeadminpass'] . '</p>' . "\n" . $body; } // デバッグモード時に記載 if (DEBUG === true && !empty($info)) { $body = '<div class="panel panel-info" id="pkwk-info">' . '<div class="panel-heading"><span class="fa fa-info-circle"></span>' . $_string['debugmode'] . '</div>' . "\n" . '<div class="panel-body">' . "\n" . '<ul>' . "\n" . '<li>' . join("</li>\n<li>", $info) . '</li>' . "\n" . '</ul></div></div>' . "\n\n" . $body; } // リファラーを保存 Factory::Referer($this->page)->set(); // 最終更新日 $view->lastmodified = '<time datetime="' . Time::getZoneTimeDate('c', $this->wiki->time()) . '">' . Time::getZoneTimeDate('D, d M Y H:i:s T', $this->wiki->time()) . ' ' . $this->wiki->passage() . '</time>'; // ページの添付ファイル $view->attaches = $this->getAttaches(); // 関連リンク $view->related = $this->getRelated(); // 注釈 global $foot_explain; ksort($foot_explain, SORT_NUMERIC); $notes = count($foot_explain) !== 0 ? '<ul>' . join("\n", $foot_explain) . '</ul>' : ''; // 検索語句をハイライト if (isset($vars['word'])) { $notes = self::hilightWord($vars['word'], $notes); $body = '<p class="alert alert-info">' . $_string['word'] . '<var>' . Utility::htmlsc($vars['word']) . '</var></p>' . "\n" . '<hr />' . "\n" . self::hilightWord($vars['word'], $body); } $view->notes = $notes; // モードによって、3カラム、2カラムを切り替える。 $isExistSideBar = Factory::Wiki($sidebar)->has(); // #nomenubarが指定されると$menubarはnullになる if (empty($menubar) && !$isExistSideBar) { $view->colums = View::CLASS_NO_COLUMS; } elseif (empty($menubar) || !$isExistSideBar) { $view->colums = View::CLASS_TWO_COLUMS; } else { $view->colums = View::CLASS_THREE_COLUMS; } $view->menubar = !empty($menubar) && Factory::Wiki($menubar)->has() ? PluginRenderer::executePluginBlock('menu') : null; $view->sidebar = $isExistSideBar ? PluginRenderer::executePluginBlock('side') : null; // ステータスアイコン if ($this->wiki->isFreezed()) { // 錠前マーク(フリーズされてる) $view->status = '<i class="fa fa-lock" title="Freezed" aria-hidden="true"></i>'; } else { if (!$this->wiki->isEditable()) { // 駐禁マーク(編集できない) $view->status = '<i class="fa fa-ban" title="Not Editable" aria-hidden="true"></i>'; } else { // 鉛筆マーク(編集できる) $view->status = '<i class="fa fa-pencil-square" title="Editable" aria-hidden="true"></i>'; } } } else { // プラグインを実行する場合、大抵の場合メニューバーやサイドバーを表示しない $view->colums = View::CLASS_NO_COLUMS; // ステータスアイコンを歯車にする $view->status = '<i class="fa fa-cog" title="Function mode" aria-hidden="true"></i>'; } // ナビバー $view->navibar = PluginRenderer::executePluginBlock('navibar', $view->conf['navibar']); // ツールバー $view->toolbar = PluginRenderer::executePluginBlock('toolbar', $view->conf['toolbar']); // <head>タグ内 $view->head = self::getHead($view->conf); // ナビゲーション $view->navigation = Factory::Wiki($navigation)->has() ? PluginRenderer::executePluginBlock('suckerfish') : null; // ヘッドエリア $view->headarea = Factory::Wiki($headarea)->has() ? PluginRenderer::executePluginInline('headarea') : null; // フッターエリア $view->footarea = Factory::Wiki($footarea)->has() ? PluginRenderer::executePluginInline('footarea') : null; // パンくずリスト $view->topicpath = $this->getBreadcrumbs(); // 中身 $view->body = $body; // サイト名 $view->site_name = $site_name; // ページ名 $view->page = $this->page; // タイトル $view->title = !empty($newtitle) ? $newtitle : $this->title; // 管理人の名前 $view->modifier = $modifier; // 管理人のリンク $view->modifierlink = $modifierlink; // JavaScript $view->js = $this->getJs(); // 汎用ワード $view->strings = $_LANG; // 表示言語 $view->lang = substr(LANG, 0, 2); // テーマディレクトリへの相対パス $view->path = SKIN_DIR . THEME_PLUS_NAME . (!IS_MOBILE ? PLUS_THEME : 'mobile') . '/'; // リンク $view->links = $_LINK; // 処理にかかった所要時間 $view->proc_time = $this->getProcessTime(); // メモリ使用量 $view->memory = $this->getMemoryUsage(); // このへんにViewオブジェクトのキャッシュ処理を入れれば大幅に速くなるが・・・。 return $view->__toString(); }
/** * ブロック型プラグインを実行 * @param string $name プラグイン名 * @param string $args プラグインに渡す引数 * @return string */ public function pluginBlock($name, $args = '') { return PluginRenderer::executePluginBlock($name, $args); }
function plugin_login_convert() { global $vars, $auth_api, $_login_msg; @(list($type) = func_get_args()); $auth_key = Auth::get_user_info(); // LOGIN if (!empty($auth_key['key'])) { if (isset($auth_api[$auth_key['api']]['hidden_login']) && $auth_api[$auth_key['api']]['hidden_login']) { return $_login_msg['err_notusable']; } if ($auth_key['api'] == 'plus') { return <<<EOD <div> <label>{$_login_msg['msg_username']}</label>: {$auth_key['key']} </div> EOD; } if (PluginRenderer::hasPlugin($auth_key['api'])) { return PluginRenderer::executePluginBlock($auth_key['api']); } return $_login_msg['err_notusable']; } $ret = array(); $ret[] = '<form action="' . get_script_uri() . '" method="post">'; $ret[] = '<input type="hidden" name="cmd" value="login" />'; $ret[] = isset($type) ? '<input type="hidden" name="type" value="' . Utility::htmlsc($type, ENT_QUOTES) . '" />' : null; $ret[] = isset($vars['page']) ? '<input type="hidden" name="type" value="' . $vars['page'] . '" />' : null; $ret[] = '<div class="login_form">'; $select = ''; //if (LOGIN_USE_AUTH_DEFAULT) { // $select .= '<option value="plus" selected="selected">Normal</option>'; //} $sw_ext_auth = false; foreach ($auth_api as $api => $val) { if (!$val['use']) { continue; } if (isset($val['hidden']) && $val['hidden']) { continue; } if (isset($val['hidden_login']) && $val['hidden_login']) { continue; } $displayname = isset($val['displayname']) ? $val['displayname'] : $api; if ($api !== 'plus') { $sw_ext_auth = true; } $select .= '<option value="' . $api . '">' . $displayname . '</option>' . "\n"; } if (empty($select)) { return $_login_msg['err_notusable']; } // 認証機能が使えない if ($sw_ext_auth) { // 外部認証がある $ret[] = '<select name="api">' . "\n" . $select . '</select>'; } else { // 通常認証のみなのでボタン $ret[] = '<input type="hidden" name="api" value="plus" />'; } $ret[] = '<button type="submit" class="btn btn-success" /><span class="fa fa-power-off"></span>' . $_login_msg['btn_login'] . '</button>'; $ret[] = '</div>'; $ret[] = '</form>'; return join("\n", $ret); }
PluginRenderer::executePluginBlock('protect', $plugin_arg); } if (!empty($cmd)) { if (!PluginRenderer::hasPluginMethod($cmd, 'action')) { // プラグインにactionが定義されてない場合 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']);