Plugin Directory

Changeset 3127659


Ignore:
Timestamp:
07/29/2024 06:36:44 PM (19 months ago)
Author:
TraceMyIP
Message:

Version 2.61

  • Geographical positioning maps updates
  • Improved visitor tracking code integration with WordPress templates
  • Improved dashboard website analytics chart rendering
  • Fixed issues with some long page URLs not figginwebsite stats dashboard panels
  • Updates menu style for WordPress plugin integration
Location:
tracemyip-visitor-analytics-ip-tracking-control/trunk
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • tracemyip-visitor-analytics-ip-tracking-control/trunk/TraceMyIP-Wordpress-Plugin.php

    r3126412 r3127659  
    44    Plugin URI: https://www.tracemyip.org
    55    Description: Website visitor IP address activity tracking, IP analytics, visitor email alerts, IP changes tracker and visitor IP address blocking. Tag visitors IPs, track, create email alerts, control and manage pages, links and protect contact forms. GDPR compliant. For visitor tracker setup instructions, see <a href="admin.php?page=tmip_lnk_wp_settings"><b>plugin settings</b></a>.
    6     Version: 2.60
     6    Version: 2.61
    77    Author: TraceMyIP.org
    88    Author URI: https://www.TraceMyIP.org
     
    1111    License URI: http://www.gnu.org/licenses/gpl-2.0.html
    1212*/
    13 if (!defined('TMIP_VERSION') )      define('TMIP_VERSION', '2.60');
     13if (!defined('TMIP_VERSION') )      define('TMIP_VERSION', '2.61');
    1414
    1515### SET CONSTANTS ############################################
     
    2121define("tmip_plugin_dir_name",          'tracemyip-visitor-analytics-ip-tracking-control', false);
    2222define("tmip_enable_meta_rating",       2);     // Show rate section. 1-post selected rating, 2-show transitional screen
    23 define("tmip_codes_usage_rate_thresh",  50);    // Number of tracker pageloads required to trigger rating panel
     23define("tmip_codes_usage_rate_thresh",  3);     // Number of tracker calls required to show rating panel
    2424define("tmip_html_to_js_format_realti", 1);     // 1- Enable real time HTML to JavaScript code conversion
    2525define("tmip_html_to_js_format_onsubm", 1);     // 1- Enable reformatting html code to JS code on submit of new code or if realtime
    2626                                                // html>JS have occured at least once
    27 define("tmip_codes_usage_stats_data",   1);     // 1- Enable codes loading status, 2- Enable code usage process counts
     27define("tmip_codes_usage_stats_data",   2);     // 1- Enable codes loading status, 2- Enable code usage process counts
    2828
    29 define("tmip_trk_path_str_array",       array('vLg','tracker')); // tracker path kneedle. First listed is used for generator 083122075843
     29define("tmip_trk_path_str_array",       array('vLg','tracker')); // path kneedle. First listed is used for gen 083122075843
    3030define("tmip_trk_add_async_attr",       1);     // add async attribute for tracker script if not present
    3131
     
    3838
    3939### ADD OPTIONS ############################################
    40 add_option(tmip_visit_tracker_val,      tmip_visit_tracker_default);
    41 add_option(tmip_page_tracker_val,       tmip_page_tracker_default);
     40tmip_reset_delete_plugin_data(4); // Add default option data
    4241
    4342### ADD PLUGIN WP MENU ACTION LINKS ############################################
     
    6665
    6766### FUNCTIONS ############################################
    68 
    69 // Reset settings
    70 //tmip_reset_plugin_settings();
     67// Reset settings: 1-reset all except no_reset flagged vars, 2-reset all to defaults, 3-delete all options
     68// tmip_reset_delete_plugin_data(3);
     69// tmip_write_debug_info_to_file($_SERVER);
    7170
    7271// Add Page Tracker to header
  • tracemyip-visitor-analytics-ip-tracking-control/trunk/css/common.css

    r3044107 r3127659  
    263263}
    264264.tmip_multicolor_text {
     265    letter-spacing:0.2em;
    265266    background-image: linear-gradient(to left, violet, red, indigo, green, blue, yellow, orange);
    266267    -webkit-background-clip: text;
     
    279280  color: #333;
    280281}
     282.tmip_wp_menu_repo_link {
     283    /*color: #FFE118 !important;*/
     284}
     285.tmip_wp_menu_rate_link {
     286    color: #00E837 !important;
     287}
     288.tmip_wp_cmenu_icon {
     289    margin-left: 5px;
     290}
     291.tmip_trk_usage_stat_num {
     292    opacity: 0.6;
     293    font-size: 0.8em;
     294}
     295
     296li#toplevel_page_tmip_admpanel_menu {
     297    color: #000 !important;
     298    background-color: #2E645D!important;
     299}
     300li#toplevel_page_tmip_admpanel_menu ul {
     301    border-top: 2px solid #CCC!important;
     302    border-right: 2px solid #888!important;
     303    border-left: 8px solid #DDD!important;
     304    border-bottom: 2px solid #888!important;
     305    box-sizing: border-box;
     306    background-color: inherit!important;
     307    box-shadow: inset 0px 0px 40px rgba(0, 0, 0, 0.6)!important;
     308}
     309li#toplevel_page_tmip_admpanel_menu ul a{
     310    color: #FFF !important;
     311}
     312li#toplevel_page_tmip_admpanel_menu ul li:hover {
     313    background-color: #EEE !important;
     314}
     315li#toplevel_page_tmip_admpanel_menu ul li:hover a {
     316    color: #000 !important;
     317    font-weight:bold;
     318}
  • tracemyip-visitor-analytics-ip-tracking-control/trunk/includes/functions.php

    r3126412 r3127659  
    4646}
    4747function tmip_static_urls() {
     48    if (defined('tmip_home_page_url')) return NULL;
    4849    if (isset($_SERVER['HTTPS']) and $_SERVER['HTTPS']) {
    4950        $tmip_prot='https';
     
    6061    // 'false' to set constants case sensitive
    6162    define("tmip_home_page_url",           
    62            $tmip_prot.'://www.'.tmip_domain_name.'');
     63           $tmip_prot.'://www.'.tmip_domain_name);
    6364   
    6465    define("tmip_home_page_login",     
     
    7071           tmip_acc_upgr_url);
    7172    define("tmip_free_signup_page_url",
    72            tmip_service_url.'/tools/website-visitors-counter-traffic-tracker-statistics/index.php?sto=1');
     73           tmip_service_url.'/tools/website-visitors-counter-traffic-tracker-statistics/index.php?sto=1&wpp=plug_settings_page');
    7374    define("tmip_premium_signup_page_url",
    74             tmip_service_url.'/members/index.php?page=spm_checkout&type=ssub&ntc=1');
     75            tmip_service_url.'/members/index.php?page=spm_checkout&type=ssub&ntc=1&wpp=plug_settings_page');
    7576    define("tmip_wp_learn_kb",
    7677            tmip_service_url.'/learn/');
     
    8081           '<a href="'.tmip_wp_learn_kb.'" target="_blank"><b>Knowledge Base</b></a>');
    8182    define("tmip_kb_rock_ldr",
    82            '<a href="'.tmip_wp_learn_kb.'disable-rocket-loader-to-enable-visitor-ip-tracking-936/" target="_blank"><b>Rocket Loader</b></a>');
     83           '<a href="'.tmip_wp_learn_kb.'disable-rocket-loader-to-enable-visitor-ip-tracking-936/?wpp=plug_settings_page" target="_blank"><b>Rocket Loader</b></a>');
    8384   
    8485    // Learn KB urls 071323070147
    8586    define("tmip_wp_vistr_setup_tutorial",
    86             tmip_wp_learn_kb.'wordpress-visitor-tracking-plugin-1382/');
    87     define("tmip_wp_block_ips_visit_control",
    88             tmip_wp_learn_kb.'how-to-block-an-ip-address-1017/');
     87            tmip_wp_learn_kb.'wordpress-visitor-tracking-plugin-1382/?wpp=plug_settings_page');
     88    define("tmip_wp_vistr_troubleshooting_tutorial",
     89            tmip_wp_learn_kb.'wordpress-plugin-stopped-working-2671/?wpp=plug_settings_page');  define("tmip_wp_block_ips_visit_control",
     90            tmip_wp_learn_kb.'how-to-block-an-ip-address-1017/?wpp=plug_settings_page');
    8991    define("tmip_wp_other_useful_tutorials",
    90             tmip_wp_learn_kb.'most-popular-tracemyip-features-1594/');
     92            tmip_wp_learn_kb.'most-popular-tracemyip-features-1594/?wpp=plug_settings_page');
    9193    define("tmip_wp_website_cache_optimization",
    92             tmip_wp_learn_kb.'website-caching-cdn-and-website-analytics-and-visitor-tracking-issues-2422/');
    93     define("tmip_chart_tracker_url",     'https://tools.tracemyip.org/ipbox/md=1&pID=1-324473478-1-1600~1587599353~300*100*1*1*20~8CFFD1*33313B~0*0*0&uID=3-042220&pgB=013201&ttC=FF0000&trT=FFFFFF&erA=AED99E&orA=DEEFD7&nrC=666666&vrC=006666&sOP=icstzdlrpob&ipbCap=1&plVer='.$wp_pl_version.'&wpVer='.$wp_wp_version.'&wpAem='.$wp_user_info_ae);
     94            tmip_wp_learn_kb.'website-caching-cdn-and-website-analytics-and-visitor-tracking-issues-2422/?wpp=plug_settings_page');
     95    define("tmip_chart_tracker_url",     
     96           $tmip_prot.'://tools.'.tmip_domain_name.'/ipbox/md=1&pID=1-324473478-1-1600~1587599353~300*100*1*1*20~8CFFD1*33313B~0*0*0&uID=3-042220&pgB=013201&ttC=FF0000&trT=FFFFFF&erA=AED99E&orA=DEEFD7&nrC=666666&vrC=006666&sOP=icstzdlrpob&ipbCap=1&plVer='.$wp_pl_version.'&wpVer='.$wp_wp_version.'&wpAem='.$wp_user_info_ae);
    9497   
    9598    define("tmip_lrn_invtrk_lnk", tmip_link(tmip_lrn_invtrk_url,'<b>'.tmip_invisible_tracker.'</b>'));
    9699
    97    
     100
    98101    // wpPv: WP plugin version wpIf: wordpress iframe token to disable break out of frames
    99102    define("tmip_ip_tools_index",           'https://tools.tracemyip.org/home/'.UVAR.'wpPv='.$wp_pl_version.'&wpIf=1');
    100103   
    101     define("tmip_visit_tracker_val",        'tmip_visit_tracker',           false);
    102     define("tmip_visit_tracker_default",    '',                             false);
    103    
    104     define("tmip_position_val",             'tmip_visit_tracker_position',  false);
    105     define("tmip_position_default",         'footer',                       false);
    106    
    107     define("tmip_page_tracker_val",         'tmip_page_tracker',            false);
    108     define("tmip_page_tracker_default",     '',                             false);
     104    // Define option vars
     105    define("tmip_db_options_vars", 
     106        array(
     107            'vis_tracker_code'=>            array('db_var'=>'tmip_visit_tracker',               'default'=>     ''),
     108            'vis_trk_code_conv_html_to_js'=>array('db_var'=>'tmip_stat_vis_tr_hjconv',          'default'=>     ''),
     109            'vis_tracker_code_position'=>   array('db_var'=>'tmip_visit_tracker_position',      'default'=>     'footer'),
     110            'vis_tracker_ploads_ou_opt'=>   array('db_var'=>'tmip_stat_vis_tr_query',           'default'=>     0),
     111            'vis_tracker_ploads_lifetime'=> array('db_var'=>'tmip_stat_vis_tr_total_qry',       'default'=>     0,  'no_reset'=>1),
     112            'vis_tracker_first_use_unix'=>  array('db_var'=>'tmip_stat_vis_tr_first_used_unix', 'default'=>     0,  'no_reset'=>1),
     113            'page_tracker_code'=>           array('db_var'=>'tmip_page_tracker',                'default'=>     ''),
     114            'page_tracker_ploads_oncodeup'=>array('db_var'=>'tmip_stat_pag_tr_query',           'default'=>     ''),
     115        )                                           
     116    );
     117   
     118    // Assign option vars
     119    define("tmip_visit_tracker_opt",        tmip_db_options_vars['vis_tracker_code']['db_var']);
     120    define("tmip_visit_tracker_default",    tmip_db_options_vars['vis_tracker_code']['default']);
     121    define("tmip_vis_trk_code_html_js_opt", tmip_db_options_vars['vis_trk_code_conv_html_to_js']['db_var']);
     122   
     123    define("tmip_position_val",             tmip_db_options_vars['vis_tracker_code_position']['db_var']);
     124    define("tmip_position_default",         tmip_db_options_vars['vis_tracker_code_position']['default']);
     125   
     126    define("tmip_vis_trk_ploads_curr_opt",  tmip_db_options_vars['vis_tracker_ploads_ou_opt']['db_var']);
     127    define("tmip_pag_trk_ploads_curr_opt",  tmip_db_options_vars['vis_tracker_ploads_lifetime']['db_var']);
     128    define("tmip_vis_trk_first_use_opt",    tmip_db_options_vars['vis_tracker_first_use_unix']['db_var']); 
     129
     130    define("tmip_page_tracker_opt",         tmip_db_options_vars['page_tracker_code']['db_var']);
     131    define("tmip_page_tracker_default",     tmip_db_options_vars['page_tracker_code']['default']);
     132    define("tmip_page_ploads_ou_opt",       tmip_db_options_vars['page_tracker_ploads_oncodeup']['db_var']);   
    109133}
    110134
     
    130154function tmip_rate_serv() {
    131155    tmip_load_fontawesome_cloufare();
    132     $output .='<div id="tmip_sett_wrap_1">';
     156    $output='<div id="tmip_sett_wrap_1">';
    133157    $output .=tmip_rate_review_section();
    134158    $output .='</div>';
     
    149173    if ($ua=$curUserAgent) {
    150174        // Do not show upgrade menu links - case insensitive 041023084633
    151         if (
    152             (stristr($ua, 'Macintosh;') && stristr($ua, 'Safari/') && !stristr($ua, 'Chrome')) ||  // Safari on macOS (excluding Chrome)
    153             preg_match('/Chrome|Edg\/|MSIE|Trident\//', $ua)  // Chrome, Edge, Internet Explorer
     175        if ((stristr($ua, 'Macintosh;') && stristr($ua, 'Safari/') && !stristr($ua, 'Chrome'))  // Safari on macOS (excluding Chrome)
     176            # || preg_match('/Chrome|Edg\/|MSIE|Trident\//', $ua)                               // Chrome, Edge, Internet Explorer
    154177        ) {
    155178            $mac_limit_drop=1;
     
    173196        ucwords(tmip_submenu_reports),  // submenu link name
    174197        'manage_options',           // capability
    175         $menuID,                    // main menu link - make same as primary menu name to create and replace submenu
     198        $menuID.'',                 // main menu link - make same as primary menu name to create and replace submenu
    176199        'tmip_reports_page'         // callback function
    177200    ); 
     
    184207        'tmip_wp_settings'
    185208    ); 
     209    if (1==1) {
     210        add_submenu_page(
     211            $menuID,
     212            tmip_service_Nname.' > '.ucwords(tmip_submenu_user_guide),
     213            ucwords(tmip_submenu_user_guide),   
     214            'manage_options',
     215            'tmip_lnk_user_guide_lrn',
     216            'tmip_fnc_user_guide'
     217        );
     218    }
     219    if (1==2) { // Not used.
     220        add_submenu_page(
     221            $menuID,
     222            tmip_service_Nname.' > '.ucwords(tmip_submenu_ip_tools),
     223            ucwords(tmip_submenu_ip_tools),
     224            'manage_options',
     225            'tmip_lnk_ip_tools_idx',
     226            'tmip_ip_tools_idx'
     227        );
     228    }
     229    if (!empty(get_option(tmip_db_options_vars['vis_tracker_code']['db_var']))) {
     230        if (tmip_enable_meta_rating) {
     231            add_submenu_page(
     232                $menuID,                // Parent menu tree slug
     233                ucwords(tmip_submenu_rate_service), // page title
     234                ucwords(tmip_submenu_rate_service),
     235                'manage_options',       // capability
     236                'tmip_rate_serv_lnk',
     237                'tmip_rate_serv'        // callback function
     238            );
     239        }
     240    }
    186241    if ($mac_limit_drop<>1) {
    187242        add_submenu_page(
     
    202257        'tmip_myipv_46_adr'
    203258    );   
    204     if (1==2) { // Not used.
    205         add_submenu_page(
    206             $menuID,
    207             tmip_service_Nname.' > '.ucwords(tmip_submenu_ip_tools),
    208             ucwords(tmip_submenu_ip_tools),
    209             'manage_options',
    210             'tmip_lnk_ip_tools_idx',
    211             'tmip_ip_tools_idx'
    212         );
    213     }
    214     if (1==1) {
    215         add_submenu_page(
    216             $menuID,
    217             tmip_service_Nname.' > '.ucwords(tmip_submenu_user_guide),
    218             ucwords(tmip_submenu_user_guide),   
    219             'manage_options',
    220             'tmip_lnk_user_guide_lrn',
    221             'tmip_fnc_user_guide'
    222         );
    223     }
    224     if ($vis_tr_stats['vis_tr_queries_cnt']>=tmip_codes_usage_rate_thresh) {
    225         if (tmip_enable_meta_rating) {
    226             add_submenu_page(
    227                 $menuID,                // Parent menu tree slug
    228                 ucwords(tmip_submenu_rate_service), // page title
    229                 ucwords(tmip_submenu_rate_service),
    230                 'manage_options',       // capability
    231                 'tmip_rate_serv_lnk',
    232                 'tmip_rate_serv'        // callback function
    233             );
    234         }
    235     }
    236259}
    237260function tmip_reports_page() {
     261    tmip_load_js();
    238262    global $mac_link_tologin;
    239263    if ($mac_link_tologin) {
     
    245269}
    246270function tmip_upgrade_page() {
     271    tmip_load_js();
    247272    tmip_wp_iframe_page(tmip_go_to_upgrade);
    248273}
    249274function tmip_myipv_46_adr() {
     275    tmip_load_js();
    250276    tmip_wp_iframe_page(tmip_chart_tracker_url);
    251277}
     
    254280}
    255281function tmip_fnc_user_guide() {
     282    tmip_load_js();
    256283    tmip_wp_iframe_page(tmip_userguide_url);
    257284}
     
    307334    ';
    308335}
     336function tmip_rate_review_section() {
     337        tmip_load_js();
     338        tmip_load_css();
     339        global $tmip_plugin_dir_url;
     340
     341        $r=array('heart');                  $thankYouIcon=$r[array_rand($r)]; // 'dove','child'
     342        $r=array('hands-helping','leaf');   $helpNRateSec=$r[array_rand($r)];
     343       
     344$output = '
     345<style>
     346    .ratehelp img {
     347        float: left;
     348        padding:20px;
     349        margin-right: 20px;
     350        margin-bottom: 7px;
     351        -webkit-box-shadow: 2px 2px 6px 0px #777;
     352        -moz-box-shadow:    2px 2px 6px 0px #777;
     353        box-shadow:         2px 2px 6px 0px #777;
     354    }
     355   
     356   @media (max-width: 600px) {
     357        .ratehelp img {
     358            float: none !important;
     359            display: block;
     360            margin-left: auto!important;
     361            margin-right: auto!important;
     362            margin-bottom:30px;
     363
     364        }
     365    }
     366</style>
     367<h2 class="tmip_sec_title">
     368    <i class="fa fa-'.$helpNRateSec.' fa-lg" style="color: #02970C; opacity: 0.8;"></i> Without your support this tool will not survive!
     369</h2>
     370<div class="ratehelp">
     371    <img src="'.$tmip_plugin_dir_url.'images/tmip_team_photo_set_1.jpg" alt="TraceMyIP Team" style="float: left; margin-right: 15px; max-height: 300px;">
     372    <i class="fa fa-star fa-1x tmip_outline-icon1" style="color: #FFFF00; opacity: 1.0;"></i>
     373   <b> Your Rating Lights the Way!</b>
     374    <blockquote>
     375        <p>Please, take a minute to <b>support people</b> who have worked on this project. Your kind words are <u>important</u> to them.</p>
     376        <p><b>Since 2008</b>, they have worked on '.tmip_service_Nname.' to invent new tech and improve your experience with recent WordPress integration. Your 5-star rating isn\'t just feedback; it\'s a heartfelt "Thank You!" that sparks their drive to maintain this project and guides others toward a stellar experience.</p>
     377        <p>Positive reviews fuel their commitment to your satisfaction.</p>
     378        <p><b>Thank you</b> in advance for your kindness <i class="fa fa-'.$thankYouIcon.' fa-lg" style="color: #AA0000; opacity: 0.8;"></i></p>
     379    </blockquote>
     380    <div style="width:100%; text-align:center;">
     381        <button type="button" class="tmip_submit_button1" style="outline-color: transparent;" onclick="window.open(\'https://wordpress.org/support/plugin/tracemyip-visitor-analytics-ip-tracking-control/reviews/?rate=5#new-post\')">Be Our Hero</button>
     382    </div>
     383</div>
     384';
     385return $output;
     386
     387
     388}
    309389function tmip_plugin_row_add_rating($links,$file) {
    310390    global  $tmip_plugin_dir_name,$tmip_plugin_pathbase,$tmip_plugin_sett_url,$tmip_plugin_dir_name,
     
    328408        $url_target='target="_blank"';
    329409        if (tmip_enable_meta_rating==2 and $value<5) {
     410
    330411            //$name=$rating[$value];
    331412            $rate_url=$tmip_rate_pl_url;
     
    360441    return $links;
    361442}
     443function tmip_admin_init() {
     444    if (is_admin()) {
     445        return 1;
     446    } else {
     447        return 0;
     448    }
     449}
    362450function tmip_insert_visitor_tracker() {
    363     $code=get_option(tmip_visit_tracker_val);
     451    $code=get_option(tmip_visit_tracker_opt);
    364452   
    365453    $successVTC=0;
     
    425513        $js_conversion=NULL;
    426514        if ($successVTC) $js_conversion=tmip_stats_optimi_pagntra; elseif ($res and $res['alerts']) $js_conversion=$res['alerts'];
    427         tmip_log_stat_data(array('type'=>'vis_tr_query','js_conversion'=>$js_conversion));
     515        if (!tmip_is_front_end_page()) tmip_log_stat_data(array('type'=>'vis_tr_query','js_conversion'=>$js_conversion));
    428516       
    429517        echo $code;
     
    448536}
    449537function tmip_insert_page_tracker() {
    450     $code=get_option(tmip_page_tracker_val);
     538    $code=get_option(tmip_page_tracker_opt);
    451539    if ($code and strpos($code,'tP_lanPTl') !== false) {
    452540        $code=stripslashes($code);
    453541        $code=str_replace('src="http:','src="',$code);
    454542        $code=str_replace('src="https:','src="',$code);
    455         tmip_log_stat_data(array('type'=>'pag_tr_query'));
     543        if (!tmip_is_front_end_page()) tmip_log_stat_data(array('type'=>'pag_tr_query'));
    456544        echo $code;
    457545    }
     
    470558    if ($type=='vis_tr_query' or $type=='vis_tr_reset' or $type=='pag_tr_query' or $type=='pag_tr_reset' or $type=='reset_all_data') {
    471559        if ($type=='vis_tr_query' or $type=='vis_tr_reset' or $type=='reset_all_data') {
    472             $database_column1='tmip_stat_vis_tr_query';
    473             $database_column2='tmip_stat_vis_tr_hjconv';
    474             $database_column3='tmip_stat_vis_tr_total_qry';
    475             $database_column4='tmip_stat_vis_tr_first_used_unix';
    476                        
     560            $database_column1=tmip_vis_trk_ploads_curr_opt;
     561            $database_column2=tmip_vis_trk_code_html_js_opt;
     562            $database_column3=tmip_pag_trk_ploads_curr_opt;
     563            $database_column4=tmip_vis_trk_first_use_opt;
    477564        } elseif ($type=='pag_tr_query' or $type=='pag_tr_reset') {
    478             $database_column1='tmip_stat_pag_tr_query';
    479         }
     565            $database_column1=tmip_page_ploads_ou_opt;
     566        }
     567
    480568        if ($type=='vis_tr_query' or $type=='pag_tr_query') {
    481569            $action='write';
     
    486574        if ($action=='write') {
    487575            if ($database_column1) update_option($database_column1,(int)get_option($database_column1)+1);
    488             if ($database_column2) update_option($database_column2, strip_tags(esc_js($js_conversion))); // This was previously sanitized. strip tags is not intended to sanitize and is used for a different purpose.
     576            // This was previously sanitized. strip tags is not intended to sanitize and is used for a different purpose.
     577            if ($database_column2) update_option($database_column2, strip_tags(esc_js($js_conversion)));
    489578            if ($database_column3) update_option($database_column3,(int)get_option($database_column3)+1);
    490579            if ($database_column4 and empty(get_option($database_column4))) update_option($database_column4, time());// Nothing to sanitize here, its unix time();
     
    493582            if ($database_column2) update_option($database_column2, '');
    494583        } elseif ($type=='reset_all_data') {
    495             if ($database_column1) update_option($database_column1, 0);
    496             if ($database_column2) update_option($database_column2, '');
    497             if ($database_column3) update_option($database_column3, 0);
    498             if ($database_column4) update_option($database_column4, 0);
     584            tmip_reset_delete_plugin_data(2);
    499585        }
    500586   
     
    503589    // Visitor tracker
    504590    } elseif (tmip_codes_usage_stats_data and $type=='vis_tr_stats') {
    505         $output['vis_tr_queries_cnt']=(int)get_option('tmip_stat_vis_tr_query');
    506         if ($v=get_option('tmip_stat_vis_tr_hjconv')) {
     591        $output['vis_tr_queries_cnt']=(int)get_option(tmip_vis_trk_ploads_curr_opt);
     592        if ($v=get_option(tmip_vis_trk_code_html_js_opt)) {
    507593            $v=stripslashes($v);
    508594        } else {
     
    510596        }
    511597        $output['vis_tr_htmljs_conv']=$v;
    512         $output['vis_tr_first_use_unix']=(int)get_option('tmip_stat_vis_tr_first_used_unix');
    513         $output['vis_tr_total_queries']=(int)get_option('tmip_stat_vis_tr_total_qry');
     598        $output['vis_tr_first_use_unix']=(int)get_option(tmip_vis_trk_first_use_opt);
     599        $output['vis_tr_total_queries']=(int)get_option(tmip_pag_trk_ploads_curr_opt);
    514600       
    515601        if ($v=$output['vis_tr_queries_cnt']) {
    516602            $activity=tmip_stats_receive_trdata;
    517             if (tmip_codes_usage_stats_data==2) $activity .=' ['.($v/1).']';
     603            if (tmip_codes_usage_stats_data==2) $activity .=' <span class="tmip_trk_usage_stat_num">( '.($v/1).' )</span>';
    518604        } else {
    519605            $activity=tmip_stats_pending_trdata.'';
     
    521607        $output['vis_tr_stats']='<b>'.tmip_stats_activi_pagntra.'</b>: '.$activity;
    522608        if ($v=$output['vis_tr_htmljs_conv']) {
    523             $output['vis_tr_stats'] .=', <b>'.tmip_stats_status_pagntra.'</b>: '.$v;
     609            $output['vis_tr_stats'] .='<br><b>'.tmip_stats_status_pagntra.'</b>: '.$v;
    524610        }
    525611        return $output;
     
    527613    // Page tracker
    528614    } elseif (tmip_codes_usage_stats_data and $type=='pag_tr_stats') {
    529         $output['pag_tr_queries_cnt']=(int)get_option('tmip_stat_pag_tr_query');
     615        $output['pag_tr_queries_cnt']=(int)get_option(tmip_page_ploads_ou_opt);
    530616        if ($v=$output['pag_tr_queries_cnt']) {
    531617            $activity=tmip_stats_activet_pgdata;
    532             //if (tmip_codes_usage_stats_data==2) $activity .=' ['.($v/1).']';
     618            if (tmip_codes_usage_stats_data==2) $activity .=' <span class="tmip_trk_usage_stat_num">( '.($v/1).' )</span>';
    533619        } else {
    534620            $activity=tmip_stats_pending_pgdata.'';
     
    557643    $hook=add_submenu_page(
    558644        'index.php',    // index,php to attached to dashboard menu
    559         __(tmip_service_Nname.' Reports'),
    560         __(tmip_service_Nname.' Reports'),
     645        __(tmip_service_Nname.' '.tmip_wp_dashb_menu_rlink),
     646        '<b style="color:#A4F9F7;letter-spacing: 0.05em;">'.__(tmip_service_Nname.'</b>'),
    561647        'publish_posts',
    562648        'tmip',         // tmip to highlight the dashboard link
     
    807893}
    808894
    809 function tmip_reset_plugin_settings() {
    810     // Reset settings
    811     update_option(tmip_position_val, ''); // clear to trigger first time install state
    812     update_option(tmip_visit_tracker_val,'');
    813     update_option(tmip_page_tracker_val,'');
    814 }
    815895function tmip_remove_tabs_new_lines($str,$option=1) {
    816896    if ($str) {
     
    850930    $codeAlert_neutral_text=NULL;;
    851931   
     932    $codeAlert_greenTitle=NULL;
    852933    $codeAlert_green_text=NULL;
    853934    $codeAlert_red_text=NULL;
     
    879960    $vtpTRpsDbVar=!empty($postVarVTpos) ? $postVarVTpos : get_option(tmip_position_val); // NULL before first saved settings
    880961
    881     if (!$vtpTRpsDbVar or ($info_update and !trim(sanitize_text_field($_POST[tmip_visit_tracker_val])))) {
     962    if (!$vtpTRpsDbVar or ($info_update and !trim(sanitize_text_field($_POST[tmip_visit_tracker_opt])))) {
    882963        $hide_div_target=array('sec_rate');
    883964    }
     
    889970    ###### CHECK PROJECT CODE ALERT ###########################################################
    890971    // Project code is not present
    891     $vistracker_db_source_code=trim(stripslashes(get_option(tmip_visit_tracker_val)));
    892     $pagtracker_db_source_code=trim((get_option(tmip_page_tracker_val)));
     972    $vistracker_db_source_code=trim(stripslashes(get_option(tmip_visit_tracker_opt)));
     973    $pagtracker_db_source_code=trim((get_option(tmip_page_tracker_opt)));
    893974   
    894975    /*  Bug report 101721053351
     
    904985   
    905986    $postVarVisTr=NULL;
    906     if (isset($_POST[tmip_visit_tracker_val])) {
    907         $postVarVisTr=$_POST[tmip_visit_tracker_val];
     987    if (isset($_POST[tmip_visit_tracker_opt])) {
     988        $postVarVisTr=$_POST[tmip_visit_tracker_opt];
    908989        /*
    909990            Bug report 101721053351  // wp_kses() bug converts &amp; to &#038; on wordpress hosted sites and ommits javascript tag
    910             $postVarVisTr=wp_kses($_POST[tmip_visit_tracker_val],$allowed_html,$allowed_protocols);
     991            $postVarVisTr=wp_kses($_POST[tmip_visit_tracker_opt],$allowed_html,$allowed_protocols);
    911992        */     
    912993        $postVarVisTr=tmip_unify_new_lines(trim(stripslashes($postVarVisTr)));
     
    916997    $postDBPageTCnp=NULL;
    917998    if ($vtpTRpsDbVar or $postVarVisTr or ($info_update and !$postVarVisTr)) {
    918         $visTRpsDbVar=!empty($postVarVisTr) ? $postVarVisTr : get_option(tmip_visit_tracker_val);
     999        $visTRpsDbVar=!empty($postVarVisTr) ? $postVarVisTr : get_option(tmip_visit_tracker_opt);
    9191000        // Project visitor tracker code is not placed
    9201001        if (!$visTRpsDbVar) {
     
    9521033
    9531034        // ###### Verify and convert an HTML code into JavaScript code to enhance statistics #####
    954         //  or $source_code=get_option(tmip_visit_tracker_val)
     1035        //  or $source_code=get_option(tmip_visit_tracker_opt)
    9551036        if (!$haltUpdate and (!$postVarVisTr or (
    9561037                $postVarVisTr and ($postVarVisTr<>$vistracker_db_source_code or
     
    10251106    // Page tracker code contains visitor tracker code
    10261107    $postVarPagTr='';
    1027     if (isset($_POST[tmip_page_tracker_val])) {
    1028         $postVarPagTr=trim($_POST[tmip_page_tracker_val]);
     1108    if (isset($_POST[tmip_page_tracker_opt])) {
     1109        $postVarPagTr=trim($_POST[tmip_page_tracker_opt]);
    10291110        if (strpos($postVarPagTr,'4684NR-IPIB')==false) {
    1030             $postVarPagTr=tmip_sanitize_rebuild_page_tracker_code($_POST[tmip_page_tracker_val]);
     1111            $postVarPagTr=tmip_sanitize_rebuild_page_tracker_code($_POST[tmip_page_tracker_opt]);
    10311112            $postVarPagTr=str_replace('/script>"','\\\/script>"',$postVarPagTr);
    10321113        }
    10331114    }
    1034     //$postVarPagTr=esc_js(tmip_remove_tabs_new_lines($_POST[tmip_page_tracker_val]));
     1115    //$postVarPagTr=esc_js(tmip_remove_tabs_new_lines($_POST[tmip_page_tracker_opt]));
    10351116    //$postVarPagTr=tmip_unify_new_lines(trim(stripslashes($postVarPagTr)));
    10361117    //$postVarPagTr=html_entity_decode($postVarPagTr);
    10371118    //$postVarPagTr=str_replace('/script>"','\\\/script>"',$postVarPagTr);
    10381119
    1039     $pagTRpsDbVar=!empty($postVarPagTr) ? $postVarPagTr : get_option(tmip_page_tracker_val);
     1120    $pagTRpsDbVar=!empty($postVarPagTr) ? $postVarPagTr : get_option(tmip_page_tracker_opt);
    10401121    if ($pagTRpsDbVar and strpos($pagTRpsDbVar,'4684NR-IPIB')!== false) {
    10411122        if (empty($postVarPagTr) and $info_update) {
     
    10901171
    10911172        // Remove visitor tracker code
    1092         if ($info_update and (!$postVarVisTr and get_option(tmip_visit_tracker_val)) or stristr($haltUpdate,'hu_visitor_tracker'))  {
     1173        if ($info_update and (!$postVarVisTr and get_option(tmip_visit_tracker_opt)) or                 
     1174                                                    stristr($haltUpdate,'hu_visitor_tracker'))  {
    10931175            if ($failedNonceCheck<>1 and $allowUpdate) {
    1094                 update_option(tmip_visit_tracker_val,'');
     1176                update_option(tmip_visit_tracker_opt,'');
    10951177                tmip_log_stat_data(array('type'=>'vis_tr_reset'));
    10961178            }
     
    11011183        }
    11021184        // Remove page tracker code
    1103         if ($info_update and (!$postVarPagTr and get_option(tmip_page_tracker_val)) or stristr($haltUpdate,'hu_page_tracker')) {
     1185        if ($info_update and (!$postVarPagTr and get_option(tmip_page_tracker_opt)) or stristr($haltUpdate,'hu_page_tracker')) {
    11041186            if ($allowUpdate) {
    1105                 update_option(tmip_page_tracker_val,'');
     1187                update_option(tmip_page_tracker_opt,'');
    11061188                tmip_log_stat_data(array('type'=>'pag_tr_reset'));
    11071189            }
     
    11211203            }
    11221204            if ($allowUpdate) {
    1123                 update_option(tmip_visit_tracker_val,$tmip_visit_tracker);
     1205                update_option(tmip_visit_tracker_opt,$tmip_visit_tracker);
    11241206                tmip_log_stat_data(array('type'=>'vis_tr_reset'));
    11251207            }
     
    11421224            }
    11431225            if ($allowUpdate) {
    1144                 update_option(tmip_page_tracker_val,$tmip_page_tracker);
     1226                update_option(tmip_page_tracker_opt,$tmip_page_tracker);
    11451227                tmip_log_stat_data(array('type'=>'pag_tr_reset'));
    11461228            }
     
    12161298                        <li><span>Full featured individual visitor <a href="'.tmip_home_page_url.'/website-analytics.htm" target="_blank">website statistics</a> IP tracker with visitor IP tagging and new activity email alerts</span></li>
    12171299                        <li><span>Visitor IP address GEO data, visitor IP address changes and computer IDs tracking</span></li>
    1218                         <li><span>Website visitor alerts, redirecting, and blocking based on custom rules by an IP address, computer ID, connection location, number of visits or page views, browser type, operating system, referrers, computer hardware specifications, etc.</span></li>
     1300                        <li><span>Website visitor visual and sound alerts, redirecting, and blocking based on custom rules by an IP address, computer ID, connection location, number of visits or page views, browser type, operating system, referrers, computer hardware specifications, etc.</span></li>
    12191301                        <li><span>Mobile and desktop device statistics, targeting, redirection and browsing path control</span></li>
    1220                         <li><span>Individual Real-Time one-way message delivery to selected website visitors currently browsing a website</span></li>
    1221                         <li><span>Web page, links, document and contact forms protection, IP based tracking and complete access control</span></li>
    1222                         <li><span>Integrated IP tracking data visitor control interface within WordPress dashboard</span></li>
    1223                         <li><span>EU GDPR Data Processing compliance with variable level of restrictions per jurisdiction</span></li>
     1302                        <li><span>Individual Real-Time one-way message and popup alerts delivery for specific website visitors</span></li>
     1303                        <li><span>Web page, links, documents and contact forms protection. Advanced IP based tracking giving you a complete access control over your online content security</span></li>
     1304                        <li><span>Integrated and secure IP tracking data visitor control interface within WordPress dashboard</span></li>
     1305                        <li><span>EU GDPR Data Processing compliance tools with variable level of restrictions per jurisdiction</span></li>
    12241306                        <li><span><b>FREE</b> and advanced premium service <a href="'.tmip_premium_signup_page_url.'" target="_blank">subscriptions</a></span></li>
    12251307                    </ul>
     
    12451327                    <ol class="tmip_sett_list_ul">
    12461328                        <li><span><a href="'.tmip_free_signup_page_url.'" target="_blank"><b>Select a '.tmip_lang_visitr_track_ic.' style</b></a> and generate a <b>JavaScript</b> version of '.tmip_service_Dname.' '.tmip_lang_visitor_tr_code.'. Confirm your '.tmip_service_Dname.' account. If you already have a '.tmip_service_Dname.' account, login to your account and click on "Add a New Project" menu link to generate a website '.tmip_lang_visitor_tr_code.' for your new WordPress website.<span>
    1247                         <br><span class="tmip_note_small">* If you need to change a tracker style for an existing project, click on the "tracker code" link located to the right of the project\'s name on [My Projects] page.</span></li>
     1329                        <br><span class="tmip_note_small"><i>* If you need to change a tracker style for an existing project, login to your account, go to [My Projects] page and click on the "tracker code" link located to the right of the project\'s name.</i></span></li>
    12481330                       
    12491331                        <li><span><b>Copy the '.tmip_lang_visitor_tr_code.'</b> and <b>paste</b> it into the ['.tmip_lang_visitor_tr_code.'] input box below.</span></li>
     
    12531335                        <li><span><b>Verify</b> that a '.tmip_lang_visitr_track_ic.' appears on <b>ALL</b> pages of your WordPress website. If you are a Level 2+ '.tmip_service_Dname.' subscriber, you can enable an "'.tmip_lrn_invtrk_lnk.'" option. Login to your '.tmip_service_Dname.' account and click on [My Projects] menu link and then on the "edit" link for your project to locate this option.</span></li>
    12541336
    1255                         <li><span><b>Access</b> your '.tmip_service_Dname.' console, login to WordPress and go to [Dashboard] => [TraceMyIP > Reports]</span></li>
     1337                        <li><span><b>Access</b> your '.tmip_service_Dname.' console, login to WordPress and go to [Dashboard] => [TraceMyIP > '.tmip_submenu_reports.']</span></li>
    12561338                    </ol>
    12571339                   
     
    12591341                    <p><b>Step-by-step tutorials:</b>
    12601342                        <ul class="tmip_sett_list_ul">
    1261                             <li>Installing <a href="'.tmip_wp_vistr_setup_tutorial.'" target="_blank"><b>WordPress Visitor Tracker</b></a></li>
     1343                            <li>Installing <a href="'.tmip_wp_vistr_setup_tutorial.'" target="_blank"><b>WordPress Visitor Tracker</b></a> and <a href="'.tmip_wp_vistr_troubleshooting_tutorial.'" target="_blank"><b>troubleshooting</b></a></li>
    12621344                            <li>Installing <a href="'.tmip_wp_block_ips_visit_control.'" target="_blank"><b>Page Tracker</b></a> to block IPs and control visitor access</li>
    1263                            
    12641345                            <li>Adjusting <a href="'.tmip_wp_website_cache_optimization.'" target="_blank"><b>settings</b></a> for website cache or speed optimization plugins as these can prevent the visitor tracking code from loading properly.</li>
    12651346                            <li>See other <a href="'.tmip_wp_other_useful_tutorials.'" target="_blank"><b>most popular</b></a> tutorials</li>
     
    13471428                        <tr>
    13481429                            <td valign="top" style="padding-top:8px;" width="200">
    1349                                 <label for="'.tmip_visit_tracker_val.'" class="tmip_input_box_name">'.tmip_lang_visitor_tr_code.':</label>
     1430                                <label for="'.tmip_visit_tracker_opt.'" class="tmip_input_box_name">'.tmip_lang_visitor_tr_code.':</label>
    13501431                                <br><div style="margin:10px 0px;" class="tmip_tip_important">Use <b>JavaScript</b> '.tmip_lang_visitor_tr_code.'.</div>
    13511432                                '.$vis_tr_stats['vis_tr_stats'].$vis_tr_used_since.'
    13521433                            </td>
    13531434                            <td>
    1354                                 <textarea id="'.tmip_visit_tracker_val.'" name="'.tmip_visit_tracker_val.'" onClick="tmip_select_all(\''.tmip_visit_tracker_val.'\');" class="tmip_textarea" placeholder="'.trim(tmip_vis_trk_inp_placehl).'"'.$dcach.'>'.htmlentities(stripslashes(get_option(tmip_visit_tracker_val))).'</textarea>
     1435                                <textarea id="'.tmip_visit_tracker_opt.'" name="'.tmip_visit_tracker_opt.'" onClick="tmip_select_all(\''.tmip_visit_tracker_opt.'\');" class="tmip_textarea" placeholder="'.trim(tmip_vis_trk_inp_placehl).'"'.$dcach.'>'.htmlentities(stripslashes(get_option(tmip_visit_tracker_opt))).'</textarea>
    13551436                               
    13561437                                <div class="tmip_note">The '.tmip_lang_visitor_tr_code.' is used to track visitor IPs, computer IDs, traffic sources, IP locations and a complete set of website stats.
     
    13701451                            </td>
    13711452                            <td>
    1372                                 <textarea id="'.tmip_page_tracker_val.'" name="'.tmip_page_tracker_val.'" onClick="tmip_select_all(\''.tmip_page_tracker_val.'\');" class="tmip_textarea" placeholder="'.trim(tmip_pag_trk_inp_placehl).'"'.$dcach.'>'.stripslashes(get_option(tmip_page_tracker_val)).'</textarea>
     1453                                <textarea id="'.tmip_page_tracker_opt.'" name="'.tmip_page_tracker_opt.'" onClick="tmip_select_all(\''.tmip_page_tracker_opt.'\');" class="tmip_textarea" placeholder="'.trim(tmip_pag_trk_inp_placehl).'"'.$dcach.'>'.stripslashes(get_option(tmip_page_tracker_opt)).'</textarea>
    13731454                                <div class="tmip_note">The '.tmip_lang_page_tr_code.' is used to block IPs, control access to pages, protect contact forms, send alerts and one-way messages to visitors.
    13741455                                <br>( '.$linkPTguide.' )</div>
     
    14191500    }
    14201501    return $string;
    1421 }
    1422 function tmip_rate_review_section() {
    1423         tmip_load_css();
    1424 
    1425         $r=array('heart');                  $thankYouIcon=$r[array_rand($r)]; // 'dove','child'
    1426         $r=array('hands-helping','leaf');   $helpNRateSec=$r[array_rand($r)];
    1427        
    1428         $output='
    1429             <h2 class="tmip_sec_title">
    1430             <i class="fa fa-'.$helpNRateSec.' fa-lg" style="color: #02970C; opacity: 0.8;"></i> Make '.tmip_service_Nname.' work better for you</h2>
    1431             <div class="ratehelp">
    1432                 <i class="fa fa-star fa-1x tmip_outline-icon1" style="color: #FFFF00; opacity: 1.0;"></i>
    1433                 <b>Ignite the Difference with a 5-Star rating.</b>
    1434                 <blockquote>
    1435                     <p>Your influence is <u>power</u>.</p>
    1436                     <p>Since 2008, we\'ve sculpted '.tmip_service_Nname.' to amplify <b>your</b> experience. Your 5-star rating isn\'t just feedback; it\'s a heartfelt "Thank You!" that sparks our drive and guides others toward a stellar experience.</p>
    1437                     <p>Positive reviews fuel our commitment to your satisfaction. If '.tmip_service_Nname.' has made a difference for you, a swift 5-star vote empowers your influence.</p>
    1438                 <p><b>Thank you</b> for shaping our path with <b>your</b> enthusiasm <i class="fa fa-'.$thankYouIcon.' fa-lg" style="color: #AA0000; opacity: 0.8;"></i></p>
    1439                 </blockquote>
    1440                 <div style="width:100%; text-align:center;">
    1441                 <button type="button" class="tmip_submit_button1" style="outline-color: transparent;" onclick="window.open(\'https://wordpress.org/support/plugin/tracemyip-visitor-analytics-ip-tracking-control/reviews/?rate=5#new-post\')"> Click to Rate '.tmip_service_Nname.'</button>
    1442                 </div>
    1443             </div>
    1444     ';
    1445     return $output;
    14461502}
    14471503function tmip_extract_string_between($string, $start, $end){
     
    15181574    }
    15191575}
     1576
     1577function tmip_reset_delete_plugin_data($data_type=1) {
     1578    global $wpdb;
     1579   
     1580    # data_type: 1-reset all except no_reset flagged vars, 2-reset all to defaults, 3-delete all options, 4-add DB options defaults
     1581    $operation=array();
     1582    $deleted_options=array();
     1583   
     1584    // Reset settings to default
     1585    if ($data_type===1 or $data_type===2) {
     1586        foreach (tmip_db_options_vars as $vars) {
     1587            $no_reset=(isset($vars[$a='no_reset']) and $data_type===1 and $v=$vars[$a] and $v===1) ? $v : 0;
     1588            if (isset($vars['db_var']) and isset($vars['default']) and $no_reset<>1) {
     1589                update_option($vars['db_var'],trim($vars['default']));
     1590                $reset_options[$vars['db_var']]=$vars['default'];
     1591            }
     1592        }
     1593
     1594    // Delete all options from database
     1595    } elseif ($data_type===3) {
     1596        foreach (tmip_db_options_vars as $vars) {
     1597            if (isset($vars['db_var']) and tmip_does_option_exist($vars['db_var'])) {
     1598                delete_option($vars['db_var']);
     1599                $deleted_options[]=$vars['db_var'];
     1600            }
     1601        }
     1602        $deprecated_options=array('tmip_position','tmip_page_tracker_opt','tmip_visit_tracker_opt');
     1603        foreach ($deprecated_options as $db_opt) {
     1604            if (isset($db_opt)) {
     1605                delete_option($db_opt);
     1606                $deleted_options[]=$db_opt;
     1607            }
     1608        }
     1609
     1610    // Add options to database
     1611    } elseif ($data_type===4) {
     1612        foreach (tmip_db_options_vars as $vars) {
     1613            if (isset($vars['db_var']) and !tmip_does_option_exist($vars['db_var'])) {
     1614                add_option($vars['db_var'],trim($vars['default']));
     1615                $add_options[$vars['db_var']]=$vars['default'];         
     1616            }
     1617        }
     1618    }
     1619   
     1620    if (!empty($deleted_options))   $operation['deleted_options']=$deleted_options;
     1621    if (!empty($reset_options))     $operation['reset_options']=$reset_options;
     1622    if (!empty($add_options))       $operation['added_options']=$add_options;
     1623   
     1624    return $operation;
     1625}
     1626
     1627function tmip_does_option_exist($option_name) {
     1628    global $wpdb;
     1629    $option_value = get_option($option_name);
     1630    if ($option_value !== false) {
     1631        return true;
     1632    }
     1633    $option_exists = $wpdb->get_var($wpdb->prepare(
     1634        "SELECT COUNT(*) FROM $wpdb->options WHERE option_name = %s",
     1635        $option_name
     1636    ));
     1637    return $option_exists > 0;
     1638}
     1639
     1640function tmip_is_front_end_page() {
     1641    $patterns = array('/wp-admin/', 'admin.php?page', 'admin-ajax.php', 'wp-admin/', 'wp-content/plugins/', 'wp-admin/edit.php',
     1642                      'wp-admin/post.php');
     1643    $req = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
     1644
     1645    if ($req) {
     1646        // Escape and join patterns for regex
     1647        $escaped_patterns = array_map(function($pattern) {
     1648            return preg_quote($pattern, '/');
     1649        }, $patterns);
     1650        $regex = '/' . implode('|', $escaped_patterns) . '/i';
     1651
     1652        if (is_admin() or preg_match($regex, $req)) {
     1653            return 1;
     1654        }
     1655    }
     1656    return 0;
     1657}
     1658
     1659function tmip_write_debug_info_to_file($vars) {
     1660    if (1) {
     1661        if (!is_array($vars)) $vars = array($vars);
     1662        $plugin_dir = plugin_dir_path(__FILE__);
     1663        $file_path = $plugin_dir . 'tmip_debug_info.txt';
     1664        $counter_file_path = $plugin_dir . 'tmip_counter.txt';
     1665        $current_time = date('Y-m-d H:i:s') . '.' . sprintf('%03d', (int) (microtime(true) * 1000) % 1000);
     1666        $instance_number = 0;
     1667        $fp = fopen($counter_file_path, 'c+');
     1668        if ($fp) {
     1669            if (flock($fp, LOCK_EX)) {
     1670                if (filesize($counter_file_path) > 0) {
     1671                    $counter_value = fgets($fp);
     1672                    $instance_number = $counter_value ? (int)$counter_value : 0;
     1673                } else {
     1674                    $instance_number = 0;
     1675                }
     1676                $instance_number++;
     1677                ftruncate($fp, 0); // truncate the file
     1678                rewind($fp); // set the file pointer to the beginning
     1679                fwrite($fp, $instance_number);
     1680                fflush($fp); // flush the output
     1681                flock($fp, LOCK_UN); // release the lock
     1682            }
     1683            fclose($fp);
     1684        }
     1685        $debug_info= "\n\n-----------------------------------------------------";
     1686        $debug_info .= "\nInstance: " . $instance_number . " ".$current_time . "";
     1687        $debug_info .= "\nDebug data:\n";
     1688
     1689        foreach ($vars as $key => $value) {
     1690            if (!empty($key) and is_string($key) and is_string($value))  $debug_info .= 'key ['.$key . ']: ' . $value . "\n";
     1691        }
     1692        file_put_contents($file_path, $debug_info, FILE_APPEND);
     1693    }
     1694}
     1695
    15201696?>
  • tracemyip-visitor-analytics-ip-tracking-control/trunk/js/common.js

    r2941696 r3127659  
     1
    12function tmip_select_all(id) {
    23    document.getElementById(id).focus();
     
    56( function( $ ) {
    67    $( document ).ready( function() {
     8       
     9setTimeout(function() {
     10    // 🛠️ 🚀 🏆 ✨
     11    var items = [
     12        {
     13            href: 'admin.php?page=tmip_admpanel_menu',
     14            icon: '',
     15            position: 1,
     16            textClass: 'tmip_wp_menu_repo_link',
     17            matchClass: 'wp-first-item'
     18        },
     19        {
     20            href: 'admin.php?page=tmip_rate_serv_lnk',
     21            icon: '🏆',
     22            position: 1,
     23            textClass: 'tmip_wp_menu_rate_link',
     24            matchClass: ''
     25        },
     26        {
     27            href: 'admin.php?page=tmip_lnk_wp_settings',
     28            icon: '',
     29            position: 1,
     30            textClass: 'tmip_wp_menu_sett_link',
     31            matchClass: ''
     32        },
     33        {
     34            href: 'admin.php?page=tmip_upgrade_page',
     35            icon: '',
     36            position: 1,
     37            textClass: 'placeholder',
     38            matchClass: ''
     39        }
     40    ];
     41
     42    items.forEach(function(item) {
     43        var selector = '#adminmenu a[href="' + item.href + '"]';
     44       
     45        if (item.matchClass) {
     46            selector += '.' + item.matchClass;
     47        }
     48
     49        var link = document.querySelector(selector);
     50        if (link) {
     51            // Create and style the span for the icon
     52            var icon = document.createElement('span');
     53            icon.classList.add('tmip_wp_cmenu_icon');
     54            icon.textContent = item.icon;
     55            var textSpan = document.createElement('span');
     56            textSpan.classList.add(item.textClass);
     57            textSpan.textContent = link.textContent.trim();
     58            link.textContent = '';
     59
     60            if (item.position === 1) {
     61                link.appendChild(textSpan); // Add text span first
     62                link.appendChild(icon); // Add icon after text span
     63            } else if (item.position === 2) {
     64                link.appendChild(icon); // Add icon first
     65                link.appendChild(textSpan); // Add text span after icon
     66            }
     67        }
     68    });
     69}, 10);
     70
    771        $( '.rate-tmip-stars' ).find('a').hover(
    872            function() {
  • tracemyip-visitor-analytics-ip-tracking-control/trunk/languages/en.php

    r3126412 r3127659  
    1616
    1717define("tmip_learnbl_url",          tmip_service_url.'/learn/');
    18 define("tmip_userguide_url",        tmip_service_url.'/learn/?wpmenu=user_manual');
     18define("tmip_userguide_url",        tmip_service_url.'/learn/?wpmenu=wpmenu_user_guide');
    1919define("tmip_support_url",          tmip_service_url.'/contact.htm');
    2020define("tmip_acc_upgr_url",         
     
    2323// URLS
    2424define("tmip_support_link",         tmip_link(tmip_support_url,'<b>'.tmip_support_url.'</b>'));
    25 define("tmip_lrn_invtrk_url",       tmip_learnbl_url.'how-to-make-a-visitor-tracker-invisible-91/');
     25define("tmip_lrn_invtrk_url",       tmip_learnbl_url.'how-to-make-a-visitor-tracker-invisible-91/?wpp=wp_plugin_settings_page');
    2626
    2727// FORM STATEMENTS
     
    3838// MAIN WP MENU
    3939define("tmip_menu_name",            tmip_service_Nname);
    40 define("tmip_submenu_reports",      'reports');
    41 define("tmip_submenu_settings",     'settings');
     40define("tmip_submenu_reports",      'My Projects');
     41define("tmip_wp_dashb_menu_rlink",  'Reports');
     42define("tmip_submenu_settings",     'plugin settings');
    4243define("tmip_submenu_unlock_frt",   'unlock features');
    4344define("tmip_submenu_my_ipv46_adr", 'my current IP');
    4445define("tmip_submenu_ip_tools",     'IP Tools');
    4546define("tmip_submenu_user_guide",   'User Guide');
    46 define("tmip_submenu_rate_service", 'rate '.tmip_service_Nname);
     47define("tmip_submenu_rate_service", 'Be our hero');
    4748
    4849// SECTION TITLES
     
    5253// INTERNAL CODES USAGE STATS
    5354define("tmip_stats_receive_trdata", 'receiving data');
    54 define("tmip_stats_pending_trdata", 'ready');
     55define("tmip_stats_pending_trdata", '[ ready ] - install visitor tracker code to start logging.');
    5556define("tmip_stats_activet_pgdata", 'active');
    56 define("tmip_stats_pending_pgdata", 'ready');
     57define("tmip_stats_pending_pgdata", '[ ready ] - install page tracker code to activate.');
    5758define("tmip_stats_status_pagntra", 'status');
    58 define("tmip_stats_activi_pagntra", 'activity');
     59define("tmip_stats_activi_pagntra", 'status');
    5960define("tmip_stats_optimi_pagntra", 'optimized');
    6061define("tmip_stats_used_since_unx", 'started');
     
    7879
    7980define("tmip_check_trk_code_inst",  "<b>Verify that the tracker image now appears on <u>all</u> of your pages</b>.
    80 <br>If you need a hidden version of the tracker, login to your '.tmip_service_Dname.' account. Click on the [edit] link located to the right of your project name on [My Projects] page, scroll down and enable the [Invisible Tracker] option.
     81<br>If you need a hidden version of the tracker, login to your ".tmip_service_Dname." account. Click on the [edit] link located to the right of your project name on [My Projects] page, scroll down and enable the [Invisible Tracker] option.
    8182
    8283<hr>* <b>If you're using a page cache plugin or optimization plugins</b>, consider purging the cache to ensure the tracking program loads correctly. If the tracker image remains absent on your pages, you might need to temporarily disable your cache or optimization plugins to diagnose the issue. Once identified, adjust the configuration settings within those plugins to allow the tracker code to load properly.");
  • tracemyip-visitor-analytics-ip-tracking-control/trunk/readme.txt

    r3126412 r3127659  
    1 === Visitor IP Tracker, IP Stats Analytics & IP Control With Email Alerts ===
     1=== Visitor IP Tracker, IP Stats Analytics and IP Control With Email Alerts ===
    22
    33Contributors: TraceMyIP
    4 Tags: visitors, ip, address, tracker, email, alerts, website, blocker, analytics, stats, doorbell, counters, hits, redirect, ip blocker, ip tracker, widget, gdpr
     4Tags: visitor,ip,tracker,stats,analytics
    55Requires at least: 2.0.4
    66Tested up to: 6.6
    77Requires PHP: 5.6
    8 Stable tag: 2.60
     8Stable tag: 2.61
    99License: GPLv2 (or later)
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
     11Donate link: https://www.tracemyip.org/signup/?wp=donate
    1112Plugin URI: https://www.tracemyip.org
    1213
    13 
    14 The Official TraceMyIP visitor IP stats tracker. IP location tracker, counter, visitor email alerts, IP blocker, GDPR analytics, statistics
    15 
     14The Official [TraceMyIP](https://www.tracemyip.org?wpp=readme_description) visitor IP tracker. IP location tracker, IP blocker, visitor email alerts, stats counter, GDPR analytics and statistics
    1615
    1716== Description ==
    1817
    19 The Official TraceMyIP Visitor IP Stats Tracker plugin features easy website analytics, visitor IP tracking with email alerts, hits counting, visitor IP blocking, IP redirecting, and IP access control.
     18TraceMyIP Visitor IP Stats Tracker plugin features easy website analytics, visitor IP tracking with email alerts, hits counting, visitor IP blocking, IP redirecting, and IP access control.
    2019
    2120= Powerful features that help to stay in control of website visitations =
     
    2322**Optimized for current web technology** - accurately capturing all real-time website visitor interaction
    2423
    25 * [Website & Blog Visitor IP Tracking & Analytics](https://www.tracemyip.org/website-analytics.htm)
    26 * [Website Visits Email Alerts](https://www.tracemyip.org/website-visitors-alerts.htm)
    27 * [Visitor IP Blocking & Control](https://www.tracemyip.org/learn/how-to-block-an-ip-address-1017/)
    28 * [Individual Link Tracking](https://www.tracemyip.org/tools/link-click-tracker-ad-clicks-counter-ip-blocker/)
    29 * [Tracking Visitor IP changes and Visitor Tagging](https://www.tracemyip.org/tools/online-address-book-web-contact-list/)
    30 * [EU GDPR Compliant Website & Blog Tracking](https://www.tracemyip.org/GDPR-compliant-website-tracking-software.htm)
     24* [Website and Blog Visitor IP Tracking and Analytics](https://www.tracemyip.org/website-analytics.htm?wpp=readme_txt)
     25* [Website Visits Email Alerts](https://www.tracemyip.org/website-visitors-alerts.htm?wpp=readme_txt)
     26* [Visitor IP Blocking and Control](https://www.tracemyip.org/learn/how-to-block-an-ip-address-1017/?wpp=readme_txt)
     27* [Individual Link Tracking](https://www.tracemyip.org/tools/link-click-tracker-ad-clicks-counter-ip-blocker/?wpp=readme_txt)
     28* [Tracking Visitor IP changes and Visitor Tagging](https://www.tracemyip.org/tools/online-address-book-web-contact-list/?wpp=readme_txt)
     29* [EU GDPR Compliant Website and Blog Tracking](https://www.tracemyip.org/GDPR-compliant-website-tracking-software.htm?wpp=readme_txt)
    3130* [Cookieless Tracking](https://www.tracemyip.org/tools/cookie-free-tracking-analytics-eu-cookie-law-solution/)
    3231* Provides additional features and targeted IP data to complement and associate with built-in dashboard statistics, Google Analytics, Semrush, Adobe Analytics, Statcounter, Clicky, Matomo Analytics and others. The IP address data can be matched to other stats packages and tagged to provide visit history data for specific site visits.
    3332
    34 
    3533== Installation ==
    3634
    37 TraceMyIP visitor IP tracking, website statistics, and visitor email alerts with an IP control are instantly activated by registering a TraceMyIP.org account.
     35TraceMyIP features like visitor IP tracking, website statistics, and visitor email alerts with an IP control are instantly activated by registering a TraceMyIP.org account.
    3836
    3937**The installation consists of 3 simple steps:**
    40 1. Install the TraceMyIP WordPress plugin
    41 2. Register an account at www.tracemyip.org which will provide you with a unique visitor tracker code
    42 3. Place the code into the "Visitor Tracker Code" input box at the bottom of the TraceMyIP WordPress plugin settings page
    43 
    44 That's all! Now login to your TraceMyIP account and instantly observe website visitor activity in real-time.
    45 
    46 **Steps to enable TraceMyIP.org tools for WordPress:**
    47 
    48 * [Register](https://www.tracemyip.org/tools/website-visitors-counter-traffic-tracker-statistics/index.php?sto=1) a new TraceMyIP.org account by selecting a Visitor Tracker style or click on the [Add a New Project] menu button of an existing TraceMyIP account.
    49 * Generate a Website Visitor Tracker code with TraceMyIP.org. If the code is lost, log in to your TraceMyIP account, go to "My Projects" page, and click on the "tracker code" link to recover your code.
    50 * Install the Official Trace My IP plugin for WordPress and go to the TraceMyIP Settings page using the WordPress dashboard menu
    51 * Paste the TraceMyIP Visitor Tracker code into the [visitor tracker code] input box and click on the Update Settings button
    52 * Verify that the Visitor Tracker icon shows up on ALL pages of your WordPress site
    53 * If the visitor IP blocking, redirecting, and page controls are required, generate a Page Tracker Code within your TraceMyIP project and place the code into the [Page Tracker Code] input box using the TraceMyIP plugin settings page
    54 * To access the TraceMyIP console, login to your WordPress and go to [Dashboard] => [TraceMyIP Reports]
     38
     39**1.** Install the TraceMyIP WordPress plugin
     40
     41**2.** Register an account at www.tracemyip.org which will provide you with a unique visitor tracker code
     42
     43**3.** Place the code into the "Visitor Tracker Code" input box at the bottom of the TraceMyIP WordPress plugin settings page
     44
     45**That's all**! Now login to your TraceMyIP account and instantly observe website visitor activity in real-time.
     46
     47**Detailed steps to enable TraceMyIP.org tools for WordPress:**
     48
     49* [**Register**](https://www.tracemyip.org/tools/website-visitors-counter-traffic-tracker-statistics/index.php?sto=1&wpp=readme_txt) a new TraceMyIP.org account by selecting a Visitor Tracker style or click on the [**Add a New Project**] menu button of an existing TraceMyIP account.
     50* **Generate a Website Visitor Tracker code** with TraceMyIP.org. If the code is lost, log in to your TraceMyIP account, go to "**My Projects**" page, and click on the "**tracker code**" link to recover your code.
     51* **Install TraceMyIP plugin for WordPress** and go to the plugin settings page using the WordPress dashboard menu
     52* **Paste the TraceMyIP Visitor Tracker code** into the [**visitor tracker code**] input box and click on the Update Settings button below
     53* **Verify** that the Visitor Tracker icon shows up on **ALL** pages of your WordPress site, including the mobile pages
     54* **If you need visitor IP blocking**, redirecting, and page access controls, generate a **Page Tracker Code** within your TraceMyIP project and place the code into the [**Page Tracker Code**] input box using the TraceMyIP plugin settings page
     55* **To access the TraceMyIP console**, login to your WordPress and go to [Dashboard] => [TraceMyIP Reports]. If your browser is not displaying reports from WordPress dashboard, open a new browser tab and login directly at [**TraceMyIP.org**](https://www.tracemyip.org/?wpp=readme_txt)
    5556* To configure GDPR Compliance Tools, log in to TraceMyIP.org and navigate to [My Account] => [Advanced Tracking Settings]
    5657
     
    5859= Support for TraceMyIP Visitor IP Tracker =
    5960
    60 * For ALL tutorials and general information, please visit [Learn TraceMyIP](https://www.tracemyip.org/learn/) support site.
    61 
    62 * For the most frequently requested tutorials, please visit  [Popular Guides](https://www.tracemyip.org/learn/most-popular-tracemyip-features-1594/) section.
    63 
    64 If you require further help with the TraceMyIP visitor IP tracker plugin or need to report an issue, please [contact](https://www.tracemyip.org/contact.htm) TraceMyIP support.
     61* For ALL tutorials and general information, please visit [Learn TraceMyIP](https://www.tracemyip.org/learn/?wpp=readme_txt) support site.
     62
     63* For the most frequently requested tutorials, please visit [Popular Guides](https://www.tracemyip.org/learn/most-popular-tracemyip-features-1594/?wpp=readme_txt) section.
     64
     65If you have difficulties with installation and require further help with the TraceMyIP visitor IP tracker plugin or need to report an issue, please [contact](https://www.tracemyip.org/contact.htm?wpp=readme_txt) TraceMyIP support.
    6566
    6667
     
    6970= Is TraceMyIP Visitor IP Stats Tracker a free service? =
    7071
    71 Yes. The FREE TraceMyIP subscription level that provides only basic essential information and features is completely free. Additional data storage space, enhanced visitor email alerts, and advanced GEO tracking and GDPR control options are available for premium subscriptions.
     72TraceMyIP offers both free and premium subscriptions. The free subscription provides essential features at no cost. For advanced users, the premium subscription includes enhanced visitor email and sound alerts, advanced GEO tracking and GDPR controls, additional data storage, and other features.
    7273
    7374= What are the primary TraceMyIP features? =
    7475
    75 1. Website Visitor GEO IP Tracking, Address Book tagging and visitor IP email alerts and console doorbell-like alerts
    76 2. Visitor IP Changes Tracking and Computer ID Tracking (Subject to GDPR Directive)
    77 3. Advanced Website Analytics and Statistics (some functions are similar to Google Analytics but on a visitor level)
    78 4. Visitor IP Blocking and visitor Traffic Control via IP and Computer ID Redirecting Rules
    79 5. Individual Link and Page Tracking and security access control based on an IP address and other visitor data
     761. Website Visitor GEO IP Tracking, Address Book tagging and visitor IP email alerts with console audio doorbell-like alerts
     772. Visitor IP Address Changes Tracking and Computer ID Tracking (Subject to GDPR Directive)
     783. Advanced Website Analytics and Statistics (some functions are similar to Google Analytics but also feature a visitor level analysis)
     794. Visitor IP Blocking and Visitor Traffic Control with Redirecting Rules using IP, Computer ID, connection and user system info
     805. Link and Page Tracking and security access control based on an IP address and other visitor data
    80816. AD Campaigns Tracking (some features are similar to Google Analytics + individual visitor tracking and surveillance)
    81827. EU GDPR-compliant visitor tracking with selective GEO IP masking, Computer IP masking, and other GDPR compliance tools
    82838. Compatibility with WordPress multisite, JavaScript tracking, and basic HTML tracking codes
    83 9. User-configurable dashboard with advanced options, auto update and animated graphic charts
     849. User-configurable dashboard with advanced options, auto-update and animated graphic charts
    8485
    8586= How TraceMyIP plugin is different from other website statistics services? =
     
    1111123. Assign the name and select when and how often you would like to get notified via email
    112113
    113 For a step-by-step tutorial, see [Visitor Email Alerts](https://www.tracemyip.org/learn/website-visitor-ip-alerts-and-email-notifications-1481/)
     114For a step-by-step tutorial, see [Visitor Email Alerts](https://www.tracemyip.org/learn/website-visitor-ip-alerts-and-email-notifications-1481/?wpp=readme_txt)
    114115
    115116= How do I hide the visitor tracker on my pages? =
     
    117118**To properly hide the tracker icon and make it invisible:**
    118119
    119 1. Enable the [Invisible Tracker] option by going to [My Projects] page, clicking on the [edit] link for the project, and selecting the [Invisible Tracker] option. You can also refer to this [Invisible tracker](https://www.tracemyip.org/learn/how-to-make-a-visitor-tracker-invisible-91/) tutorial.
     1201. Enable the [Invisible Tracker] option by going to [My Projects] page, clicking on the [edit] link for the project, and selecting the [Invisible Tracker] option. You can also refer to this [Invisible tracker](https://www.tracemyip.org/learn/how-to-make-a-visitor-tracker-invisible-91/?wpp=readme_txt) tutorial.
    1201212. Navigate to the WordPress TraceMyIP plugin settings page, and using the "Tracker Icon Position" menu set the option to "Header Script". This may position the tracker on the left of the header or a footer, however, it will become completely invisible once the invisible tracker option is enabled.
    121122
     
    171172
    172173== Changelog ==
     174
     175= Version 2.61 =
     176- Geographical positioning maps updates
     177- Improved visitor tracking code integration with WordPress templates
     178- Improved dashboard website analytics chart rendering
     179- Fixed issues with some long page URLs not figginwebsite stats dashboard panels
     180- Updates menu style for WordPress plugin integration
    173181
    174182= Version 2.60 =
Note: See TracChangeset for help on using the changeset viewer.