baserCMS クラスリファレンス

PagesTool extends BaseMcpTool
in package

固定ページツールクラス

固定ページのCRUD操作を提供する。

固定ページは pages テーブルと contents テーブルの複合構造であり、名前が 紛らわしい点に注意する。

  • pages.contents … ページ本文(HTML)
  • pages.content(Contents アソシエーション)… タイトル・URL・公開状態・親フォルダ

Table of Contents

Constants

ANNOTATION_CREATE  : mixed = ['readOnlyHint' => false, 'destructiveHint' =>...
追加系ツールの注釈
ANNOTATION_DELETE  : mixed = ['readOnlyHint' => false, 'destructiveHint' =>...
削除系ツールの注釈
ANNOTATION_READ  : mixed = ['readOnlyHint' => true, 'openWorldHint' => false]
読み取り専用ツールの注釈
ANNOTATION_UPDATE  : mixed = ['readOnlyHint' => false, 'destructiveHint' =>...
更新系ツールの注釈
OUTPUT_SCHEMA  : mixed = ['type' => 'object']
ツールの戻り値のスキーマ

Methods

addPage()  : array<string|int, mixed>
固定ページを追加する
deletePage()  : array<string|int, mixed>
固定ページを削除する
editPage()  : array<string|int, mixed>
固定ページを編集する
getMainSiteId()  : int|null
メインサイトのIDを取得する
getPage()  : array<string|int, mixed>
指定されたIDの固定ページを取得する
getPages()  : array<string|int, mixed>
固定ページの一覧を取得する
getPermissionUrl()  : array<string|int, mixed>|false
権限チェック用のURLを取得する
getService()  : array<string|int, mixed>|mixed|object
Get Service
getSiteRootContentId()  : int|null
サイトルートのコンテンツIDを取得する
hasService()  : bool
Has Service
registerTools()  : McpServer
固定ページ関連のツールをサーバーに登録する
cleanupTempFile()  : void
一時ファイルをクリーンアップ
createErrorResponse()  : array<string|int, mixed>
エラー時の戻り値を作成
createSuccessResponse()  : array<string|int, mixed>
成功時の戻り値を作成
createUploadedFileFromArray()  : UploadedFileInterface
配列データからCakePHPのUploadedFileオブジェクトを作成
detectMimeTypeFromContent()  : string
ファイル内容からMIMEタイプを検出
executeWithErrorHandling()  : array<string|int, mixed>
try-catchブロックを共通化してエラーハンドリングを実行
getExtensionFromMimeType()  : string
MIMEタイプから拡張子を取得
getMimeTypeFromExtension()  : string
拡張子からMIMEタイプを取得
isAllowedExtension()  : bool
許可された拡張子かチェック
isFileUploadable()  : bool
値がファイルアップロード可能な形式かどうかを判定
processBase64File()  : array<string|int, mixed>
Base64エンコードされたファイルデータを処理
processFileUpload()  : array<string|int, mixed>|false
ファイルアップロード処理
processImageUpload()  : array<string|int, mixed>|false
画像ファイル専用のアップロード処理
processUrlFile()  : array<string|int, mixed>
URLからファイルをダウンロードして処理
resolveLoginUserId()  : int|null
操作者のユーザーIDを解決する
saveDblog()  : void
操作ログを保存する

Constants

ANNOTATION_CREATE

追加系ツールの注釈

protected mixed ANNOTATION_CREATE = ['readOnlyHint' => false, 'destructiveHint' => false, 'idempotentHint' => false, 'openWorldHint' => false]

追加のみで既存データを壊さない。同じ引数で繰り返すと重複が増えるため 冪等ではない。

ANNOTATION_DELETE

削除系ツールの注釈

protected mixed ANNOTATION_DELETE = ['readOnlyHint' => false, 'destructiveHint' => true, 'idempotentHint' => true, 'openWorldHint' => false]

削除済みのものを再度削除しても結果は変わらない。

ANNOTATION_READ

読み取り専用ツールの注釈

protected mixed ANNOTATION_READ = ['readOnlyHint' => true, 'openWorldHint' => false]

クライアントが読み取りと書き込みを区別できるようにする。Claude の Research はツール呼び出しに都度承認を挟まないため、区別できる情報を 提供する意味がある。readOnlyHint が true のとき、destructiveHint と idempotentHint は意味を持たないため宣言しない。

ANNOTATION_UPDATE

更新系ツールの注釈

protected mixed ANNOTATION_UPDATE = ['readOnlyHint' => false, 'destructiveHint' => true, 'idempotentHint' => true, 'openWorldHint' => false]

既存データを上書きするため破壊的とみなす。同じ引数なら結果は同じ。

OUTPUT_SCHEMA

ツールの戻り値のスキーマ

protected mixed OUTPUT_SCHEMA = ['type' => 'object']

各ツールは配列(エンティティを配列化したものや一覧)を返す。SDK は outputSchema を宣言したツールに限り配列の戻り値を許容し、その値を structuredContent として返しつつ JSON を TextContent にも載せる (SEP-2106)。宣言が無いと戻り値は文字列か CallToolResult に限られる。

個々のツールの戻り値の構造はエンティティの構成に依存するため、 ここでは型のみを宣言する。

Methods

addPage()

固定ページを追加する

public addPage(string $title[, string|null $content = null ][, string|null $name = null ][, int|null $parentId = null ][, int|null $siteId = null ][, int|null $status = 0 ][, string|null $description = null ][, string|null $publishBegin = null ][, string|null $publishEnd = null ][, string|null $pageTemplate = null ][, string|null $eyeCatch = null ][, int|null $loginUserId = null ]) : array<string|int, mixed>

引数の $content(ページ本文)は pages.contents へ、タイトルや URL などは content キー(Contents アソシエーション)へ格納する。

Parameters
$title : string

ページタイトル

$content : string|null = null

ページ本文

$name : string|null = null

URLのスラッグ

$parentId : int|null = null

親フォルダのコンテンツID

$siteId : int|null = null

サイトID

$status : int|null = 0

公開ステータス

$description : string|null = null

説明

$publishBegin : string|null = null

公開開始日時

$publishEnd : string|null = null

公開終了日時

$pageTemplate : string|null = null

ページテンプレート

$eyeCatch : string|null = null

アイキャッチ画像

$loginUserId : int|null = null

ログインユーザーID

Return values
array<string|int, mixed>

deletePage()

固定ページを削除する

public deletePage(int $id[, int|null $loginUserId = null ]) : array<string|int, mixed>

PagesService::delete() は完全削除であり、pages のレコードと 紐づく contents のレコードがいずれも削除される。ゴミ箱にも残らないため 復元できない点に注意する。

Parameters
$id : int

固定ページID

$loginUserId : int|null = null

ログインユーザーID

Return values
array<string|int, mixed>

editPage()

固定ページを編集する

public editPage(int $id[, string|null $title = null ][, string|null $content = null ][, string|null $name = null ][, int|null $parentId = null ][, int|null $status = null ][, string|null $description = null ][, string|null $publishBegin = null ][, string|null $publishEnd = null ][, string|null $pageTemplate = null ][, string|null $eyeCatch = null ][, int|null $loginUserId = null ]) : array<string|int, mixed>

指定された項目のみを更新する。

Parameters
$id : int

固定ページID

$title : string|null = null

ページタイトル

$content : string|null = null

ページ本文

$name : string|null = null

URLのスラッグ

$parentId : int|null = null

親フォルダのコンテンツID

$status : int|null = null

公開ステータス

$description : string|null = null

説明

$publishBegin : string|null = null

公開開始日時

$publishEnd : string|null = null

公開終了日時

$pageTemplate : string|null = null

ページテンプレート

$eyeCatch : string|null = null

アイキャッチ画像

$loginUserId : int|null = null

ログインユーザーID

Return values
array<string|int, mixed>

getMainSiteId()

メインサイトのIDを取得する

public getMainSiteId() : int|null

固定ページは Content が必須で、Content にはサイトの指定が必須である。 サイトIDが省略された場合の既定値として、ID を決め打ちせずメインサイトを DB から解決する。

Return values
int|null

getPage()

指定されたIDの固定ページを取得する

public getPage(int $id) : array<string|int, mixed>
Parameters
$id : int

固定ページID

Return values
array<string|int, mixed>

getPages()

固定ページの一覧を取得する

public getPages([string|null $keyword = null ][, int|null $siteId = null ][, int|null $status = null ][, int|null $limit = 10 ][, int|null $page = 1 ]) : array<string|int, mixed>
Parameters
$keyword : string|null = null

検索キーワード

$siteId : int|null = null

サイトID

$status : int|null = null

公開ステータス

$limit : int|null = 10

取得件数

$page : int|null = 1

ページ番号

Return values
array<string|int, mixed>

getPermissionUrl()

権限チェック用のURLを取得する

public static getPermissionUrl(string $action[, array<string|int, mixed> $args = [] ]) : array<string|int, mixed>|false
Parameters
$action : string

アクション名

$args : array<string|int, mixed> = []

引数

Return values
array<string|int, mixed>|false

getService()

Get Service

public getService(mixed $service) : array<string|int, mixed>|mixed|object
Parameters
$service : mixed
Tags
checked
noTodo
unitTest
Return values
array<string|int, mixed>|mixed|object

getSiteRootContentId()

サイトルートのコンテンツIDを取得する

public getSiteRootContentId(int $siteId) : int|null

親フォルダが指定されなかった場合の配置先として使う。

Parameters
$siteId : int

サイトID

Return values
int|null

hasService()

Has Service

public hasService(mixed $service) : bool
Parameters
$service : mixed
Tags
checked
noTodo
unitTest
Return values
bool

registerTools()

固定ページ関連のツールをサーバーに登録する

public registerTools(McpServer $server) : McpServer
Parameters
$server : McpServer

SDK のサーバー

Return values
McpServer

cleanupTempFile()

一時ファイルをクリーンアップ

protected cleanupTempFile(string $tmpPath) : void
Parameters
$tmpPath : string

一時ファイルのパス

createErrorResponse()

エラー時の戻り値を作成

protected createErrorResponse(string $message[, Throwable|null $exception = null ]) : array<string|int, mixed>
Parameters
$message : string

エラーメッセージ

$exception : Throwable|null = null

例外オブジェクト(トレース情報用)

Return values
array<string|int, mixed>

MCP仕様に準拠したエラーレスポンス

createSuccessResponse()

成功時の戻り値を作成

protected createSuccessResponse(mixed $content[, array<string|int, mixed> $meta = [] ][, mixed $message = '' ][, mixed $userId = null ]) : array<string|int, mixed>
Parameters
$content : mixed

戻り値のコンテンツ

$meta : array<string|int, mixed> = []

追加のメタデータ(paginationなど)

$message : mixed = ''
$userId : mixed = null
Return values
array<string|int, mixed>

MCP仕様に準拠した成功レスポンス

createUploadedFileFromArray()

配列データからCakePHPのUploadedFileオブジェクトを作成

protected createUploadedFileFromArray(array<string|int, mixed> $fileData) : UploadedFileInterface
Parameters
$fileData : array<string|int, mixed>

ファイル情報の配列

Return values
UploadedFileInterface

detectMimeTypeFromContent()

ファイル内容からMIMEタイプを検出

protected detectMimeTypeFromContent(string $fileData) : string
Parameters
$fileData : string

ファイルのバイナリデータ

Return values
string

MIMEタイプ

executeWithErrorHandling()

try-catchブロックを共通化してエラーハンドリングを実行

protected executeWithErrorHandling(callable $callback) : array<string|int, mixed>
Parameters
$callback : callable

実行する処理

Return values
array<string|int, mixed>

MCP仕様に準拠したレスポンス

getExtensionFromMimeType()

MIMEタイプから拡張子を取得

protected getExtensionFromMimeType(string $mimeType) : string
Parameters
$mimeType : string

MIMEタイプ

Return values
string

ファイル拡張子

getMimeTypeFromExtension()

拡張子からMIMEタイプを取得

protected getMimeTypeFromExtension(string $extension) : string
Parameters
$extension : string

ファイル拡張子

Return values
string

MIMEタイプ

isAllowedExtension()

許可された拡張子かチェック

protected isAllowedExtension(string $extension) : bool
Parameters
$extension : string

ファイル拡張子

Return values
bool

許可されている場合はtrue

isFileUploadable()

値がファイルアップロード可能な形式かどうかを判定

protected isFileUploadable(mixed $value) : bool

ファイルアップロード可能な形式は data: URI と http(s) URL の2方式のみ (チャンクアップロードは廃止したため、拡張子付きの文字列は対象外)

Parameters
$value : mixed

判定対象の値

Return values
bool

ファイルアップロード可能な形式の場合true

processBase64File()

Base64エンコードされたファイルデータを処理

protected processBase64File(string $base64Data) : array<string|int, mixed>
Parameters
$base64Data : string

base64エンコードされたファイルデータ

Tags
throws
Exception
Return values
array<string|int, mixed>

アップロード情報の配列

processFileUpload()

ファイルアップロード処理

protected processFileUpload(string $fileData[, string $fieldName = 'file' ]) : array<string|int, mixed>|false
Parameters
$fileData : string

画像の URL、または data: URI 形式の base64 データ

$fieldName : string = 'file'

フィールド名(ログ用)

Return values
array<string|int, mixed>|false

アップロード情報の配列、失敗時はfalse

processImageUpload()

画像ファイル専用のアップロード処理

protected processImageUpload(string $imageData) : array<string|int, mixed>|false
Parameters
$imageData : string

画像の URL、または data: URI 形式の base64 データ

Return values
array<string|int, mixed>|false

アップロード情報の配列、失敗時はfalse

processUrlFile()

URLからファイルをダウンロードして処理

protected processUrlFile(string $url) : array<string|int, mixed>
Parameters
$url : string

ファイルのURL

Tags
throws
Exception
Return values
array<string|int, mixed>

アップロード情報の配列

resolveLoginUserId()

操作者のユーザーIDを解決する

protected resolveLoginUserId([int|null $loginUserId = null ]) : int|null

MCP のツールは JSON-RPC の引数しか受け取らないため、認証済みの操作者は McpContext から取得する。引数で明示された場合はそれを優先する (テストなど、コンテキストを持たない経路のため)。

Parameters
$loginUserId : int|null = null

引数で渡されたユーザーID

Return values
int|null

saveDblog()

操作ログを保存する

protected saveDblog(mixed $userId, mixed $message) : void
Parameters
$userId : mixed
$message : mixed
On this page

Search results