Files
tysweld.com/wp-content/plugins/image-optimization/modules/core/module.php
2025-02-24 22:33:42 +01:00

243 lines
6.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace ImageOptimization\Modules\Core;
// TODO: Remove imports that are not used.
use ImageOptimization\Modules\Oauth\{
Classes\Data,
Components\Connect,
Rest\Activate,
Rest\Connect_Init,
Rest\Deactivate,
Rest\Disconnect,
Rest\Get_Subscriptions,
};
use ImageOptimization\Modules\Optimization\{
Rest\Cancel_Bulk_Optimization,
Rest\Optimize_Bulk,
};
use ImageOptimization\Modules\Backups\Rest\{
Restore_All,
Remove_Backups,
};
use ImageOptimization\Classes\{
Module_Base,
Utils,
};
use ImageOptimization\Plugin;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
class Module extends Module_Base {
public function get_name(): string {
return 'core';
}
public static function component_list() : array {
return [
'Pointers',
'Conflicts',
'User_Feedback',
'Not_Connected',
];
}
private function render_top_bar() {
?>
<div id="image-optimization-top-bar"></div>
<?php
}
private function render_app() {
?>
<div class="clear"></div>
<div id="image-optimization-app"></div>
<?php
}
public function maybe_add_quota_reached_notice() {
// @var ImageOptimizer/Modules/ConnectManager/Module
$module = Plugin::instance()->modules_manager->get_modules( 'connect-manager' );
if ( ! $module->connect_instance->is_activated() || $module->connect_instance->images_left() > 0 ) {
return;
}
?>
<div class="notice notice-warning notice image-optimizer__notice image-optimizer__notice--warning">
<p>
<b>
<?php esc_html_e(
'Youve reached your plan quota.',
'image-optimization'
); ?>
</b>
<span>
<?php esc_html_e(
'You have no images left to optimize in your current plan.',
'image-optimization'
); ?>
<a href="https://go.elementor.com/io-quota-upgrade/">
<?php esc_html_e(
'Upgrade plan now',
'image-optimization'
); ?>
</a>
</span>
</p>
</div>
<?php
}
public function add_plugin_links( $links, $plugin_file_name ): array {
if ( ! str_ends_with( $plugin_file_name, '/image-optimization.php' ) ) {
return (array) $links;
}
$custom_links = [
'settings' => sprintf(
'<a href="%s">%s</a>',
admin_url( 'admin.php?page=' . \ImageOptimization\Modules\Settings\Module::SETTING_BASE_SLUG ),
esc_html__( 'Settings', 'image-optimization' )
),
'upgrade' => sprintf(
'<a href="%s" style="color: #524CFF; font-weight: 700;" target="_blank" rel="noopener noreferrer">%s</a>',
'https://go.elementor.com/io-plugins-upgrade/',
esc_html__( 'Upgrade', 'image-optimization' )
),
];
return array_merge( $custom_links, $links );
}
public function enqueue_global_assets() {
wp_enqueue_style(
'image-optimization-admin-fonts',
'https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap',
[],
IMAGE_OPTIMIZATION_VERSION
);
wp_enqueue_style(
'image-optimization-core-style-admin',
$this->get_css_assets_url( 'style-admin', 'assets/build/' ),
[],
IMAGE_OPTIMIZATION_VERSION,
);
}
/**
* Enqueue styles and scripts
*/
private function enqueue_scripts() {
$asset_file = require IMAGE_OPTIMIZATION_ASSETS_PATH . 'build/admin.asset.php';
foreach ( $asset_file['dependencies'] as $style ) {
wp_enqueue_style( $style );
}
wp_enqueue_script(
'image-optimization-admin',
$this->get_js_assets_url( 'admin' ),
array_merge( $asset_file['dependencies'], [ 'wp-util' ] ),
$asset_file['version'],
true
);
wp_localize_script(
'image-optimization-admin',
'imageOptimizerAppSettings',
[
'siteUrl' => wp_parse_url( get_site_url(), PHP_URL_HOST ),
'thumbnailSizes' => wp_get_registered_image_subsizes(),
'isDevelopment' => defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG,
]
);
/**
* @var ImageOptimizer\Modules\ConnectManager\Module $module
*/
$module = Plugin::instance()->modules_manager->get_modules( 'connect-manager' );
$is_connect_on_fly = $module->connect_instance->get_is_connect_on_fly();
$connect_email = $module->connect_instance->get_connect_data()['user']['email'] ?? null;
wp_localize_script(
'image-optimization-admin',
'imageOptimizerUserData',
[
'isConnectOnFly' => $is_connect_on_fly,
'isConnected' => $module->connect_instance->is_connected(),
'isActivated' => $module->connect_instance->is_activated(),
'planData' => $module->connect_instance->is_activated() ? $module->connect_instance->get_connect_status() : null,
'licenseKey' => $module->connect_instance->is_activated() ? $module->connect_instance->get_activation_state() : null,
'imagesLeft' => $module->connect_instance->is_activated() ? $module->connect_instance->images_left() : null,
'isOwner' => $module->connect_instance->is_connected() ? $module->connect_instance->user_is_subscription_owner() : null,
'subscriptionEmail' => $connect_email ? $connect_email : null,
'wpRestNonce' => wp_create_nonce( 'wp_rest' ),
'disconnect' => wp_create_nonce( 'wp_rest' ),
'authInitNonce' => wp_create_nonce( $module->connect_instance->connect_init_nonce() ),
'authDisconnectNonce' => wp_create_nonce( $module->connect_instance->disconnect_nonce() ),
'authDeactivateNonce' => wp_create_nonce( $module->connect_instance->deactivate_nonce() ),
'authGetSubscriptionsNonce' => wp_create_nonce( $module->connect_instance->get_subscriptions_nonce() ),
'authActivateNonce' => wp_create_nonce( $module->connect_instance->activate_nonce() ),
'versionNonce' => wp_create_nonce( $module->connect_instance->version_nonce() ),
'removeBackupsNonce' => wp_create_nonce( Remove_Backups::NONCE_NAME ),
'restoreAllImagesNonce' => wp_create_nonce( Restore_All::NONCE_NAME ),
'optimizeBulkNonce' => wp_create_nonce( Optimize_Bulk::NONCE_NAME ),
'cancelBulkOptimizationNonce' => wp_create_nonce( Cancel_Bulk_Optimization::NONCE_NAME ),
]
);
wp_set_script_translations( 'image-optimization-admin', 'image-optimization' );
}
private function should_render(): bool {
return ( Utils::is_media_page() || Utils::is_plugin_page() ) && Utils::user_is_admin();
}
/**
* Module constructor.
*/
public function __construct() {
$this->register_components();
add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_global_assets' ] );
add_filter( 'plugin_action_links', [ $this, 'add_plugin_links' ], 10, 2 );
add_action('current_screen', function () {
if ( ! $this->should_render() ) {
return;
}
add_action( 'admin_notices', [ $this, 'maybe_add_quota_reached_notice' ] );
if ( Utils::is_media_page() ) {
add_action('in_admin_header', function () {
$this->render_top_bar();
});
add_action('all_admin_notices', function () {
$this->render_app();
});
}
if ( Utils::is_plugin_page() ) {
add_action('in_admin_header', function () {
$this->render_top_bar();
});
}
add_action('admin_enqueue_scripts', function () {
$this->enqueue_scripts();
});
});
}
}