FarmモジュールはWiki.pmを継承し、WikiFarmの実装に必要なメソッドを提供します。
WikiモジュールはWikiの基本的な処理、プラグインの管理などを実装したクラスです。
アクションハンドラプラグインを登録します。
$wiki->add_handler(actionパラメータ,アクションハンドラのクラス名);
フックプラグインを登録します。
$wiki->add_hook(フック名,フックプラグインのクラス名);
インラインプラグインを登録します。
$wiki->add_plugin(プラグイン名,インラインプラグインのクラス名);
プラグインをインストールするために各プラグインのパッケージ毎に用意された インストールモジュール(Install.pm)を読み込みます。
$wiki->install(プラグイン);
ストレージオブジェクトを設定します。デフォルトではWiki::DefaultStorageを使用します。 Wiki::DefaultStorageと同等のメソッドを備えるクラスを作成することで、 RDBMSやバージョニングシステムを利用することが可能になります。
ユーザを追加します。
$wiki->add_user(ID,パスワード,ユーザタイプ);
ユーザタイプには管理者ユーザの場合0、一般ユーザの場合1を指定します。
管理者用のメニューを追加します。管理者ユーザがログインすると表示されます。
$wiki->add_admin_menu(項目名,URL);
管理者用のアクションハンドラを追加します。このメソッドによって追加されたアクションハンドラは 管理者としてログインしている場合のみ実行可能です。それ以外の場合はエラーメッセージを表示します。
エディットフォームプラグインを追加します。
$wiki->add_editform_plugin(エディットフォームプラグインのクラス名,重み);
重みが大きいほど上位に表示されます。
引数で指定したページのソースを取得します。
my $source = $wiki->get_page(ページ名);
ページを保存します。
$wiki->save_page(ページ名,ページ内容);
アクションハンドラ中で画面のタイトルを設定するのに使用します。
$wiki->set_title(タイトル);
編集系の画面の場合、第二引数に1を指定してください。 ロボット対策用に以下のMETAタグが出力されます。
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
ページ名の一覧をリストで取得します。
my @list = $wiki->get_page_list;
ページの最終更新時刻を取得します。
my $modified = $wiki->get_last_modified(ページ名);
メニュー項目を追加します。 既に同じ名前の項目が登録されている場合は上書きします。
$wiki->add_menu(項目名,URL,重み);
重みが大きいほど左側に表示されます。
add_hookメソッドで登録されたフックプラグインを実行します。
$wiki->do_hook(フック名);
add_handlerメソッドで登録されたアクションハンドラを実行します。 アクションハンドラのdo_actionメソッドの戻り値を返します。
my $content = $wiki->call_handler(actionパラメータ);
アクションハンドラ中等でエラーが発生した場合に使用するメソッドです。
sub do_action { my $self = shift; my $wiki = shift; ... return $wiki->error(エラーメッセージ); }
引数で渡したWikiフォーマットの文字列をHTMLに変換して返します。
my $html = $wiki->process_wiki(文字列);
引数で指定したページが存在するかどうかをしらべます。
if($wiki->page_exists(ページ名)){ # ページが存在する場合の処理 } else { # ページが存在しない場合の処理 }
引数で指定したページが凍結中かどうかを調べます。
if($wiki->is_freeze(ページ名)){ ... }
ページを凍結します。
$wiki->freeze_page(ページ名);
ページの凍結を解除します。
$wiki->un_freeze_page(ページ名);
CGIクラスのオブジェクトを取得します。
my $cgi = $wiki->get_CGI;
ログイン情報を取得します。ログインしている場合はログイン情報を含んだハッシュリファレンスを、 ログインしていない場合はundefを返します。
my $info = $wiki->get_login_info(); if(defined($info)){ # ログインしていない場合はundef my $id = $info->{id}; # ログインユーザのID my $type = $info->{type}; # ログインユーザの種別(0:管理者 1:一般) }
引数で渡したページが編集可能かどうかを調べます。 編集不可モード(setup.plで$accept_editが0に設定されている場合)はログインしていれば編集可能、 ページが凍結されている場合は管理者ユーザでログインしている場合に編集可能となります。
if($wiki->can_modify_page(ページ名)){ ... }
設定内容を取得または上書きします。
# データファイルを格納するディレクトリ my $data_dir = $wiki->config('data_dir');
# 設定を$data_dirで上書き $wiki->config('data_dir',$data_dir);
引数で渡したページにリダイレクトします。 ページの保存後にページを再表示する場合はこのメソッドを使用して下さい。 なお、このメソッドを呼び出すとそこでスクリプトの実行は終了し、呼び出し元に制御は戻りません。
$wiki->redirect("FrontPage");
子Wikiを作成します。引数にはWikiの名前、作成するWikiサイトの管理者ID、パスワードを渡します。 このメソッド内ではWikiサイト名のバリデーションや重複チェックは行われません。事前に行う必要があります。
$wiki->create_wiki(Wikiサイト名,管理者ID,パスワード);
子Wikiを削除します。引数には削除するWikiサイトのパス(PATH_INFO部分)を渡します。
$wiki->remove_wiki(Wikiサイトのパス);
引数で渡した名称の子Wikiが存在するかどうかを調べます。
$wiki->wiki_exists(Wikiサイト名);
子Wikiを配列で取得します。孫Wiki、曾孫Wikiは配列のリファレンスとして格納されています。
Utilモジュールはユーティリティ関数をまとめたモジュールです。
引数で渡した文字列をURLエンコードして返します。
$str = Util::url_encode($str)
引数で渡した文字列をURLデコードして返します。
$str = Util::url_decode($str);
管理者にメールを送信します。 sendmailのパスと管理者のメールアドレスが設定されていない場合は送信されません。
Util::send_mail(件名,本文);
日付を「YYYY年MM月DD日 HH時MM分SS秒」という文字列にフォーマットします。
my $now_date_str = Util::format_date(time());
文字列の両端の空白文字を取り除いた文字列を返します。
my $text = Util::trim($text);
文字列からHTMLタグを削除し、文字列のみを取得します。
my $html = "<B>文字列</B>"; # <B>と</B>を削除し、"文字列"のみ取得 my $text = Util::delete_tag($html);
引数に渡した変数が整数かどうかをチェックします。 整数の場合は真を、そうでない場合は偽を返します。
if(Util::check_numeric($param)){ # 整数の場合の処理 } else { # 整数でない場合の処理 }
インラインプラグインなどからエラーメッセージを返す場合に使用します。
return Util::error('プロジェクト名が指定されていません。');
設定ファイルを格納するディレクトリ(デフォルトでは./config)から指定したファイルを読み込み、 ファイル内容を文字列として取得します。第一引数には$wikiを渡し、第二引数でファイル名を指定します。
my $content = $wiki->load_config_text($wiki,"hoge.dat");
設定ファイルを格納するディレクトリ(デフォルトでは./config)から指定したファイルを読み込み、 ハッシュリファレンスとして取得します。第一引数には$wikiを渡し、第二引数でファイル名を指定します。
my $hashref = $wiki->load_config_hash($wiki,"hoge.dat");
引数で渡したテキストを設定ファイルを格納するディレクトリ(デフォルトでは./config)に 指定したファイル名で保存します。第一引数には$wikiを渡し、第二引数でファイル名を指定します。
$wiki->save_config_text($wiki,$content);
引数で渡したハッシュリファレンスを設定ファイルを格納するディレクトリ(デフォルトでは./config)に 指定したファイル名で保存します。第一引数には$wikiを渡し、第二引数でファイル名を指定します。
$wiki->save_config_text($wiki,$hashref);