PHPでPowerCMS XのRESTful APIを素早く・簡単に利用するためのライブラリです。
- PHP version 8.1 or higher
※Enumを使用しているためで、PHP 8.0.xへの対応は検討中です。(なお、RHEL9等のバックポートを除き、PHP 8.0.xの公式サポートは終了しています。)
src
ディレクトリを任意の場所に配置します(ディレクトリ名は適宜変更してください)- APIを利用したいファイルにて
require_once
を利用してsrc/ClientBuilder.php
を読み込みます
examples
ディレクトリもご覧ください。
require_once 'path' . DS . 'to' . DS . 'ClientBuilder.php';
use PowerCMSX\RESTfulAPI\ClientBuilder;
$client = ClientBuilder::create()
->setApplicationUrl('https://powercmsx.localhost/app/api')
->setAuthConfig('username', 'password') // 認証を実行する場合のみ設定
->setSSLVerification(false) // SSLの検証をスキップする場合のみ設定
->setResponseAssociative(true); // レスポンスを連想配列形式で受け取りたい時のみ指定
$entry = $client->getObject('entry', 0, 1); // 引数: モデル, ワークスペースID, オブジェクトID
var_dump($entry->title); // →記事タイトルが表示されます
powercmsx/docs/README-RESTfulAPI.md
もあわせてご確認ください。
オブジェクトを作成します。
- model: string モデル(必須)
- workspaceId: int ワークスペースID(必須)
- data: array リクエストボディ(必須)
オブジェクト一覧を取得します。
- model: string モデル(必須)
- workspaceId: int ワークスペースID(必須)
- data: array クエリストリングの値
- useAuthentication: bool 認証を実行するか否か
オブジェクトを取得します。
- model: string モデル(必須)
- workspaceId: int ワークスペースID(必須)
- query: int | string オブジェクトID(またはベースネーム)(必須)
- useAuthentication: bool 認証を実行するか否か
- cols: array 取得するカラム
オブジェクトを更新します。
- model: string モデル(必須)
- workspaceId: int ワークスペースID(必須)
- id: int オブジェクトID(必須)
- data: object リクエストボディ(必須)
オブジェクトを削除します。
- model: string モデル(必須)
- workspaceId: int ワークスペースID(必須)
- id: int オブジェクトID(必須)
cURL関数を実行します。プラグインで追加したエンドポイントにアクセスする際に使用します。
- path: string パス(必須) ※ワークスペースIDから指定します(例:
/0/api_client_test
) - method: HttpMethod HTTPメソッド(必須)
- data: array リクエストボディまたはクエリストリングの値(必須)
- useAuthentication: bool 認証を実行するか否か
全文検索を実行します。
- model: string モデル(必須)
- workspaceId: int ワークスペースID(必須)
- data: array 検索パラメータ(必須)
フォーム投稿を実行します。
- workspaceId: int ワークスペースID(必須)
- id: int オブジェクトID(必須)
- method: ContactMethod コンタクトメソッド(必須)
- data: object リクエストボディ
ContactMethodは以下から選択します。
- トークンの取得: ContactMethod::Token
- 投稿内容の確認: ContactMethod::Confirm
- 投稿内容の送信: ContactMethod::Submit
カスタムエンドポイントへのリクエストを実行します。
- endpointName: string エンドポイント名(必須)
- workspaceId: int ワークスペースID(必須)
- method: HttpMethod HTTPメソッド(必須)
- data: array リクエストボディまたはクエリストリングの値
- useAuthentication: bool 認証を実行するか否か
HttpMethodは以下から選択します。
- GET: HttpMethod::GET
- POST: HttpMethod::POST
- PUT: HttpMethod::PUT
- DELETE: HttpMethod::DELETE
PowerCMSX\ObjectStatus
を利用するとステータスの値を覚えることなく設定できます。
ObjectStatus::Draft
: 下書きObjectStatus::Review
: レビューObjectStatus::ApprovalPending
: 承認待ちObjectStatus::Reserved
: 公開予約ObjectStatus::Publish
: 公開ObjectStatus::Ended
: 終了
use PowerCMSX\RESTfulAPI\ClientBuilder;
use PowerCMSX\ObjectStatus;
$data = [
'title' => 'APIのテスト',
'basename' => 'api_test',
'status' => ObjectStatus::ApprovalPending->value, // 2が出力され承認待ちになる
];
$entry = $client->createObject('entry', 15, $data);
同様に、PowerCMSX\ObjectEnabled
を利用すると有効・無効の値が取得できます。
ObjectEnabled::Disable
: 無効ObjectEnabled::Enable
: 有効
AssetUtilities::encodeBase64
メソッドにファイルパスを渡すとData URIスキームに変換します。出力された値をData
にセットしてください。
require_once '/path/to/powercmsx/app/lib/Prototype/class.PTUtil.php';
require_once 'src/classes/AssetUtilities.php';
use PowerCMSX\RESTfulAPI\AssetUtilities;
$data = [
'assets' => [
[
'file' => [
'Label' => 'ラベルまたは代替テキスト',
'Data' => AssetUtilities::encodeBase64(__DIR__ . '/assets/test.png'),
'Path' => '%r/assets/test.png',
]
]
]
];
オブジェクトを操作するメソッドをtry...catch文で囲むと、cURL操作のエラーメッセージが取得できる可能性があります。
try {
$entries = $client->listObject('entry', 4, $data);
} catch (Exception $error) {
echo $error->getMessage() . PHP_EOL; // → 例えば「SSL certificate problem: self-signed certificate」のようなメッセージ
}