PluginProbe ʕ •ᴥ•ʔ
CommerceBird – AI Command Center, ERP Integrations & B2B for WooCommerce (Zoho, Exact Online). / trunk
CommerceBird – AI Command Center, ERP Integrations & B2B for WooCommerce (Zoho, Exact Online). vtrunk
3.0.3 3.0.2 3.0.1 trunk 2.2.14 2.2.15 2.2.16 2.2.17 2.2.18 2.2.19 2.3.0 2.3.1 2.3.10 2.3.11 2.3.12 2.3.13 2.3.14 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.7.91 2.7.92 2.7.93 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.9.0 2.9.1 2.9.2 2.9.3 3.0.0
commercebird / vendor / wordpress / php-mcp-schema / src / Common / Protocol / DTO / Icons.php
commercebird / vendor / wordpress / php-mcp-schema / src / Common / Protocol / DTO Last commit date
Annotations.php 3 months ago BaseMetadata.php 3 months ago BlobResourceContents.php 3 months ago CancelledNotification.php 3 months ago CancelledNotificationParams.php 3 months ago EmbeddedResource.php 3 months ago EmptyResult.php 3 months ago GetTaskPayloadRequest.php 3 months ago GetTaskPayloadRequestParams.php 3 months ago GetTaskPayloadResult.php 3 months ago Icons.php 3 months ago InitializeRequest.php 3 months ago InitializeRequestParams.php 3 months ago InitializeResult.php 3 months ago InitializedNotification.php 3 months ago PaginatedRequest.php 3 months ago PaginatedRequestParams.php 3 months ago PaginatedResult.php 3 months ago PingRequest.php 3 months ago ProgressNotification.php 3 months ago ProgressNotificationParams.php 3 months ago Result.php 3 months ago TextResourceContents.php 3 months ago URLElicitationRequiredError.php 3 months ago
Icons.php
100 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace WP\McpSchema\Common\Protocol\DTO;
6
7 use WP\McpSchema\Common\AbstractDataTransferObject;
8 use WP\McpSchema\Common\Core\DTO\Icon;
9 use WP\McpSchema\Common\Traits\ValidatesRequiredFields;
10
11 /**
12 * Base interface to add `icons` property.
13 *
14 * @since 2025-11-25
15 *
16 * @mcp-domain Common
17 * @mcp-subdomain Protocol
18 * @mcp-version 2025-11-25
19 */
20 class Icons extends AbstractDataTransferObject
21 {
22 use ValidatesRequiredFields;
23
24 /**
25 * Optional set of sized icons that the client can display in a user interface.
26 *
27 * Clients that support rendering icons MUST support at least the following MIME types:
28 * - `image/png` - PNG images (safe, universal compatibility)
29 * - `image/jpeg` (and `image/jpg`) - JPEG images (safe, universal compatibility)
30 *
31 * Clients that support rendering icons SHOULD also support:
32 * - `image/svg+xml` - SVG images (scalable but requires security precautions)
33 * - `image/webp` - WebP images (modern, efficient format)
34 *
35 * @since 2025-11-25
36 *
37 * @var array<\WP\McpSchema\Common\Core\DTO\Icon>|null
38 */
39 protected ?array $icons;
40
41 /**
42 * @param array<\WP\McpSchema\Common\Core\DTO\Icon>|null $icons @since 2025-11-25
43 */
44 public function __construct(
45 ?array $icons = null
46 ) {
47 $this->icons = $icons;
48 }
49
50 /**
51 * Creates an instance from an array.
52 *
53 * @param array{
54 * icons?: array<array<string, mixed>|\WP\McpSchema\Common\Core\DTO\Icon>|null
55 * } $data
56 * @phpstan-param array<string, mixed> $data
57 * @return self
58 */
59 public static function fromArray(array $data): self
60 {
61 /** @var array<\WP\McpSchema\Common\Core\DTO\Icon>|null $icons */
62 $icons = isset($data['icons'])
63 ? array_map(
64 static fn($item) => is_array($item)
65 ? Icon::fromArray($item)
66 : $item,
67 self::asArray($data['icons'])
68 )
69 : null;
70
71 return new self(
72 $icons
73 );
74 }
75
76 /**
77 * Converts the instance to an array.
78 *
79 * @return array<string, mixed>
80 */
81 public function toArray(): array
82 {
83 $result = [];
84
85 if ($this->icons !== null) {
86 $result['icons'] = array_map(static fn($item) => $item->toArray(), $this->icons);
87 }
88
89 return $result;
90 }
91
92 /**
93 * @return array<\WP\McpSchema\Common\Core\DTO\Icon>|null
94 */
95 public function getIcons(): ?array
96 {
97 return $this->icons;
98 }
99 }
100