Files
WP-LIT-MCP/src/Integrations/Divi/Pages/DiviErrors.php
T
janniclas.loosenandClaude Opus 5.5 b24eb6c3e9 fix(security): no direct HTTP access to plugin PHP files (audit L2, cheap part)
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
2026-09-26 19:32:12 +02:00

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']);
}
}