refactor: DiviWriteAbility base and shared DiviErrors (H4)
The five Divi write tools extend DiviWriteAbility (final permission and execute, change() per tool, shared output schema). DiviErrors holds the unknown-node, position and compose-error mapping; DiviContentComposer uses the same mapping (ledger T9). ToolNamingTest skips abstract classes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LIT\MCP\Integrations\Divi\Pages;
|
||||
|
||||
use LIT\MCP\Abilities\Errors;
|
||||
use WP_Error;
|
||||
use WP_Post;
|
||||
|
||||
/** The client errors the Divi tools share. */
|
||||
final class DiviErrors
|
||||
{
|
||||
/** A path ID that names no node of $post. */
|
||||
public static function unknownNode(string $id, WP_Post $post): WP_Error
|
||||
{
|
||||
return Errors::notFound(
|
||||
sprintf('Knoten "%s" gibt es in Eintrag %d nicht.', $id, $post->ID),
|
||||
DiviPageLoader::OUTLINE_HINT
|
||||
);
|
||||
}
|
||||
|
||||
/** A parent / before / after / index the tree has no place for (TreeEditor::position()). */
|
||||
public static function position(string $problem): WP_Error
|
||||
{
|
||||
return Errors::invalidInput('Ungültige Position; nichts wurde gespeichert.', ['position' => $problem]);
|
||||
}
|
||||
|
||||
/**
|
||||
* The errors of Composer::compose()/update(): invalid_attr_path when an attribute path is
|
||||
* unknown (the more useful hint), else invalid_input with $message.
|
||||
*
|
||||
* @param array{errors: array<string, string>, invalid_paths: list<string>} $result
|
||||
*/
|
||||
public static function composed(array $result, string $message): WP_Error
|
||||
{
|
||||
return $result['invalid_paths'] !== []
|
||||
? Errors::invalidAttrPath($result['errors'])
|
||||
: Errors::invalidInput($message, $result['errors']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user