NAME

Ssm::Common - ssm2対応 共通関数モジュール

NOTES

  $Id: Ssm-Common1_33.html,v 1.2 2018/08/12 23:34:55 sugu Exp $
  Please do 'perldoc -t Ssm::Common' if you get MOJIBAKE.


SYNOPSIS

  use Ssm::Common;
  &printfile($filepath);
  etc...
  ミドルウェアSSM用の基本関数モジュールです。対応しているのは ssm2 です。
  主として、スクリプトssm2が内部で使用します。
  関数内では、ssm2(実行ファイル)で定義するパッケージ main または Ssm::Config 内の変数を使用します。


DESCRIPTION

殆どの関数は、スクリプトssm2が内部的に使用しますが、SSMタグに指定またはスクリプトファイル内でモジュール名を付けて呼び出すことによりユーザが使用できる関数もあります。

sub stop_h() (SSM内部使用関数)

引数
なし(第1引数として自動的にシグナルを受け取る)

戻り値
なし

機能
処理が中断された時の終了処理を規定

sub ssmerror($msg) (SSM内部使用関数)

引数
文字列(1つのみ)

戻り値
なし

機能
HTMLヘッダーに続いて、渡された文字列を含むHTMLドキュメントを、エラーメッセージとして出力して終了する。 変数 $main::debug が真なら、デバッグ出力用関数 &debugprt() を呼び出し、出力にデバッグ情報を含める。

sub debugprt() (SSM内部使用関数)

引数
なし

戻り値
なし

機能
SSM内部使用変数値をHTMLフォーマットで出力

sub hide_fname($file) (SSM内部使用関数)

引数
ファイル名を示す文字列(1つのみ)

戻り値
引数のファイル名を加工した(エラーメッセージ用)文字列

機能
変数 $main::debug が真ならファイル名を含んだ、偽ならファイル名を含まないエラーメッセージ用文字列を返す。

sub hide_error($errormsg) (SSM内部使用関数)

引数
エラーメッセージ文字列(1つのみ)

戻り値
引数の文字列を加工した(エラーメッセージ用)文字列

機能
変数 $main::debug が真なら引数文字列を変更せずに、偽ならエラーが起こったことのみを表す文字列を返す。

sub errormsg($msg) (SSM内部使用関数)

引数
エラーメッセージ文字列(1つのみ)

戻り値
なし

機能
引数の文字列を、HTML形式でエラーメッセージとして出力する。 文字コードは &pagecodeconv()で変換する。

sub parsehtmlwithfunc() (SSM内部使用関数)

引数
HTMLテンプレートパス, スクリプトファイルパス, クエリーオブジェクトへの参照

戻り値
なし

機能
SSMの実行メイン関数。 HTMLテンプレートを解釈しながらスクリプトを実行、出力する。

sub getpackagename($script_file) (SSM内部使用関数)

機能
スクリプトファイルパスを受け取り、そのスクリプトのパッケージ名を返す。

引数
スクリプトファイルパスを表す文字列

戻り値
  パッケージ名文字列。
  パッケージ名が取得できない場合は、0。

sub ssmprintfile()

引数
SSMタグで挟まれた文字列, クエリーオブジェクトへの参照, SSMタグ属性値の入ったハッシュへの参照

戻り値
処理が成功すれば1,失敗の場合0

機能
SSMタグの属性としてファイルパス(絶対パス)と出力フォーマットを受け取り、ファイルの内容を出力する。

指定例
  <SSM MODE="begin" FUNCTION="Ssm::Common::ssmprintfile" FILE="/data/somefile.html" FORMAT="html">
  <SSM MODE="end">
フォーマット
html
ファイルの中身をHTMLフォーマットとして扱う。 つまり、タグのエンティティへの変換等を行わない。

上記以外
ファイルの中身をそのまま表示する。 つまり、HTMLタグ等をエンティティに変換する。

フォーマット表記は Case Insensitive。

sub printfile($filename,$format) (SSM内部使用関数)

引数
ファイルパス(絶対パス)を表す文字列, フォーマットを表す文字列

戻り値
処理が成功すれば1,失敗の場合0

機能
ファイルパス(絶対パス)と出力フォーマットを受け取り、ファイルの内容を出力する。

フォーマット
html
ファイルの中身をHTMLフォーマットとして扱う。 つまり、タグのエンティティへの変換等を行わない。

上記以外
ファイルの中身をそのまま表示する。 つまり、HTMLタグ等をエンティティに変換する。

フォーマット表記は Case Insensitive。

sub printvalue()

引数
SSMタグで挟まれた文字列, クエリーオブジェクトへの参照, SSMタグ属性値の入ったハッシュへの参照

戻り値
1

機能
送信されたクエリーの内容を、SSMタグで挟んだ文字列の書式で出力する。

ACTION属性で複数値を持つクエリー変数等の繰り返し処理を指定できる。

RESULTVALUE属性を指定すると、標準出力への print でなく、 名前が __(指定された文字列)__ のクエリ変数に結果出力を格納する。 (名前は、指定された文字列の前後にアンダースコア2つずつ。)

指定例
  <TABLE BORDER="1">
  <TR><TH>key</TH><TH>value</TH></TR>
  <SSM ACTION="allpair" FUNCTION="Ssm::Common::printvalue" MODE="begin">
  <TR><TD>%_key_%</TD><TD>%_value_%</TD></TR>
  <SSM MODE="end">
  </TABLE>
指定できるACTIONの種類
allpair(デフォルト)
  クエリーの全てのkey=valueのペアを表示する。
  同じkeyで複数のvalueがある場合は、カンマで区切られる。
  SSMタグで挟む文字列の %_key_% が keyに、%_value_% がvalueに置換される。
  全てのkey分、置換をしながらSSMタグで挟まれた文字列を繰り返し表示する。
  %_key_% と %_value_% は Case sensitive。
  ACTIONが指定されなかった場合はallpairと解釈される。

例)

  <TABLE BORDER="1">
  <TR><TH>key</TH><TH>value</TH></TR>
  <SSM MODE="begin" FUNCTION="Ssm::Common::printvalue" ACTION="allpair">
  <TR><TD>%_key_%</TD><TD>%_value_%</TD></TR>
  <SSM MODE="end">
  </TABLE>
once
  指定したkeyの値を表示する。
  SSMタグで挟む文字列の %_(keyの名前)_% がvalueに置き換えられる。
  同じkeyで複数のvalueがある場合は、カンマで区切られる。
  SSMタグで挟まれた文字列を繰り返し表示しないのが allpair との違い。
  %_(keyの名前)_% は Case sensitive。

例)

  <TABLE BORDER="1">
  <TR><TH>値をまとめて表示</TH></TR>
  <SSM MODE="begin" FUNCTION="Ssm::Common::printvalue" ACTION="once">
  <TR>
  <TD>
  aaaとcccの値: %_aaa_% および %_ccc_%<BR>
  ddd: %_ddd_%
  </TD>
  </TR>
  <SSM MODE="end">
  </TABLE>
first
  指定したkeyの値を表示する。
  SSMタグで挟む文字列の %_(keyの名前)_% がvalueに置き換えられる。
  同じkeyで複数のvalueがある場合は、最初の値のみ表示される。
  但し、順番は固定されていない。
  全てのkeyについて、valueがそれぞれ一つずつしかないという保証がある場合、once と同じ。
  %_(keyの名前)_% は Case sensitive。

例)

  <TABLE BORDER="1">
  <TR><TH>key</TH><TH>value</TH></TR>
  <SSM MODE="begin" FUNCTION="Ssm::Common::printvalue" ACTION="first">
  <TR><TD>aaa</TD><TD>%_aaa_%</TD></TR>
  <TR><TD>ccc</TD><TD>%_ccc_%</TD></TR>
  <SSM MODE="end">
  </TABLE>
roop
  指定したkeyの値を表示する。
  SSMタグで挟む文字列の %_(keyの名前)_% がvalueに置き換えられる。
  同じkeyで複数のvalueがある場合は、一番個数の多いkeyのvalueを
  表示し切るまで、置換をしながらSSMタグで挟まれた文字列を繰り返し表示する。
  %_(keyの名前)_% は Case sensitive。

例)

  <TABLE BORDER="1">
  <TR><TH>value</TH></TR>
  <SSM ACTION="roop" FUNCTION="Ssm::Common::printvalue" MODE="begin">
  <TR><TD>%_ccc_%</TD></TR>
  <SSM MODE="end">
  </TABLE>

sub parse_selected()

引数
SSMタグで挟まれた文字列, クエリーオブジェクトへの参照, SSMタグ属性値の入ったハッシュへの参照

戻り値
1

機能
SSMタグで挟む文字列中にセレクタ(プルダウンリスト)、チェックボックスまたはラジオボタンのINPUTタグのいずれかがあったら、クエリーで送られた値をデフォルトの選択値として選択された状態でHTML出力する。

RESULTVALUE属性を指定すると、標準出力への print でなく、 名前が __(指定された文字列)__ のクエリ変数に結果出力を格納する。 (名前は、指定された文字列の前後にアンダースコア2つずつ。)

SSMタグで挟む文字列には、選択状態を示す文字列を書き出す位置に %_(keyの名前)_% という文字列を表示しておく。

例えば、

  <SELECT NAME="ccc" MULTIPLE SIZE="3">
  <OPTION VALUE="ddd" %_ccc_%>ddd
  <OPTION VALUE="eee" %_ccc_%>eee
  <OPTION VALUE="fff" %_ccc_%>fff
  </SELECT>

と記述すれば、該当するVALUEの値が送信された場合、%_ccc_% が selected に置換される。

VALUE属性は省略できない。つまり、

  <OPTION>ddd
  <OPTION>eee
  <OPTION>fff

は、値送信の際には動作するが、選択状態をデフォルトで表示したい場合は、以下の表記は不可。

  <OPTION %_ccc_%>ddd
  <OPTION %_ccc_%>eee
  <OPTION %_ccc_%>fff

その他の例
チェックボックスの場合
  <INPUT TYPE="checkbox" NAME="ddd" value="value-of-ddd" %_ddd_%>
ラジオボタンの場合
  <INPUT TYPE="radio" NAME="ddd" VALUE="value1" %_ddd_%>
  <INPUT TYPE="radio" NAME="ddd" VALUE="value2" %_ddd_%>

sub checkandmkdir($file) (SSM内部使用関数)

引数
ファイルパス(絶対パス)を表す文字列

機能
引数で指定されたファイルを格納するディレクトリが無ければ作成を試みる。

戻り値
処理後、ディレクトリが存在すれば1,存在しなければ0

sub retzeroinerror($ref_to_msg, $errormsg) (SSM内部使用関数)

引数
メッセージを格納するスカラーのリファレンス, メッセージ文字列

戻り値
0

機能
第2引数の文字列を第1引数で参照されているスカラーに格納し、0を返す。

sub text2html()

引数
変換対象文字列
Pタグ付加オプション(非必須。正値を指定すると、改行2個で区切られたパラグラフを'<P>'タグで囲む。)

戻り値
文字列

機能
渡された文字列内のHTML特殊文字をエンティティに変換して変換後の文字列全体を返す。 SSMの置換キーワードを構成する'%'もエンティティ変換する。 タブは '&nbsp;&nbsp;&nbsp;&nbsp;' に変換する。 複数個続く半角スペースは、半角スペース1つを '&nbsp;' に変換する。 第2引数をで正値を指定すると、改行2個で区切られたパラグラフを'<P>'タグで囲む。 残った改行を'<BR>'に変換する。

sub text4textarea()

引数
文字列(1つのみ)

戻り値
文字列

機能
渡された文字列内のHTML特殊文字をエンティティに変換して変換後の文字列全体を返す。 SSMの置換キーワードを構成する'%'もエンティティ変換する。 タブと半角スペースは&nbsp;に変換しない。 改行(\n)は'<BR>'に変換しない。 <TEXTAREA>内に表示する文字列の変換を想定。

sub pagecodeconv($string) (SSM内部使用関数)

引数
文字列(1つのみ)

戻り値
文字列

機能
渡された文字列のエンコード方式を $main::charset で指定されたエンコードに変換し、変換後の文字列を返す。 $main::charset が指定されていなければ EUC-JP に変換する。

sub mailcodeconv($string) (SSM内部使用関数)

引数
文字列(1つのみ)

戻り値
文字列

機能
渡された文字列のエンコード方式を $Ssm::Config::mailencoding で指定されたエンコードに変換し、変換後の文字列を返す。 $Ssm::Config::mailencoding が指定されていなければ JIS に変換する。

sub codeconv($string,$charset) (SSM内部使用関数)

引数
文字列,エンコード方式

戻り値
文字列

機能
第1引数文字列を、第2引数文字列で指定されたエンコード方式に変換し、変換後の文字列を返す。

sub conv4transsubmit($string) (古い)

引数
文字列(1つのみ)

戻り値
文字列

機能
渡された文字列内の >, <, ``, ' を別の文字列に変換して変換後の文字列全体を返す。 フォームによる入力を、hidden項目として再送信するための変換関数。

text4textarea() 関数の定義により、不要となる。 同一目的のためには text4textarea() の使用を推奨。

sub reconv4transsubmit($string) (古い)

引数
文字列(1つのみ)

戻り値
文字列

機能
conv4transsubmit()の逆の変換を行う。

conv4transsubmit() の代わりに text4textarea() を使用すると、不要となる。

sub go_and_exit($$)

引数
HTMLテンプレートパス, クエリーオブジェクトへの参照

戻り値
1

機能
処理を中断して別ファイルに戻る。 別ディレクトリのファイルを指定する時は、$ENV{'PATH_INFO'}に当たる部分をスラッシュから指定する。


AUTHOR

  Miyabiko INOUE <miy@web-ware.org>
  バグ等の御連絡は mailto:miy@web-ware.org までお願いいたします。


COPYRIGHT

  Copyright (c) Miyabiko INOUE <miy@web-ware.org>.
  All rights reserved.
  このモジュールは無償でご利用いただけます。
  改変、再配布などの使用許諾に関しては、Perl の Artistic License を適用します。
  This program is free software; you can redistribute it
  and/or modify it under Perl Artistic License.


NOTES

  Further information: http://www.web-ware.org/


SEE ALSO

perl(1).