wp_back/wp-content/plugins/wp-smushit/app/pages/class-settings.php
2024-05-20 15:37:46 +03:00

269 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
/**
* Settings page.
*
* @package Smush\App\Pages
*/
namespace Smush\App\Pages;
use Smush\App\Abstract_Page;
use Smush\App\Interface_Page;
use WP_Smush;
if ( ! defined( 'WPINC' ) ) {
die;
}
/**
* Class Settings
*/
class Settings extends Abstract_Page implements Interface_Page {
/**
* Function triggered when the page is loaded before render any content.
*/
public function on_load() {
// Init the tabs.
$this->tabs = apply_filters(
'smush_setting_tabs',
array(
'general' => __( 'General', 'wp-smushit' ),
'configs' => __( 'Configs', 'wp-smushit' ),
'permissions' => __( 'Permissions', 'wp-smushit' ),
'data' => __( 'Data & Settings', 'wp-smushit' ),
'accessibility' => __( 'Accessibility', 'wp-smushit' ),
)
);
// Disabled on all subsites.
if ( ! is_multisite() || ! is_network_admin() ) {
unset( $this->tabs['permissions'] );
}
add_action( 'smush_setting_column_right_inside', array( $this, 'usage_settings' ), 25, 2 );
add_action( 'smush_setting_column_right_inside', array( $this, 'detection_settings' ), 25, 2 );
}
/**
* Enqueue scripts.
*
* @since 3.9.0
*
* @param string $hook Hook from where the call is made.
*/
public function enqueue_scripts( $hook ) {
// Scripts for Configs.
$this->enqueue_configs_scripts();
}
/**
* Register meta boxes.
*/
public function register_meta_boxes() {
$this->add_meta_box(
'settings/general',
__( 'General', 'wp-smushit' ),
array( $this, 'general_meta_box' ),
null,
array( $this, 'common_meta_box_footer' ),
'general'
);
if ( is_multisite() && is_network_admin() ) {
$this->add_meta_box(
'settings/permissions',
__( 'Permissions', 'wp-smushit' ),
array( $this, 'permissions_meta_box' ),
null,
array( $this, 'common_meta_box_footer' ),
'permissions'
);
}
$this->add_meta_box(
'settings/data',
__( 'Data & Settings', 'wp-smushit' ),
array( $this, 'data_meta_box' ),
null,
array( $this, 'common_meta_box_footer' ),
'data'
);
$this->add_meta_box(
'settings/accessibility',
__( 'Accessibility', 'wp-smushit' ),
array( $this, 'accessibility_meta_box' ),
null,
array( $this, 'common_meta_box_footer' ),
'accessibility'
);
if ( 'data' === $this->get_current_tab() ) {
$this->modals['reset-settings'] = array();
}
}
/**
* Display a description in Settings - Usage Tracking.
*
* @since 3.1.0
*
* @param string $name Setting name.
*/
public function usage_settings( $name ) {
// Add only to full size settings.
if ( 'usage' !== $name ) {
return;
}
?>
<span class="sui-description sui-toggle-description">
<?php
esc_html_e( 'Note: Usage tracking is completely anonymous. We are only tracking what features you are/arent using to make our feature decisions more informed.', 'wp-smushit' );
?>
</span>
<?php
}
/**
* Display a description in Settings - Image Resize Detection.
*
* @since 3.2.1
*
* @param string $name Setting name.
*/
public function detection_settings( $name ) {
// Add only to full size settings.
if ( 'detection' !== $name ) {
return;
}
?>
<span class="sui-description sui-toggle-description">
<?php esc_html_e( 'Note: The highlighting will only be visible to administrators visitors wont see the highlighting.', 'wp-smushit' ); ?>
<?php if ( $this->settings->get( 'detection' ) ) : ?>
<?php if ( $this->settings->get( 'cdn' ) && $this->settings->get( 'auto_resize' ) ) : ?>
<div class="sui-notice smush-highlighting-notice">
<div class="sui-notice-content">
<div class="sui-notice-message">
<i class="sui-notice-icon sui-icon-info sui-md" aria-hidden="true"></i>
<p>
<?php
esc_html_e(
'Note: Images served via the Smush CDN are automatically resized to fit their containers, these will be skipped.',
'wp-smushit'
);
?>
</p>
</div>
</div>
</div>
<?php else : ?>
<div class="sui-notice sui-notice-info smush-highlighting-notice">
<div class="sui-notice-content">
<div class="sui-notice-message">
<i class="sui-notice-icon sui-icon-info sui-md" aria-hidden="true"></i>
<p>
<?php
printf(
/* translators: %1$s: opening a tag, %2$s: closing a tag */
esc_html__(
'Incorrect image size highlighting is active. %1$sView the frontend%2$s of your website to see if any images aren\'t the correct size for their containers.',
'wp-smushit'
),
'<a href="' . esc_url( home_url() ) . '" target="_blank">',
'</a>'
);
?>
</p>
</div>
</div>
</div>
<?php endif; ?>
<?php else : ?>
<div class="sui-notice sui-notice-warning smush-highlighting-warning sui-hidden">
<div class="sui-notice-content">
<div class="sui-notice-message">
<i class="sui-notice-icon sui-icon-info sui-md" aria-hidden="true"></i>
<p><?php esc_html_e( 'Almost there! To finish activating this feature you must save your settings.', 'wp-smushit' ); ?></p>
</div>
</div>
</div>
<?php endif; ?>
</span>
<?php
}
/**
* Common footer meta box.
*
* @since 3.2.0
*/
public function common_meta_box_footer() {
$this->view( 'meta-box-footer', array(), 'common' );
}
/**
* General settings meta box.
*/
public function general_meta_box() {
$link = WP_Smush::is_pro() ? 'https://wpmudev.com/translate/projects/wp-smushit/' : 'https://translate.wordpress.org/projects/wp-plugins/wp-smushit';
$site_locale = get_locale();
if ( 'en' === $site_locale || 'en_US' === $site_locale ) {
$site_language = 'English';
} else {
require_once ABSPATH . 'wp-admin/includes/translation-install.php';
$translations = wp_get_available_translations();
$site_language = isset( $translations[ $site_locale ] ) ? $translations[ $site_locale ]['native_name'] : __( 'Error detecting language', 'wp-smushit' );
}
$this->view(
'settings/general-meta-box',
array(
'detection' => $this->settings->get( 'detection' ),
'site_language' => $site_language,
'tracking' => (bool) $this->settings->get( 'usage' ),
'translation_link' => $link,
)
);
}
/**
* Permissions meta box.
*/
public function permissions_meta_box() {
$this->view(
'settings/permissions-meta-box',
array(
'networkwide' => get_site_option( 'wp-smush-networkwide' ),
)
);
}
/**
* Data & Settings meta box.
*/
public function data_meta_box() {
$this->view(
'settings/data-meta-box',
array(
'keep_data' => (bool) $this->settings->get( 'keep_data' ),
)
);
}
/**
* Accessibility meta box.
*/
public function accessibility_meta_box() {
$this->view(
'settings/accessibility-meta-box',
array(
'accessible_colors' => (bool) $this->settings->get( 'accessible_colors' ),
)
);
}
}