<?php /** * File: general.php * * @package W3TC */ namespace W3TC; if ( ! defined( 'W3TC' ) ) { die(); } require W3TC_INC_DIR . '/options/common/header.php'; ?> <p> <?php echo wp_kses( sprintf( // translators: 1 HTML span tag indicating plugin enabled/disabled. __( 'The plugin is currently %1$s If an option is disabled it means that either your current installation is not compatible or software installation is required.', 'w3-total-cache' ), '<span class="w3tc-' . ( $enabled ? 'enabled">' . esc_html__( 'enabled', 'w3-total-cache' ) : 'disabled">' . esc_html__( 'disabled', 'w3-total-cache' ) ) . '</span>.' ), array( 'span' => array( 'class' => array(), ), ) ); ?> </p> <form id="w3tc_form" action="admin.php?page=<?php echo esc_attr( $this->_page ); ?>" method="post"> <div class="metabox-holder"> <?php Util_Ui::postbox_header( esc_html__( 'General', 'w3-total-cache' ), '' ); ?> <table class="form-table"> <tr> <th><?php esc_html_e( 'Preview mode:', 'w3-total-cache' ); ?></th> <td> <?php echo wp_kses( Util_Ui::nonce_field( 'w3tc' ), array( 'input' => array( 'type' => array(), 'name' => array(), 'value' => array(), ), ) ); ?> <?php if ( $this->_config->is_preview() ) : ?> <input type="submit" name="w3tc_config_preview_disable" class="button-primary" value="<?php esc_attr_e( 'Disable', 'w3-total-cache' ); ?>" /> <?php echo wp_kses( Util_Ui::button_link( esc_html__( 'Deploy', 'w3-total-cache' ), esc_url( wp_nonce_url( sprintf( 'admin.php?page=%1$s&w3tc_config_preview_deploy', $this->_page ), 'w3tc' ) ) ), array( 'input' => array( 'type' => array(), 'name' => array(), 'class' => array(), 'value' => array(), 'onclick' => array(), ), ) ); ?> <p class="description"> <?php echo wp_kses( sprintf( // translators: 1 HTML input submit to preview changes. __( 'To preview any changed settings (without deploying): %1$s', 'w3-total-cache' ), Util_Ui::preview_link() ), array( 'input' => array( 'type' => array(), 'name' => array(), 'class' => array(), 'value' => array(), 'onclick' => array(), ), ) ); ?> </p> <?php else : ?> <input type="submit" name="w3tc_config_preview_enable" class="button-primary" value="<?php esc_attr_e( 'Enable', 'w3-total-cache' ); ?>" /> <?php endif; ?> <p class="description"><?php esc_html_e( 'Use preview mode to test configuration scenarios prior to releasing them (deploy) on the actual site. Preview mode remains active even after deploying settings until the feature is disabled.', 'w3-total-cache' ); ?></p> </td> </tr> </table> <?php Util_Ui::button_config_save( 'general_general' ); ?> <?php Util_Ui::postbox_footer(); ?> <?php Util_Ui::postbox_header( esc_html__( 'Page Cache', 'w3-total-cache' ), '', 'page_cache' ); Util_Ui::config_overloading_button( array( 'key' => 'pgcache.configuration_overloaded' ) ); ?> <p><?php esc_html_e( 'Enable page caching to decrease the response time of the site.', 'w3-total-cache' ); ?></p> <table class="form-table"> <?php Util_Ui::config_item( array( 'key' => 'pgcache.enabled', 'control' => 'checkbox', 'checkbox_label' => esc_html__( 'Enable', 'w3-total-cache' ), 'description' => esc_html__( 'Caching pages will reduce the response time of your site and increase the scale of your web server.', 'w3-total-cache' ), ) ); Util_Ui::config_item( array( 'key' => 'pgcache.engine', 'control' => 'selectbox', 'selectbox_values' => array( 'file' => array( 'label' => esc_html__( 'Disk: Basic', 'w3-total-cache' ), 'optgroup' => 0, ), 'file_generic' => array( 'label' => esc_html__( 'Disk: Enhanced', 'w3-total-cache' ), 'optgroup' => 0, ), 'apc' => array( 'disabled' => ! Util_Installed::apc(), 'label' => esc_html__( 'Opcode: Alternative PHP Cache (APC / APCu)', 'w3-total-cache' ), 'optgroup' => 1, ), 'eaccelerator' => array( 'disabled' => ! Util_Installed::eaccelerator(), 'label' => esc_html__( 'Opcode: eAccelerator', 'w3-total-cache' ), 'optgroup' => 1, ), 'xcache' => array( 'disabled' => ! Util_Installed::xcache(), 'label' => esc_html__( 'Opcode: XCache', 'w3-total-cache' ), 'optgroup' => 1, ), 'wincache' => array( 'disabled' => ! Util_Installed::wincache(), 'label' => esc_html__( 'Opcode: WinCache', 'w3-total-cache' ), 'optgroup' => 1, ), 'memcached' => array( 'disabled' => ! Util_Installed::memcached(), 'label' => esc_html__( 'Memcached', 'w3-total-cache' ), 'optgroup' => 2, ), 'nginx_memcached' => array( 'disabled' => ! Util_Installed::memcached_memcached() || ! $is_pro, 'label' => esc_html__( 'Nginx + Memcached', 'w3-total-cache' ) . ( $is_pro ? '' : esc_html__( ' (available after upgrade)', 'w3-total-cache' ) ), 'optgroup' => 2, ), 'redis' => array( 'disabled' => ! Util_Installed::redis(), 'label' => esc_html__( 'Redis', 'w3-total-cache' ), 'optgroup' => 2, ), ), 'selectbox_optgroups' => array( esc_html__( 'Shared Server (disk enhanced is best):', 'w3-total-cache' ), esc_html__( 'Dedicated / Virtual Server:', 'w3-total-cache' ), esc_html__( 'Multiple Servers:', 'w3-total-cache' ), ), ) ); ?> </table> <?php Util_Ui::button_config_save( 'general_pagecache', '<input type="submit" name="w3tc_flush_pgcache" value="' . esc_attr__( 'Empty cache', 'w3-total-cache' ) . '"' . ( $pgcache_enabled ? '' : ' disabled="disabled" ' ) . ' class="button" />' ); ?> <?php Util_Ui::postbox_footer(); ?> <?php Util_Ui::postbox_header( esc_html__( 'Minify', 'w3-total-cache' ), '', 'minify' ); Util_Ui::config_overloading_button( array( 'key' => 'minify.configuration_overloaded' ) ); ?> <p> <?php w3tc_e( 'minify.general.header', sprintf( // translators: 1 HTML acronym for Cascading Style Sheet (CSS), 2 HTML acronym for JavaScript (JS), // translators: 3 HTML acronym for Hypertext Markup Language (HTML). __( 'Reduce load time by decreasing the size and number of %1$s and %2$s files. Automatically remove unnecessary data from %1$s, %2$s, feed, page and post %3$s.', 'w3-total-cache' ), '<acronym title="' . __( 'Cascading Style Sheet', 'w3-total-cache' ) . '">' . __( 'CSS', 'w3-total-cache' ) . '</acronym>', '<acronym title="' . __( 'JavaScript', 'w3-total-cache' ) . '">' . __( 'JS', 'w3-total-cache' ) . '</acronym>', '<acronym title="' . __( 'Hypertext Markup Language', 'w3-total-cache' ) . '">' . __( 'HTML', 'w3-total-cache' ) . '</acronym>' ) ); ?> </p> <table class="form-table"> <?php Util_Ui::config_item( array( 'key' => 'minify.enabled', 'control' => 'checkbox', 'checkbox_label' => esc_html__( 'Enable', 'w3-total-cache' ), 'description' => wp_kses( sprintf( // translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag, // translators: 3 opening HTML acronym tag, 4 closing HTML acronym tag, // translators: 5 opening HTML acronym tag, 6 closing HTML acronym tag. __( 'Minification can decrease file size of %1$sHTML%2$s, %3$sCSS%4$s, %5$sJS%6$s and feeds respectively by ~10%% on average.', 'w3-total-cache' ), '<acronym title="' . esc_attr__( 'Hypertext Markup Language', 'w3-total-cache' ) . '">', '</acronym>', '<acronym title="' . esc_attr__( 'Cascading Style Sheet', 'w3-total-cache' ) . '">', '</acronym>', '<acronym title="' . esc_attr__( 'JavaScript', 'w3-total-cache' ) . '">', '</acronym>' ), array( 'acronym' => array( 'title' => array(), ), ) ), 'control_after' => ' <a class="w3tc-control-after" target="_blank" href="' . esc_url( 'https://www.boldgrid.com/support/w3-total-cache/w3-total-cache-minify-faq/?utm_source=w3tc&utm_medium=learn_more_links&utm_campaign=minify_faq' ) . '" title="' . esc_attr__( 'Minify frequently asked questions', 'w3-total-cache' ) . '">' . esc_html__( 'Learn more', 'w3-total-cache' ) . '<span class="dashicons dashicons-external"></span></a>', ) ); Util_Ui::config_item( array( 'key' => 'minify.auto', 'value' => ( $this->_config->get_boolean( 'minify.auto' ) ? 1 : 0 ), 'control' => 'radiogroup', 'radiogroup_values' => array( '1' => esc_html__( 'Auto', 'w3-total-cache' ), '0' => esc_html__( 'Manual', 'w3-total-cache' ), ), 'description' => esc_html__( 'Select manual mode to use fields on the minify settings tab to specify files to be minified, otherwise files will be minified automatically.', 'w3-total-cache' ), 'control_after' => ' <a class="w3tc-control-after" target="_blank" href="' . esc_url( 'https://www.boldgrid.com/support/w3-total-cache/how-to-use-manual-minify-for-css-and-js/?utm_source=w3tc&utm_medium=learn_more_links&utm_campaign=manual_minify#difference-between-auto-and-manual-minify' ) . '" title="' . esc_attr__( 'How to use manual minify', 'w3-total-cache' ) . '">' . esc_html__( 'Learn more', 'w3-total-cache' ) . '<span class="dashicons dashicons-external"></span></a>', ) ); Util_Ui::config_item_engine( array( 'key' => 'minify.engine', 'control_after' => ' <a class="w3tc-control-after" target="_blank" href="' . esc_url( 'https://www.boldgrid.com/support/w3-total-cache/choosing-a-minification-method-for-w3-total-cache/?utm_source=w3tc&utm_medium=learn_more_links&utm_campaign=minify_engine' ) . '" title="' . esc_attr__( 'Choosing a minification method', 'w3-total-cache' ) . '">' . esc_html__( 'Learn more', 'w3-total-cache' ) . '<span class="dashicons dashicons-external"></span></a>', ) ); Util_Ui::config_item( array( 'key' => 'minify.html.engine', 'control' => 'selectbox', 'selectbox_values' => array( 'html' => esc_html__( 'Minify (default)', 'w3-total-cache' ), 'htmltidy' => array( 'disabled' => ! Util_Installed::tidy(), 'label' => esc_html__( 'HTML Tidy', 'w3-total-cache' ), ), ), 'control_after' => ' <a class="w3tc-control-after" target="_blank" href="' . esc_url( 'https://www.boldgrid.com/support/w3-total-cache/minify/html-minify-or-tidy/?utm_source=w3tc&utm_medium=learn_more_links&utm_campaign=minify_html#minify-default' ) . '" title="' . esc_attr__( 'How to use minify HTML', 'w3-total-cache' ) . '">' . esc_html__( 'Learn more', 'w3-total-cache' ) . '<span class="dashicons dashicons-external"></span></a>', ) ); Util_Ui::config_item( array( 'key' => 'minify.js.engine', 'control' => 'selectbox', 'selectbox_values' => array( 'js' => esc_html__( 'JSMin (default)', 'w3-total-cache' ), 'googleccjs' => esc_html__( 'Google Closure Compiler (Web Service)', 'w3-total-cache' ), 'ccjs' => esc_html__( 'Google Closure Compiler (Local Java)', 'w3-total-cache' ), 'jsminplus' => esc_html__( 'Narcissus', 'w3-total-cache' ), 'yuijs' => esc_html__( 'YUI Compressor', 'w3-total-cache' ), ), ) ); Util_Ui::config_item( array( 'key' => 'minify.css.engine', 'control' => 'selectbox', 'selectbox_values' => array( 'css' => esc_html__( 'Minify (default)', 'w3-total-cache' ), 'csstidy' => array( 'label' => esc_html__( 'CSS Tidy', 'w3-total-cache' ), 'disabled' => ( version_compare( PHP_VERSION, '5.4.0', '<' ) ? true : false ), ), 'cssmin' => esc_html__( 'YUI Compressor (PHP)', 'w3-total-cache' ), 'yuicss' => esc_html__( 'YUI Compressor', 'w3-total-cache' ), ), ) ); ?> </table> <?php Util_Ui::button_config_save( 'general_minify', '<input type="submit" name="w3tc_flush_minify" value="' . esc_attr__( 'Empty cache', 'w3-total-cache' ) . '" ' . ( $minify_enabled ? '' : ' disabled="disabled" ' ) . ' class="button" />' ); ?> <?php Util_Ui::postbox_footer(); ?> <?php do_action( 'w3tc_settings_general_boxarea_system_opcache' ); ?> <?php Util_Ui::postbox_header( esc_html__( 'Database Cache', 'w3-total-cache' ), '', 'database_cache' ); Util_Ui::config_overloading_button( array( 'key' => 'dbcache.configuration_overloaded' ) ); ?> <p><?php esc_html_e( 'Enable database caching to reduce post, page and feed creation time.', 'w3-total-cache' ); ?></p> <table class="form-table"> <?php Util_Ui::config_item( array( 'key' => 'dbcache.enabled', 'control' => 'checkbox', 'checkbox_label' => esc_html__( 'Enable', 'w3-total-cache' ), 'description' => esc_html__( 'Caching database objects decreases the response time of your site. Best used if object caching is not possible.', 'w3-total-cache' ), ) ); Util_Ui::config_item_engine( array( 'key' => 'dbcache.engine' ) ); ?> <?php if ( Util_Environment::is_w3tc_pro() && is_network_admin() ) : ?> <?php require W3TC_INC_OPTIONS_DIR . '/enterprise/dbcluster_general_section.php'; ?> <?php endif; ?> </table> <?php Util_Ui::button_config_save( 'general_dbcache', '<input type="submit" name="w3tc_flush_dbcache" value="' . esc_html__( 'Empty cache', 'w3-total-cache' ) . '" ' . ( $dbcache_enabled ? '' : ' disabled="disabled" ' ) . ' class="button" />' ); ?> <?php Util_Ui::postbox_footer(); ?> <?php Util_Ui::postbox_header( esc_html__( 'Object Cache', 'w3-total-cache' ), '', 'object_cache' ); Util_Ui::config_overloading_button( array( 'key' => 'objectcache.configuration_overloaded' ) ); ?> <p><?php esc_html_e( 'Enable object caching to further reduce execution time for common operations.', 'w3-total-cache' ); ?></p> <table class="form-table"> <?php Util_Ui::config_item( array( 'key' => 'objectcache.enabled', 'control' => 'checkbox', 'checkbox_label' => esc_html__( 'Enable', 'w3-total-cache' ), 'description' => wp_kses( sprintf( // translators: 1 opening HTML a tag to WordPress codex for WP Object Cache, 2 Opening HTML acronym tag, // translators: 3 closing HTML acronym tag, 4 closing HTML a tag. __( 'Object caching greatly increases performance for highly dynamic sites that use the %1$sObject Cache %2$sAPI%3$s%4$s.', 'w3-total-cache' ), '<a href="' . esc_url( 'http://codex.wordpress.org/Class_Reference/WP_Object_Cache' ) . '" target="_blank">', '<acronym title="' . esc_attr__( 'Application Programming Interface', 'w3-total-cache' ) . '">', '</acronym>', '</a>' ), array( 'acronym' => array( 'title' => array(), ), 'a' => array( 'href' => array(), 'target' => array(), ), ) ), ) ); Util_Ui::config_item_engine( array( 'key' => 'objectcache.engine' ) ); ?> </table> <?php Util_Ui::button_config_save( 'general_objectcache', '<input type="submit" name="w3tc_flush_objectcache" value="' . esc_attr__( 'Empty cache', 'w3-total-cache' ) . '" ' . ( $objectcache_enabled ? '' : ' disabled="disabled" ' ) . ' class="button" />' ); ?> <?php Util_Ui::postbox_footer(); ?> <?php Util_Ui::postbox_header( esc_html__( 'Browser Cache', 'w3-total-cache' ), '', 'browser_cache' ); Util_Ui::config_overloading_button( array( 'key' => 'browsercache.configuration_overloaded' ) ); ?> <p><?php esc_html_e( 'Reduce server load and decrease response time by using the cache available in site visitor\'s web browser.', 'w3-total-cache' ); ?></p> <table class="form-table"> <?php Util_Ui::config_item( array( 'key' => 'browsercache.enabled', 'control' => 'checkbox', 'checkbox_label' => esc_html__( 'Enable', 'w3-total-cache' ), 'description' => wp_kses( sprintf( // translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag. __( 'Enable %1$sHTTP%2$s compression and add headers to reduce server load and decrease file load time.', 'w3-total-cache' ), '<acronym title="' . esc_attr__( 'Hypertext Transfer Protocol', 'w3-total-cache' ) . '">', '</acronym>' ), array( 'acronym' => array( 'title' => array(), ), ) ), ) ); ?> </table> <?php Util_Ui::button_config_save( 'general_browsercache' ); ?> <?php Util_Ui::postbox_footer(); ?> <?php do_action( 'w3tc_settings_general_boxarea_cdn' ); ?> <?php Util_Ui::postbox_header( esc_html__( 'Reverse Proxy', 'w3-total-cache' ), '', 'reverse_proxy' ); Util_Ui::config_overloading_button( array( 'key' => 'varnish.configuration_overloaded' ) ); ?> <p> <?php echo wp_kses( sprintf( // translators: 1 opening HTML a tag to W3TC Page Cache admin page, 2 closing HTML a tag, // translators: 3 opening HTML a tag to W3TC Browsercache admin page, 4 closing HTML a tag. __( 'A reverse proxy adds scale to an server by handling requests before WordPress does. Purge settings are set on the %1$sPage Cache settings%2$s page and %3$sBrowser Cache settings%4$s are set on the browser cache settings page.', 'w3-total-cache' ), '<a href="' . esc_url( self_admin_url( 'admin.php?page=w3tc_pgcache' ) ) . '">', '</a>', '<a href="' . esc_url( self_admin_url( 'admin.php?page=w3tc_browsercache' ) ) . '">', '</a>' ), array( 'a' => array( 'href' => array(), ), ) ); ?> </p> <table class="form-table"> <tr> <th colspan="2"> <?php $this->checkbox( 'varnish.enabled' ); ?> <?php Util_Ui::e_config_label( 'varnish.enabled' ); ?></label><br /> </th> </tr> <tr> <th><label for="pgcache_varnish_servers"><?php Util_Ui::e_config_label( 'varnish.servers' ); ?></label></th> <td> <textarea id="pgcache_varnish_servers" name="varnish__servers" cols="40" rows="5" <?php Util_Ui::sealing_disabled( 'varnish.' ); ?>><?php echo esc_textarea( implode( "\r\n", $this->_config->get_array( 'varnish.servers' ) ) ); ?></textarea> <p class="description"> <?php echo wp_kses( sprintf( // translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag, // translators: 3 opening HTML acronym tag, 4 closing HTML acronym tag. __( 'Specify the IP addresses of your varnish instances above. The %1$sVCL%2$s\'s %3$sACL%4$s must allow this request.', 'w3-total-cache' ), '<acronym title="' . esc_attr__( 'Varnish Configuration Language', 'w3-total-cache' ) . '">', '</acronym>', '<acronym title="' . esc_attr__( 'Access Control List', 'w3-total-cache' ) . '">', '</acronym>' ), array( 'acronym' => array( 'title' => array(), ), ) ); ?> </p> </td> </tr> </table> <?php Util_Ui::button_config_save( 'general_varnish', '<input type="submit" name="w3tc_flush_varnish" value="' . esc_attr__( 'Purge cache', 'w3-total-cache' ) . '"' . ( $varnish_enabled ? '' : ' disabled="disabled" ' ) . ' class="button" />' ); ?> <?php Util_Ui::postbox_footer(); ?> <?php if ( $is_pro ) : ?> <?php Util_Ui::postbox_header( esc_html__( 'Message Bus', 'w3-total-cache' ), '', 'amazon_sns' ); ?> <p> <?php esc_html_e( 'Allows policy management to be shared between a dynamic pool of servers. For example, each server in a pool to use opcode caching (which is not a shared resource) and purging is then syncronized between any number of servers in real-time; each server therefore behaves identically even though resources are not shared.', 'w3-total-cache' ); ?> </p> <table class="form-table"> <tr> <th colspan="2"> <input type="hidden" name="cluster__messagebus__enabled" value="0" /> <label><input class="enabled" type="checkbox" name="cluster__messagebus__enabled" value="1"<?php checked( $this->_config->get_boolean( 'cluster.messagebus.enabled' ), true ); ?> /> <?php Util_Ui::e_config_label( 'cluster.messagebus.enabled' ); ?></label><br /> </th> </tr> <tr> <th><label for="cluster_messagebus_sns_region"><?php Util_Ui::e_config_label( 'cluster.messagebus.sns.region' ); ?></label></th> <td> <input id="cluster_messagebus_sns_region" class="w3tc-ignore-change" type="text" name="cluster__messagebus__sns__region" value="<?php echo esc_attr( $this->_config->get_string( 'cluster.messagebus.sns.region' ) ); ?>" size="60" /> <p class="description"> <?php echo wp_kses( sprintf( // translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag. __( 'Specify the Amazon %1$sSNS%2$s service endpoint hostname. If empty, then default "sns.us-east-1.amazonaws.com" will be used.', 'w3-total-cache' ), '<acronym title="' . esc_attr__( 'Simple Notification Service', 'w3-total-cache' ) . '">', '</acronym>' ), array( 'acronym' => array( 'title' => array(), ), ) ); ?> </p> </td> </tr> <tr> <th><label for="cluster_messagebus_sns_api_key"><?php Util_Ui::e_config_label( 'cluster.messagebus.sns.api_key' ); ?></label></th> <td> <input id="cluster_messagebus_sns_api_key" class="w3tc-ignore-change" type="text" name="cluster__messagebus__sns__api_key" value="<?php echo esc_attr( $this->_config->get_string( 'cluster.messagebus.sns.api_key' ) ); ?>" size="60" /> <p class="description"> <?php echo wp_kses( sprintf( // translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag. __( 'Specify the %1$sAPI%2$s Key.', 'w3-total-cache' ), '<acronym title="' . esc_attr__( 'Application Programming Interface', 'w3-total-cache' ) . '">', '</acronym>' ), array( 'acronym' => array( 'title' => array(), ), ) ); ?> </p> </td> </tr> <tr> <th><label for="cluster_messagebus_sns_api_secret"><?php Util_Ui::e_config_label( 'cluster.messagebus.sns.api_secret' ); ?></label></th> <td> <input id="cluster_messagebus_sns_api_secret" class="w3tc-ignore-change" type="text" name="cluster__messagebus__sns__api_secret" value="<?php echo esc_attr( $this->_config->get_string( 'cluster.messagebus.sns.api_secret' ) ); ?>" size="60" /> <p class="description"> <?php echo wp_kses( sprintf( // translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag. __( 'Specify the %1$sAPI%2$s secret.', 'w3-total-cache' ), '<acronym title="' . esc_attr__( 'Application Programming Interface', 'w3-total-cache' ) . '">', '</acronym>' ), array( 'acronym' => array( 'title' => array(), ), ) ); ?> </p> </td> </tr> <tr> <th><label for="cluster_messagebus_sns_topic_arn"><?php Util_Ui::e_config_label( 'cluster.messagebus.sns.topic_arn' ); ?></label></th> <td> <input id="cluster_messagebus_sns_topic_arn" class="w3tc-ignore-change" type="text" name="cluster__messagebus__sns__topic_arn" value="<?php echo esc_attr( $this->_config->get_string( 'cluster.messagebus.sns.topic_arn' ) ); ?>" size="60" /> <p class="description"> <?php echo wp_kses( sprintf( // translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag. __( 'Specify the %1$sSNS%2$s topic.', 'w3-total-cache' ), '<acronym title="' . esc_attr__( 'Simple Notification Service', 'w3-total-cache' ) . '">', '</acronym>' ), array( 'acronym' => array( 'title' => array(), ), ) ); ?> </p> </td> </tr> </table> <?php Util_Ui::button_config_save( 'general_dbcluster' ); ?> <?php Util_Ui::postbox_footer(); ?> <?php endif; ?> <?php Util_Ui::postbox_header( __( 'Google PageSpeed', 'w3-total-cache' ), '', 'google_page_speed' ); ?> <?php $access_token_json = ( ! empty( $this->_config->get_string( 'widget.pagespeed.access_token' ) ) ? $this->_config->get_string( 'widget.pagespeed.access_token' ) : '' ); $w3_pagespeed = new PageSpeed_Api( $access_token_json ); $site_id = Util_Http::generate_site_id(); $return_url = Util_Ui::admin_url( 'admin.php?page=w3tc_general' ); $w3tc_pagespeed_key = ! empty( $this->_config->get_string( 'widget.pagespeed.w3tc_pagespeed_key' ) ) ? $this->_config->get_string( 'widget.pagespeed.w3tc_pagespeed_key' ) : ''; $auth_url = $w3_pagespeed->client->createAuthUrl(); $new_gacode = Util_Request::get( 'w3tc_new_gacode' ); $new_w3tc_pagespeed_key = Util_Request::get( 'w3tc_new_w3tc_pagespeed_key' ); $authorize_error = Util_Request::get( 'w3tc_authorize_error' ); $deauthorize = Util_Request::get( 'w3tc_deauthorize' ); if ( ! empty( $new_gacode ) && ! empty( $new_w3tc_pagespeed_key ) ) { $response = json_decode( $w3_pagespeed->process_authorization_response( $new_gacode, $new_w3tc_pagespeed_key ), true ); if ( isset( $response['error']['code'] ) && 200 !== $response['error']['code'] ) { $response_error = sprintf( // translators: 1 Request response code, 2 Error message. __( 'Response Code: %1$s<br/>Response Message: %2$s', 'w3-total-cache' ), ! empty( $response['error']['code'] ) ? $response['error']['code'] : 'N/A', ! empty( $response['error']['message'] ) ? $response['error']['message'] : 'N/A' ); update_option( 'w3tcps_authorize_fail', __( 'Google PageSpeed Insights API authorization failed.', 'w3-total-cache' ) ); update_option( 'w3tcps_authorize_fail_message', $response_error ); } elseif ( ! empty( $response['refresh_token'] ) ) { update_option( 'w3tcps_authorize_success', __( 'Google PageSpeed Insights API authorization successfull.', 'w3-total-cache' ) ); } else { update_option( 'w3tcps_authorize_fail', __( 'Google PageSpeed Insights API authorization failed.', 'w3-total-cache' ) ); update_option( 'w3tcps_authorize_fail_message', __( 'Missing refresh token.', 'w3-totoal-cache' ) ); } wp_safe_redirect( $return_url ); exit; } elseif ( $deauthorize ) { $w3_pagespeed->reset(); update_option( 'w3tcps_authorize_success', __( 'Google PageSpeed Insights API authorization successfully reset.', 'w3-total-cache' ) ); wp_safe_redirect( $return_url ); exit; } elseif ( ! empty( $authorize_error ) ) { $authorize_error = json_decode( $authorize_error ); if ( 'authorize-in-missing-site-id' === $authorize_error->error->id ) { $message = __( 'Unique site ID missing for authorize request!', 'w3-total-cache' ); } elseif ( 'authorize-in-missing-auth-url' === $authorize_error->error->id ) { $message = __( 'Authorize URL missing for authorize request!', 'w3-total-cache' ); } elseif ( 'authorize-in-missing-return-url' === $authorize_error->error->id ) { $message = __( 'Return URL missing for authorize request!', 'w3-total-cache' ); } elseif ( 'authorize-in-failed' === $authorize_error->error->id ) { $message = __( 'Failed to process authorize request!', 'w3-total-cache' ); } if ( 'authorize-out-code-missing' === $authorize_error->error->id ) { $message = __( 'No authorize code returned to W3-API from Google!', 'w3-total-cache' ); } elseif ( 'authorize-out-w3tc-pagespeed-key-missing' === $authorize_error->error->id ) { $message = __( 'No W3Key return to W3-API from Google!', 'w3-total-cache' ); } elseif ( 'authorize-out-not-found' === $authorize_error->error->id ) { $message = __( 'No W3-API matching record found during Google authorization return processing!', 'w3-total-cache' ); } update_option( 'w3tcps_authorize_fail', __( 'Google PageSpeed Insights API authorization failed.', 'w3-total-cache' ) ); update_option( 'w3tcps_authorize_fail_message', $message ); wp_safe_redirect( $return_url ); exit; } ?> <table class="form-table"> <?php $access_token_json = ( ! empty( $w3_pagespeed->client->getAccessToken() ) ? $w3_pagespeed->client->getAccessToken() : '' ); if ( ! $w3_pagespeed->client->isAccessTokenExpired() && ! empty( $access_token_json ) ) { ?> <tr> <th> <label for="widget_pagespeed_access_token"><?php Util_Ui::e_config_label( 'widget.pagespeed.access_token', 'general' ); ?> <?php esc_html_e( 'Valid', 'w3-total-cache' ); ?></label> </th> </tr> <tr> <th> <a id="w3tc-google-deauthorize-button" class="w3tc-button-save button-primary" href="<?php echo esc_url( $return_url . '&w3tc_deauthorize=1' ); ?>"><?php esc_html_e( 'Deauthorize' ); ?></a> </th> </tr> <?php } else { ?> <tr> <th> <label for="widget_pagespeed_token"><?php Util_Ui::e_config_label( 'widget.pagespeed.access_token', 'general' ); ?></label> </th> <td> <a id="w3tc-google-authorize-button" class="w3tc-button-save button-primary" href="<?php echo esc_url( $w3_pagespeed->get_w3tc_api_url( 'google/authorize-in' ) . '/' . rawurlencode( $site_id ) . '/' . rawurlencode( $auth_url ) . '/' . rawurlencode( $return_url ) ); ?>"><?php esc_html_e( 'Authorize' ); ?></a> <p><?php esc_html_e( 'Allow W3 Total Cache to connect to the PageSpeed Insights API on your behalf.', 'w3-total-cache' ); ?></p> </td> </tr> <?php } Util_Ui::config_item( array( 'key' => 'widget.pagespeed.enabled', 'control' => 'checkbox', 'checkbox_label' => __( 'Enable Google PageSpeed dashboard widget', 'w3-total-cache' ), 'description' => __( 'Display Google PageSpeed results on the WordPress dashboard.', 'w3-total-cache' ), 'label_class' => 'w3tc_single_column', ) ); ?> </table> <?php Util_Ui::button_config_save( 'general_google_page_speed' ); ?> <?php Util_Ui::postbox_footer(); ?> <?php foreach ( $custom_areas as $area ) { do_action( 'w3tc_settings_general_boxarea_' . $area['id'] ); } ?> <?php if ( $licensing_visible ) : ?> <?php Util_Ui::postbox_header( __( 'Licensing', 'w3-total-cache' ), '', 'licensing' ); ?> <table class="form-table"> <tr> <th> <label for="plugin_license_key"><?php Util_Ui::e_config_label( 'plugin.license_key' ); ?></label> </th> <td> <input id="plugin_license_key" name="plugin__license_key" type="text" value="<?php echo esc_attr( $this->_config->get_string( 'plugin.license_key' ) ); ?>" size="45"/> <input id="plugin_license_key_verify" type="button" class="button" value="<?php esc_attr_e( 'Verify license key', 'w3-total-cache' ); ?>"/> <span class="w3tc_license_verification"></span> <p class="description"> <?php echo wp_kses( sprintf( // translators: 1 HTML a tag to trigger W3TC licence upgrade. __( 'Please enter the license key provided after %1$s.', 'w3-total-cache' ), '<a class="button-buy-plugin" data-src="generic_license" href="#">' . esc_html__( 'upgrading', 'w3-total-cache' ) . '</a>' ), array( 'a' => array( 'class' => array(), 'data-src' => array(), 'href' => array(), ), ) ); ?> </p> </td> </tr> </table> <?php Util_Ui::button_config_save( 'general_licensing' ); ?> <?php Util_Ui::postbox_footer(); ?> <?php endif; ?> <?php Util_Ui::postbox_header( esc_html__( 'Miscellaneous', 'w3-total-cache' ), '', 'miscellaneous' ); ?> <table class="form-table"> <?php if ( is_network_admin() ) : ?> <tr> <th colspan="2"> <?php $this->checkbox( 'common.force_master' ); ?> <?php Util_Ui::e_config_label( 'common.force_master' ); ?></label> <p class="description"><?php esc_html_e( 'Only one configuration file for whole network will be created and used. Recommended if all sites have the same configuration.', 'w3-total-cache' ); ?></p> </th> </tr> <?php endif; ?> <?php if ( Util_Environment::is_nginx() ) : ?> <tr> <th><?php Util_Ui::e_config_label( 'config.path' ); ?></th> <td> <input type="text" name="config__path" value="<?php echo esc_attr( $this->_config->get_string( 'config.path' ) ); ?>" size="80" <?php Util_Ui::sealing_disabled( 'common.' ); ?>/> <p class="description"><?php esc_html_e( 'If empty the default path will be used..', 'w3-total-cache' ); ?></p> </td> </tr> <?php endif; ?> <tr> <th colspan="2"> <input type="hidden" name="config__check" value="0" <?php Util_Ui::sealing_disabled( 'common.' ); ?> /> <label><input type="checkbox" name="config__check" value="1" <?php checked( $this->_config->get_boolean( 'config.check' ), true ); ?> <?php Util_Ui::sealing_disabled( 'common.' ); ?> /> <?php Util_Ui::e_config_label( 'config.check' ); ?></label> <p class="description"> <?php echo wp_kses( sprintf( // translators: 1 opening HTML a tag to W3TC install admin page. __( 'Notify of server configuration errors, if this option is disabled, the server configuration for active settings can be found on the %1$sinstall%2$s tab.', 'w3-total-cache' ), '<a href="' . esc_url( Util_Ui::admin_url( 'admin.php?page=w3tc_install' ) ) . '">', '</a>' ), array( 'a' => array( 'href' => array(), ), ) ); ?> </p> </th> </tr> <tr> <th colspan="2"> <input type="hidden" name="file_locking" value="0"<?php Util_Ui::sealing_disabled( 'common.' ); ?> /> <label><input type="checkbox" name="file_locking" value="1" <?php checked( $file_locking, true ); ?> <?php Util_Ui::sealing_disabled( 'common.' ); ?> /> <?php esc_html_e( 'Enable file locking', 'w3-total-cache' ); ?></label> <p class="description"> <?php echo wp_kses( sprintf( // translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag. __( 'Not recommended for %1$sNFS%2$s systems.', 'w3-total-cache' ), '<acronym title="' . esc_attr__( 'Network File System', 'w3-total-cache' ) . '">', '</acronym>' ), array( 'acronym' => array( 'title' => array(), ), ) ); ?> </p> </th> </tr> <tr> <th colspan="2"> <input type="hidden" name="file_nfs" value="0" <?php Util_Ui::sealing_disabled( 'common.' ); ?> /> <label> <input type="checkbox" name="file_nfs" value="1" <?php checked( $file_nfs, true ); ?><?php Util_Ui::sealing_disabled( 'common.' ); ?> /> <?php echo wp_kses( sprintf( // translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag. __( 'Optimize disk enhanced page and minify disk caching for %1$sNFS%2$s', 'w3-total-cache' ), '<acronym title="' . esc_attr__( 'Network File System', 'w3-total-cache' ) . '">', '</acronym>' ), array( 'acronym' => array( 'title' => array(), ), ) ); ?> </label> <p class="description"><?php esc_html_e( 'Try this option if your hosting environment uses a network based file system for a possible performance improvement.', 'w3-total-cache' ); ?></p> </th> </tr> <?php Util_Ui::config_item( array( 'key' => 'docroot_fix.enable', 'control' => 'checkbox', 'checkbox_label' => esc_html__( 'Fix document root path', 'w3-total-cache' ), 'label_class' => 'w3tc_single_column', 'description' => sprintf( // translators: 1: WordPress ABSPATH value, 2: Server document root value. esc_html__( 'Fix incorrect server document root path. Uses the WordPress ABSPATH ("%1$s") in place of the current server document root ("%2$s").', 'w3-total-cache' ), esc_attr( untrailingslashit( ABSPATH ) ), esc_attr( ! empty( $_SERVER['DOCUMENT_ROOT'] ) ? esc_url_raw( wp_unslash( $_SERVER['DOCUMENT_ROOT'] ) ) : '' ) ), ) ); Util_Ui::config_item( array( 'key' => 'common.track_usage', 'control' => 'checkbox', 'checkbox_label' => esc_html__( 'Anonymously track usage to improve product quality', 'w3-total-cache' ), 'label_class' => 'w3tc_single_column', ) ); ?> </table> <?php Util_Ui::button_config_save( 'general_misc' ); ?> <?php Util_Ui::postbox_footer(); ?> <?php Util_Ui::postbox_header( esc_html__( 'Debug', 'w3-total-cache' ), '', 'debug' ); ?> <p> <?php echo wp_kses( sprintf( // translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag. __( 'Detailed information about each cache will be appended in (publicly available) %1$sHTML%2$s comments in the page\'s source code. Performance in this mode will not be optimal, use sparingly and disable when not in use.', 'w3-total-cache' ), '<acronym title="' . esc_attr__( 'Hypertext Markup Language', 'w3-total-cache' ) . '">', '</acronym>' ), array( 'acronym' => array( 'title' => array(), ), ) ); ?> </p> <table class="form-table"> <tr> <th><?php esc_html_e( 'Debug mode:', 'w3-total-cache' ); ?></th> <td> <?php $this->checkbox_debug( 'pgcache.debug' ); ?> <?php Util_Ui::e_config_label( 'pgcache.debug' ); ?></label><br /> <?php $this->checkbox_debug( 'minify.debug' ); ?> <?php Util_Ui::e_config_label( 'minify.debug' ); ?></label><br /> <?php $this->checkbox_debug( 'dbcache.debug' ); ?> <?php Util_Ui::e_config_label( 'dbcache.debug' ); ?></label><br /> <?php $this->checkbox_debug( 'objectcache.debug' ); ?> <?php Util_Ui::e_config_label( 'objectcache.debug' ); ?></label><br /> <?php if ( Util_Environment::is_w3tc_pro( $this->_config ) ) : ?> <?php $this->checkbox_debug( array( 'fragmentcache', 'debug' ) ); ?> <?php esc_html_e( 'Fragment Cache', 'w3-total-cache' ); ?></label><br /> <?php endif; ?> <?php $this->checkbox_debug( 'cdn.debug' ); ?> <?php Util_Ui::e_config_label( 'cdn.debug' ); ?></label><br /> <?php $this->checkbox_debug( 'cdnfsd.debug' ); ?> <?php Util_Ui::e_config_label( 'cdnfsd.debug' ); ?></label><br /> <?php $this->checkbox_debug( 'varnish.debug' ); ?> <?php Util_Ui::e_config_label( 'varnish.debug' ); ?></label> <?php if ( Util_Environment::is_w3tc_pro() ) : ?> <br /> <?php $this->checkbox_debug( 'cluster.messagebus.debug' ); ?> <?php Util_Ui::e_config_label( 'cluster.messagebus.debug' ); ?></label> <?php endif ?> <p class="description"> <?php echo wp_kses( sprintf( // translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag. __( 'If selected, detailed caching information will appear at the end of each page in a %1$sHTML%2$s comment. View a page\'s source code to review.', 'w3-total-cache' ), '<acronym title="' . esc_attr__( 'Hypertext Markup Language', 'w3-total-cache' ) . '">', '</acronym>' ), array( 'acronym' => array( 'title' => array(), ), ) ); ?> </p> </td> </tr> </table> <table class="<?php echo esc_attr( Util_Ui::table_class() ); ?>"> <tr> <th><?php esc_html_e( 'Purge Logs:', 'w3-total-cache' ); ?></th> <td> <?php \W3TC\Util_Ui::pro_wrap_maybe_start(); ?> <?php $this->checkbox_debug_pro( 'pgcache.debug_purge', __( 'Page Cache Purge Log', 'w3-total-cache' ), ' (<a href="?page=w3tc_general&view=purge_log&module=pagecache">' . __( 'view log', 'w3-total-cache' ) . '</a>)' ); ?> <br /> <?php $this->checkbox_debug_pro( 'dbcache.debug_purge', __( 'Database Cache Purge Log', 'w3-total-cache' ), ' (<a href="?page=w3tc_general&view=purge_log&module=dbcache">' . __( 'view log', 'w3-total-cache' ) . '</a>)' ); ?> <br /> <?php $this->checkbox_debug_pro( 'objectcache.debug_purge', __( 'Object Cache Purge Log', 'w3-total-cache' ), ' (<a href="?page=w3tc_general&view=purge_log&module=objectcache">' . __( 'view log', 'w3-total-cache' ) . '</a>)' ); ?> <br /> <?php \W3TC\Util_Ui::pro_wrap_description( esc_html__( 'Purge Logs provide information on when your cache has been purged and what triggered it.', 'w3-total-cache' ), array( esc_html__( 'Sometimes, you\'ll encounter a complex issue involving your cache being purged for an unknown reason. The Purge Logs functionality can help you easily resolve those issues.', 'w3-total-cache' ), ), 'general-purge-log' ); ?> <?php \W3TC\Util_Ui::pro_wrap_maybe_end( 'debug_purge' ); ?> </td> </tr> </table> <?php Util_Ui::button_config_save( 'general_debug' ); ?> <?php Util_Ui::postbox_footer(); ?> </div> </form> <form action="admin.php?page=<?php echo esc_attr( $this->_page ); ?>" method="post" enctype="multipart/form-data"> <div class="metabox-holder"> <?php Util_Ui::postbox_header( esc_html__( 'Import / Export Settings', 'w3-total-cache' ), '', 'settings' ); ?> <?php echo wp_kses( Util_Ui::nonce_field( 'w3tc' ), array( 'input' => array( 'type' => array(), 'name' => array(), 'value' => array(), ), ) ); ?> <table class="form-table"> <tr> <th><?php esc_html_e( 'Import configuration:', 'w3-total-cache' ); ?></th> <td> <input type="file" name="config_file" /> <input type="submit" name="w3tc_config_import" class="w3tc-button-save button" value="<?php esc_attr_e( 'Upload', 'w3-total-cache' ); ?>" /> <p class="description"><?php esc_html_e( 'Upload and replace the active settings file.', 'w3-total-cache' ); ?></p> </td> </tr> <tr> <th><?php esc_html_e( 'Export configuration:', 'w3-total-cache' ); ?></th> <td> <input type="submit" name="w3tc_config_export" class="button" value="<?php esc_attr_e( 'Download', 'w3-total-cache' ); ?>" /> <p class="description"><?php esc_html_e( 'Download the active settings file.', 'w3-total-cache' ); ?></p> </td> </tr> <tr> <th><?php esc_html_e( 'Reset configuration:', 'w3-total-cache' ); ?></th> <td> <input type="submit" name="w3tc_config_reset" class="button" value="<?php esc_attr_e( 'Restore Default Settings', 'w3-total-cache' ); ?>" /> <p class="description"><?php esc_html_e( 'Revert all settings to the defaults. Any settings staged in preview mode will not be modified.', 'w3-total-cache' ); ?></p> </td> </tr> </table> <?php Util_Ui::postbox_footer(); ?> </div> </form> <?php require W3TC_INC_DIR . '/options/common/footer.php'; ?>