laipower/wp-content/plugins/w3-total-cache/Base_Page_Settings.php

282 lines
6.6 KiB
PHP

<?php
/**
* File: Base_Page_Settings.php
*
* @package W3TC
*/
namespace W3TC;
/**
* Class: Base_Page_Settings
*
* phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore
*/
class Base_Page_Settings {
/**
* Config
*
* @var Config
*/
protected $_config = null;
/**
* Notes
*
* @var array
*/
protected $_notes = array();
/**
* Errors
*
* @var array
*/
protected $_errors = array();
/**
* Used in PHPMailer init function
*
* @var string
*/
protected $_phpmailer_sender = '';
/**
* Master configuration
*
* @var Config
*/
protected $_config_master;
/**
* Page
*
* @var number
*/
protected $_page;
/**
* Constructor.
*/
public function __construct() {
$this->_config = Dispatcher::config();
$this->_config_master = Dispatcher::config_master();
$this->_page = Util_Admin::get_current_page();
}
/**
* Render header.
*/
public function options() {
$this->view();
}
/**
* Render footer.
*/
public function render_footer() {
include W3TC_INC_OPTIONS_DIR . '/common/footer.php';
}
/**
* Returns true if config section is sealed.
*
* @param string $section Config section.
*
* @return boolean
*/
protected function is_sealed( $section ) {
return true;
}
/**
* Returns true if we edit master config.
*
* @return boolean
*/
protected function is_master() {
return $this->_config->is_master();
}
/**
* Prints checkbox with config option value.
*
* @param string $option_id Option ID.
* @param bool $disabled Disabled flag.
* @param string $class_prefix Class prefix.
* @param bool $label Label.
* @param bool $force_value Override value.
*/
protected function checkbox( $option_id, $disabled = false, $class_prefix = '', $label = true, $force_value = null ) {
$disabled = $disabled || $this->_config->is_sealed( $option_id );
$name = Util_Ui::config_key_to_http_name( $option_id );
if ( ! $disabled ) {
echo '<input type="hidden" name="' . esc_attr( $name ) . '" value="0" />';
}
if ( $label ) {
echo '<label>';
}
echo '<input class="' . esc_attr( $class_prefix ) . 'enabled" type="checkbox" id="' . esc_attr( $name ) . '" name="' . esc_attr( $name ) . '" value="1" ';
if ( ! is_null( $force_value ) ) {
checked( $force_value, true );
} elseif ( 'cdn.flush_manually' === $option_id ) {
checked(
$this->_config->get_boolean(
$option_id,
Cdn_Util::get_flush_manually_default_override( $this->_config->get_string( 'cdn.engine' ) )
),
true
);
} else {
checked( $this->_config->get_boolean( $option_id ), true );
}
if ( $disabled ) {
echo 'disabled="disabled" ';
}
echo ' />';
}
/**
* Prints a radio button and if config value matches value
*
* @param string $option_id Option id.
* @param unknown $value Value.
* @param bool $disabled Disabled flag.
* @param string $class_prefix Class prefix.
*/
protected function radio( $option_id, $value, $disabled = false, $class_prefix = '' ) {
if ( is_bool( $value ) ) {
$r_value = $value ? '1' : '0';
} else {
$r_value = $value;
}
$disabled = $disabled || $this->_config->is_sealed( $option_id );
$name = Util_Ui::config_key_to_http_name( $option_id );
echo '<label>';
echo '<input class="' . esc_attr( $class_prefix ) . 'enabled" type="radio" id="' . esc_attr( $name ) . '" name="' . esc_attr( $name ) . '" value="' . esc_attr( $r_value ) . '" ';
checked( $this->_config->get_boolean( $option_id ), $value );
if ( $disabled ) {
echo 'disabled="disabled" ';
}
echo ' />';
}
/**
* Prints checkbox for debug option.
*
* @param string $option_id Option ID.
*/
protected function checkbox_debug( $option_id ) {
if ( is_array( $option_id ) ) {
$section = $option_id[0];
$section_enabled = $this->_config->is_extension_active_frontend( $section );
} else {
$section = substr( $option_id, 0, strrpos( $option_id, '.' ) );
$section_enabled = $this->_config->get_boolean( $section . '.enabled' );
}
$disabled = $this->_config->is_sealed( $option_id ) || ! $section_enabled;
$name = Util_Ui::config_key_to_http_name( $option_id );
if ( ! $disabled ) {
echo '<input type="hidden" name="' . esc_attr( $name ) . '" value="0" />';
}
echo '<label>';
echo '<input class="enabled" type="checkbox" id="' . esc_attr( $name ) . '" name="' . esc_attr( $name ) . '" value="1" ';
checked( $this->_config->get_boolean( $option_id ) && $section_enabled, true );
if ( $disabled ) {
echo 'disabled="disabled" ';
}
echo ' />';
}
/**
* Prints checkbox for debug option for pro.
*
* @param string $option_id Option ID.
* @param unknown $label Label.
* @param unknown $label_pro Pro label.
*/
protected function checkbox_debug_pro( $option_id, $label, $label_pro ) {
if ( is_array( $option_id ) ) {
$section = $option_id[0];
$section_enabled = $this->_config->is_extension_active_frontend( $section );
} else {
$section = substr( $option_id, 0, strrpos( $option_id, '.' ) );
$section_enabled = $this->_config->get_boolean( $section . '.enabled' );
}
$is_pro = Util_Environment::is_w3tc_pro( $this->_config );
$disabled = $this->_config->is_sealed( $option_id ) || ! $section_enabled || ! $is_pro;
$name = Util_Ui::config_key_to_http_name( $option_id );
if ( ! $disabled ) {
echo '<input type="hidden" name="' . esc_attr( $name ) . '" value="0" />';
}
echo '<label>';
echo '<input class="enabled" type="checkbox" id="' . esc_attr( $name ) . '" name="' . esc_attr( $name ) . '" value="1" ';
checked( $this->_config->get_boolean( $option_id ) && $is_pro, true );
if ( $disabled ) {
echo 'disabled="disabled" ';
}
echo ' />';
echo esc_html( $label );
if ( $is_pro ) {
echo wp_kses(
$label_pro,
array(
'a' => array(
'href' => array(),
'id' => array(),
'class' => array(),
),
)
);
}
echo '</label>';
}
/**
* Prints checkbox for debug option for pro.
*
* @param string $option_id Option ID.
* @param bool $disabled Disabled flag.
* @param unknown $value_when_disabled Override value when disabled.
*/
protected function value_with_disabled( $option_id, $disabled, $value_when_disabled ) {
if ( $disabled ) {
echo 'value="' . esc_attr( $value_when_disabled ) . '" disabled="disabled" ';
} else {
echo 'value="' . esc_attr( $this->_config->get_string( $option_id ) ) . '" ';
}
}
/**
* Render header.
*/
protected function view() {
include W3TC_INC_DIR . '/options/common/header.php';
}
}