282 lines
6.6 KiB
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';
|
|
}
|
|
}
|