Server IP : 85.214.239.14 / Your IP : 18.188.118.28 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /var/www/wordpress/wp-content/plugins/cookie-notice/includes/modules/breeze/ |
Upload File : |
<?php // exit if accessed directly if ( ! defined( 'ABSPATH' ) ) exit; /** * Cookie Notice Modules Breeze class. * * Compatibility since: 1.1.0 * * @class Cookie_Notice_Modules_Breeze */ class Cookie_Notice_Modules_Breeze { private $file_pattern = '(.*)/js/hu-options.js(.*)'; /** * Constructor. * * @return void */ public function __construct() { // actions add_action( 'plugins_loaded', [ $this, 'load_module' ], 11 ); } /** * Add compatibility to Breeze plugin. * * @return void */ public function load_module() { // check caching status $cache_active = (int) Breeze_Options_Reader::get_option_value( 'breeze-active' ); // update 2.4.17 if ( version_compare( Cookie_Notice()->db_version, '2.4.16', '<=' ) ) { if ( $cache_active === 1 ) { // clear cache $this->delete_cache(); } // save options file $this->write_cc_options_file(); } add_action( 'pre_update_option_breeze_file_settings', [ $this, 'update_breeze_file_settings' ], 10, 3 ); if ( $cache_active === 1 ) { add_action( 'cn_configuration_updated', [ $this, 'delete_cache' ] ); // is js minification active? if ( (int) Breeze_Options_Reader::get_option_value( 'breeze-minify-js' ) === 1 ) { // actions add_action( 'cn_configuration_updated', [ $this, 'save_cc_options' ], 10, 2 ); add_action( 'cn_configuration_updated', [ $this, 'exclude_options_file' ] ); // filters add_filter( 'cn_cookie_compliance_output', [ $this, 'update_cc_output' ] ); } } } /** * Update Breeze file settings. * * @param array $new_options * @param array $old_options * @param string $option * @return void */ public function update_breeze_file_settings( $new_options, $old_options, $option ) { // is js minification active? if ( (int) $new_options['breeze-minify-js'] === 1 ) { // did not find pattern? add it if ( ! in_array( $this->file_pattern, $new_options['breeze-exclude-js'], true ) ) $new_options['breeze-exclude-js'][] = $this->file_pattern; } else { // find pattern $key = array_search( $this->file_pattern, $new_options['breeze-exclude-js'], true ); // found pattern? if ( $key !== false ) { // remove pattern unset( $new_options['breeze-exclude-js'][$key] ); // reindex array if ( count( $new_options['breeze-exclude-js'] ) > 0 ) $new_options['breeze-exclude-js'] = array_values( $new_options['breeze-exclude-js'] ); } } return $new_options; } /** * Save Cookie Compliance options. * * @param string $type * @param array $options * @return void */ public function save_cc_options( $type, $options ) { // allow for saving settings only if ( $type !== 'settings' ) return; // get main instance $cn = Cookie_Notice(); // update options to be fresh for get_cc_options $cn->options['general'] = $cn->multi_array_merge( $cn->options['general'], $options ); // save file $this->write_cc_options_file(); } /** * Write Cookie Compliance options directly into file. * * @return void */ private function write_cc_options_file() { // open file $handle = fopen( COOKIE_NOTICE_PATH . 'js/hu-options.js', 'w' ); // ready? if ( $handle !== false ) { // set transient with time set_transient( 'cn_breeze_js_expiration', time(), DAY_IN_SECONDS ); // get options $options = Cookie_Notice()->frontend->get_cc_options(); // save options fwrite( $handle, 'var huOptions = ' . wp_json_encode( $options ) . ';' ); // close file fclose( $handle ); } } /** * Add external options JavaScript file to exclude array. * * @param string $type * @return void */ public function exclude_options_file( $type ) { // allow for saving settings only if ( $type !== 'settings' ) return; // get breeze file options $file_options = breeze_get_option( 'file_settings' ); // did not find pattern? if ( ! in_array( $this->file_pattern, $file_options['breeze-exclude-js'], true ) ) { // add pattern $file_options['breeze-exclude-js'][] = $this->file_pattern; // update breeze file options breeze_update_option( 'file_settings', $file_options, true ); } } /** * Update Cookie Compliance output. * * @return string */ public function update_cc_output( $output ) { // get transient time $time = (int) get_transient( 'cn_breeze_js_expiration' ); if ( $time === 0 ) $time = time(); // replace inline javascript with external file $output = preg_replace( '/<script(.*)var huOptions(.*)<\/script>/', '<script type="text/javascript" src="' . esc_url( COOKIE_NOTICE_URL . '/js/hu-options.js?' . $time ) . '"></script>', $output ); return $output; } /** * Delete all cache files. * * @return void */ public function delete_cache() { do_action( 'breeze_clear_all_cache' ); } } new Cookie_Notice_Modules_Breeze();