Edit File by line
/home/zeestwma/ajeebong.../wp-conte.../plugins/image-op.../classes/image
File: image-query-builder.php
<?php
[0] Fix | Delete
[1] Fix | Delete
namespace ImageOptimization\Classes\Image;
[2] Fix | Delete
[3] Fix | Delete
use WP_Query;
[4] Fix | Delete
[5] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[6] Fix | Delete
exit; // Exit if accessed directly.
[7] Fix | Delete
}
[8] Fix | Delete
[9] Fix | Delete
class Image_Query_Builder {
[10] Fix | Delete
private array $query;
[11] Fix | Delete
[12] Fix | Delete
public function return_images_only_with_backups(): self {
[13] Fix | Delete
$this->query['meta_query'][] = [
[14] Fix | Delete
'compare' => 'NOT LIKE',
[15] Fix | Delete
'value' => '"backups";a:0', // Serialized empty array of backups
[16] Fix | Delete
'key' => Image_Meta::IMAGE_OPTIMIZER_METADATA_KEY,
[17] Fix | Delete
];
[18] Fix | Delete
[19] Fix | Delete
return $this;
[20] Fix | Delete
}
[21] Fix | Delete
[22] Fix | Delete
public function return_not_optimized_images(): self {
[23] Fix | Delete
$this->query['meta_query'][] = [
[24] Fix | Delete
'relation' => 'OR',
[25] Fix | Delete
[
[26] Fix | Delete
'key' => Image_Meta::IMAGE_OPTIMIZER_METADATA_KEY,
[27] Fix | Delete
'compare' => 'NOT EXISTS',
[28] Fix | Delete
],
[29] Fix | Delete
[
[30] Fix | Delete
'compare' => 'LIKE',
[31] Fix | Delete
'value' => '-failed";',
[32] Fix | Delete
'key' => Image_Meta::IMAGE_OPTIMIZER_METADATA_KEY,
[33] Fix | Delete
],
[34] Fix | Delete
[
[35] Fix | Delete
'compare' => 'LIKE',
[36] Fix | Delete
'value' => ':"not-optimized";',
[37] Fix | Delete
'key' => Image_Meta::IMAGE_OPTIMIZER_METADATA_KEY,
[38] Fix | Delete
],
[39] Fix | Delete
];
[40] Fix | Delete
[41] Fix | Delete
return $this;
[42] Fix | Delete
}
[43] Fix | Delete
[44] Fix | Delete
public function return_optimization_in_progress_images(): self {
[45] Fix | Delete
$this->query['meta_query'][] = [
[46] Fix | Delete
'relation' => 'AND',
[47] Fix | Delete
[
[48] Fix | Delete
'key' => '_wp_attachment_metadata',
[49] Fix | Delete
'compare' => 'EXISTS',
[50] Fix | Delete
],
[51] Fix | Delete
[
[52] Fix | Delete
'relation' => 'OR',
[53] Fix | Delete
[
[54] Fix | Delete
'compare' => 'LIKE',
[55] Fix | Delete
'value' => 'optimization-in-progress";',
[56] Fix | Delete
'key' => 'image_optimizer_metadata',
[57] Fix | Delete
],
[58] Fix | Delete
[
[59] Fix | Delete
'compare' => 'LIKE',
[60] Fix | Delete
'value' => 'reoptimizing-in-progress";',
[61] Fix | Delete
'key' => 'image_optimizer_metadata',
[62] Fix | Delete
],
[63] Fix | Delete
],
[64] Fix | Delete
];
[65] Fix | Delete
[66] Fix | Delete
return $this;
[67] Fix | Delete
}
[68] Fix | Delete
[69] Fix | Delete
public function return_optimized_images(): self {
[70] Fix | Delete
$this->query['meta_query'][] = [
[71] Fix | Delete
'compare' => 'LIKE',
[72] Fix | Delete
'value' => '"status";s:9:"optimized"',
[73] Fix | Delete
'key' => Image_Meta::IMAGE_OPTIMIZER_METADATA_KEY,
[74] Fix | Delete
];
[75] Fix | Delete
[76] Fix | Delete
return $this;
[77] Fix | Delete
}
[78] Fix | Delete
[79] Fix | Delete
public function return_images_with_non_empty_meta(): self {
[80] Fix | Delete
$this->query['meta_query'][] = [
[81] Fix | Delete
'key' => Image_Meta::IMAGE_OPTIMIZER_METADATA_KEY,
[82] Fix | Delete
'compare' => 'EXISTS',
[83] Fix | Delete
];
[84] Fix | Delete
[85] Fix | Delete
return $this;
[86] Fix | Delete
}
[87] Fix | Delete
[88] Fix | Delete
public function set_paging_size( int $paging_size ): self {
[89] Fix | Delete
$this->query['posts_per_page'] = $paging_size;
[90] Fix | Delete
[91] Fix | Delete
return $this;
[92] Fix | Delete
}
[93] Fix | Delete
[94] Fix | Delete
public function set_current_page( int $current_page ): self {
[95] Fix | Delete
$this->query['paged'] = $current_page;
[96] Fix | Delete
[97] Fix | Delete
return $this;
[98] Fix | Delete
}
[99] Fix | Delete
[100] Fix | Delete
public function set_image_ids( array $image_ids ): self {
[101] Fix | Delete
// Passing an empty array to post__in will return the last posts instead of an empty result.
[102] Fix | Delete
$this->query['post__in'] = count( $image_ids ) ? $image_ids : [ 0 ];
[103] Fix | Delete
[104] Fix | Delete
return $this;
[105] Fix | Delete
}
[106] Fix | Delete
[107] Fix | Delete
public function set_mime_types( array $mime_types ): self {
[108] Fix | Delete
$this->query['post_mime_type'] = $mime_types;
[109] Fix | Delete
[110] Fix | Delete
return $this;
[111] Fix | Delete
}
[112] Fix | Delete
[113] Fix | Delete
public function execute(): WP_Query {
[114] Fix | Delete
return new WP_Query( $this->query );
[115] Fix | Delete
}
[116] Fix | Delete
[117] Fix | Delete
public function __construct() {
[118] Fix | Delete
$basic_query = [
[119] Fix | Delete
'post_type' => 'attachment',
[120] Fix | Delete
'post_mime_type' => Image::get_supported_mime_types(),
[121] Fix | Delete
'post_status' => 'any',
[122] Fix | Delete
'fields' => 'ids',
[123] Fix | Delete
'posts_per_page' => -1,
[124] Fix | Delete
'meta_query' => [
[125] Fix | Delete
'relation' => 'AND',
[126] Fix | Delete
[
[127] Fix | Delete
'key' => '_wp_attachment_metadata', // Images without this field considered invalid
[128] Fix | Delete
'compare' => 'EXISTS',
[129] Fix | Delete
],
[130] Fix | Delete
],
[131] Fix | Delete
];
[132] Fix | Delete
[133] Fix | Delete
$this->query = $basic_query;
[134] Fix | Delete
}
[135] Fix | Delete
}
[136] Fix | Delete
[137] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function