PHPによるプログラミング・ガイド (クラス Prototype編)

概要

クラス Prototypeは PowerCMS X の MVCにおける Controllerの役割を担うPHPのクラスです。アプリケーション「PowerCMS X」の実体といえます。

<?php
    require_once( __DIR__ . DIRECTORY_SEPARATOR .'class.Prototype.php' );
    $app = new Prototype();
    $app->init();
    $app->run();

クラス「Prototype」インスタンスの呼び出し

    $app = Prototype::get_instance();

クラス「Prototype」のメソッド


$app->init();

アプリケーションを初期化します。

$app->run();

アプリケーションを実行します。パラメタ__modeによって実行される処理が分岐します。

$app->login();

POSTリクエストのnameパラメタとpasswordパラメタにより、ログイン処理を実行します。

$app->is_login;

現在のユーザーがログイン済みかどうかを返します。

戻り値
  • bool $logged_in : ログイン済みかどうか

$app->logout();

現在のログイン Cookie をクリアし、セッションを破棄します。

$app->build( $text [, $ctx ] );

テンプレート文字列をビルドします。

パラメタ
  • string $text : ビルドするテンプレート
  • object $ctx : クラス「PAML」
戻り値
  • string $build : ビルド結果のテキスト

$app->build_page( $tmpl [, $param, $output ] );

テンプレートファイルのパスを指定してビルドします。

パラメタ
  • string $tmpl : ビルドするテンプレートファイルのパス
  • array $param : テンプレート変数の配列(省略可)
  • bool $output : ビルド結果をechoする(デフォルトtrue)
戻り値
  • string $build : ビルド結果のテキスト($outputがfalseの時のみ)

$app->get_permalink( $obj );

オブジェクトにURLがある時、パーマリンクを返します。

パラメタ
  • object $obj : 対象のオブジェクト
戻り値
  • string $permalink : オブジェクトのパーマリンク

$app->max_status( $user, $model [, $workspace ] );

ユーザーがモデルのオブジェクトに設定可能なステータスの最大値を返します。

パラメタ
  • object $user : 対象のユーザー
  • string $model : モデル名
  • object $workspace : スペース(省略時システムのオブジェクトが対象)
戻り値
  • int $status : そのユーザーがオブジェクトに設定可能なステータスの最大値

$app->can_do( $model [, $action, $obj, $workspace, $user ] );

ユーザーがその権限を有するかどうかを返します。

  • string $model : モデル名
  • string $action : アクション名(例 : edit )
  • string $obj : 特定のオブジェクトに対する権限チェックの時に指定
  • object $workspace : スペース(省略時システムのオブジェクトが対象)
  • object $user : 対象のユーザー(省略時は現在のユーザーが対象)
戻り値
  • bool $can_do : そのユーザーが指定のアクションに対する権限があるかどうか

$app->permissions( $user );

ユーザーの権限の一覧をスペースのIDをキーにした配列で返します。

パラメタ
  • object $user : 対象のユーザー(省略時は現在のユーザーが対象)
戻り値
  • array $permissions : そのユーザーが有する権限の配列

$app->upload_dir();

一時ディレクトリを生成してそのパスを返します。__destructメソッドが呼ばれた時にディレクトリは自動的に削除されます。

戻り値
  • string $dirname : 一時ディレクトリのパス

$app->publish_obj ( $obj [, $original, $dependencies, $files_only ] );

オブジェクトを再構築(パブリッシュ)します。再構築されるのは、アーカイブとバイナリ/ファイル型のカラムが対象です。オブジェクトが下書きの時は、URLオブジェクトのみを発行します。

パラメタ
  • object $obj : 対象のオブジェクト
  • object $original : 更新前のオブジェクト
  • bool $dependencies : 関連アーカイブを再構築するかどうか(省略時false)
  • bool $files_only : アーカイブを再構築せずに、バイナリ/ファイル型のカラムのみをディスクに書き出す(省略時false)

$app->init_tags();

ダイナミック・タグをシステムに登録します。

$app->set_relations ( $args, $ids [, $add_only, $errors ] );

リレーションをセットします。

パラメタ
  • array $args : from_id、name(擬似カラム名)、from_obj(元モデル)、to_obj(関連モデル)をキーにした配列
  • array $to_ids : 関連オブジェクトIDの配列

以下の例は、ID=1の記事にIDが1と2のカテゴリを紐づけます。

    $args = ['from_id' => 1, 
             'name' => 'categories',
             'from_obj' => 'entry',
             'to_obj' => 'category' ];
    $to_ids = [1, 2];
    $app->set_relations( $args, $to_ids );

$app->file_attach_to_obj ( $obj, $col, $path [, $label ] );

バイナリ/ファイル型のカラムにファイルのデータをセットしてURLを発行します。

パラメタ
  • object $obj : 対象のオブジェクト
  • string $col : カラム名
  • string $path : ファイルのパス
  • string $label : ファイルのラベルまたは画像の代替テキスト

$app->remove_object ( $obj [, $table ] );

オブジェクトを削除し、リレーションなどの関連付けされたデータを一緒に削除します。

パラメタ
  • object $obj : 対象のオブジェクト
  • object $table : table(モデル)オブジェクト

$app->return_to_dashboard ( [ $options, $system ] );

ダッシュボードにリダイレクトします。

  • array $options : 追加するパラメタ
  • bool $system : システムのダッシュボードへリダイレクトする(省略時false)

$app->get_table( $model );

table(モデル)オブジェクトを返します。

パラメタ
  • string $model : モデル名
戻り値
  • object $table : table(モデル)オブジェクト

$app->generate_uuid( [ $model ] );

パラメタ
  • string $model : モデル名
戻り値
  • string $uuid : ユニークID

$app->magic();

ユニークなセッション名を生成してします。

戻り値
  • string $session_name : ユニークなセッション名

$app->get_scheme_from_db( $model );

データベースに登録されているモデルのカラムをシステムに認識させ、スキーマの配列を返します。

パラメタ
  • string $model : モデル名
戻り値
  • array $sheme : テーブルスキーマの配列

以下の例では、記事に会社名(company_name)カラムを追加した時、get_scheme_from_db の実行前と実行後で結果が異なります。

    $app->db->model( 'entry' )->has_column( 'company_name' ); // false
    $app->get_scheme_from_db( 'entry' );
    $app->db->model( 'entry' )->has_column( 'company_name' ); // true

$app->validate_magic();

magic_tokenパラメタをチェックし、正しいトークンが渡されなかった時にエラーを返します。

$app->status_published( $model );

モデルにステータス(ststus)カラムがある時、そのオブジェクトの公開状態を示すステータスの番号を返します。モデルが「有効期限対応」の時「4」、それ以外の時は「2」が返ります。

パラメタ
  • string $model : モデル名
戻り値
  • int $status : ステータス「公開」の数字(2または4)

$app->get_relations ( $obj, [ $to_obj, $name, $args ] );

オブジェクトの関連付けを格納しているテーブル「relation」のレコードの配列を返します。

パラメタ
  • object $obj : 対象のオブジェクト
  • string $to_obj : 関連オブジェクトのモデル名
  • string $name : 擬似カラム名
  • array $args : relationのloadメソッドに対する第2引数(ソート条件など)

$app->get_related_objs( $obj, $to_obj, [ $name, $args, $terms, $select_cols ] );

オブジェクトに関連付けされているオブジェクトの配列を返します。

パラメタ
  • object $obj : 対象のオブジェクト
  • string $to_obj : 関連オブジェクトのモデル名
  • string $name : 擬似カラム名
  • array $args : オブジェクトのloadメソッドに対する第2引数(ソート条件など)
  • array $terms : オブジェクトのloadメソッドに対する第1引数
  • string $cols : オブジェクトのloadメソッドに対する第4引数(SELECT対象のカラム名のカンマ区切り文字列)
戻り値
  • array $objects : 関連オブジェクトの配列

以下の例は、記事の assets擬似カラムに関連付けられているアセットオブジェクトの配列を返します。

$entry_assets = $app->get_related_objs( $entry, 'asset', 'assets' );

$app->get_assetproperty ( $obj, $name [, $property ] );

バイナリ/ファイル型のカラムに格納されているファイルのメタデータを返します(例: image_height、file_size、extension、mime_type等)。

パラメタ
  • object $obj : 対象のオブジェクト
  • string $name : バイナリ/ファイル型のカラム名
  • string $property : プロパティ名(allを指定するとすべてのプロパティが配列で返ります)
戻り値
  • mixed $property : プロパティの値または配列

$app->get_meta ( $obj, [ $kind, $key, $name ] );

オブジェクトのメタデータ(metaオブジェクト)の配列を返します。

パラメタ
  • object $obj : 対象のオブジェクト
  • string $kind : メタデータの種類
  • string $key : メタデータのキー
  • string $name : メタデータ名
戻り値
  • array $meta : metaオブジェクトの配列

$app->set_default( $obj );

オブジェクトのカラムに対する初期値(ステータスやベースネーム)や日時、ユーザーなどを自動的にセットします。

パラメタ
  • object $obj : 対象のオブジェクト

$app->translate ( $phrase [, $params, $component, $lang ] );

テキストを翻訳します。

パラメタ
  • string $phrase : 翻訳元のテキスト
  • mixed $params : パラメタの文字列もしくは配列
  • object $component : 翻訳対象のプラグインクラス(省略時はPrototypeコア)
  • string $lang : 言語(省略時は現在のユーザーの言語)
戻り値
  • string $translated : 翻訳済みの文字列

$app->log( $message );

システムログにメッセージを記録します。

パラメタ
  • mixed $message : メッセージ文字列またはLogオブジェクトのカラム名と値の配列

$app->redirect( $url );

指定のURLに302リダイレクトします。

パラメタ
  • string $url : リダイレクト先のURL

$app->moved_permanently( $url );

指定のURLに301リダイレクト(恒久的リダイレクト)します。

パラメタ
  • string $url : リダイレクト先のURL

$app->bake_cookie ( $name, $value [,$expires, $path ] );

クッキーをセットします。

パラメタ
  • string $name : クッキー名
  • string $value : クッキーの値
  • int $expires : クッキーの有効期限(秒)
  • string $path : クッキーの有効パス

$app->cookie_val( $name );

クッキーの値を取得します。

パラメタ
  • string $name : クッキー名
戻り値
  • string $value : クッキーの値

$app->error ( $message [, $params, $component, $lang ] );

メッセージを指定してエラー画面を返します。

パラメタ
  • string $message : エラーメッセージ
  • mixed $params : パラメタの文字列もしくは配列
  • object $component : 翻訳対象のプラグインクラス(省略時はPrototypeコア)
  • string $lang : 言語(省略時は現在のユーザーの言語)

$app->json_error( $message [, $params, $status , $component, $lang ] );

メッセージを指定してJSON文字列でエラーメッセージを返します。

パラメタ
  • string $message : エラーメッセージ
  • mixed $params : パラメタの文字列もしくは配列
  • int $status : ステータスコード
  • object $component : 翻訳対象のプラグインクラス(省略時はPrototypeコア)
  • string $lang : 言語(省略時は現在のユーザーの言語)
戻り値
  • string $json : JSON形式のエラーメッセージ

$app->rollback( $message [, $params, $component, $lang ] );

現在のトランザクションによるデータの変更処理をロールバックして、エラー画面を返します。

パラメタ
  • string $message : エラーメッセージ
  • mixed $params : パラメタの文字列もしくは配列
  • object $component : 翻訳対象のプラグインクラス(省略時はPrototypeコア)
  • string $lang : 言語(省略時は現在のユーザーの言語)

$app->query_string();

現在のリクエストのクエリ文字列を返します。

戻り値
  • string $query_string : クエリ文字列

$app->param( [ $name, $value ] );

現在のリクエストに対する $nameクエリパラメタの値を返します。第2引数の指定がある時は、値をセットします。

パラメタ
  • string $name : パラメタ名(省略時はすべてのパラメタの配列が返ります)
  • string $value : パラメタにセットする値
戻り値
  • mixed $query : クエリ文字列またはすべてのクエリの配列

$app->is_valid_email( $email [, $message ] );

正しいメールアドレスかどうかをチェックします。

パラメタ
  • string $email : チェックするメールアドレス
  • string $message : エラーの時、エラーメッセージがセットされます。
戻り値
  • bool $is_valid : 正しいメールアドレスかどうか

$app->is_valid_url( $url [, $message ] );

正しいURLかどうかをチェックします。

パラメタ
  • string $email : チェックするURL
  • string $message : エラーの時、エラーメッセージがセットされます。
戻り値
  • bool $is_valid : 正しいURLかどうか

$app->is_valid_password( $pass [, $verify, $message ] );

正しいパスワードかどうかを現在のパスワードポリシーに従ってチェックします。

パラメタ
  • string $pass : チェックするパスワード
  • string $verify : チェックするパスワード(同一確認用)
  • string $message : エラーの時、エラーメッセージがセットされます。
戻り値
  • bool $is_valid : 正しいパスワードかどうか

$app->escape( $string [, $kind ] );

文字列をルールに従ってエスケープします。

パラメタ
  • string $string : エスケープする文字列
  • string $kind : エスケープのルール(省略時html)

※ 指定可能な値は html, url, xml, javascript(js), sql, shell, shellarg, shellcmd, php, regex(preg)です。

$app->print ( $data [, $mime_type, $ts, $do_conditional ] );

適切な HTTP_HEADERを付けてデータを出力(echo)します。

パラメタ
  • string $data : 出力するデータ
  • string $mime_type : MIME TYPE(省略時text/html)
  • int $ts : 更新タイムスタンプ
  • bool $do_conditional : ブラウザキャッシュを利用するかどうか(省略時false)