Every file under src/ exits outside WordPress (defined('ABSPATH') ||
exit; after the use block, so a direct request no longer prints a fatal
error with the server path); divi-convert-fixture.php gets the WP_CLI
guard the other integration scripts have. A unit test keeps both true;
PSR1 side-effects warning excluded for the guard.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
44 lines
1.3 KiB
PHP
44 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace LIT\MCP\Integrations\Divi\Pages;
|
|
|
|
use LIT\MCP\Abilities\Errors;
|
|
use WP_Error;
|
|
use WP_Post;
|
|
|
|
defined('ABSPATH') || exit;
|
|
|
|
/** 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']);
|
|
}
|
|
}
|