【コラム】
前回はFileMakerクラスのおおまかな機能と、FileMakerサーバ・ファイルの各種情報を取得するためのメソッドの一つ「listDatabases()」を紹介した。今回は各種情報を取得するためのメソッド残り2つ「listLayouts()」「listScripts()」をあわせて紹介しよう。
listLayouts()では指定したFileMakerファイルに用意されているレイアウトの一覧を配列で取得する。取得できるレイアウトは、使用するアカウントの権限で「変更可能」「表示のみ」権限が設定されているものに限られる。
/**
* Obtain a list of layouts from the current database that are
* available with the current server settings and the current
* username and password credentials.
*
* @return array|FileMaker_Error Either an array of layout names or an error.
*/
function listLayouts()
このメソッドに引数は存在しない。また実際のロジックが記載されている難読化されたImplementation/FileMakerImpl.phpを追うと、「-db」クエリと「-layoutnames」クエリが使用されていることがわかる。
前回紹介したlistsDatabases()はFileMakerサーバに公開されているファイル単位だったが、listLayouts()では1FileMakerファイル単位となっている。前回のようにFileMakerファイル名を省略すると「802: Unable to open file」エラーが返るので注意しよう。それでは早速実際にコードを書いてみる。
fmapi_listlay.php
<?php
include_once('../FileMaker.php');
$data = new FileMaker('fmapi_test', 'http://localhost:80', 'admin', 'admin');
$result = $data->listLayouts();
if (FileMaker::isError($result))
{
// エラー処理..
echo 'FileMaker Error Code: ' . $result->getCode();
echo '<p>'. $result->getMessage() . '</p>';
}
else
{
// 正常処理..
echo '<pre>';
var_dump($result);
echo '<pre>';
}
?>
前回紹介したlistDatabases()のサンプルと違う箇所は、おもに次の2点。
7行目の$result = $data->listLayouts();でhttp://localhost:80/fmi/xml/fmresultset.xml?-db=fmapi_test&-layoutnamesへのアクセス結果を取得し、結果として返る配列を$resultに格納、正常処理ならばvar_dump()で$resultを展開・表示する。このほか、var_dumpで出力する結果を<pre>でかこみ見やすくしている。Webブラウザで表示してみよう。
上記のコードで使用したアカウントは「admin」。このアカウントはアクセス権セットが「完全アクセス」となっているため、すべてのレイアウト名を取得することが可能だ。独自のアクセス権セットを作成し「データアクセスとデザイン > レイアウト」で"カスタムアクセス権"を指定したアカウントを使用する場合は、アクセス権のあるレイアウトのみが取得される。
特定のレイアウトのみに権限を設定したアクセス権セット「test_listsLayout」を作成。拡張アクセス権「fmphp」にチェックを入れ、あたらしく作成したアカウント「user」に割りあてた。fmapi_listlay.php上で記述しているアカウント「admin」を「user」に置きかえて再度Webブラウザで開いてみよう。
アカウントとアクセス権セットが複数ある複雑な権限構成のファイルの場合、このlistLayouts()を活用すればレイアウト遷移用のUIやメンテナンス用の機能を楽に実装することが可能となる。
listScripts()では指定したFileMakerファイルに実装されたFileMakerスクリプトの一覧を配列で取得する。取得できるスクリプトはlistLayoutsと同様、使用するアカウントの権限で「変更可能」「実行のみ」権限が設定されているものに限られる。
/**
* Obtain a list of scripts from the current database that are
* available with the current server settings and the current
* username and password credentials.
*
* @return array|FileMaker_Error Either an array of script names or an error.
*/
function listScripts()
このメソッドに引数は存在しない。内部の実装では「-db」クエリと「-scriptnames」クエリが使用されている。
FileMakerスクリプトを取得する単位や使い方は、listLayouts()とほぼ同じだ。実際にコードを書いてみよう。
fmapi_listscripts.php
<?php
include_once('../FileMaker.php');
$data = new FileMaker('fmapi_test', 'http://localhost:80', 'admin', 'admin');
$result = $data->listScripts();
if (FileMaker::isError($result))
{
// エラー処理..
echo 'FileMaker Error Code: ' . $result->getCode();
echo '<p>'. $result->getMessage() . '</p>';
}
else
{
// 正常処理..
echo '<pre>';
var_dump($result);
echo '<pre>';
}
?>
listLayouts()のサンプルの7行目で使用するメソッドをlistLayouts()からlistScripts()に変更しているだけだ。$result = $data->listScripts();でhttp://localhost:80/fmi/xml/fmresultset.xml?-db=fmapi_test&-scriptnamesへのアクセス結果を取得し、結果を展開・表示する。Webブラウザで表示してみよう。
アカウント名「admin」で利用可能なFileMakerスクリプトの一覧が表示された。listScripts()もlistLayouts()同様、使用するアカウントで利用できるFileMakerスクリプトのみを取得するようになっている。さきほどと同様にテスト用のアクセス権セット・アカウントを用意し、fmapi_listscripts.phpのアカウントを変更してWebブラウザで表示してみよう。
今回紹介したlistLayouts()とlistScripts()はインスタントWeb公開のような「FileMakerライクなWebアプリ」をPHPで実装する場合に重宝する。うまく使えば、複数権限での機能制限が正しく動作しているかを自動確認するユニットテストにも組みこめる。シンプルながらじつに活用方法の幅が広い機能だ。
| ファイルメーカー、日本初の「FileMaker Conference 2009」開催 [2009/10/30] |
| ファイルメーカー、FileMaker Business Allianceメンバー向け割引購入プログラム [2009/6/4] |
| ファイルメーカー、参加無料イベント「FileMaker Road Show 2009」開催 [2009/6/4] |
| ファイルメーカー粟倉社長に聞く、DBアプリ「Bento for iPhone」の国内展開 [2009/6/3] |
| 『ファイルメーカー選手権』でMacBook ProやVAIOを手に入れよう [2009/6/3] |
| Mac Fan ソフトウェアレビュー 第58回 データベース作成ソフト「FileMaker Pro 10」 [2009/5/25] |
| FileMaker、iPhone/iPod touch版「Bento」が登場 - Bento 2.0と同期可能 [2009/5/5] |
| ファイルメーカー、FileMaker用テーマパックを期間限定で無料配布 [2009/4/17] |
| FileMaker Pro 10の魅力はいかに? - 米FileMaker社長 ドミニーク P.グピール氏に聞く [2009/2/24] |
| ファイルメーカーの新社長に粟倉豊氏が就任 [2009/2/2] |
| インタフェースを一新した「FileMaker Pro 10」が発売 [2009/1/6] |
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
【女性編】バレンタインチョコをあげたい芸能人ランキング [15:00 2/11] ライフ |
|
【男性編】バレンタインチョコをもらいたい芸能人ランキング [15:00 2/11] ライフ |
|
[戸田菜穂]第1子女児を出産 「感動でいっぱい」春にも仕事復帰 [14:51 2/11] エンタメ |
|
倉薗紀彦、田舎での友情物語「彗星★少年団」発売サイン会 [14:46 2/11] ホビー |
|
[成宮寛貴]ギザギザ頭 のかつらは「やばかった」 映画「逆転裁判」公開 [14:30 2/11] エンタメ |