はじめに

定義ファイルに記述するIM_Entry関数の引数に、データベースに関する情報を与えておきます。4つの引数があり、うち3つは配列を指定します。配列の内容を記載します。以下の表で、次元の列にキーワードがあれば、「'キーワード' => '値' 」で該当する値を与えます。次元が「(なし)」というのは、その次元では、単に要素が並ぶということを意味します。サンプルファイルの例などを見ながら解読してください。

第1引数、テーブルとそれに関連した属性

テーブルと、テーブル間を関連づけるフィールドを指定します。この引数の第2次元にまとめられた1つの配列の設定を「コンテキスト定義」と呼ぶことにします。つまり、name、keyなどのキーを持った連想配列の1つ1つがコンテキスト定義です。もちろん、コンテキスト定義は複数を定義することが可能です。ここでのnameが、ターゲット指定のテーブル名で使用します。テーブル間の結合における相手のテーブル名がないと思われるかもしれませんが、相手のテーブル名は、ページファイル側の記述で自動的に決まってきます。

[第1引数, コンテキスト定義]
コンテキスト名とエンティティ情報

キー
'name' テーブル名[必須]。'view'がなければすべての処理を適用する「テーブル名」、'view'があれば書き込みや更新処理のときの「テーブル名」
'table' 指定すると更新時の「テーブル名」に使用される。指定しないと、nameで指定した名前のテーブルに書き込む
'view' 指定すると読み込みのときの「テーブル名」に使用される。指定しないと、nameで指定した名前のテーブルから読み込む
'count' 通常はレコード数のカウントをviewキーで指定したエンティティに対して行うが、この定義を追加すると個数を求めるときだけviewの代わりにcountで指定したエンティティを使用する。ビューの応答が遅い場合、同一条件で結果が得られるテーブルを指定できる場合にはパフォーマンス向上が期待できる
'source' 1ページに複数のコンテキストが展開されている時、あるコンテキストでのレコード作成や削除結果を、同一のテーブルから構成された別のコンテキストにも反映させるための設定。この名前が同じコンテキスト群では、レコードの作成や削除結果が同期される。指定がなければ、table、view、nameの順にさかのぼって設定を得る。ビューをviewキーで指定したときにその主要テーブルを指定するような場合に使用する。
'key' レコードを特定するためのキーフィールドの名前を指定する。表示のみの場合には不要だが、更新処理にはこのフィールドは必要。単一のフィールドの指定しかできない。FileMaker Serverでは「-recid」と指定することで、システムが管理するレコード識別のための値を利用できる。
'sequence' PostgreSQLにおいて、レコード追加を行うためには、シーケンスを利用してキーフィールドに連番を設定する必要がある。そのシーケンス名をここで指定をする。
'cache' trueを指定するとキャッシュが機能する。同一ページ内で、1つのコンテキストを複数箇所で利用する場合、それぞれが同一の検索結果の場合に利用できる。例えば、ポップアップメニューの選択など。
'data' 読み込み時のみ、サーバーへのデータ処理は行わず、この値がそのままデータベースから得られたものとしてペー上に展開する。データ形式は、1レコードを示す連想配列を、さらに配列に含めたもの。編集可能なコンテキストでは利用しないのが原則とする。
'appending-data' 読み込み時に、サーバーへクエリー結果の末尾に、さらにこの値を追加する。データ形式は、1レコードを示す連想配列を、さらに配列に含めたもの。
'ignoring-field' フィールド名の文字列の配列を値に指定する。デバッグモード=2で稼働させると、検索結果に要求されたフィールド(つまりページファイルに展開した計算フィールド以外のフィールド)が存在しない場合はエラーとして処理を停止させる。ここに名前を設定すれば、検索結果にないフィールドがあってもエラーを出さない。extending-classで全く異なるフィールド構成のデータを生成している場合、デバッグモードでのエラーを回避できる。
'numeric-fields' 数値型として見做して欲しいフィールドについて、フィールド名の文字列の配列を値に指定する。INTER-Mediatorはスキーマ情報から型を自動的に取得するが、SQLiteでViewに記述した計算結果のフィールドについては型が得られない。そのフィールドを数値として解釈させるために利用する。そうしないと、検索条件に応じた検索がうまくできない。

[第1引数, コンテキスト定義]
レコード繰り返しとページング

キー
'records' 1ページに何レコード分表示するか。最初のテーブルの設定のみ有効。未指定の場合は100000000、つまり十分に大きな値
'maxrecords' 1ページ内の最大表示レコード数。INTERMediator.pagedSizeの値を調整することで1ページ内の表示レコード数を変更できるが、その際にこのキーで指定した値を超えて表示することはできない。未指定の場合は100000000、つまり十分に大きな値
'paging' recordsで指定したレコード数ずつ表示するとき、前後のページに移動するナビゲーションを表示する場合、trueを指定する。既定値はfalse
'soft-delete' コンテキストに対する削除において、論理削除を行う。検索時には、論理的に削除されたレコードは検索対象外とする。値をtrueにすると、レコード削除時に、deleteフィールドに1を代入する。deleteフィールドのタイプは数値を想定している。delete以外のフィールドを利用したい場合には、値をフィールド名にする。

[第1引数, コンテキスト定義]
リレーションシップ、検索条件、並べ替え、初期値

配列指定
キー インデックス 下位のキー
'relation' (なし) 'foreign-key' リレーションの外部キーフィールド名(この設定は事実上データ取り出し時のみ有効)
'join-field' 外部キーフィールドに対応するテーブル側の関連フィールド
'operator' 外部キーフィールドと対応するフィールドの比較演算子
'portal' FileMaker Serverを利用しているときに、このコンテキストのデータを、親コンテキストのレイアウト上にあるポータルから取得する場合にtrueを値に指定する
'query' (なし) 'field' 検索条件のフィールド名(この設定はデータ取り出し時のみ有効)
'value' 検索値
'operator' 検索値の解釈
'sort' (なし) 'field' ソート条件のフィールド名(この設定はデータ取り出し時のみ有効)
'direction' 昇順か降順か
'default-values' (なし) 'field' 新規レコード作成時、およびレコードコピー時の初期値指定のフィールド名
'value' 初期値
'portals' FileMaker Data APIを利用しているときに、コンテキストに含まれるポータル名を配列で指定する。なくても動作するが、その場合ポータル名の取得のためのアクセスが発生し、パフォーマンスに少し影響する。

[第1引数, コンテキスト定義]
計算プロパティ

配列指定
キー インデックス 下位のキー
'calculation' (なし) 'field' 計算結果を表示するリンクノードのターゲット指定。コンテキスト名は現在のコンテキスト名を使うため指定しない。属性やスタイル等の指定は可能
'expression' 計算式。同一コンテキストのフィールド参照はフィールド名のみ記述する。他のコンテキストのフィールド参照は「コンテキスト名@フィールド名」の形式で記述する

[第1引数, コンテキスト定義]
Post Onlyモードの動作定義

キー
'post-reconstruct' trueなら、入力型フォームにおいて、登録ボタンを押した後にページの再合成を行う。post-dismiss-messageが指定されていれば、4秒後待って再合成する。falseあるいは指定なしなら何もしない
'post-dismiss-message' 入力型フォームにおいて、登録ボタンを押した後に、ボタンを消してここに記述したメッセージの文字列を表示する。文字列はSPANタグでclass属性が「IM_POSTMESSAGE」となる。
'post-move-url' 入力型フォームにおいて、登録ボタンを押した後に、ここで指定したURLにページを移動させる。指定しない場合にはページ移動はない。post-dismiss-messageが指定されていれば、4秒後に移動する

[第1引数, コンテキスト定義]
ユーザーインタフェース生成

配列指定
キー 下位のキー
'repeat-control' 繰り返し表示する部分に、レコードの追加や削除の機能を追加する。値には以下の文字列を与える。confirmがあれば確認ダイアログが表示される。複数を指定する場合はそれぞれの文字列を空白で区切って書き並べる。
使用できるキーワード動作説明
insertレコード追加ボタンレコード追加ボタンを、レコードリストの直下、あるいは1レコード単位の場合はページネーションバーに表示する
insert-topレコード追加ボタン同上だが、レコードリストの直上にボタンが表示される
confirm-insertレコード追加ボタンボタンを押すと、本当にレコード作成して良いかをダイアログボックスでたずねる
confirm-insert-topレコード追加ボタン同上、かつボタンはリストの場合その直上に配置
deleteレコード削除ボタンレコード削除ボタンをリピータの最後の要素に追加する
confirm-deleteレコード削除ボタンボタンを押すと、本当にレコード削除して良いかをダイアログボックスでたずねる
copyレコード複製ボタンレコード複製ボタンをリピータの最後の要素に追加する
confirm-copyレコード複製ボタンボタンを押すと、本当にレコード複製して良いかをダイアログボックスでたずねる
copy-xxxxレコード複製ボタンxxxxには関連レコードのコンテキストを指定する。これにより、関連レコード群も外部キーを考慮して複製される
confirm-copy-xxxxレコード複製ボタンボタンを押すと、本当にレコード複製して良いかをダイアログボックスでたずねる
'navi-control' 2つのコンテキストを利用して、マスター/ディテール形式のユーザインタフェースを構築する。マスター側は複数のレコードを表示し、それぞれ対応するディテール側を表示するボタンが追加される。ディテール側では1レコードを表示する。2つのコンテキストは、原則として同一のテーブルを元にした異なるコンテキストである必要がある。FileMaker Serverを利用する時には、detailを指定したコンテキストのidキーの値は「-recid」にする必要がある。さらに、コンテキストを次々に移動できるステップ動作をするコンテキストも定義できる。
使用できるキーワード動作説明
masterマスター側のコンテキストマスターとディテールを同時に表示
master-hideマスター側のコンテキストディテール側に移動時にマスター側は非表示
master-nonaviマスター側のコンテキストマスターとディテールを同時に表示
master-nonavi-hideマスター側のコンテキストディテール側に移動時にマスター側は非表示
master-fullnaviマスター側のコンテキストマスターとディテールを同時に表示
master-fullnavi-hideマスター側のコンテキストディテール側に移動時にマスター側は非表示
detailディテール側のコンテキストdetail-topと同じ動作
detail-topディテール側のコンテキストマスターに戻るボタンを上部に表示(マスター側がmaster-hide)
detail-bottomディテール側のコンテキストマスターに戻るボタンを下部に表示(マスター側がmaster-hide)
detail-updateディテール側のコンテキストdetail-topと同じ動作に加えて、マスター側を更新
stepステップ動作の1つのコンテキストページ表示時に見えている。あるコンテキストでタップすると、定義ファイル上での順序で次のstep*が指定されたコンテキストを表示するのが原則だが、before-move-nextstepでその挙動を変更できる。モバイルデバイスの場合はセル自体がタップに対応する。デスクトップ機での表示では、「詳細」ボタンにより、次のページに移動する
step-hideステップ動作の1つのコンテキストページ表示時には見えていない(他はstepと同様)
step-nonaviステップ動作の1つのコンテキストページ表示時に見えている。自動化のナビゲーションは表示しない、背景応答もしない、デスクトップとモバイルは同一動作。タップ時の挙動は、before-move-nextstepでのメソッドで記述する必要がある。
step-nonavi-hideステップ動作の1つのコンテキストページ表示時には見えていない(他はstep-nonaviと同様)
step-fullnaviステップ動作の1つのコンテキストページ表示時に見えている。背景のタップに対応し、加えてデスクトップの場合は次のコンテキストに移動する「詳細」ボタンも表示する。
step-fullnavi-hideステップ動作の1つのコンテキストページ表示時には見えていない(他はstep-fullnaviと同様)
付加文字列適用先意味
-hideマスターディテール側に切り替えるとマスターは非表示
-hideステップページ表示時には見えていない
-nonaviマスター及びステップ自動化のナビゲーションは表示しない、背景応答もしない、デスクトップとモバイルは同一動作。タップ時の挙動は、before-move-nextstepでのメソッドで記述する必要がある。
-fullnaviマスター及びステップあらゆるナビゲーションを表示し背景応答もする、デスクトップとモバイルは同一動作
'navi-title' ターゲット指定が「_@navi_title」の要素に、このキーで指定した文字列を設定する。
'before-move-nextstep' ステップのセルをタップした時に呼び出されるメソッド名。INTERMediatorOnPageオブジェクトに、ここで指定した名前のメソッドを定義する。定義したメソッドでは、タップした先で合成されるコンテキストの検索条件の指定などを行う。通常、タップすると、定義ファイルの次にあるnavi-control="step*"のコンテキストを表示するが、このメソッドで、コンテキスト名(nameキーの値)を返すと、定義ファイルの順序と関係なくそのコンテキストのページを表示する。falseを返すと、ページ移動は発生しない。なお、前のページに戻る動作は、classがIM_Button_StepBackの要素を作れば自動的に行える。例えば、「<span class="IM_Button_StepBack">◀︎</span>」をページファイルのページ内に配置する。
'just-move-thisstep' ステップのエリアを生成した直後、つまりデータベース処理をしてページ合成が終わった直後に呼び出されるメソッド名。INTERMediatorOnPageオブジェクトに、ここで指定した名前のメソッドを定義する
'just-leave-thisstep' このステップから別のステップに以降する直前に呼び出されるメソッド名。INTERMediatorOnPageオブジェクトに、ここで指定した名前のメソッドを定義する
'button-names' 'insert' repeat-controlに「insert」を指定したときに追加されるボタンのボタン名
'delete' repeat-controlに「delete」を指定したときに追加されるボタンのボタン名
'copy' repeat-controlに「copy」を指定したときに追加されるボタンのボタン名
'navi-detail' navi-controlに「master」あるいは「step」を指定したときに追加されるボタンのボタン名。マスター側に追加されるディテール側へ移動するボタン、あるいは次のステップに移動するためのボタンの名前
'navi-back' navi-controlに「detail」を指定したときに追加されるボタンのボタン名。ディテール側に追加されるマスター側へ移動するボタンの名前
'confirm-messages' 'insert' repeat-controlに「insert-confirm」を指定したときに表示されるダイアログボックス内のメッセージ
'delete' repeat-controlに「delete-confirm」を指定したときに表示されるダイアログボックス内のメッセージ
'copy' repeat-controlに「copy-confirm」を指定したときに表示されるダイアログボックス内のメッセージ

[第1引数, コンテキスト定義]
バリデーション

配列指定
キー インデックス 下位のキー
'validation' (なし) 'field' データ確認を行うフィールド名(バリデーションはVer.2.1以降で実装)
'rule' 確認処理。JavaScriptの式を記述する。コンポーネントの値は変数value、ノードへの参照は変数targetに入っているものとして、式を組み立てることができる。式の結果がtrueならそのまま処理を進めるが、falseならmessageの文字列をダイアログボックスで表示して、コンポーネントの値を元に戻す
'message' 正しくない場合に表示するメッセージ(ruleがfalseのときに表示される)
'notify' 'inline'なら直後、'end-of-sibling'なら兄弟ノードの最後にメッセージのテキストを追加する。このとき、ノードのクラス名は'_im_alertmessage'となる。これ以外の表記あるいは、notifyを省略すると、ダイアログボックスで表示される。

[第1引数, コンテキスト定義]
合成処理やデータベース処理の拡張

キー
'post-repeater' ページ合成時に1つのリピータの処理が終わった後に呼び出される関数名を記述する。その関数自体は、INTERMediatorOnPageオブジェクトのメソッドとして定義する。なお、INTERMediatorOnPage.postRepeater_[コンテキスト名]でメソッドを定義すれば、コンテキスト定義にこのエントリーは不要。
'post-enclosure' ページ合成時に1つのエンクロージャーの処理が終わった後に呼び出される関数名を記述する。その関数自体は、INTERMediatorOnPageオブジェクトのメソッドとして定義する。なお、INTERMediatorOnPage.postEnclosure_[コンテキスト名]でメソッドを定義すれば、コンテキスト定義にこのエントリーは不要。
'extending-class' データアクセス時にサーバー側で処理プログラムを追加するクラスのクラス名を指定する

[第1引数, コンテキスト定義]
スクリプト実行

配列指定
キー インデックス 下位のキー
'script' (なし) 'db-operation' データベース処理の前後に行う処理の指定。スクリプトを実行する場面で、値は'read', 'update', 'create', 'delete'のいずれか
'situation' スクリプトの実行を行うタイミングで、'pre', 'presort', 'post'のいずれかの値を取る('presort'はFileMaker Serverのみサポート)
'definition' MySQLは指定したSQLコマンドを実行、FileMaker Serverはスクリプト名を指定。(FileMaker Serverでforeign-keyの指定されたテーブルの読み込み時の設定はすべて無視される)
'parameter' FileMaker Serverを利用しているときにスクリプト引数を指定する。バージョン5.4以降で利用可能。

[第1引数, コンテキスト定義]
FileMakerでのグローバル変数設定

配列指定
キー インデックス 下位のキー
'global' (なし) 'db-operation' 設定する場面で、値は 'read', 'update', 'create', 'delete'のいずれか(グローバルの設定はFileMaker Serverのみ)
'field' グローバルフィールド名
'value' グローバルフィールドに与える値

[第1引数, コンテキスト定義]
認証・認可とセキュリティ

設定情報については、こちらのページにまとめました。

[第1引数, コンテキスト定義]
ファイルアップロード

配列指定
キー インデックス 下位のキー
'file-upload' (なし) 'field' コンテキスト内のここで指定したフィールドに対してファイルアップロードのコンポーネントが設定されている場合
'context' この指定があると、指定したコンテキストのpathフィールドにファイルパスを値として指定する新規レコードを作成する。こちらのコンテキストとのリレーションが設定されていれば正しく外部キーが設定される
'container' アップロードしたファイルの置き場所を指定する。指定可能なキーワードは、"FileSystem"、"FileMakerContainer"、"S3"、"Dropbox"、"FileURL"で、指定なしの場合は"FileSystem"が利用される。過去との互換性のために、値がTRUEの場合には"FileMakerContainer"が選択される。Amazon S3やDropboxの場合は、params.phpファイルへの設定が必要になります。FileMakerについては、FileMaker Serverのバージョン13以降が必要、かつデータベースのフィールドオプションにおいて[入力値の自動化]オプションをあらかじめ設定しておく必要があります。詳細はファイルのアップロードコンポーネントの「FileMakerのオブジェクトフィールドにファイルをアップロードする」を参照

FileSystem, FileURLの場合にparams.phpファイルに指定する変数

変数名 既定値 指定内容
$mediaRootDir (設定なし) ファイルを保存するディレクトリ。定義ファイルのoptionにあるmedia-root-dirでも同じ設定にできる。
$cacheMediaAccess false 「定義ファイル?media=」でファイルの内容を取り出すときに、キャッシュされるようにHTTPヘッダをセットする。期限(Expiresヘッダ)は1ヶ月先に固定。

Amazon S3の場合にparams.phpファイルに指定する変数

変数名 既定値 指定内容
$accessRegion (設定なし) 接続するAWSのエンドポイントを指定する。東京なら"ap-northeast-1"。一覧はこちら
$rootBucket (設定なし) S3のバケット名
$applyingACL (設定なし) オブジェクトをPutObjectメソッドで書き込むときに指定するオブジェクトのACL。指定できる値は次の通り:private、public-read、public-read-write、authenticated-read、aws-exec-read、bucket-owner-read、bucket-owner-full-control。例えば、アップロードしたファイルが即座に誰でも参照できるようにした場合はpublic-read、INTER-Mediatorでアクセス権管理をする場合にはbucket-owner-read。
$s3AccessProfile (設定なし) S3へのアクセスのための認証情報としては、一般にIAMを使ってユーザーを作成し、AmazonS3FullAccessのポリシーをユーザあるいはグループに設定し、そのユーザに対するアクセスキーとシークレットを生成し、それらを利用します。認証情報を記録するために、AWSのクライアントのプロファイルを利用する場合は、ここにプロファイル名を記入します。変数がないあるいはプロファイル名が""など、プロファイル名が指定されていない場合、以下のアクセスキーとシークレットを利用します。このparams.phpファイルにアクセスキーとシークレットを記述する方法については、パブリックなレポジトリではもちろん、共用レポジトリでも問題になるかもしれません。つまり、レポジトリ外にセンシティブな情報を記録する方法として、プロファイルを活用できるようになっています。
$s3AccessKey (設定なし) $s3AccessProfileを参照してください。アクセスキーを直接指定する場合にはここに指定しますが、こちらの値を使うには、$s3AccessProfileの値を""にします。
$s3AccessSecret (設定なし) $s3AccessProfileを参照してください。シークレットを直接指定する場合にはここに指定しますが、こちらの値を使うには、$s3AccessProfileの値を""にします。
$s3urlCustomize TRUE アップロード後にオブジェクトにアクセスするためのURLがS3より返されます。ファイルの読み出しを無制限に行う場合にはそのままのURLをフィールドに保存しますが、INTER-Mediatorのアクセス権設定を有効にするために、MediaAccessクラスを使う場合(「定義ファイル.php?media=URL」でメディア参照ができる仕組み)は、この設定をTRUEにします。すると、S3から得られたURLの冒頭のhttps://をs3://に変えます。変わったURLをそのままフィールドに保存し、mediaパラメータの値として指定すると、S3へはGetObjectメソッドを使って認証アクセスを行うようになります。つまり、INTER-Mediatorでアクセス権の管理を完全に行なっている状態になっています。

Dropboxの場合にparams.phpファイルに指定する変数

変数名 既定値 指定内容
$dropboxAppKey (設定なし) 認証のために利用されるAppKey
$dropboxAppSecret (設定なし) 認証のために利用されるAppSecret
$dropboxRefreshToken (設定なし) リフレッシュトークン(このページに記載の方法で取得できる)
$dropboxAccessTokenPath (設定なし) アクセストークンを保存するファイルへのパス。このファイルの作成や書き換えができる必要がある。つまり、Webサーバのプロセスのユーザによるアクセス権が必要
$rootInDropbox / Dropbox内でのファイルの保存場所までのパス。パスを指定する場合、最後は/で終わらないようにする

[第1引数, コンテキスト定義]
データベース接続設定

キー
'db-class' このコンテキストで使うデータアクセスクラスの名前(例:PDO、FileMaker_FX、FileMaker_DataAPI)この指定がなければ、IM_Entry関数の第3引数あるいはparams.phpの値が使われます。以下、'cert-verifying'まで同様
'dsn' [PDO]このコンテキストで使う接続時に指定するDSN
'option' [PDO]このコンテキストで使うオプション指定。array型で指定
'database' [FileMaker_FX][FileMaker_DataAPI]このコンテキストで使うデータベース名
'user' [PDO][FileMaker_FX][FileMaker_DataAPI]このコンテキストで使うユーザ名
'password' [PDO][FileMaker_FX][FileMaker_DataAPI]このコンテキストで使うパスワード
'server' [FileMaker_FX][FileMaker_DataAPI]このコンテキストで使うサーバーアドレス(例:127.0.0.1)
'port' [FileMaker_FX][FileMaker_DataAPI]このコンテキストで使うサーバーポート(例:80)
'protocol' [FileMaker_FX][FileMaker_DataAPI]このコンテキストで使うサーバーへの接続プロトコル(例:HTTP)
'datatype' [FileMaker_FX]このコンテキストで使うサーバーがサポートするデータ形式(例:FMPro12)
'cert-verifying' [FileMaker_DataAPI]接続時に証明書の検証が必要かどうかを論理値で指定(例:true)。未指定時はtrue

[第1引数, コンテキスト定義]
メール送信

メール送信については、メール送信(Ver.5)あるいはメール送信(Ver.6)のページに記載しました。

Slackによるメッセージングについては、Slackにメッセージを追加するのページに記載しました。

[第1引数, コンテキスト定義]
複雑なSQL文によるビュー生成

キー
'aggregation-select' PDOのデータベースクラスのみで利用できます。これらの3つの設定と、sort、queryの設定を加えて、集計処理などのSQLを構成できます。このコンテキストは読み出しのみとなります。
なお、INTER-Mediatorは内部ではFROMに指定するテーブルやクエリーの情報を得て、数値フィールドの場合とそうでない場合で検索条件の適用方法を変えています。これらのキーでSQLを構築した場合、フィールド情報を得ることが現状ではできないため、検索条件がうまく当たらない可能性があります。その場合、'numeric-fields'キーで数値データのフィールドのフィールド名を与えると正しく検索されます。
'aggregation-from'
'aggregation-group-by'

認証についは別項目「ユーザ認証とアクセス権の動作について」も参照してください。

'relation'、'query'、'sort'、'script'については、配列の配列を指定します。サンプルのソース等で具体例を見てください。

それぞれのパラメータの解釈は、データベースドライバによって異なる場合があります。

第2引数、オプション設定

こちらは、「定義ファイルのオプション設定」と呼ぶことにします。該当する設定がparams.phpでも設定できる場合はその変数名も記載しています。その変数名でparams.phpを検索すれば、コメント等で記述例があるはずです。

[第2引数, オプション設定]
各種動作設定

キー
'separator' テーブル名とフィールド名を区切る文字(既定値は「@」)
'transaction' 編集可能コンポーネントの変更時の書き戻しについて、'none'なら行わない、'automatic'ならchangeイベントが発生するたびに書き戻す。省略するとautomaticが指定されたものとみなす
'media-root-dir' メディアアクセスに対して定義ファイルにリダイレクトの設定をWebサーバーで行う。そうすれば、この設定に指定したディレクトリにある画像などのメディアファイルを読み出す。
'credit-including' INTER-Mediatorのクレジットをページ末尾に表示するのが通常の動作であるが、このキーにHTMLのid属性値を指定すると、そのタグ要素の内部の末尾にクレジットを付加する。他に末尾に付与する仕組みを使うような場合の回避策

[第2引数, オプション設定]
アプリケーションのロカール

キー params.phpで変数名
'app-locale' アプリケーション全体の言語およびカントリーコード(例えば、en、ja_JP)。これがあれば、ブラウザーのカントリーコードよりも優先される $appLocale
'app-currency' 通貨に関する国コード(例えば、US、JP)。指定なしの場合、app-localeの指定を利用 $appCurrency

[第2引数, オプション設定]
テーマ

キー params.phpで変数名
'theme' 使用するテーマ名。省略するとdefaultを使用。INTER-Mediatorに付属するテーマセットは他に最小限のleast、以前のバージョンの初期設定に近いthosedaysがある $themeName

[第2引数, オプション設定]
ローカルコンテキストの初期値

配列指定 params.phpで変数名
第1次元 第2次元 第3次元
'local-context' (なし) 'key' ローカルコンテキストのキー(_@以降のキーワード) $valuesForLocalContext
'value' コンテキストの初期値

[第2引数, オプション設定]
エイリアス

配列指定
第1次元 第2次元 第3次元
'aliases' エイリアス名 置き換える定義 エイリアスに対応する値。この値は正しい1つのターゲット指定である必要がある。この指定があれば、ターゲット指定の代わりに、エイリアス名をリンクノードに指定できる。

[第2引数, オプション設定]
フォーマッター(サーバーサイドでの値変換)

配列指定
第1次元 第2次元 第3次元
'formatter' (なし) 'field' データコンバータを適用するフィールド名
'converter-class' データコンバータクラス名
'parameter' コンバータクラスに与えるパラメータ

[第2引数, オプション設定]
ブラウザの判定

配列指定 params.phpで変数名
第1次元 第2次元 第3次元
'browser-compatibility' (なし) 文字列 キーにブラウザを示す文字列(safari, msieなど)を指定し、値にはバージョン番号を指定する。バージョン番号の後に+や-をつけて、以上あるいは以下をのバージョンを示すことができる $browserCompatibility
配列 要素にはキーにOSを指定し、その要素に前の行に説明のあるバージョン番号とプラス/マイナス記号を指定する。

[第2引数, オプション設定]
認証・認可

設定情報については、こちらのページにまとめました。

[第2引数, オプション設定]
CSVファイル等からのインポート

ファイルのインポートを行うユーザーインタフェースは『INTER-MediatorによるWebアプリケーションの概要』にある『入力フォーム型ページの作成』に従ったページを作成してください。その時、ファイルアップロードを受け付ける要素で、deta-im属性を「コンテキスト@_im_csv_upload」にします。@以下は固定のキーワードです。そうすると、CSVファイルの1行ずつをコンテキストに対してレコード追加します。作成方法は、INTER-Mediatorのレポジトリにあるサンプルのうち、samples/Sample_webpage/fileuploadCSV_MySQL.html(定義ファイルは同じフォルダのinclude_MySQL.php)を参考にしてください。

配列指定 params.phpで変数名
第1次元 第2次元
'import' '1st-line' 指定なし、あるいはtrueなら1行目をフィールド指定行と見なす。フィールド指定行がない場合には、'フィールド1,フィールド2, ....'といった文字列を指定する。フィールド指定行あるいはテキストファイルの1行目で、_ という名前のフィールドの場合はその列のデータは読み込みしない。 $import1stLine
'skip-lines' 先頭から指定した数の行数を無視する。指定なしの場合は0と見なす。フィールド指定行は、ここで指定した行数を省いた最初の行と見なす。 $importSkipLines
'format' 読み込むファイルのフォーマットとして"CSV"あるいは"TSV"を指定する。省略すると"CSV" $importFormat
'use-replace' データベースがMySQLの場合、trueにすると、INSERTではなくREPLACEコマンドを利用してファイルの各行のレコードを挿入あるいは更新する。MySQLでない場合は常にINSERTを利用する。省略するとfalseと見なす。 $useReplace
'convert-number' 数値変換を行うフィールド名を配列で指定する。 $comvert2Number
'convert-date' 日付への変換を行うフィールド名を配列で指定する。 $comvert2Date
'convert-datetime' 日付時刻への変換を行うフィールド名を配列で指定する。 $convert2DateTime

[第2引数, オプション設定]
Pusherの設定

Pusher対応はVer.5までです。

配列指定 params.phpで変数名
第1次元 第2次元
'pusher' 'app_id' Pusherで定義したAppのapp_id $pusherParameters
'key' Pusherで定義したAppのkey
'secret' Pusherで定義したAppのsecret

[第2引数, オプション設定]
メール送信サーバー

メール送信については、メール送信(Ver.5)あるいはメール送信(Ver.6)のページに記載しました。

Slackによるメッセージングについては、Slackにメッセージを追加するのページに記載しました。

認証についは別項目「ユーザ認証とアクセス権の動作について」も参照してください。

browser-compatibilityは、params.phpファイルでも指定できますが、ここに指定をした方が有効になります。この指定に含まれているブラウザで通常処理を行い、含まれていないブラウザでは処理を行わないようにします。

以前「trigger」というキーワードを書いていましたが、この設定は不要で、普通にノードに対してJavaScriptの記述をすればいいので、設定としては組み込まないこととします。

第3引数、データベースへの接続情報

データベースヘの接続情報を設定します。この設定を「定義ファイルのデータベース接続設定」と呼ぶことにします。なお、INTER-Mediator.phpと同じフォルダに入れておく「params.php」でも、データベース接続に関する指定が可能です。ページごとに接続情報が違うなら、この引数に指定してもいいのですが、たくさんのファイルで同じ設定ならparams.phpで指定をしてもいいでしょう。さらに、IM_Entry関数の第一パラーメータで指定する配列のコンテキストに対しても設定できます。params.php内で指定できる変数についてもまとめておきます。なお、必要な情報は、データベースクラスごとに異なります。以下の表には、値を必要とするクラスも記述してあります。

インデックス params.phpで変数名
'db-class' データアクセスクラスの名前(例:PDO、FileMaker_FX、FileMaker_DataAPI) $dbClass
'dsn' [PDO]接続時に指定するDSN $dbDSN
'option' [PDO]オプション指定。array型で指定 $dbOption
'database' [FileMaker_FX][FileMaker_DataAPI]データベース名 $dbDatabase
'user' [PDO][FileMaker_FX][FileMaker_DataAPI]ユーザ名 $dbUser
'password' [PDO][FileMaker_FX][FileMaker_DataAPI]パスワード $dbPassword
'server' [FileMaker_FX][FileMaker_DataAPI]サーバーアドレス(例:127.0.0.1) $dbServer
'port' [FileMaker_FX][FileMaker_DataAPI]サーバーポート(例:80) $dbPort
'protocol' [FileMaker_FX][FileMaker_DataAPI]サーバーへの接続プロトコル(例:HTTP) $dbProtocol
'datatype' [FileMaker_FX]サーバーがサポートするデータ形式(例:FMPro12) $dbDataType
'cert-verifying' [FileMaker_DataAPI]接続時に証明書の検証が必要かどうかを論理値で指定(例:true)。未指定時はtrue $certVerifying

第4引数、デバッグ情報の表示

数値かfalseかを指定します。false以外だと、デバッグ情報をページの最初に表示します。1ないしは2を指定でき、2の方が多くの情報を出します。