oont-contents/plugins/jetpack-boost/app/modules/image-size-analysis/data-sync/class-data-sync-schema.php
2025-04-06 08:34:48 +02:00

138 lines
3.6 KiB
PHP

<?php
namespace Automattic\Jetpack_Boost\Modules\Image_Size_Analysis\Data_Sync;
use Automattic\Jetpack\Schema\Schema;
class Data_Sync_Schema {
public static function image_data() {
return Schema::as_assoc_array(
array(
'id' => Schema::as_string(),
'thumbnail' => Schema::as_string(),
'device_type' => Schema::enum( array( 'phone', 'desktop' ) ),
'status' => Schema::enum( array( 'active', 'ignored' ) )->fallback( 'active' ),
'instructions' => Schema::as_string(),
'type' => Schema::enum( array( 'image_size', 'bad_entry', 'image_missing' ) )->fallback( 'bad_entry' ),
'page' => Schema::as_assoc_array(
array(
'id' => Schema::as_number(),
'url' => Schema::as_string(),
'edit_url' => Schema::as_string()->nullable(),
'title' => Schema::as_string(),
)
),
'image' => Schema::as_assoc_array(
array(
'url' => Schema::as_string(),
'fixed' => Schema::as_boolean()->fallback( false ),
'dimensions' => Schema::as_assoc_array(
array(
'file' => Schema::as_assoc_array(
array(
'width' => Schema::as_number(),
'height' => Schema::as_number(),
)
),
'expected' => Schema::as_assoc_array(
array(
'width' => Schema::as_number(),
'height' => Schema::as_number(),
)
),
'size_on_screen' => Schema::as_assoc_array(
array(
'width' => Schema::as_number(),
'height' => Schema::as_number(),
)
),
)
),
'weight' => Schema::as_assoc_array(
array(
'current' => Schema::as_number(),
'potential' => Schema::as_number(),
)
),
)
)->nullable(),
)
)->nullable();
}
public static function image_size_analysis() {
return Schema::as_assoc_array(
array(
'last_updated' => Schema::as_number(),
'total_pages' => Schema::as_number(),
'images' => Schema::as_array( self::image_data() ),
)
);
}
public static function image_size_analysis_paginate() {
return Schema::as_assoc_array(
array(
'page' => Schema::as_number(),
'group' => Schema::as_string(),
)
);
}
public static function image_size_analysis_fix() {
return Schema::as_assoc_array(
array(
'image_id' => Schema::as_number(),
'image_url' => Schema::as_string(),
'image_width' => Schema::as_number(),
'image_height' => Schema::as_number(),
'post_id' => Schema::as_number(),
'fix' => Schema::as_boolean(),
)
);
}
public static function group_schema() {
return Schema::as_assoc_array(
array(
'issue_count' => Schema::as_number(),
'scanned_pages' => Schema::as_number(),
'total_pages' => Schema::as_number(),
)
)->nullable();
}
public static function image_size_analysis_summary() {
return Schema::as_assoc_array(
array(
'status' => Schema::enum(
array(
'not-found',
'new',
'queued',
'completed',
'error',
'error_stuck',
)
),
'message' => Schema::as_string()->nullable(),
'report_id' => Schema::as_number()->nullable(),
'groups' => Schema::as_assoc_array(
array(
'core_front_page' => self::group_schema(),
'singular_page' => self::group_schema(),
'singular_post' => self::group_schema(),
'other' => self::group_schema(),
'fixed' => self::group_schema(),
)
)->nullable(),
)
)->fallback(
array(
'status' => 'not-found',
'groups' => null,
)
);
}
}