Wiki API
コンストラクタ
ユーザを追加します
$wiki->add_user(ID,パスワード,ユーザタイプ);
ユーザタイプには管理者ユーザの場合0、一般ユーザの場合1を指定します。 なお、このメソッドは実行時にWiki.pmにユーザを追加するためのもので、 このメソッドに対してユーザを追加しても永続化は行われません。
ユーザが存在するかどうかを確認します
ログイン情報を取得します。 ログインしている場合はログイン情報を含んだハッシュリファレンスを、 ログインしていない場合はundefを返します。
my $info = $wiki->get_login_info(); if(defined($info)){ # ログインしていない場合はundef my $id = $info->{id}; # ログインユーザのID my $type = $info->{type}; # ログインユーザの種別(0:管理者 1:一般) }
ログインチェックを行います。
エディットフォームプラグインを追加します
$wiki->add_editform_plugin(エディットフォームプラグインのクラス名,優先度);
優先度が大きいほど上位に表示されます。
編集フォーム用のプラグインの出力を取得します
管理者用のメニューを追加します。管理者ユーザがログインした場合に表示されます。 優先度が高いほど上のほうに表示されます。
$wiki->add_admin_menu(メニュー項目名,遷移するURL,優先度,詳細説明);
ログインユーザ用のメニューを追加します。 ユーザがログインした場合に表示されます。管理者ユーザの場合も表示されます。 優先度が高いほど上のほうに表示されます。
$wiki->add_admin_menu(メニュー項目名,遷移するURL,優先度,詳細説明);
管理者用のメニューを取得します。
プラグインをインストールします。このメソッドはwiki.cgiによってcallされます。 プラグイン開発において通常、このメソッドを使用することはありません。
プラグインがインストールされているかどうかを調べます。
メニュー項目を追加します。既に同じ名前の項目が登録されている場合は上書きします。
$wiki->add_menu(項目名,URL,優先度);
優先度が高いほど左側に表示されます。
フックプラグインを登録します。登録したプラグインはdo_hookメソッドで呼び出します。
$wiki->add_hook(フック名,フックプラグインのクラス名);
add_hookメソッドで登録されたフックプラグインを実行します。 引数にはフックの名前に加えて任意のパラメータを渡すことができます。 これらのパラメータは呼び出されるクラスのhookメソッドの引数として渡されます。
$wiki->do_hook(フック名[,引数1[,引数2...]]);
アクションハンドラプラグインを追加します。 リクエスト時にactionというパラメータが一致するアクションが呼び出されます。
$wiki->add_handler(actionパラメータ,アクションハンドラのクラス名);
ログインユーザ用のアクションハンドラを追加します。 このメソッドによって追加されたアクションハンドラはログインしている場合のみ実行可能です。 それ以外の場合はエラーメッセージを表示します。
$wiki->add_user_handler(actionパラメータ,アクションハンドラのクラス名);
管理者用のアクションハンドラを追加します。 このメソッドによって追加されたアクションハンドラは管理者としてログインしている場合のみ実行可能です。 それ以外の場合はエラーメッセージを表示します。
$wiki->add_admin_handler(actionパラメータ,アクションハンドラのクラス名);
インラインプラグインを追加します。
このメソッドは3.4系との互換性を維持するために残しました。3.6で廃止するものとします。
インラインプラグインを登録します。プラグインの出力タイプには"WIKI"または"HTML"を指定します。 省略した場合は"HTML"を指定したものとみなされます。
$wiki->add_inline_plugin(プラグイン名,プラグインのクラス名,プラグインの出力タイプ);
パラグラフプラグインを登録します。プラグインの出力タイプには"WIKI"または"HTML"を指定します。 省略した場合は"HTML"を指定したものとみなされます。
$wiki->add_inline_plugin(プラグイン名,プラグインのクラス名,プラグインの出力タイプ);
プラグインの情報を取得します
my $info = $wiki->get_plugin_info("include"); my $class = $info->{CLASS}; # プラグインのクラス名 my $type = $info->{TYPE}; # inlineまたはparagraph my $format = $info->{FORMAT}; # HTMLまたはWIKI
add_handlerメソッドで登録されたアクションハンドラを実行します。 アクションハンドラのdo_actionメソッドの戻り値を返します。
my $content = $wiki->call_handler(actionパラメータ);
引数で渡したWikiフォーマットの文字列をHTMLに変換して返します。
my $html = $wiki->process_wiki(文字列);
インラインプラグイン、パラグラフプラグインの呼び出し(内部処理用の関数)。 初期のメソッドのため命名規則(privateメソッドのメソッド名は_から始める) に従っていません。
エラーの場合、呼び出します。 アクションハンドラからエラーを報告する際に使用してください。
error
my $self = shift; my $wiki = shift; ... return $wiki->error(エラーメッセージ); }
プラグインのインスタンスを取得します。Wiki.pmで内部的に使用されるメソッドです。 プラグイン開発において通常、このメソッドを使用する必要はありません。
インラインプラグインをパースしてコマンドと引数に分割します。
フォーマットプラグインを追加します。 フォーマットプラグインはconvert_to_fswikiメソッドとconvert_from_fswikiメソッドを 実装したクラスでなくてはなりません。
$wiki->add_format_plugin(文法名,クラス名);
インストールされているフォーマットプラグインの一覧を取得します。
my @formats = $wiki->get_format_names();
各Wiki書式で記述したソースをFSWikiの書式に変換します。
$source = $wiki->convert_to_fswiki($source,"YukiWiki");
インライン書式のみ変換を行う場合は第三引数に1を渡します。
$source = $wiki->convert_to_fswiki($source,"YukiWiki",1);
FSWikiの書式で記述したソースを各Wikiの書式に変換します。
$source = $wiki->convert_from_fswiki($source,"YukiWiki");
インライン書式のみ変換を行う場合は第三引数に1を渡します。
$source = $wiki->convert_from_fswiki($source,"YukiWiki",1);
現在のユーザが編集に使用するフォーマットを取得します。 formatプラグインがアクティベートされていない場合は常に"FSWiki"を返します。
my $format = $wiki->get_edit_format();
headタグ内に出力する情報を追加します。 ただしサイトテンプレートが対応している必要があります。
$wiki->add_head_info("");
ページを凍結します
$wiki->freeze_page(ページ名);
ページの凍結を解除します
$wiki->un_freeze_page(ページ名);
凍結されているページのリストを取得します。
引数で渡したページが凍結中かどうかしらべます
if($wiki->is_freeze(ページ名)){ ... }
引数で渡したページが編集可能かどうかを調べます。 編集不可モード(setup.plで$accept_editが0に設定されている場合)はログインしていれば編集可能、 ページが凍結されている場合は管理者ユーザでログインしている場合に編集可能となります。
if($wiki->can_modify_page(ページ名)){ ... }
ページの参照レベルを設定します。
$wiki->set_page_level(ページ名,公開レベル);
ページの参照レベルを取得します。 ページ名が指定されていない場合、全てのページの参照レベルを ハッシュリファレンスで返します。
my $level = $get_page_level(ページ名);
ページが参照可能かどうかを取得します。
if($wiki->can_show(ページ名)){ # 参照可能 } else { # 参照不可能 }
ページにジャンプするためのURLを生成するユーティリティメソッドです。 引数としてページ名を渡します。
$wiki->create_page_url("FrontPage");
上記のコードは通常、以下のURLを生成します。
wiki.cgi?page=FrontPage
任意のURLを生成するためのユーティリティメソッドです。 引数としてパラメータのハッシュリファレンスを渡します。
$wiki->create_url({action=>HOGE,type=>1});
上記のコードは通常、以下のURLを生成します。
wiki.cgi?action=HOGE&type=1
アクションハンドラ中でタイトルを設定する場合に使用します。
$wiki->set_title(タイトル[,編集系のページがどうか]);
編集系の画面の場合、第二引数に1を指定してください。 ロボット対策用に以下のMETAタグが出力されます。
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
タイトルを取得します。
ページの一覧を取得します。 引数としてハッシュリファレンスを渡すことで取得内容を指定することが可能。 デフォルトでは全てのページを名前でソートしたリストを返却する。
以下の例は参照権のあるページのみ取得し、更新日時でソートする。
my @list = $wiki->get_page_list({-sort => 'last_modified', -permit => 'show'});
以下の例は全てのページを取得し、名前でソートする。
my @list = $wiki->get_page_list({-sort => 'name'});
以下の例は最新の10件を取得する。
my @list = $wiki->get_page_list({-sort=>'last_modified',-max=>10});
ページの物理的な(データファイルの更新日時)最終更新時刻を取得します。
my $modified = $wiki->get_last_modified(ページ名);
ページ論理的な最終更新時刻を取得します。 「タイムスタンプを更新しない」にチェックを入れてページを保存した場合は このメソッドで返される日時は保存前のものになります。
my $modified = $wiki->get_last_modified2(ページ名);
ページのソースを取得します。
第三引数にフォーマット名を渡した場合のみ、フォーマットプラグインによる ソースの変換を行います。それ以外の場合は必要に応じてプラグイン側で Wiki::convert_from_fswikiメソッドを呼んで変換を行います。
バックアップされたソースを取得します。バックアップが存在しない場合は空文字列を返します。 世代バックアップに対応したストレージを使用している場合は第二引数に取得する世代を指定することができます。
# 世代バックアップを使用していない場合 my $backup = $wiki->get_backup(ページ名); # 世代バックアップを使用している場合 my $backup = $wiki->get_backup(ページ名,世代);
世代は古いものから順に0~の数値で指定します。
ページを保存します。 キャッシュモードONで利用している場合、ページのキャッシュも削除されます。
$wiki->save_page(ページ名,ページ内容);
フォーマットプラグインによるフォーマットの変換は行われません。 つまり、フォーマットプラグインを使用している場合、このメソッドに渡す Wikiソースは事前にFSWiki形式に変換されたソースでなければなりません。
保存時にタイムスタンプを更新しない場合、第三引数に1を渡します。
$wiki->save_page(ページ名,ページ内容,1);
ページが存在するかどうか調べます。
if($wiki->page_exists(ページ名)){ # ページが存在する場合の処理 } else { # ページが存在しない場合の処理 }
CGIオブジェクトを取得
my $cgi = $wiki->get_CGI;
引数で渡したページにリダイレクトします。 ページの保存後にページを再表示する場合はこのメソッドを使用して下さい。 なお、このメソッドを呼び出すとそこでスクリプトの実行は終了し、呼び出し元に制御は戻りません。
$wiki->redirect("FrontPage");
指定のURLにリダイレクトします。 このメソッドを呼び出すとそこでスクリプトの実行は終了し、呼び出し元に制御は戻りません。
$wiki->redirectURL(リダイレクトするURL);
グローバル設定を取得もしくは変更します
# データファイルを格納するディレクトリ my $data_dir = $wiki->config('data_dir'); # 設定を$data_dirで上書き $wiki->config('data_dir',$data_dir);
ページのHTMLキャッシュを取得します。 キャッシュが存在しない場合は空文字列を返します。
my $page = ページ名; my $main = メイン領域の場合1、サイドバーやヘッダ、フッタ領域の場合は0; my $cache = $wiki->get_page_cache($page,$main);
ページのHTMLキャッシュを更新します。
$wiki->update_page_cache(ページ名,HTML);
引数で渡したページ名がキャッシュ対象かどうかを取得します。
Farm機能が有効になっているかどうかを取得します
if($wiki->farm_is_enable()){ # Farmが有効になっているときの処理 } else { # Farmが無効になっているときの処理 }
子Wikiを作成します。引数にはWikiの名前、作成するWikiサイトの管理者ID、パスワードを渡します。 このメソッド内ではWikiサイト名のバリデーションや重複チェックは行われません。 事前に行う必要があります。このメソッドはfarmプラグインを使用している場合のみ使用可能です。
$wiki->create_wiki(Wikiサイト名,管理者ID,パスワード);
子Wikiを削除します。引数には削除するWikiサイトのパス(PATH_INFO部分)を渡します。 このメソッドはfarmプラグインを使用している場合のみ使用可能です。
$wiki->remove_wiki(Wikiサイトのパス);
引数で渡した名称の子Wikiが存在するかどうかを調べます。 このメソッドはfarmプラグインを使用している場合のみ使用可能です。
$wiki->wiki_exists(Wikiサイト名);
子Wikiを配列で取得します。孫Wiki、曾孫Wikiは配列のリファレンスとして格納されています。
子Wikiのツリーを配列で取得します。 ネストしたWikiは配列リファレンスで格納します。