188 lines
5.1 KiB
PHP
188 lines
5.1 KiB
PHP
<?php
|
|
/**
|
|
* Compress directory page.
|
|
*
|
|
* @package Smush\App\Pages
|
|
*/
|
|
|
|
namespace Smush\App\Pages;
|
|
|
|
use Smush\App\Abstract_Summary_Page;
|
|
use Smush\App\Interface_Page;
|
|
use Smush\Core\Core;
|
|
use WP_Smush;
|
|
|
|
if ( ! defined( 'WPINC' ) ) {
|
|
die;
|
|
}
|
|
|
|
/**
|
|
* Class Directory
|
|
*/
|
|
class Directory extends Abstract_Summary_Page implements Interface_Page {
|
|
/**
|
|
* Register meta boxes.
|
|
*/
|
|
public function register_meta_boxes() {
|
|
parent::register_meta_boxes();
|
|
|
|
$this->add_meta_box(
|
|
'directory',
|
|
__( 'Directory Smush', 'wp-smushit' ),
|
|
array( $this, 'directory_smush_meta_box' ),
|
|
null,
|
|
null,
|
|
'main',
|
|
array(
|
|
'box_class' => 'sui-box sui-message sui-no-padding',
|
|
)
|
|
);
|
|
|
|
// Modal for the "Choose Directory" link in the summary box.
|
|
$this->modals['directory-list'] = array();
|
|
$this->modals['progress-dialog'] = array();
|
|
}
|
|
|
|
/**
|
|
* Directory Smush meta box.
|
|
*/
|
|
public function directory_smush_meta_box() {
|
|
// Reset the bulk limit transient.
|
|
if ( ! WP_Smush::is_pro() ) {
|
|
Core::check_bulk_limit( true, 'dir_sent_count' );
|
|
}
|
|
|
|
$core = WP_Smush::get_instance()->core();
|
|
|
|
$upgrade_url = add_query_arg(
|
|
array(
|
|
'utm_source' => 'smush',
|
|
'utm_medium' => 'plugin',
|
|
'utm_campaign' => 'smush_directory_smush_paused_50_limit',
|
|
),
|
|
$this->upgrade_url
|
|
);
|
|
|
|
$errors = 0;
|
|
$images = array();
|
|
|
|
$scan = filter_input( INPUT_GET, 'scan', FILTER_SANITIZE_SPECIAL_CHARS );
|
|
if ( 'done' === $scan ) {
|
|
$images = $core->mod->dir->get_image_errors();
|
|
$errors = $core->mod->dir->get_image_errors_count();
|
|
}
|
|
|
|
$this->view(
|
|
'directory/meta-box',
|
|
array(
|
|
'errors' => $errors,
|
|
'images' => $images,
|
|
'upgrade_url' => $upgrade_url,
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Show directory smush result notice.
|
|
*
|
|
* If we are redirected from a directory smush finish page,
|
|
* show the result notice if success/fail count is available.
|
|
*
|
|
* @since 2.9.0
|
|
*/
|
|
public function smush_result_notice() {
|
|
// Get the counts from transient.
|
|
$items = (int) get_transient( 'wp-smush-show-dir-scan-notice' );
|
|
$failed_items = (int) get_transient( 'wp-smush-dir-scan-failed-items' );
|
|
$skipped_items = (int) get_transient( 'wp-smush-dir-scan-skipped-items' ); // Skipped because already optimized.
|
|
$notice_message = esc_html__( 'Image compression complete.', 'wp-smushit' ) . ' ';
|
|
$notice_class = 'error';
|
|
|
|
$total = $items + $failed_items + $skipped_items;
|
|
|
|
/**
|
|
* 1 image was successfully optimized / 10 images were successfully optimized
|
|
* 1 image was skipped because it was already optimized / 5/10 images were skipped because they were already optimized
|
|
* 1 image resulted in an error / 5/10 images resulted in an error, check the logs for more information
|
|
*
|
|
* 2/10 images were skipped because they were already optimized and 4/10 resulted in an error
|
|
*/
|
|
|
|
if ( 0 === $failed_items && 0 === $skipped_items ) {
|
|
$notice_message .= sprintf(
|
|
/* translators: %d - number of images */
|
|
_n(
|
|
'%d image was successfully optimized',
|
|
'%d images were successfully optimized',
|
|
$items,
|
|
'wp-smushit'
|
|
),
|
|
$items
|
|
);
|
|
$notice_class = 'success';
|
|
} elseif ( 0 <= $skipped_items && 0 === $failed_items ) {
|
|
$notice_message .= sprintf(
|
|
/* translators: %1$d - number of skipped images, %2$d - total number of images */
|
|
_n(
|
|
'%d image was skipped because it was already optimized',
|
|
'%1$d/%2$d images were skipped because they were already optimized',
|
|
$skipped_items,
|
|
'wp-smushit'
|
|
),
|
|
$skipped_items,
|
|
$total
|
|
);
|
|
$notice_class = 'success';
|
|
} elseif ( 0 === $skipped_items && 0 <= $failed_items ) {
|
|
$notice_message .= sprintf(
|
|
/* translators: %1$d - number of failed images, %2$d - total number of images */
|
|
_n(
|
|
'%d resulted in an error',
|
|
'%1$d/%2$d images resulted in an error, check the logs for more information',
|
|
$failed_items,
|
|
'wp-smushit'
|
|
),
|
|
$failed_items,
|
|
$total
|
|
);
|
|
} elseif ( 0 <= $skipped_items && 0 <= $failed_items ) {
|
|
$notice_message .= sprintf(
|
|
/* translators: %1$d - number of skipped images, %2$d - total number of images, %3$d - number of failed images */
|
|
esc_html__( '%1$d/%2$d images were skipped because they were already optimized and %3$d/%2$d images resulted in an error', 'wp-smushit' ),
|
|
$skipped_items,
|
|
$total,
|
|
$failed_items
|
|
);
|
|
$notice_class = 'warning';
|
|
}
|
|
|
|
// If we have counts, show the notice.
|
|
if ( 0 < $total ) {
|
|
// Delete the transients.
|
|
delete_transient( 'wp-smush-show-dir-scan-notice' );
|
|
delete_transient( 'wp-smush-dir-scan-failed-items' );
|
|
delete_transient( 'wp-smush-dir-scan-skipped-items' );
|
|
?>
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
window.SUI.openNotice(
|
|
'wp-smush-ajax-notice',
|
|
'<p><?php echo wp_kses_post( $notice_message ); ?></p>',
|
|
{
|
|
type: '<?php echo esc_attr( $notice_class ); ?>',
|
|
icon: 'info',
|
|
dismiss: {
|
|
show: true,
|
|
label: '<?php esc_html_e( 'Dismiss', 'wp-smushit' ); ?>',
|
|
tooltip: '<?php esc_html_e( 'Dismiss', 'wp-smushit' ); ?>',
|
|
},
|
|
}
|
|
);
|
|
});
|
|
</script>
|
|
<?php
|
|
}
|
|
}
|
|
|
|
}
|