Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/wp-conte.../plugins/wp-smush.../core/stats
File: class-global-stats.php
<?php
[0] Fix | Delete
[1] Fix | Delete
namespace Smush\Core\Stats;
[2] Fix | Delete
[3] Fix | Delete
use Smush\Core\Array_Utils;
[4] Fix | Delete
use Smush\Core\Attachment_Id_List;
[5] Fix | Delete
use Smush\Core\Media\Media_Item;
[6] Fix | Delete
use Smush\Core\Media\Media_Item_Cache;
[7] Fix | Delete
use Smush\Core\Media\Media_Item_Optimization_Global_Stats;
[8] Fix | Delete
use Smush\Core\Media\Media_Item_Optimizer;
[9] Fix | Delete
use Smush\Core\Media\Media_Item_Query;
[10] Fix | Delete
use Smush\Core\Media\Media_Item_Stats;
[11] Fix | Delete
use Smush\Core\Modules\Background\Mutex;
[12] Fix | Delete
[13] Fix | Delete
class Global_Stats {
[14] Fix | Delete
const GLOBAL_STATS_OPTION_ID = 'wp_smush_global_stats';
[15] Fix | Delete
const OPTIMIZE_LIST_OPTION_ID = 'wp-smush-optimize-list';
[16] Fix | Delete
const REOPTIMIZE_LIST_OPTION_ID = 'wp-smush-reoptimize-list';
[17] Fix | Delete
const ERROR_LIST_OPTION_ID = 'wp-smush-error-items-list';
[18] Fix | Delete
const IGNORE_LIST_OPTION_ID = 'wp-smush-ignored-items-list';
[19] Fix | Delete
const ANIMATED_LIST_OPTION_ID = 'wp-smush-animated-items-list';
[20] Fix | Delete
/**
[21] Fix | Delete
* @var Global_Stats
[22] Fix | Delete
*/
[23] Fix | Delete
private static $instance;
[24] Fix | Delete
[25] Fix | Delete
/**
[26] Fix | Delete
* @var Media_Item_Optimization_Global_Stats[]
[27] Fix | Delete
*/
[28] Fix | Delete
private $optimization_stats;
[29] Fix | Delete
[30] Fix | Delete
/**
[31] Fix | Delete
* @var Attachment_Id_List
[32] Fix | Delete
*/
[33] Fix | Delete
private $optimize_list;
[34] Fix | Delete
/**
[35] Fix | Delete
* @var Attachment_Id_List
[36] Fix | Delete
*/
[37] Fix | Delete
private $reoptimize_list;
[38] Fix | Delete
/**
[39] Fix | Delete
* @var Attachment_Id_List
[40] Fix | Delete
*/
[41] Fix | Delete
private $error_list;
[42] Fix | Delete
/**
[43] Fix | Delete
* @var Attachment_Id_List
[44] Fix | Delete
*/
[45] Fix | Delete
private $ignore_list;
[46] Fix | Delete
/**
[47] Fix | Delete
* @var Attachment_Id_List
[48] Fix | Delete
*/
[49] Fix | Delete
private $animated_list;
[50] Fix | Delete
/**
[51] Fix | Delete
* @var Media_Item_Cache
[52] Fix | Delete
*/
[53] Fix | Delete
private $media_item_cache;
[54] Fix | Delete
/**
[55] Fix | Delete
* @var Array_Utils
[56] Fix | Delete
*/
[57] Fix | Delete
private $array_utils;
[58] Fix | Delete
private $media_item_query;
[59] Fix | Delete
[60] Fix | Delete
public function __construct() {
[61] Fix | Delete
$this->optimize_list = new Attachment_Id_List( self::OPTIMIZE_LIST_OPTION_ID );
[62] Fix | Delete
$this->reoptimize_list = new Attachment_Id_List( self::REOPTIMIZE_LIST_OPTION_ID );
[63] Fix | Delete
$this->error_list = new Attachment_Id_List( self::ERROR_LIST_OPTION_ID );
[64] Fix | Delete
$this->ignore_list = new Attachment_Id_List( self::IGNORE_LIST_OPTION_ID );
[65] Fix | Delete
$this->animated_list = new Attachment_Id_List( self::ANIMATED_LIST_OPTION_ID );
[66] Fix | Delete
[67] Fix | Delete
$this->media_item_cache = Media_Item_Cache::get_instance();
[68] Fix | Delete
$this->array_utils = new Array_Utils();
[69] Fix | Delete
$this->media_item_query = new Media_Item_Query();
[70] Fix | Delete
}
[71] Fix | Delete
[72] Fix | Delete
public static function get() {
[73] Fix | Delete
if ( empty( self::$instance ) ) {
[74] Fix | Delete
self::$instance = new self();
[75] Fix | Delete
}
[76] Fix | Delete
[77] Fix | Delete
return self::$instance;
[78] Fix | Delete
}
[79] Fix | Delete
[80] Fix | Delete
/**
[81] Fix | Delete
* @return Media_Item_Optimization_Global_Stats_Persistable[]
[82] Fix | Delete
*/
[83] Fix | Delete
public function get_persistable_stats_for_optimizations() {
[84] Fix | Delete
if ( is_null( $this->optimization_stats ) ) {
[85] Fix | Delete
$this->optimization_stats = $this->initialize_stats_for_optimizations();
[86] Fix | Delete
}
[87] Fix | Delete
[88] Fix | Delete
return $this->optimization_stats;
[89] Fix | Delete
}
[90] Fix | Delete
[91] Fix | Delete
private function initialize_stats_for_optimizations() {
[92] Fix | Delete
return apply_filters( 'wp_smush_global_optimization_stats', array() );
[93] Fix | Delete
}
[94] Fix | Delete
[95] Fix | Delete
/**
[96] Fix | Delete
* @param $optimization_key
[97] Fix | Delete
*
[98] Fix | Delete
* @return Media_Item_Optimization_Global_Stats
[99] Fix | Delete
*/
[100] Fix | Delete
public function create_global_stats_object( $optimization_key ) {
[101] Fix | Delete
return apply_filters(
[102] Fix | Delete
'wp_smush_optimization_global_stats_instance',
[103] Fix | Delete
new Media_Item_Optimization_Global_Stats(),
[104] Fix | Delete
$optimization_key
[105] Fix | Delete
);
[106] Fix | Delete
}
[107] Fix | Delete
[108] Fix | Delete
/**
[109] Fix | Delete
* @param $optimization_key
[110] Fix | Delete
*
[111] Fix | Delete
* @return Media_Item_Optimization_Global_Stats_Persistable
[112] Fix | Delete
*/
[113] Fix | Delete
public function get_persistable_stats_for_optimization( $optimization_key ) {
[114] Fix | Delete
return $this->get_array_value(
[115] Fix | Delete
$this->get_persistable_stats_for_optimizations(),
[116] Fix | Delete
$optimization_key
[117] Fix | Delete
);
[118] Fix | Delete
}
[119] Fix | Delete
[120] Fix | Delete
private function get_array_value( $array, $key ) {
[121] Fix | Delete
return $array && isset( $array[ $key ] )
[122] Fix | Delete
? $array[ $key ]
[123] Fix | Delete
: null;
[124] Fix | Delete
}
[125] Fix | Delete
[126] Fix | Delete
public function delete_global_stats_option() {
[127] Fix | Delete
delete_option( self::GLOBAL_STATS_OPTION_ID );
[128] Fix | Delete
}
[129] Fix | Delete
[130] Fix | Delete
private function get_global_stats_option_value( $key ) {
[131] Fix | Delete
$option = $this->get_global_stats_option();
[132] Fix | Delete
[133] Fix | Delete
return $this->get_array_value( $option, $key );
[134] Fix | Delete
}
[135] Fix | Delete
[136] Fix | Delete
private function update_global_stats_option_value( $key, $value ) {
[137] Fix | Delete
$option = $this->get_global_stats_option();
[138] Fix | Delete
[139] Fix | Delete
update_option( self::GLOBAL_STATS_OPTION_ID, array_merge( $option, array(
[140] Fix | Delete
$key => $value,
[141] Fix | Delete
) ), false );
[142] Fix | Delete
}
[143] Fix | Delete
[144] Fix | Delete
public function is_outdated() {
[145] Fix | Delete
if ( $this->is_media_library_empty() ) {
[146] Fix | Delete
return false;
[147] Fix | Delete
}
[148] Fix | Delete
[149] Fix | Delete
$stats_updated_timestamp = $this->get_stats_updated_timestamp();
[150] Fix | Delete
if ( empty( $stats_updated_timestamp ) ) {
[151] Fix | Delete
// The scan has never been run
[152] Fix | Delete
return true;
[153] Fix | Delete
}
[154] Fix | Delete
[155] Fix | Delete
$rescan_required_timestamp = $this->get_rescan_required_timestamp();
[156] Fix | Delete
[157] Fix | Delete
return $rescan_required_timestamp > $stats_updated_timestamp;
[158] Fix | Delete
}
[159] Fix | Delete
[160] Fix | Delete
private function is_media_library_empty() {
[161] Fix | Delete
if ( 0 !== $this->get_image_attachment_count() ) {
[162] Fix | Delete
// Cached attachment count is not empty, so we definitely have some media items.
[163] Fix | Delete
// No need to make a DB call.
[164] Fix | Delete
return false;
[165] Fix | Delete
}
[166] Fix | Delete
[167] Fix | Delete
return 0 === $this->media_item_query->get_image_attachment_count();
[168] Fix | Delete
}
[169] Fix | Delete
[170] Fix | Delete
public function mark_as_outdated() {
[171] Fix | Delete
$this->update_rescan_required_timestamp( time() );
[172] Fix | Delete
}
[173] Fix | Delete
[174] Fix | Delete
public function get_stats_update_started_timestamp() {
[175] Fix | Delete
return (int) $this->get_global_stats_option_value( 'stats_update_started_timestamp' );
[176] Fix | Delete
}
[177] Fix | Delete
[178] Fix | Delete
public function update_stats_update_started_timestamp( $timestamp ) {
[179] Fix | Delete
$this->update_global_stats_option_value( 'stats_update_started_timestamp', $timestamp );
[180] Fix | Delete
}
[181] Fix | Delete
[182] Fix | Delete
public function get_stats_updated_timestamp() {
[183] Fix | Delete
return (int) $this->get_global_stats_option_value( 'stats_updated_timestamp' );
[184] Fix | Delete
}
[185] Fix | Delete
[186] Fix | Delete
public function update_stats_updated_timestamp( $timestamp ) {
[187] Fix | Delete
$this->update_global_stats_option_value( 'stats_updated_timestamp', $timestamp );
[188] Fix | Delete
}
[189] Fix | Delete
[190] Fix | Delete
public function get_rescan_required_timestamp() {
[191] Fix | Delete
return (int) $this->get_global_stats_option_value( 'rescan_required_timestamp' );
[192] Fix | Delete
}
[193] Fix | Delete
[194] Fix | Delete
public function update_rescan_required_timestamp( $timestamp ) {
[195] Fix | Delete
$this->update_global_stats_option_value( 'rescan_required_timestamp', $timestamp );
[196] Fix | Delete
}
[197] Fix | Delete
[198] Fix | Delete
public function get_image_attachment_count() {
[199] Fix | Delete
return (int) $this->get_global_stats_option_value( 'image_attachment_count' );
[200] Fix | Delete
}
[201] Fix | Delete
[202] Fix | Delete
public function add_image_attachment_count( $image_attachment_count ) {
[203] Fix | Delete
$this->mutex( function () use ( $image_attachment_count ) {
[204] Fix | Delete
$old_image_attachment_count = $this->get_image_attachment_count();
[205] Fix | Delete
$this->update_global_stats_option_value( 'image_attachment_count', $old_image_attachment_count + $image_attachment_count );
[206] Fix | Delete
} );
[207] Fix | Delete
}
[208] Fix | Delete
[209] Fix | Delete
public function subtract_image_attachment_count( $image_attachment_count ) {
[210] Fix | Delete
$this->mutex( function () use ( $image_attachment_count ) {
[211] Fix | Delete
$old_image_attachment_count = $this->get_image_attachment_count();
[212] Fix | Delete
$this->update_global_stats_option_value( 'image_attachment_count', max( $old_image_attachment_count - $image_attachment_count, 0 ) );
[213] Fix | Delete
} );
[214] Fix | Delete
}
[215] Fix | Delete
[216] Fix | Delete
public function get_optimized_images_count() {
[217] Fix | Delete
return (int) $this->get_global_stats_option_value( 'optimized_images_count' );
[218] Fix | Delete
}
[219] Fix | Delete
[220] Fix | Delete
public function add_optimized_images_count( $optimized_images_count ) {
[221] Fix | Delete
$this->mutex( function () use ( $optimized_images_count ) {
[222] Fix | Delete
$old_count = $this->get_optimized_images_count();
[223] Fix | Delete
$this->update_global_stats_option_value( 'optimized_images_count', $old_count + $optimized_images_count );
[224] Fix | Delete
} );
[225] Fix | Delete
}
[226] Fix | Delete
[227] Fix | Delete
public function subtract_optimized_images_count( $optimized_images_count ) {
[228] Fix | Delete
$this->mutex( function () use ( $optimized_images_count ) {
[229] Fix | Delete
$old_count = $this->get_optimized_images_count();
[230] Fix | Delete
$this->update_global_stats_option_value( 'optimized_images_count', max( $old_count - $optimized_images_count, 0 ) );
[231] Fix | Delete
} );
[232] Fix | Delete
}
[233] Fix | Delete
[234] Fix | Delete
public function get_sum_of_optimization_global_stats() {
[235] Fix | Delete
$stats = new Media_Item_Stats();
[236] Fix | Delete
[237] Fix | Delete
foreach ( $this->get_persistable_stats_for_optimizations() as $optimization ) {
[238] Fix | Delete
$stats->add( $optimization->get_stats() );
[239] Fix | Delete
}
[240] Fix | Delete
[241] Fix | Delete
return $stats;
[242] Fix | Delete
}
[243] Fix | Delete
[244] Fix | Delete
private function mutex( $operation ) {
[245] Fix | Delete
$option_id = self::GLOBAL_STATS_OPTION_ID;
[246] Fix | Delete
( new Mutex( "{$option_id}_mutex" ) )->execute( $operation );
[247] Fix | Delete
}
[248] Fix | Delete
[249] Fix | Delete
/**
[250] Fix | Delete
* @return Attachment_Id_List
[251] Fix | Delete
*/
[252] Fix | Delete
public function get_optimize_list() {
[253] Fix | Delete
return $this->optimize_list;
[254] Fix | Delete
}
[255] Fix | Delete
[256] Fix | Delete
public function get_redo_ids() {
[257] Fix | Delete
return array_merge(
[258] Fix | Delete
$this->get_reoptimize_list()->get_ids(),
[259] Fix | Delete
$this->get_error_list()->get_ids()
[260] Fix | Delete
);
[261] Fix | Delete
}
[262] Fix | Delete
[263] Fix | Delete
public function get_redo_count() {
[264] Fix | Delete
return $this->get_reoptimize_list()->get_count()
[265] Fix | Delete
+ $this->get_error_list()->get_count();
[266] Fix | Delete
}
[267] Fix | Delete
[268] Fix | Delete
/**
[269] Fix | Delete
* @return Attachment_Id_List
[270] Fix | Delete
*/
[271] Fix | Delete
public function get_reoptimize_list() {
[272] Fix | Delete
return $this->reoptimize_list;
[273] Fix | Delete
}
[274] Fix | Delete
[275] Fix | Delete
/**
[276] Fix | Delete
* @return Attachment_Id_List
[277] Fix | Delete
*/
[278] Fix | Delete
public function get_error_list() {
[279] Fix | Delete
return $this->error_list;
[280] Fix | Delete
}
[281] Fix | Delete
[282] Fix | Delete
/**
[283] Fix | Delete
* @return Attachment_Id_List
[284] Fix | Delete
*/
[285] Fix | Delete
public function get_ignore_list() {
[286] Fix | Delete
return $this->ignore_list;
[287] Fix | Delete
}
[288] Fix | Delete
[289] Fix | Delete
public function get_animated_list() {
[290] Fix | Delete
return $this->animated_list;
[291] Fix | Delete
}
[292] Fix | Delete
[293] Fix | Delete
public function to_array() {
[294] Fix | Delete
$array = array(
[295] Fix | Delete
'is_outdated' => $this->is_outdated(),
[296] Fix | Delete
'image_attachment_count' => $this->get_image_attachment_count(),
[297] Fix | Delete
'optimized_images_count' => $this->get_optimized_images_count(),
[298] Fix | Delete
);
[299] Fix | Delete
[300] Fix | Delete
foreach ( $this->get_persistable_stats_for_optimizations() as $optimization_key => $optimization_stats ) {
[301] Fix | Delete
$array[ $optimization_key ] = $optimization_stats->get_stats()->to_array();
[302] Fix | Delete
}
[303] Fix | Delete
[304] Fix | Delete
$array['optimize_list'] = $this->optimize_list->get_ids();
[305] Fix | Delete
$array['optimize_count'] = $this->optimize_list->get_count();
[306] Fix | Delete
$array['reoptimize_list'] = $this->reoptimize_list->get_ids();
[307] Fix | Delete
$array['reoptimize_count'] = $this->reoptimize_list->get_count();
[308] Fix | Delete
$array['error_list'] = $this->error_list->get_ids();
[309] Fix | Delete
$array['error_count'] = $this->error_list->get_count();
[310] Fix | Delete
$array['ignore_list'] = $this->ignore_list->get_ids();
[311] Fix | Delete
$array['ignore_count'] = $this->ignore_list->get_count();
[312] Fix | Delete
$array['animated_list'] = $this->animated_list->get_ids();
[313] Fix | Delete
$array['animated_count'] = $this->animated_list->get_count();
[314] Fix | Delete
[315] Fix | Delete
$total_stats = $this->get_sum_of_optimization_global_stats();
[316] Fix | Delete
$array['size_before'] = $total_stats->get_size_before();
[317] Fix | Delete
$array['size_after'] = $total_stats->get_size_after();
[318] Fix | Delete
$array['savings_percent'] = $total_stats->get_percent();
[319] Fix | Delete
[320] Fix | Delete
$array['remaining_count'] = $this->get_remaining_count();
[321] Fix | Delete
[322] Fix | Delete
$array['percent_optimized'] = $this->get_percent_optimized();
[323] Fix | Delete
$array['percent_metric'] = $this->get_percent_metric();
[324] Fix | Delete
$array['grade_class'] = $this->get_grade_class();
[325] Fix | Delete
[326] Fix | Delete
$array['total_optimizable_items_count'] = $this->get_total_optimizable_items_count();
[327] Fix | Delete
$array['skipped_ids'] = $this->get_skipped_ids();
[328] Fix | Delete
$array['skipped_count'] = $this->get_skipped_count();
[329] Fix | Delete
[330] Fix | Delete
return $array;
[331] Fix | Delete
}
[332] Fix | Delete
[333] Fix | Delete
/**
[334] Fix | Delete
* @return int
[335] Fix | Delete
*/
[336] Fix | Delete
public function get_remaining_count() {
[337] Fix | Delete
return $this->optimize_list->get_count()
[338] Fix | Delete
+ $this->reoptimize_list->get_count()
[339] Fix | Delete
+ $this->error_list->get_count();
[340] Fix | Delete
}
[341] Fix | Delete
[342] Fix | Delete
/**
[343] Fix | Delete
* @return array
[344] Fix | Delete
*/
[345] Fix | Delete
private function get_global_stats_option() {
[346] Fix | Delete
// Cached values are problematic in parallel
[347] Fix | Delete
wp_cache_delete( self::GLOBAL_STATS_OPTION_ID, 'options' );
[348] Fix | Delete
$option = get_option( self::GLOBAL_STATS_OPTION_ID, array() );
[349] Fix | Delete
[350] Fix | Delete
return empty( $option ) || ! is_array( $option )
[351] Fix | Delete
? array()
[352] Fix | Delete
: $option;
[353] Fix | Delete
}
[354] Fix | Delete
[355] Fix | Delete
public function reset() {
[356] Fix | Delete
$this->get_reoptimize_list()->delete_ids();
[357] Fix | Delete
$this->get_optimize_list()->delete_ids();
[358] Fix | Delete
$this->get_error_list()->delete_ids();
[359] Fix | Delete
$this->get_ignore_list()->delete_ids();
[360] Fix | Delete
$this->get_animated_list()->delete_ids();
[361] Fix | Delete
[362] Fix | Delete
$this->delete_global_stats_option();
[363] Fix | Delete
foreach ( $this->get_persistable_stats_for_optimizations() as $persistable_stats_for_optimization ) {
[364] Fix | Delete
$persistable_stats_for_optimization->reset();
[365] Fix | Delete
}
[366] Fix | Delete
}
[367] Fix | Delete
[368] Fix | Delete
[369] Fix | Delete
/**
[370] Fix | Delete
* Total number of items that could be optimized, this includes items that have already been optimized.
[371] Fix | Delete
*
[372] Fix | Delete
* For a count that only contains items yet to be optimized/reoptimized {@see self::get_remaining_count()}
[373] Fix | Delete
*
[374] Fix | Delete
* @return int
[375] Fix | Delete
*/
[376] Fix | Delete
public function get_total_optimizable_items_count() {
[377] Fix | Delete
return $this->get_image_attachment_count() - $this->get_skipped_count();
[378] Fix | Delete
}
[379] Fix | Delete
[380] Fix | Delete
public function get_skipped_count() {
[381] Fix | Delete
return count( $this->get_skipped_ids() );
[382] Fix | Delete
}
[383] Fix | Delete
[384] Fix | Delete
public function get_skipped_ids() {
[385] Fix | Delete
$skipped_ids = array_merge(
[386] Fix | Delete
$this->get_ignore_list()->get_ids(),
[387] Fix | Delete
$this->get_animated_list()->get_ids()
[388] Fix | Delete
);
[389] Fix | Delete
[390] Fix | Delete
return $this->array_utils->fast_array_unique( $skipped_ids );
[391] Fix | Delete
}
[392] Fix | Delete
[393] Fix | Delete
public function get_percent_optimized() {
[394] Fix | Delete
$total_optimizable_count = $this->get_total_optimizable_items_count();
[395] Fix | Delete
$remaining_count = $this->get_remaining_count();
[396] Fix | Delete
if (
[397] Fix | Delete
$total_optimizable_count === 0 ||
[398] Fix | Delete
$total_optimizable_count <= $remaining_count
[399] Fix | Delete
) {
[400] Fix | Delete
return 0;
[401] Fix | Delete
}
[402] Fix | Delete
$percent_optimized = floor( ( $total_optimizable_count - $remaining_count ) * 100 / $total_optimizable_count );
[403] Fix | Delete
if ( $percent_optimized > 100 ) {
[404] Fix | Delete
$percent_optimized = 100;
[405] Fix | Delete
} elseif ( $percent_optimized < 0 ) {
[406] Fix | Delete
$percent_optimized = 0;
[407] Fix | Delete
}
[408] Fix | Delete
[409] Fix | Delete
return $percent_optimized;
[410] Fix | Delete
}
[411] Fix | Delete
[412] Fix | Delete
public function get_percent_metric() {
[413] Fix | Delete
$percent_optimized = $this->get_percent_optimized();
[414] Fix | Delete
[415] Fix | Delete
return 0.0 === (float) $percent_optimized ? 100 : $percent_optimized;
[416] Fix | Delete
}
[417] Fix | Delete
[418] Fix | Delete
public function get_grade_class() {
[419] Fix | Delete
$total_optimizable_items_count = $this->get_total_optimizable_items_count();
[420] Fix | Delete
if ( 0 === $total_optimizable_items_count ) {
[421] Fix | Delete
$grade = 'sui-grade-dismissed';
[422] Fix | Delete
} else {
[423] Fix | Delete
$percent_optimized = $this->get_percent_optimized();
[424] Fix | Delete
[425] Fix | Delete
$grade = 'sui-grade-f';
[426] Fix | Delete
if ( $percent_optimized >= 60 && $percent_optimized < 90 ) {
[427] Fix | Delete
$grade = 'sui-grade-c';
[428] Fix | Delete
} elseif ( $percent_optimized >= 90 ) {
[429] Fix | Delete
$grade = 'sui-grade-a';
[430] Fix | Delete
}
[431] Fix | Delete
}
[432] Fix | Delete
[433] Fix | Delete
return $grade;
[434] Fix | Delete
}
[435] Fix | Delete
[436] Fix | Delete
/**
[437] Fix | Delete
* @param $media_item Media_Item
[438] Fix | Delete
*
[439] Fix | Delete
* @return void
[440] Fix | Delete
*/
[441] Fix | Delete
public function remove_media_item( $media_item ) {
[442] Fix | Delete
$attachment_id = $media_item->get_id();
[443] Fix | Delete
[444] Fix | Delete
// Remove from all the lists
[445] Fix | Delete
$this->remove_from_all_lists( $attachment_id );
[446] Fix | Delete
[447] Fix | Delete
// Remove stats
[448] Fix | Delete
$this->subtract_item_stats( $media_item );
[449] Fix | Delete
}
[450] Fix | Delete
[451] Fix | Delete
public function adjust_for_attachment( $attachment_id ) {
[452] Fix | Delete
$media_item = $this->media_item_cache->get( $attachment_id );
[453] Fix | Delete
$this->adjust_for_media_item( $media_item );
[454] Fix | Delete
}
[455] Fix | Delete
[456] Fix | Delete
/**
[457] Fix | Delete
* When the status of a media item changes this method can make the necessary changes to the global stats
[458] Fix | Delete
*
[459] Fix | Delete
* @param $media_item Media_Item
[460] Fix | Delete
*
[461] Fix | Delete
* @return void
[462] Fix | Delete
*/
[463] Fix | Delete
public function adjust_for_media_item( $media_item ) {
[464] Fix | Delete
$this->adjust_lists_for_media_item( $media_item );
[465] Fix | Delete
[466] Fix | Delete
$belongs_in_stats = ! $media_item->is_skipped() && ! $media_item->has_errors();
[467] Fix | Delete
if ( $belongs_in_stats ) {
[468] Fix | Delete
$this->add_item_stats( $media_item );
[469] Fix | Delete
} else {
[470] Fix | Delete
$this->subtract_item_stats( $media_item );
[471] Fix | Delete
}
[472] Fix | Delete
}
[473] Fix | Delete
[474] Fix | Delete
/**
[475] Fix | Delete
* @param $media_item Media_Item
[476] Fix | Delete
*
[477] Fix | Delete
* @return void
[478] Fix | Delete
*/
[479] Fix | Delete
private function add_item_stats( $media_item ) {
[480] Fix | Delete
$optimizer = new Media_Item_Optimizer( $media_item );
[481] Fix | Delete
foreach ( $this->get_persistable_stats_for_optimizations() as $optimization_key => $optimization_global_stats ) {
[482] Fix | Delete
$optimization = $optimizer->get_optimization( $optimization_key );
[483] Fix | Delete
if ( $optimization && $optimization->is_optimized() ) {
[484] Fix | Delete
$optimization_global_stats->add_item_stats( $media_item->get_id(), $optimization->get_stats() );
[485] Fix | Delete
}
[486] Fix | Delete
}
[487] Fix | Delete
}
[488] Fix | Delete
[489] Fix | Delete
/**
[490] Fix | Delete
* @param $media_item Media_Item
[491] Fix | Delete
*
[492] Fix | Delete
* @return void
[493] Fix | Delete
*/
[494] Fix | Delete
public function subtract_item_stats( $media_item ) {
[495] Fix | Delete
$optimizer = new Media_Item_Optimizer( $media_item );
[496] Fix | Delete
foreach ( $this->get_persistable_stats_for_optimizations() as $optimization_key => $optimization_global_stats ) {
[497] Fix | Delete
$optimization = $optimizer->get_optimization( $optimization_key );
[498] Fix | Delete
if ( $optimization && $optimization->is_optimized() ) {
[499] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function