| @@ -1,228 +1,306 @@ | ||
| 1 | 1 | <?php |
| 2 | -/* | |
| 3 | -Plugin Name: VWO | |
| 4 | -Plugin URI: https://vwo.com/ | |
| 5 | -Description: VWO is the all-in-one platform that helps you conduct visitor research, build an optimization roadmap, and run continuous experimentation. Simply enable the plugin and start running tests on your Wordpress website without doing any other code changes. Visit <a href="https://vwo.com/">VWO</a> for more details. | |
| 6 | -Author: VWO | |
| 7 | -Version: 3.5 | |
| 8 | -visual-website-optimizer.php | |
| 9 | -Author URI: https://vwo.com/ | |
| 2 | +/** | |
| 3 | + * | |
| 4 | + * Plugin Name: VWO | |
| 5 | + * Plugin URI: https://vwo.com/ | |
| 6 | + * Description: VWO is the all-in-one platform that helps you conduct visitor research, build an optimization roadmap, and run continuous experimentation. Simply enable the plugin and start running tests on your WordPress website without doing any other code changes. Visit <a href="https://vwo.com/">VWO</a> for more details. | |
| 7 | + * Author: VWO | |
| 8 | + * Version: 4.4 | |
| 9 | + * visual-website-optimizer.php | |
| 10 | + * Author URI: https://vwo.com/ | |
| 11 | + * | |
| 12 | + * @package VWO | |
| 13 | + * @author VWO | |
| 14 | + * @version 4.4 | |
| 15 | + **/ | |
| 10 | 16 | |
| 11 | -This relies on the actions being present in the themes header.php and footer.php | |
| 12 | -* header.php code before the closing </head> tag | |
| 13 | -* wp_head(); | |
| 14 | -* | |
| 15 | -*/ | |
| 16 | - | |
| 17 | -//------------------------------------------------------------------------// | |
| 18 | -//---Config---------------------------------------------------------------// | |
| 19 | -//------------------------------------------------------------------------// | |
| 20 | - | |
| 21 | 17 | /** |
| 22 | 18 | * Generate Common Code |
| 23 | - * @param type $vwo_id integer | |
| 24 | - * @return type string | |
| 19 | + * | |
| 20 | + * @param integer $vwo_clicks integer. Defaults to 10. | |
| 25 | 21 | */ |
| 26 | -function get_vwo_clhf_script_common_code($vwo_clicks = 10) { | |
| 27 | - ob_start(); | |
| 28 | - ?> | |
| 29 | - <!-- Start VWO Common Smartcode --> | |
| 30 | - <script <?php echo vwo_clhf_ignore_js_attr(); ?> type='text/javascript'> | |
| 31 | - var _vwo_clicks = <?php echo $vwo_clicks ?>; | |
| 32 | - </script> | |
| 33 | - <!-- End VWO Common Smartcode --> | |
| 34 | - <?php | |
| 35 | - $script_code = ob_get_clean(); | |
| 36 | - return $script_code; | |
| 22 | +function get_vwo_clhf_script_common_code( $vwo_clicks = 10 ) { | |
| 23 | + ob_start(); | |
| 24 | + // @codingStandardsIgnoreStart | |
| 25 | + ?> | |
| 26 | + <!-- Start VWO Common Smartcode --> | |
| 27 | + <script <?php echo vwo_clhf_ignore_js_attr(); ?> type='text/javascript'> | |
| 28 | + var _vwo_clicks = <?php echo esc_html( $vwo_clicks ); ?>; | |
| 29 | + </script> | |
| 30 | + <!-- End VWO Common Smartcode --> | |
| 31 | + <?php | |
| 32 | + // @codingStandardsIgnoreEnd | |
| 33 | + $script_code = ob_get_clean(); | |
| 34 | + return $script_code; | |
| 37 | 35 | } |
| 38 | 36 | |
| 39 | 37 | /** |
| 40 | 38 | * Get ignore js field setting |
| 41 | - * @return type boolean | |
| 39 | + * | |
| 40 | + * @return bool boolean | |
| 42 | 41 | */ |
| 43 | -function get_vwo_clhf_ignore_js(){ | |
| 44 | - $ignore_js = get_option('ignore_js'); | |
| 45 | - $ignore_js = ($ignore_js == '1') ? true : false; | |
| 46 | - return $ignore_js; | |
| 42 | +function get_vwo_clhf_ignore_js() { | |
| 43 | + $ignore_js = get_option( 'ignore_js' ); | |
| 44 | + $ignore_js = ( '1' === $ignore_js ) ? true : false; | |
| 45 | + return $ignore_js; | |
| 47 | 46 | } |
| 48 | 47 | |
| 49 | 48 | /** |
| 50 | 49 | * Get ignore js script attribute value |
| 51 | - * @return type boolean | |
| 50 | + * | |
| 51 | + * @return string Returns script attribute value | |
| 52 | 52 | */ |
| 53 | -function vwo_clhf_ignore_js_attr(){ | |
| 54 | - $ignore_js = get_vwo_clhf_ignore_js(); | |
| 55 | - $js_attr = ''; | |
| 56 | - if(function_exists('get_vwo_clhf_ignore_js') && $ignore_js){ | |
| 57 | - $js_attr = 'data-cfasync="false"'; | |
| 58 | - } | |
| 59 | - return $js_attr; | |
| 53 | +function vwo_clhf_ignore_js_attr() { | |
| 54 | + $ignore_js = get_vwo_clhf_ignore_js(); | |
| 55 | + $js_attr = ''; | |
| 56 | + if ( function_exists( 'get_vwo_clhf_ignore_js' ) && $ignore_js ) { | |
| 57 | + $js_attr = 'data-cfasync="false" nowprocket'; | |
| 58 | + } | |
| 59 | + return $js_attr; | |
| 60 | 60 | } |
| 61 | 61 | |
| 62 | 62 | /** |
| 63 | 63 | * Generate Synchronous Code |
| 64 | - * @param type $vwo_id integer | |
| 65 | - * @return type string | |
| 64 | + * | |
| 65 | + * @param int $vwo_id integer. Defaults to 0. | |
| 66 | + * @return string string for sync script. | |
| 66 | 67 | */ |
| 67 | -function get_vwo_clhf_script_sync_code($vwo_id = 0) { | |
| 68 | - ob_start(); | |
| 69 | - ?> | |
| 70 | - <!-- Start VWO Smartcode --> | |
| 71 | - <script <?php echo vwo_clhf_ignore_js_attr();?> src="https://dev.visualwebsiteoptimizer.com/lib/<?php echo $vwo_id ?>.js"></script> | |
| 72 | - <!-- End VWO Smartcode --> | |
| 73 | - <?php | |
| 74 | - $sync_script = ob_get_clean(); | |
| 75 | - return $sync_script; | |
| 68 | +function get_vwo_clhf_script_sync_code( $vwo_id = 0 ) { | |
| 69 | + ob_start(); | |
| 70 | + // @codingStandardsIgnoreStart | |
| 71 | + ?> | |
| 72 | + <!-- Start VWO Smartcode --> | |
| 73 | + <script <?php echo vwo_clhf_ignore_js_attr(); ?> src="https://dev.visualwebsiteoptimizer.com/lib/<?php echo esc_html( $vwo_id ); ?>.js"></script> | |
| 74 | + <!-- End VWO Smartcode --> | |
| 75 | + <?php | |
| 76 | + // @codingStandardsIgnoreEnd | |
| 77 | + $sync_script = ob_get_clean(); | |
| 78 | + return $sync_script; | |
| 76 | 79 | } |
| 77 | 80 | |
| 78 | 81 | /** |
| 79 | 82 | * Generate Asynchronous Code |
| 80 | - * @param type $vwo_id integer | |
| 81 | - * @param type $settings_tolerance integer | |
| 82 | - * @param type $library_tolerance integer | |
| 83 | - * @param type $use_existing_jquery string | |
| 84 | - * @return type string | |
| 83 | + * | |
| 84 | + * @param int $vwo_id integer. | |
| 85 | + * @param int $settings_tolerance integer. | |
| 86 | + * @param int $library_tolerance integer. | |
| 87 | + * @param bool $use_existing_jquery boolean. | |
| 88 | + * @return string String for async script. | |
| 85 | 89 | */ |
| 86 | -function get_vwo_clhf_script_async_code($vwo_id = 0, $settings_tolerance, $library_tolerance, $use_existing_jquery) { | |
| 87 | - ob_start(); | |
| 88 | -?> | |
| 89 | - <!-- Start VWO Async Smartcode --> | |
| 90 | - <script <?php echo vwo_clhf_ignore_js_attr(); ?> type='text/javascript'> | |
| 91 | - window._vwo_code = window._vwo_code || (function(){ | |
| 92 | - var account_id= <?php echo $vwo_id ?>, | |
| 93 | - settings_tolerance= <?php echo $settings_tolerance ?>, | |
| 94 | - library_tolerance= <?php echo $library_tolerance ?>, | |
| 95 | - use_existing_jquery= <?php echo ($use_existing_jquery) ? 'true' : 'false'; ?>, | |
| 96 | - is_spa=1, | |
| 97 | - hide_element='body', | |
| 98 | - /* DO NOT EDIT BELOW THIS LINE */ | |
| 99 | - f=false,d=document,code={use_existing_jquery:function(){return use_existing_jquery;},library_tolerance:function(){return library_tolerance;},finish:function(){if(!f){f=true;var a=d.getElementById('_vis_opt_path_hides');if(a)a.parentNode.removeChild(a);}},finished:function(){return f;},load:function(a){var b=d.createElement('script');b.src=a;b.type='text/javascript';b.innerText;b.onerror=function(){_vwo_code.finish();};d.getElementsByTagName('head')[0].appendChild(b);},init:function(){ | |
| 100 | - window.settings_timer=setTimeout('_vwo_code.finish()',settings_tolerance);var a=d.createElement('style'),b=hide_element?hide_element+'{opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important;}':'',h=d.getElementsByTagName('head')[0];a.setAttribute('id','_vis_opt_path_hides');a.setAttribute('type','text/css');if(a.styleSheet)a.styleSheet.cssText=b;else a.appendChild(d.createTextNode(b));h.appendChild(a);this.load('https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&f='+(+is_spa)+'&r='+Math.random());return settings_timer; }};window._vwo_settings_timer = code.init(); return code; }()); | |
| 101 | - </script> | |
| 102 | - <!-- End VWO Async Smartcode --> | |
| 103 | - <?php | |
| 104 | - $async_script = ob_get_clean(); | |
| 105 | - return $async_script; | |
| 90 | +function get_vwo_clhf_script_async_code( $vwo_id, $settings_tolerance, $library_tolerance, $use_existing_jquery ) { | |
| 91 | + ob_start(); | |
| 92 | + // @codingStandardsIgnoreStart | |
| 93 | + ?> | |
| 94 | + <!-- Start VWO Async SmartCode --> | |
| 95 | + <link rel="preconnect" href="https://dev.visualwebsiteoptimizer.com" /> | |
| 96 | + <script <?php echo vwo_clhf_ignore_js_attr(); ?> type='text/javascript' id='vwoCode'> | |
| 97 | + /* Fix: wp-rocket (application/ld+json) */ | |
| 98 | + window._vwo_code || (function () { | |
| 99 | + var account_id=<?php echo esc_html( $vwo_id ); ?>, // replace 1 with ${accountId} in release string | |
| 100 | + version=2.1, | |
| 101 | + settings_tolerance=<?php echo esc_html( $settings_tolerance ); ?>, | |
| 102 | + library_tolerance=<?php echo esc_html( $library_tolerance ); ?>, | |
| 103 | + use_existing_jquery=<?php echo ( $use_existing_jquery ) ? 'true' : 'false'; ?>, | |
| 104 | + hide_element='body', | |
| 105 | + hide_element_style='opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important', | |
| 106 | + /* DO NOT EDIT BELOW THIS LINE */ | |
| 107 | + f=false,w=window,d=document,v=d.querySelector('#vwoCode'),cK='_vwo_'+account_id+'_settings',cc={};try{var c=JSON.parse(localStorage.getItem('_vwo_'+account_id+'_config'));cc=c&&typeof c==='object'?c:{}}catch(e){}var stT=cc.stT==='session'?w.sessionStorage:w.localStorage;code={use_existing_jquery:function(){return typeof use_existing_jquery!=='undefined'?use_existing_jquery:undefined},library_tolerance:function(){return typeof library_tolerance!=='undefined'?library_tolerance:undefined},settings_tolerance:function(){return cc.sT||settings_tolerance},hide_element_style:function(){return'{'+(cc.hES||hide_element_style)+'}'},hide_element:function(){if(performance.getEntriesByName('first-contentful-paint')[0]){return''}return typeof cc.hE==='string'?cc.hE:hide_element},getVersion:function(){return version},finish:function(e){if(!f){f=true;var t=d.getElementById('_vis_opt_path_hides');if(t)t.parentNode.removeChild(t);if(e)(new Image).src='https://dev.visualwebsiteoptimizer.com/ee.gif?a='+account_id+e}},finished:function(){return f},addScript:function(e){var t=d.createElement('script');t.type='text/javascript';if(e.src){t.src=e.src}else{t.text=e.text}d.getElementsByTagName('head')[0].appendChild(t)},load:function(e,t){var i=this.getSettings(),n=d.createElement('script'),r=this;t=t||{};if(i){n.textContent=i;d.getElementsByTagName('head')[0].appendChild(n);if(!w.VWO||VWO.caE){stT.removeItem(cK);r.load(e)}}else{var o=new XMLHttpRequest;o.open('GET',e,true);o.withCredentials=!t.dSC;o.responseType=t.responseType||'text';o.onload=function(){if(t.onloadCb){return t.onloadCb(o,e)}if(o.status===200){_vwo_code.addScript({text:o.responseText})}else{_vwo_code.finish('&e=loading_failure:'+e)}};o.onerror=function(){if(t.onerrorCb){return t.onerrorCb(e)}_vwo_code.finish('&e=loading_failure:'+e)};o.send()}},getSettings:function(){try{var e=stT.getItem(cK);if(!e){return}e=JSON.parse(e);if(Date.now()>e.e){stT.removeItem(cK);return}return e.s}catch(e){return}},init:function(){if(d.URL.indexOf('__vwo_disable__')>-1)return;var e=this.settings_tolerance();w._vwo_settings_timer=setTimeout(function(){_vwo_code.finish();stT.removeItem(cK)},e);var t;if(this.hide_element()!=='body'){t=d.createElement('style');var i=this.hide_element(),n=i?i+this.hide_element_style():'',r=d.getElementsByTagName('head')[0];t.setAttribute('id','_vis_opt_path_hides');v&&t.setAttribute('nonce',v.nonce);t.setAttribute('type','text/css');if(t.styleSheet)t.styleSheet.cssText=n;else t.appendChild(d.createTextNode(n));r.appendChild(t)}else{t=d.getElementsByTagName('head')[0];var n=d.createElement('div');n.style.cssText='z-index: 2147483647 !important;position: fixed !important;left: 0 !important;top: 0 !important;width: 100% !important;height: 100% !important;background: white !important;';n.setAttribute('id','_vis_opt_path_hides');n.classList.add('_vis_hide_layer');t.parentNode.insertBefore(n,t.nextSibling)}var o='https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&vn='+version;if(w.location.search.indexOf('_vwo_xhr')!==-1){this.addScript({src:o})}else{this.load(o+'&x=true')}}};w._vwo_code=code;code.init();})(); | |
| 108 | + </script> | |
| 109 | + <!-- End VWO Async SmartCode --> | |
| 110 | + <?php | |
| 111 | + // @codingStandardsIgnoreEnd | |
| 112 | + $async_script = ob_get_clean(); | |
| 113 | + return $async_script; | |
| 106 | 114 | } |
| 107 | 115 | |
| 108 | -//------------------------------------------------------------------------// | |
| 109 | -//---Hook-----------------------------------------------------------------// | |
| 110 | -//------------------------------------------------------------------------// | |
| 111 | -add_action( 'wp_head', 'vwo_clhf_headercode',1 ); | |
| 116 | +// ------------------------------------------------------------------------// | |
| 117 | +// ---Hook-----------------------------------------------------------------// | |
| 118 | +// ------------------------------------------------------------------------// | |
| 119 | +add_action( 'wp_head', 'vwo_clhf_headercode', 1 ); | |
| 112 | 120 | add_action( 'admin_menu', 'vwo_clhf_plugin_menu' ); |
| 113 | 121 | add_action( 'admin_init', 'vwo_clhf_register_mysettings' ); |
| 114 | -add_action( 'admin_notices','vwo_clhf_warn_nosettings'); | |
| 122 | +add_action( 'admin_notices', 'vwo_clhf_warn_nosettings' ); | |
| 115 | 123 | |
| 116 | 124 | |
| 117 | -//------------------------------------------------------------------------// | |
| 118 | -//---Functions------------------------------------------------------------// | |
| 119 | -//------------------------------------------------------------------------// | |
| 125 | +// ------------------------------------------------------------------------// | |
| 126 | +// ---Functions------------------------------------------------------------// | |
| 127 | +// ------------------------------------------------------------------------// | |
| 120 | 128 | // options page link |
| 129 | + | |
| 130 | +/** | |
| 131 | + * Generate a function comment for the given function body. | |
| 132 | + * | |
| 133 | + * @throws Exception Description of exception. | |
| 134 | + * @return void | |
| 135 | + */ | |
| 121 | 136 | function vwo_clhf_plugin_menu() { |
| 122 | - add_options_page('Visual Website Optimizer', 'VWO', 'create_users', 'clhf_vwo_options', 'vwo_clhf_plugin_options'); | |
| 137 | + add_options_page( 'Visual Website Optimizer', 'VWO', 'create_users', 'clhf_vwo_options', 'vwo_clhf_plugin_options' ); | |
| 123 | 138 | } |
| 124 | 139 | |
| 125 | -// whitelist settings | |
| 126 | -function vwo_clhf_register_mysettings(){ | |
| 127 | - register_setting('clhf_vwo_options','vwo_id','intval'); | |
| 128 | - register_setting('clhf_vwo_options','code_type'); | |
| 129 | - register_setting('clhf_vwo_options','vwo_clicks'); | |
| 130 | - register_setting('clhf_vwo_options','ignore_js','boolval'); | |
| 131 | - register_setting('clhf_vwo_options','settings_tolerance','intval'); | |
| 132 | - register_setting('clhf_vwo_options','library_tolerance','intval'); | |
| 133 | - register_setting('clhf_vwo_options','use_existing_jquery','boolval'); | |
| 140 | +/** | |
| 141 | + * Register the settings for the VWO options. | |
| 142 | + * | |
| 143 | + * @return void | |
| 144 | + */ | |
| 145 | +function vwo_clhf_register_mysettings() { | |
| 146 | + register_setting( 'clhf_vwo_options', 'vwo_id', 'intval' ); | |
| 147 | + register_setting( 'clhf_vwo_options', 'code_type' ); | |
| 148 | + register_setting( 'clhf_vwo_options', 'vwo_clicks' ); | |
| 149 | + register_setting( 'clhf_vwo_options', 'ignore_js', 'boolval' ); | |
| 150 | + register_setting( 'clhf_vwo_options', 'settings_tolerance', 'intval' ); | |
| 151 | + register_setting( 'clhf_vwo_options', 'library_tolerance', 'intval' ); | |
| 152 | + register_setting( 'clhf_vwo_options', 'use_existing_jquery', 'boolval' ); | |
| 134 | 153 | } |
| 135 | 154 | |
| 136 | -//------------------------------------------------------------------------// | |
| 137 | -//---Output Functions-----------------------------------------------------// | |
| 138 | -//------------------------------------------------------------------------// | |
| 155 | +// ------------------------------------------------------------------------// | |
| 156 | +// ---Output Functions-----------------------------------------------------// | |
| 157 | +// ------------------------------------------------------------------------// | |
| 158 | + | |
| 159 | + | |
| 160 | +/** | |
| 161 | + * Generates the action vwo_clhf_headercode function. | |
| 162 | + * | |
| 163 | + * @throws Exception Description of exception. | |
| 164 | + * @return void | |
| 165 | + */ | |
| 139 | 166 | function vwo_clhf_headercode() { |
| 140 | - // runs in the header | |
| 141 | - $vwo_id = get_option('vwo_id'); | |
| 142 | - $code_type = get_option('code_type'); | |
| 143 | - | |
| 144 | - if ($vwo_id) { | |
| 145 | - if(empty(get_option('vwo_clicks'))){ | |
| 146 | - update_option('vwo_clicks', '10' ); | |
| 147 | - } | |
| 148 | - $vwo_clicks = get_option('vwo_clicks'); | |
| 149 | - //common script code | |
| 150 | - echo get_vwo_clhf_script_common_code($vwo_clicks); | |
| 151 | - if ($code_type == 'SYNC') { | |
| 152 | - //sync script code | |
| 153 | - echo get_vwo_clhf_script_sync_code($vwo_id); // only output if options were saved | |
| 154 | - } else { | |
| 167 | + // Runs in the header. | |
| 168 | + $vwo_id = get_option( 'vwo_id' ); | |
| 169 | + $code_type = get_option( 'code_type' ); | |
| 155 | 170 | |
| 156 | - $settings_tolerance = get_option('settings_tolerance'); | |
| 157 | - if (!is_numeric($settings_tolerance)) | |
| 158 | - $settings_tolerance = 2000; | |
| 171 | + if ( $vwo_id ) { | |
| 172 | + if ( empty( get_option( 'vwo_clicks' ) ) ) { | |
| 173 | + update_option( 'vwo_clicks', '10' ); | |
| 174 | + } | |
| 175 | + $vwo_clicks = get_option( 'vwo_clicks' ); | |
| 159 | 176 | |
| 160 | - $library_tolerance = get_option('library_tolerance'); | |
| 161 | - if (!is_numeric($library_tolerance)) | |
| 162 | - $library_tolerance = 2500; | |
| 163 | - | |
| 164 | - $use_existing_jquery = get_option('use_existing_jquery'); | |
| 165 | - $use_existing_jquery = ($use_existing_jquery == 1) ? true : false; | |
| 177 | + // Common script code. | |
| 178 | + // @codingStandardsIgnoreLine | |
| 179 | + echo get_vwo_clhf_script_common_code( $vwo_clicks ); | |
| 166 | 180 | |
| 167 | - //async script code | |
| 168 | - echo get_vwo_clhf_script_async_code($vwo_id, $settings_tolerance, $library_tolerance, $use_existing_jquery); | |
| 169 | - } | |
| 170 | - } | |
| 181 | + if ( 'SYNC' === $code_type ) { | |
| 182 | + // Sync script code. | |
| 183 | + // @codingStandardsIgnoreLine | |
| 184 | + echo get_vwo_clhf_script_sync_code( $vwo_id ); | |
| 185 | + } else { | |
| 186 | + | |
| 187 | + $settings_tolerance = get_option( 'settings_tolerance' ); | |
| 188 | + if ( ! is_numeric( $settings_tolerance ) ) { | |
| 189 | + $settings_tolerance = 2000; | |
| 190 | + } | |
| 191 | + | |
| 192 | + $library_tolerance = get_option( 'library_tolerance' ); | |
| 193 | + if ( ! is_numeric( $library_tolerance ) ) { | |
| 194 | + $library_tolerance = 2500; | |
| 195 | + } | |
| 196 | + | |
| 197 | + $use_existing_jquery = get_option( 'use_existing_jquery' ); | |
| 198 | + $use_existing_jquery = ( '1' === $use_existing_jquery ) ? true : false; | |
| 199 | + | |
| 200 | + // Async script code. | |
| 201 | + // @codingStandardsIgnoreLine | |
| 202 | + echo get_vwo_clhf_script_async_code( $vwo_id, $settings_tolerance, $library_tolerance, $use_existing_jquery ); | |
| 203 | + } | |
| 204 | + } | |
| 171 | 205 | } |
| 172 | 206 | |
| 173 | -//------------------------------------------------------------------------// | |
| 174 | -//---Page Output Functions------------------------------------------------// | |
| 175 | -//------------------------------------------------------------------------// | |
| 207 | +// ------------------------------------------------------------------------// | |
| 208 | +// ---Page Output Functions------------------------------------------------// | |
| 209 | +// ------------------------------------------------------------------------// | |
| 176 | 210 | // options page |
| 211 | + | |
| 212 | + | |
| 213 | +/** | |
| 214 | + * Generates the options page for the VWO plugin. | |
| 215 | + * | |
| 216 | + * @throws Exception Description of exception. | |
| 217 | + * @return void | |
| 218 | + */ | |
| 177 | 219 | function vwo_clhf_plugin_options() { |
| 178 | - //Set value for checkbox by default | |
| 179 | - $ignore_js_options = get_option('ignore_js'); | |
| 180 | - $show_ignore_js = $ignore_js_options; | |
| 181 | - if( $ignore_js_options === false ) { | |
| 182 | - // nothing is set, so apply the default here | |
| 183 | - $show_ignore_js = 1; | |
| 184 | - update_option('ignore_js', '1'); | |
| 185 | - } | |
| 220 | + // Set value for checkbox by default. | |
| 221 | + $ignore_js_options = get_option( 'ignore_js' ); | |
| 222 | + $show_ignore_js = $ignore_js_options; | |
| 223 | + if ( false === $ignore_js_options ) { | |
| 224 | + // Nothing is set, so apply the default here. | |
| 225 | + $show_ignore_js = 1; | |
| 226 | + update_option( 'ignore_js', '1' ); | |
| 227 | + } | |
| 186 | 228 | |
| 187 | - echo '<div class="wrap">';?> | |
| 229 | + echo '<div class="wrap">'; | |
| 230 | + ?> | |
| 188 | 231 | <h2>VWO</h2> |
| 189 | - <p>You need to have a <a href="https://vwo.com/">VWO</a> account in order to use this plugin. This plugin inserts the neccessary code into your Wordpress site automatically without you having to touch anything. In order to use the plugin, you need to enter your VWO Account ID:</p> | |
| 190 | - <form method="post" action="options.php"> | |
| 232 | + <p>You need to have a <a href="https://vwo.com/">VWO</a> account in order to use this plugin. This plugin inserts the neccessary code into your WordPress site automatically without you having to touch anything. In order to use the plugin, you need to enter your VWO Account ID:</p> | |
| 233 | + <form method="post" action="options.php" novalidate> | |
| 191 | 234 | <?php settings_fields( 'clhf_vwo_options' ); ?> |
| 192 | 235 | <table class="form-table"> |
| 193 | - <tr valign="top"> | |
| 194 | - <th scope="row">Your VWO Account ID</th> | |
| 195 | - <td><input type="text" name="vwo_id" value="<?php echo get_option('vwo_id'); ?>" /></td> | |
| 196 | - </tr> | |
| 197 | - <tr valign="top"> | |
| 198 | - <th scope="row">No. of Heatmap Clicks</th> | |
| 199 | - <td><input type="number" name="vwo_clicks" value="<?php echo get_option('vwo_clicks') ? get_option('vwo_clicks'):10 ; ?>" min="3"/></td> | |
| 200 | - </tr> | |
| 201 | 236 | <tr valign="top"> |
| 202 | - <th scope="row">Code (default: Asynchronous)</th> | |
| 203 | - <td> | |
| 204 | - <input style="vertical-align: text-top;" type="radio" onclick="selectCodeType();" name="code_type" id="code_type_async" value="ASYNC" <?php if(get_option('code_type')!='SYNC') echo "checked"; ?> /> Asynchronous | |
| 205 | - <input style="vertical-align: text-top;" type="radio" onclick="selectCodeType();" name="code_type" id="code_type_sync" value="SYNC" <?php if(get_option('code_type')=='SYNC') echo "checked"; ?> /> Synchronous | |
| 206 | - <a href="https://vwo.com/blog/asynchronous-code" target="_blank">[Help]</a> | |
| 207 | - </td> | |
| 208 | - </tr> | |
| 209 | - <tr valign="top" id='asyncOnly1' <?php if(get_option('code_type')=='SYNC') echo "style='display:none;'" ?>> | |
| 210 | - <th scope="row">Settings Timeout</th> | |
| 211 | - <td style="vertical-align: middle;"><input type="text" name="settings_tolerance" value="<?php echo get_option('settings_tolerance')?get_option('settings_tolerance'):2000; ?>" />ms (default: 2000)</td> | |
| 212 | - </tr> | |
| 213 | - <tr valign="top" id='asyncOnly2' <?php if(get_option('code_type')=='SYNC') echo "style='display:none;'" ?>> | |
| 214 | - <th scope="row">Library Timeout</th> | |
| 215 | - <td style="vertical-align: middle;"><input type="text" name="library_tolerance" value="<?php echo get_option('library_tolerance')?get_option('library_tolerance'):2500; ?>" />ms (default: 2500)</td> | |
| 216 | - </tr> | |
| 217 | - <tr valign="top" id='asyncOnly3' <?php if(get_option('code_type')=='SYNC') echo "style='display:none;'" ?>> | |
| 218 | - <th scope="row">Use Existing jQuery</th> | |
| 219 | - <td style="vertical-align: middle;"><input type="checkbox" name="use_existing_jquery" value="1" <?php if(get_option('use_existing_jquery') == true) echo "checked"; ?>/>Yes</td> | |
| 220 | - </tr> | |
| 221 | - <tr valign="top"> | |
| 222 | - <th scope="row">Skip Deferred Execution</th> | |
| 223 | - <td style="vertical-align: middle;"><input type="checkbox" name="ignore_js" value="1" <?php if($show_ignore_js == true) echo "checked"; ?>/>Yes</td> | |
| 224 | - </tr> | |
| 237 | + <th scope="row">Your VWO Account ID</th> | |
| 238 | + <td><input type="text" name="vwo_id" value="<?php echo esc_html( get_option( 'vwo_id' ) ); ?>" /></td> | |
| 239 | + </tr> | |
| 240 | + <tr valign="top"> | |
| 241 | + <th scope="row">No. of Heatmap Clicks</th> | |
| 242 | + <td><input type="number" name="vwo_clicks" value="<?php echo get_option( 'vwo_clicks' ) ? esc_html( get_option( 'vwo_clicks' ) ) : 10; ?>" min="3"/></td> | |
| 243 | + </tr> | |
| 244 | + <tr valign="top"> | |
| 245 | + <th scope="row">Code (default: Asynchronous)</th> | |
| 246 | + <td> | |
| 247 | + <input style="vertical-align: text-top;" type="radio" onclick="selectCodeType();" name="code_type" id="code_type_async" value="ASYNC" | |
| 248 | + <?php | |
| 249 | + if ( get_option( 'code_type' ) !== 'SYNC' ) { | |
| 250 | + echo 'checked';} | |
| 251 | + ?> | |
| 252 | + /> Asynchronous | |
| 253 | + <input style="vertical-align: text-top;" type="radio" onclick="selectCodeType();" name="code_type" id="code_type_sync" value="SYNC" | |
| 254 | + <?php | |
| 255 | + if ( get_option( 'code_type' ) === 'SYNC' ) { | |
| 256 | + echo 'checked';} | |
| 257 | + ?> | |
| 258 | + /> Synchronous | |
| 259 | + <a href="https://vwo.com/blog/asynchronous-code" target="_blank">[Help]</a> | |
| 260 | + </td> | |
| 261 | + </tr> | |
| 262 | + <tr valign="top" id='asyncOnly1' | |
| 263 | + <?php | |
| 264 | + if ( get_option( 'code_type' ) === 'SYNC' ) { | |
| 265 | + echo "style='display:none;'";} | |
| 266 | + ?> | |
| 267 | + > | |
| 268 | + <th scope="row">Settings Timeout</th> | |
| 269 | + <td style="vertical-align: middle;"><input type="text" name="settings_tolerance" value="<?php echo get_option( 'settings_tolerance' ) ? esc_html( get_option( 'settings_tolerance' ) ) : 2000; ?>" />ms (default: 2000)</td> | |
| 270 | + </tr> | |
| 271 | + <tr valign="top" id='asyncOnly2' | |
| 272 | + <?php | |
| 273 | + if ( get_option( 'code_type' ) === 'SYNC' ) { | |
| 274 | + echo "style='display:none;'";} | |
| 275 | + ?> | |
| 276 | + > | |
| 277 | + <th scope="row">Library Timeout</th> | |
| 278 | + <td style="vertical-align: middle;"><input type="text" name="library_tolerance" value="<?php echo get_option( 'library_tolerance' ) ? esc_html( get_option( 'library_tolerance' ) ) : 2500; ?>" />ms (default: 2500)</td> | |
| 279 | + </tr> | |
| 280 | + <tr valign="top" id='asyncOnly3' | |
| 281 | + <?php | |
| 282 | + if ( get_option( 'code_type' ) === 'SYNC' ) { | |
| 283 | + echo "style='display:none;'";} | |
| 284 | + ?> | |
| 285 | + > | |
| 286 | + <th scope="row">Use Existing jQuery</th> | |
| 287 | + <td style="vertical-align: middle;"><input type="checkbox" name="use_existing_jquery" value="1" | |
| 288 | + <?php | |
| 289 | + if ( get_option( 'use_existing_jquery' ) === '1' ) { | |
| 290 | + echo 'checked';} | |
| 291 | + ?> | |
| 292 | + />Yes</td> | |
| 293 | + </tr> | |
| 294 | + <tr valign="top"> | |
| 295 | + <th scope="row">Skip Deferred Execution</th> | |
| 296 | + <td style="vertical-align: middle;"><input type="checkbox" name="ignore_js" value="1" | |
| 297 | + <?php | |
| 298 | + if ( '1' === $show_ignore_js ) { | |
| 299 | + echo 'checked';} | |
| 300 | + ?> | |
| 301 | + />Yes</td> | |
| 302 | + </tr> | |
| 225 | 303 | </table> |
| 226 | 304 | |
| 227 | 305 | <script type="text/javascript"> |
| 228 | 306 | function selectCodeType() { |
| @@ -241,35 +319,60 @@ | ||
| 241 | 319 | document.getElementById('asyncOnly3').style.display = 'none'; |
| 242 | 320 | } |
| 243 | 321 | } |
| 244 | 322 | </script> |
| 245 | - <p class="submit"><input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /></p> | |
| 323 | + <p class="submit"><input type="submit" class="button-primary" value="<?php echo esc_html( 'Save Changes' ); ?>" /></p> | |
| 246 | 324 | <p>Your Account ID (a number) can be found in <i>Settings</i> area (top-right) after you <a href="https://app.vwo.com">login</a> into your VWO account.</p> |
| 247 | -<?php | |
| 248 | - echo '</div>'; | |
| 325 | + <?php | |
| 326 | + echo '</div>'; | |
| 249 | 327 | } |
| 250 | 328 | |
| 251 | -function vwo_clhf_warn_nosettings(){ | |
| 252 | - if (!is_admin()) | |
| 253 | - return; | |
| 329 | +/** | |
| 330 | + * Displays a warning message if VWO settings are not configured. | |
| 331 | + * This function checks if the user is an admin and if the VWO ID option is set. If the user is not an admin or | |
| 332 | + * the VWO ID option is not set, it displays a warning message. | |
| 333 | + * | |
| 334 | + * @throws Exception Description of exception. | |
| 335 | + * @return void | |
| 336 | + */ | |
| 337 | +function vwo_clhf_warn_nosettings() { | |
| 338 | + if ( ! is_admin() ) { | |
| 339 | + return; | |
| 340 | + } | |
| 254 | 341 | |
| 255 | - $clhf_option = get_option("vwo_id"); | |
| 256 | - if (!$clhf_option || $clhf_option < 1){ | |
| 257 | - echo "<div id='vwo-warning' class='updated fade'><p><strong>VWO is almost ready.</strong> You must <a href=\"options-general.php?page=clhf_vwo_options\">enter your Account ID</a> for it to work.</p></div>"; | |
| 258 | - } | |
| 342 | + $clhf_option = get_option( 'vwo_id' ); | |
| 343 | + if ( ! $clhf_option || $clhf_option < 1 ) { | |
| 344 | + echo "<div id='vwo-warning' class='updated fade'><p><strong>VWO is almost ready.</strong> You must <a href=\"options-general.php?page=clhf_vwo_options\">enter your Account ID</a> for it to work.</p></div>"; | |
| 345 | + } | |
| 259 | 346 | } |
| 260 | 347 | |
| 261 | 348 | |
| 262 | -add_filter('plugin_action_links_'.plugin_basename(__FILE__), 'vwo_clhf_add_plugin_page_settings_link'); | |
| 349 | +add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'vwo_clhf_add_plugin_page_settings_link' ); | |
| 350 | + | |
| 263 | 351 | /** |
| 264 | 352 | * Function to add Settings Links on Plugin page |
| 265 | - * @param array $links | |
| 266 | - * @return string | |
| 353 | + * | |
| 354 | + * @param array $links Array of links. | |
| 355 | + * @return array | |
| 267 | 356 | */ |
| 268 | 357 | function vwo_clhf_add_plugin_page_settings_link( $links ) { |
| 269 | - $links[] = '<a href="' . | |
| 270 | - admin_url( 'options-general.php?page=clhf_vwo_options' ) . | |
| 271 | - '">' . __('Settings') . '</a>'; | |
| 272 | - return $links; | |
| 358 | + $links[] = '<a href="' . | |
| 359 | + admin_url( 'options-general.php?page=clhf_vwo_options' ) . | |
| 360 | + '">' . __( 'Settings' ) . '</a>'; | |
| 361 | + return $links; | |
| 273 | 362 | } |
| 363 | + | |
| 364 | +/** | |
| 365 | + * Disables VWO in Divi Builder. | |
| 366 | + * | |
| 367 | + * @throws Exception Description of exception. | |
| 368 | + * @return void | |
| 369 | + */ | |
| 370 | +function disable_vwo_in_divi_builder() { | |
| 371 | + if ( has_action( 'wp_head', 'vwo_clhf_headercode' ) && function_exists( 'et_core_is_fb_enabled' ) && et_core_is_fb_enabled() ) { | |
| 372 | + remove_action( 'wp_head', 'vwo_clhf_headercode', 1 ); | |
| 373 | + } | |
| 374 | +} | |
| 375 | + | |
| 376 | +add_action( 'wp_head', 'disable_vwo_in_divi_builder', 0 ); | |
| 274 | 377 | |
| 275 | 378 | ?> |