# Util

FSWiki全体で使用されるユーティリティ関数群を提供するモジュールです。

## override_die

dieとexitのオーバライド操作を行います。

## url_encode

*CORE::GLOBAL::die = \&Util::_die; *CORE::GLOBAL::exit = \&Util::_exit;

引数で渡された文字列をURLエンコードして返します。

     $str = Util::url_encode($str)

## url_decode

引数で渡された文字列をURLデコードして返します。

     $str = Util::url_decode($str);

## cookie_path

Cookieのpathに指定する文字列を取得します。

     $path = Util::cookie_path($wiki);

## make_filename

ディレクトリ、ファイル名、拡張子を結合してファイル名を生成します。

     my $filename = Util::make_filename(ディレクトリ名,ファイル名,拡張子);

## escapeHTML

引数で渡された文字列のHTMLタグをエスケープして返します。

     $str = Util::escapeHTML($str);

## format_date

$retstr =~ s/&([a-zA-Z0-9]{2,8});/&$1;/go;

日付を"yyyy年mm月dd日 hh時mi分ss秒"形式にフォーマットします。

     my $date = Util::format_date(time());

## trim

文字列の両端の空白を切り落とします。

     $text = Util::trim($text);

## delete_tag

タグを削除して文字列のみを取得します。

     my $html = "文字列";
     # <B>と</B>を削除し、"文字列"のみ取得
     my $text = Util::delete_tag($html);

## check_pagename

ページ名が使用可能かどうかチェックします。
使用可能な場合は真、そうでない場合は偽を返します。

     if(Util::check_pagename($pagename)){
       # 使用可能なページ名の場合
     }else{
       # 使用できないページ名の場合
     }

## check_numeric

数値かどうかチェックします。数値の場合は真、そうでない場合は偽を返します。

     if(Util::check_numeric($param)){
       # 整数の場合の処理
     } else {
       # 整数でない場合の処理
     }

## send_mail

管理者にメールを送信します。 setup.datの設定内容に応じてsendmailコマンドもしくはSMTP通信によってメールが送信されます。 どちらも設定されていない場合は送信を行わず、エラーにもなりません。 SMTPで送信する場合、このメソッドを呼び出した時点でNet::SMTPがuseされます。

     Util::send_mail($wiki,件名,本文);

## handyphone

クライアントが携帯電話かどうかチェックします。 携帯電話の場合は真、そうでない場合は偽を返します。

     if(Util::handyphone()){
       # 携帯電話の場合の処理
     } else {
       # 携帯電話でない場合の処理
     }

## smartphone

クライアントがスマートフォンかどうかチェックします。 スマートフォンの場合は真、そうでない場合は偽を返します。

     if(Util::smartphone()){
       # スマートフォンの場合の処理
     } else {
       # スマートフォンでない場合の処理
     }

## load_config_hash

設定ファイルを格納するディレクトリ（デフォルトでは./config）から指定したファイルを読み込み、 ハッシュリファレンスとして取得します。第一引数には$wikiを渡し、第二引数でファイル名を指定します。

     my $hashref = Util::load_config_hash($wiki, "hoge.dat");

## load_config_text

設定ファイルを格納するディレクトリ（デフォルトでは./config）から指定したファイルを読み込み、 ファイル内容を文字列として取得します。第一引数には$wikiを渡し、第二引数でファイル名を指定します。

     my $content = Util::load_config_text($wiki, "hoge.dat");

## save_config_hash

引数で渡したハッシュリファレンスを設定ファイルを格納するディレクトリ（デフォルトでは./config）に 指定したファイル名で保存します。第一引数には$wikiを渡し、第二引数でファイル名を指定します。

     Util::save_config_hash($wiki, ファイル名, ハッシュリファレンス);

## save_config_text

引数で渡したテキストを設定ファイルを格納するディレクトリ（デフォルトでは./config）に 指定したファイル名で保存します。第一引数には$wikiを渡し、第二引数でファイル名を指定します。

     Util::save_config_hash($wiki, ファイル名, テキスト);

## sync_update_config

設定ファイルの読み込みと書き込みを同一のロック内で行うための関数。 読み込んだ内容を変換して書き込みを行うような場合に使用します。

     sub convert {
       my $hash = shift;
       ...
       return $hash;
     }

     Util::sync_update_config($wiki, ファイル名, \&convert);

## file_lock

引数で渡したファイルをロックします。 ファイル操作終了後は必ず同じファイル名でUtil::file_unlockを呼び出して下さい。 ロックに失敗した場合はdieします。

     Util::file_lock(ファイル名, リトライ回数（≒タイムアウト時間、省略可）);

ロックしているファイルを記録し、終了時に未解除のロックを解除する保険をつけた方が良いかも知れない。

## file_unlock

debug("file_lock($$): $lock");

引数で渡したファイルのロックを解除します。

     Util::file_unlock(ファイル名);

## inline_error

debug("file_unlock($$): $lock");

インラインプラグインからエラーメッセージを返す場合に使用してください。

      return Util::inline_error('プロジェクト名が指定されていません。');

## paragraph_error

パラグラフプラグインからエラーメッセージを返す場合に使用してください。

     return Util::paragraph_error('プロジェクト名が指定されていません。');

## get_response

指定のURLにGETリクエストを発行し、レスポンスのボディ部を返却します。 この関数を呼び出した時点でLWP::UserAgentがuseされます。

     my $response = Util::get_response($wiki,URL);

## get_module_file

モジュール名からファイル名を取得します。 例えばplugin::core::Installを渡すとplugin/core/Install.pmが返却されます。

     $file = Util::get_module_file(モジュール名);

## debug

デバッグログ（debug.log）をカレントディレクトリに出力します。 Wiki::DEBUG=1の場合のみ出力を行います。

## md5

Digest::Perl::MD5を用いたパスワードの暗号化を行います。 第一引数にパスワード、第二引数にアカウントを渡します。 このメソッドを呼び出した時点でDigest::Perl::MD5がuseされます。

     my $md5pass = Util::md5($pass,$account);

## make_content_disposition

HTTPヘッダのContent-Disposition行を生成します。 添付ファイルやPDFなどに使用します。

## restore_die

dieとexitのオーバライド操作を解除します。