Slimstat Analytics - Version 3.9.3

Version Description

  • [New] We're starting to work on a completely redesigned data layer, which will require less SQL resources and offer a much needed performance improvement. Stay tuned.
  • [New] Three new settings to turn off the tracker completely on specific links (internal and external), by class name, rel attribute or simply by URL.
  • [Update] MaxMind GeoLite IP has been updated to the latest version (2015-01-06).
  • [Fix] Bug affecting our add-ons setting page, in some specific circumstances (thank you, Erik).
Download this release

Release Info

Developer coolmann
Plugin Icon 128x128 Slimstat Analytics
Version 3.9.3
Comparing to
See all releases

Code changes from version 3.9.2 to 3.9.3

admin/config/index.php CHANGED
@@ -85,9 +85,12 @@ switch ($config_tabs[$current_tab-1]){
85
  'filters_outbound_header' => array('description' => __('Internal and Outbound Links','wp-slimstat'), 'type' => 'section_header'),
86
  'enable_outbound_tracking' => array('description' => __('Track Outbound Clicks','wp-slimstat'), 'type' => 'yesno', 'long_description' => __('Track when your visitors click on link to external websites. This option required Spy Mode to be enabled.','wp-slimstat')),
87
  'track_internal_links' => array('description' => __('Track Coordinates','wp-slimstat'), 'type' => 'yesno', 'long_description' => __("Collect mouse coordinates and other information for clicks on internal links. Strongly recommended if you're using the heatmap add-on. By default, this information is only collected for external links.",'wp-slimstat')),
88
- 'ignore_outbound_classes' => array('description' => __('Ignore Classes','wp-slimstat'), 'type' => 'text', 'long_description' => __("Track the event but do not invoke the callback function on links marked with one of these classnames (separated by comma). Useful to prevent conflicts with lightbox and similar libraries.",'wp-slimstat')),
89
- 'ignore_outbound_rel' => array('description' => __('Ignore Rel','wp-slimstat'), 'type' => 'text', 'long_description' => __("Track the event but do not invoke the callback function on links having one of these values (separated by comma) as their <em>rel</em> attribute.",'wp-slimstat')),
90
- 'ignore_outbound_href' => array('description' => __('Ignore URL','wp-slimstat'), 'type' => 'text', 'long_description' => __("Track the event but do not invoke the callback function on links whose <em>href</em> attribute contains one of these strings (separated by comma).",'wp-slimstat')),
 
 
 
91
 
92
  'filters_miscellaneous_header' => array('description' => __('Miscellaneous','wp-slimstat'), 'type' => 'section_header'),
93
  'anonymize_ip' => array('description' => __('Enable Privacy Mode','wp-slimstat'), 'type' => 'yesno', 'long_description' => __("Mask your visitors' IP addresses to comply with European Privacy Laws.",'wp-slimstat')),
85
  'filters_outbound_header' => array('description' => __('Internal and Outbound Links','wp-slimstat'), 'type' => 'section_header'),
86
  'enable_outbound_tracking' => array('description' => __('Track Outbound Clicks','wp-slimstat'), 'type' => 'yesno', 'long_description' => __('Track when your visitors click on link to external websites. This option required Spy Mode to be enabled.','wp-slimstat')),
87
  'track_internal_links' => array('description' => __('Track Coordinates','wp-slimstat'), 'type' => 'yesno', 'long_description' => __("Collect mouse coordinates and other information for clicks on internal links. Strongly recommended if you're using the heatmap add-on. By default, this information is only collected for external links.",'wp-slimstat')),
88
+ 'ignore_outbound_classes' => array('description' => __('No Callback on Classes','wp-slimstat'), 'type' => 'text', 'long_description' => __("Track the event but do not invoke the callback function on links marked with one of these classnames (separated by comma). Useful to prevent conflicts with lightbox and similar libraries.",'wp-slimstat')),
89
+ 'ignore_outbound_rel' => array('description' => __('No Callback on Rel','wp-slimstat'), 'type' => 'text', 'long_description' => __("Track the event but do not invoke the callback function on links having one of these values (separated by comma) as their <em>rel</em> attribute.",'wp-slimstat')),
90
+ 'ignore_outbound_href' => array('description' => __('No Callback on URL','wp-slimstat'), 'type' => 'text', 'long_description' => __("Track the event but do not invoke the callback function on links whose <em>href</em> attribute contains one of these strings (separated by comma).",'wp-slimstat')),
91
+ 'do_not_track_outbound_classes' => array('description' => __('Do not Track Classes','wp-slimstat'), 'type' => 'text', 'long_description' => __("Do not track links marked with one of these classnames (separated by comma).",'wp-slimstat')),
92
+ 'do_not_track_outbound_rel' => array('description' => __('Do not Track Rel','wp-slimstat'), 'type' => 'text', 'long_description' => __("Do not track links having one of these values (separated by comma) as their <em>rel</em> attribute.",'wp-slimstat')),
93
+ 'do_not_track_outbound_href' => array('description' => __('Do not Track URL','wp-slimstat'), 'type' => 'text', 'long_description' => __("Do not track links whose <em>href</em> attribute contains one of these strings (separated by comma).",'wp-slimstat')),
94
 
95
  'filters_miscellaneous_header' => array('description' => __('Miscellaneous','wp-slimstat'), 'type' => 'section_header'),
96
  'anonymize_ip' => array('description' => __('Enable Privacy Mode','wp-slimstat'), 'type' => 'yesno', 'long_description' => __("Mask your visitors' IP addresses to comply with European Privacy Laws.",'wp-slimstat')),
admin/view/wp-slimstat-db.php CHANGED
@@ -672,7 +672,7 @@ class wp_slimstat_db {
672
  foreach($matches as $idx => $a_match){
673
  preg_match('/([^\s]+)\s([^\s]+)\s(.+)?/', urldecode($a_match), $a_filter);
674
 
675
- if ((empty($a_filter) || !array_key_exists($a_filter[1], self::$filter_names) || strpos($a_filter[1], 'no_filter') !== false) && strpos($a_filter[1], 'addon_') === false){
676
  continue;
677
  }
678
 
672
  foreach($matches as $idx => $a_match){
673
  preg_match('/([^\s]+)\s([^\s]+)\s(.+)?/', urldecode($a_match), $a_filter);
674
 
675
+ if (empty($a_filter) || ((!array_key_exists($a_filter[1], self::$filter_names) || strpos($a_filter[1], 'no_filter') !== false) && strpos($a_filter[1], 'addon_') === false)){
676
  continue;
677
  }
678
 
admin/wp-slimstat-admin.php CHANGED
@@ -12,7 +12,7 @@ class wp_slimstat_admin{
12
  */
13
  public static function init(){
14
  if ((wp_slimstat::$options['enable_ads_network'] == 'yes' || wp_slimstat::$options['enable_ads_network'] == 'no')){
15
- self::$admin_notice = "Meet our recommended partner, <a href='https://managewp.com/?utm_source=A&utm_medium=Banner&utm_content=mwp_banner_25_300x250&utm_campaign=A&utm_mrl=2844' target='_blank'>ManageWP</a>. Their platform allows you to manage all your WordPress sites from one powerful dashboard. Our users get a 10% discount on their premium services. And if you manage less than 5 websites, you can use ManageWP free of charge!";
16
  }
17
  else {
18
  self::$admin_notice = "
12
  */
13
  public static function init(){
14
  if ((wp_slimstat::$options['enable_ads_network'] == 'yes' || wp_slimstat::$options['enable_ads_network'] == 'no')){
15
+ self::$admin_notice = "We're starting to work on a completely redesigned data layer, which will require less SQL resources and offer a much needed performance improvement. We hope to have it ready in time for version 4.0. Some experimental code will be added to one of the next releases, with the option to deactivate it and use the classic library. Stay tuned!";
16
  }
17
  else {
18
  self::$admin_notice = "
databases/maxmind.dat CHANGED
Binary file
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
4
  Tags: analytics, tracking, reports, analyze, wassup, geolocation, online users, spider, tracker, pageviews, stats, maxmind, statistics, statpress
5
  Requires at least: 3.8
6
  Tested up to: 4.1
7
- Stable tag: 3.9.2
8
 
9
  == Description ==
10
  Visit our [website](http://slimstat.getused.to.it/) for more information and to [watch our introductory videos](http://slimstat.getused.to.it/features/video-tutorials/).
@@ -63,13 +63,19 @@ Our FAQs are available on our [support center](https://slimstat.freshdesk.com/su
63
 
64
  == Changelog ==
65
 
 
 
 
 
 
 
66
  = 3.9.2 =
67
  * [New] Welcome our recommended partner, [ManageWP](https://managewp.com/?utm_source=A&utm_medium=Banner&utm_content=mwp_banner_25_300x250&utm_campaign=A&utm_mrl=2844). You will get a 10% discount on their products using our affiliation link.
68
- * [Fix] XSS Vulnerability introduced by the new Save Filters functionality (thank you, [Ryan](https://wpvulndb.com/vulnerabilities/7744))
69
 
70
  = 3.9.1 =
71
  * [New] Quickly delete single pageviews in the Real-Time Log screen
72
- * [New] Option to fix an issue occurring when the DB server and the website are in different timezones. Please disable this option if your charts seem to be off.
73
  * [New] Using the new [WP Proxy CDN feature](https://github.com/jsdelivr/jsdelivr/issues/2632). Please contact us if you notice any problems with this new option, as this feature is still being tested.
74
  * [Update] Reintroduced the NO PANIC button under Settings > Maintenance > Miscellaneous
75
  * [Fix] Conflict with WP-Jalali, which forces date_i18n to return not western numerals but their Farsi representation
@@ -124,47 +130,10 @@ Our FAQs are available on our [support center](https://slimstat.freshdesk.com/su
124
  * [Fix] Outbound links from within the admin were not tracked as expected (thank you [mobilemindtech](https://wordpress.org/support/topic/outbound-links-problem-in-version-374))
125
  * [Fix] Firewall Fix add-on was not tracking the originating ip's country as expected (thank you, JeanLuc)
126
 
127
- = 3.7.5 =
128
- * [Fix] Some plugins are not considerate of the shared environment they use, and don't return data in the right format ;) We added some extra code to make sure the data Slimstat needs is of the correct type (thank you, [p30m](https://wordpress.org/support/topic/slim-stat-dosnt-work-after-wordpress-ugrade))
129
- * [Fix] Compatibility issue with our Firewall Fix add-on
130
-
131
- = 3.7.4 =
132
- * [Fix] Issue with menus when displayed in the admin bar (thank you all the users who pointed this out)
133
-
134
- = 3.7.3 =
135
- * [Note] A few people have asked us why they don't see the search keywords anymore, for the traffic coming from Google. Blame the NSA, Prism and... your government ;) [Read more here](https://wordpress.org/support/topic/incoming-search-terms)
136
- * [New] Slimstat now tracks server latency and page performance. Please be patient the first time you load the reports: the database is being upgraded to store this new info!
137
- * [New] Date and time formatting is now independent from the one used by WordPress
138
- * [Update] Autopurge is now disabled by default on new installs, since people have had issues with losing old data by mistake
139
- * [Update] Russian Localization (thank you, [Vitaly](http://tiny.cc/iHerbSpecials))
140
- * [Update] Real-Time Log legend has been moved to the top, for easy access (thank you, [scruffy1](https://wordpress.org/support/topic/suggestion))
141
- * [Fix] Visit ID were not being tracked if FORCE_SSL_ADMIN was enabled in wp_config, when the site was served over HTTP (thank you, [Pepe](https://wordpress.org/support/topic/session-grouping-doesnt-seem-to-work-anymore))
142
-
143
- = 3.7.2 =
144
- * [New] Added operator BETWEEN, to express filters like "country code BETWEEN f,g" and get reports for France and Ghana but not for Portugal. Or something like "screen resolution BETWEEN 1000,1300" to get data for visitors whose screen *width* is at least 1000 px and no more than 1300 px. Separate the two values in the range with a comma.
145
- * [New] A premium add-on to track all the cookies associated with the domain
146
- * [New] Notes regarding a specific pageview are now accessible under the Real-Time Log (little note/pencil icon next to the list of browser extensions). This will allow you to know things like prefetch requests, user id, spam, etc. If you have the Track Cookies add-on, here you will also find all the information about each user's cookies
147
- * [Fix] Counter on Posts and Pages screens was not working as expected
148
- * [Fix] Color-coded visits in the Real-Time log were not displayed correctly (thank you, Vitaly)
149
-
150
- = 3.7.1 =
151
- * [Note] Our Reports API (wp-slimstat-reports.php) does not extend wp-slimstat-admin anymore, for extra flexibility in building third-party solutions
152
- * [New] Added support for generating email reports
153
- * [Update] MaxMind's IP Database has been updated to the latest version (2014-09-04)
154
- * [Fix] Some settings could not be turned off, because of the Network Settings functionality (thank you, [LeonardShelby](http://wordpress.org/support/topic/cannot-disable-live-stream))
155
-
156
- = 3.7 =
157
- * [New] Japanese localization added (thank you, [h_a_l_f](http://wordpress.org/support/topic/japanese-localization))
158
- * [New] Added support for [SOV Languages](http://en.wikipedia.org/wiki/Subject%E2%80%93object%E2%80%93verb) (thank you, h_a_l_f)
159
- * [New] Added support for our Network Settings premium add-on
160
- * [Update] All the icons used in the admin are now optimized (thank you, [scruffy1](http://wordpress.org/support/topic/suggestion-79))
161
- * [Fix] Introduced some code optimizations (browser detection) that will solve the slow response time once and for all!
162
- * [Fix] Add-ons page was not accessible if menu was attached to the Admin Bar (thank you, h_a_l_f)
163
-
164
  == Special Thanks To ==
165
 
166
- * [Vitaly](http://www.visbiz.org/), who volunteered quite a lot of time for QA and testing, and provided the complete Russian localization
167
- * [Davide Tomasello](http://www.davidetomasello.it/), who provided great feedback and plenty of ideas to take this plugin to the next level
168
 
169
  == Supporters ==
170
  Slimstat is an Open Source project, dependent in large parts on donations. [This page](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=BNJR5EZNY3W38)
4
  Tags: analytics, tracking, reports, analyze, wassup, geolocation, online users, spider, tracker, pageviews, stats, maxmind, statistics, statpress
5
  Requires at least: 3.8
6
  Tested up to: 4.1
7
+ Stable tag: 3.9.3
8
 
9
  == Description ==
10
  Visit our [website](http://slimstat.getused.to.it/) for more information and to [watch our introductory videos](http://slimstat.getused.to.it/features/video-tutorials/).
63
 
64
  == Changelog ==
65
 
66
+ = 3.9.3 =
67
+ * [New] We're starting to work on a completely redesigned data layer, which will require less SQL resources and offer a much needed performance improvement. Stay tuned.
68
+ * [New] Three new settings to turn off the tracker completely on specific links (internal and external), by class name, rel attribute or simply by URL.
69
+ * [Update] MaxMind GeoLite IP has been updated to the latest version (2015-01-06).
70
+ * [Fix] Bug affecting our add-ons setting page, in some specific circumstances (thank you, Erik).
71
+
72
  = 3.9.2 =
73
  * [New] Welcome our recommended partner, [ManageWP](https://managewp.com/?utm_source=A&utm_medium=Banner&utm_content=mwp_banner_25_300x250&utm_campaign=A&utm_mrl=2844). You will get a 10% discount on their products using our affiliation link.
74
+ * [Fix] XSS Vulnerability introduced by the new Save Filters functionality (thank you, [Ryan](https://wpvulndb.com/vulnerabilities/7744)).
75
 
76
  = 3.9.1 =
77
  * [New] Quickly delete single pageviews in the Real-Time Log screen
78
+ * [New] Option to fix an issue occurring when the DB server and the website are in different timezones. Please disable this option if your charts seem to be off!
79
  * [New] Using the new [WP Proxy CDN feature](https://github.com/jsdelivr/jsdelivr/issues/2632). Please contact us if you notice any problems with this new option, as this feature is still being tested.
80
  * [Update] Reintroduced the NO PANIC button under Settings > Maintenance > Miscellaneous
81
  * [Fix] Conflict with WP-Jalali, which forces date_i18n to return not western numerals but their Farsi representation
130
  * [Fix] Outbound links from within the admin were not tracked as expected (thank you [mobilemindtech](https://wordpress.org/support/topic/outbound-links-problem-in-version-374))
131
  * [Fix] Firewall Fix add-on was not tracking the originating ip's country as expected (thank you, JeanLuc)
132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  == Special Thanks To ==
134
 
135
+ * [Vitaly](http://www.visbiz.org/), who volunteers quite a lot of time for QA, testing, and for his Russian localization.
136
+ * Davide Tomasello, who provided great feedback and plenty of ideas to take this plugin to the next level.
137
 
138
  == Supporters ==
139
  Slimstat is an Open Source project, dependent in large parts on donations. [This page](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=BNJR5EZNY3W38)
wp-slimstat.js CHANGED
@@ -1 +1 @@
1
- var SlimStat={_id:typeof SlimStatParams.id!="undefined"?SlimStatParams.id:"-1.0",_base64_key_str:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_plugins:{acrobat:{substrings:["Adobe","Acrobat"],active_x_strings:["AcroPDF.PDF","PDF.PDFCtrl.5"]},director:{substrings:["Shockwave","Director"],active_x_strings:["SWCtl.SWCtl"]},flash:{substrings:["Shockwave","Flash"],active_x_strings:["ShockwaveFlash.ShockwaveFlash"]},mediaplayer:{substrings:["Windows Media"],active_x_strings:["WMPlayer.OCX"]},quicktime:{substrings:["QuickTime"],active_x_strings:["QuickTime.QuickTime"]},real:{substrings:["RealPlayer"],active_x_strings:["rmocx.RealPlayer G2 Control","RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)","RealVideo.RealVideo(tm) ActiveX Control (32-bit)"]},silverlight:{substrings:["Silverlight"],active_x_strings:["AgControl.AgControl"]}},_utf8_encode:function(e){var t,n,r="";e=e.replace(/\r\n/g,"\n");for(t=0;t<e.length;t++){n=e.charCodeAt(t);if(n<128){r+=String.fromCharCode(n)}else if(n>127&&n<2048){r+=String.fromCharCode(n>>6|192);r+=String.fromCharCode(n&63|128)}else{r+=String.fromCharCode(n>>12|224);r+=String.fromCharCode(n>>6&63|128);r+=String.fromCharCode(n&63|128)}}return r},_base64_encode:function(e){var t,n,r,i,s,o,u,a="",f=0;e=SlimStat._utf8_encode(e);while(f<e.length){t=e.charCodeAt(f++);n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=t>>2;s=(t&3)<<4|n>>4;o=(n&15)<<2|r>>6;u=r&63;if(isNaN(n)){o=u=64}else if(isNaN(r)){u=64}a=a+SlimStat._base64_key_str.charAt(i)+SlimStat._base64_key_str.charAt(s)+SlimStat._base64_key_str.charAt(o)+this._base64_key_str.charAt(u)}return a},_detect_single_plugin_not_ie:function(e){var t,n,r,i,s;for(i in navigator.plugins){n=""+navigator.plugins[i].name+navigator.plugins[i].description;r=0;for(s in SlimStat._plugins[e].substrings){if(n.indexOf(SlimStat._plugins[e].substrings[s])!=-1){r++}}if(r==SlimStat._plugins[e].substrings.length){return true}}return false},_detect_single_plugin_ie:function(e){var t;for(t in SlimStat._plugins[e].active_x_strings){try{new ActiveXObject(SlimStat._plugins[e].active_x_strings[t]);return true}catch(n){return false}}},_detect_single_plugin:function(e){if(navigator.plugins.length){this.detect=this._detect_single_plugin_not_ie}else{this.detect=this._detect_single_plugin_ie}return this.detect(e)},detect_plugins:function(){var e,t="";for(e in SlimStat._plugins){if(SlimStat._detect_single_plugin(e)){t+=e+"|"}}return t},has_smoothing:function(){if(typeof screen.fontSmoothingEnabled!="undefined"){return Number(screen.fontSmoothingEnabled)}else{if(typeof SlimStatParams.detect_smoothing!="undefined")return 0;try{var e=document.createElement("canvas");e.width="35";e.height="35";e.style.display="none";document.body.appendChild(e);var t=e.getContext("2d");t.textBaseline="top";t.font="32px Arial";t.fillStyle="black";t.strokeStyle="black";t.fillText("O",0,0);for(var n=8;n<=32;n++){for(var r=1;r<=32;r++){var i=t.getImageData(r,n,1,1).data;var s=i[3];if(s!=255&&s!=0)return 1}}return 0}catch(o){return 0}}},get_page_performance:function(){slim_performance=window.performance||window.mozPerformance||window.msPerformance||window.webkitPerformance||{};if(typeof slim_performance.timing=="undefined"){return 0}return slim_performance.timing.loadEventEnd-slim_performance.timing.responseEnd},get_server_latency:function(){slim_performance=window.performance||window.mozPerformance||window.msPerformance||window.webkitPerformance||{};if(typeof slim_performance.timing=="undefined"){return 0}return slim_performance.timing.responseEnd-slim_performance.timing.connectEnd},send_to_server:function(e,t){if(typeof SlimStatParams.ajaxurl=="undefined"||typeof e=="undefined"){if(typeof t=="function"){t()}return false}try{if(window.XMLHttpRequest){request=new XMLHttpRequest}else if(window.ActiveXObject){request=new ActiveXObject("Microsoft.XMLHTTP")}}catch(n){if(typeof t=="function"){t()}return false}if(request){var r="action=slimtrack_js&data="+SlimStat._base64_encode(e);request.open("POST",SlimStatParams.ajaxurl,true);request.setRequestHeader("Content-type","application/x-www-form-urlencoded");request.send(r);request.onreadystatechange=function(){if(request.readyState==4){if(typeof SlimStatParams.id=="undefined"){parsed_id=parseInt(request.responseText);if(!isNaN(parsed_id)&&parsed_id>0){SlimStat._id=request.responseText}}else{SlimStat._id=SlimStatParams.id}if(typeof t=="function"){t()}}};return true}return false},ss_track:function(e,t,n,r){if(!e){e=window.event}code=typeof t=="undefined"?0:parseInt(t);note_array=[];parsed_id=parseInt(SlimStat._id);if(isNaN(parsed_id)||parsed_id<=0){if(typeof r=="function"){r()}return false}node=typeof e.target!="undefined"?e.target:typeof e.srcElement!="undefined"?e.srcElement:false;if(!node){if(typeof r=="function"){r()}return false}if(node.nodeType==3)node=node.parentNode;parent_node=node.parentNode;node_hostname="";node_pathname=location.pathname;switch(node.nodeName){case"FORM":if(node.action.length>0)node_pathname=escape(node.action);break;case"INPUT":while(typeof parent_node!="undefined"&&parent_node.nodeName!="FORM"&&parent_node.nodeName!="BODY")parent_node=parent_node.parentNode;if(typeof parent_node.action!="undefined"&&parent_node.action.length>0){node_pathname=escape(parent_node.action);break};default:if(node.nodeName!="A"){if(typeof node.getAttribute=="function"&&node.getAttribute("id")!="undefined"&&node.getAttribute("id")!=null&&node.getAttribute("id").length>0){node_pathname=node.getAttribute("id");break}while(typeof node.parentNode!="undefined"&&node.parentNode!=null&&node.nodeName!="A"&&node.nodeName!="BODY")node=node.parentNode}if(typeof node.hash!="undefined"&&node.hash.length>0&&node.hostname==location.hostname){node_pathname=escape(node.hash)}else{node_hostname=typeof node.hostname!="undefined"?node.hostname:"";if(typeof node.href!="undefined"){node_pathname=escape(node.href)}}if(typeof node.getAttribute=="function"){if(node.getAttribute("title")!="undefined"&&node.getAttribute("title")!=null&&node.getAttribute("title").length>0)note_array.push("Title:"+node.getAttribute("title"));if(node.getAttribute("id")!="undefined"&&node.getAttribute("id")!=null&&node.getAttribute("id").length>0)note_array.push("ID:"+node.getAttribute("id"))}}slimstat_info="&obd="+node_hostname+"&obr="+node_pathname;pos_x=-1;var i=-1;if(typeof e.pageX!="undefined"&&typeof e.pageY!="undefined"){pos_x=e.pageX;i=e.pageY}else if(typeof e.clientX!="undefined"&&typeof e.clientY!="undefined"&&typeof document.body.scrollLeft!="undefined"&&typeof document.documentElement.scrollLeft!="undefined"&&typeof document.body.scrollTop!="undefined"&&typeof document.documentElement.scrollTop!="undefined"){pos_x=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;i=e.clientY+document.body.scrollTop+document.documentElement.scrollTop}if(pos_x>0&&i>0)slimstat_info+=(slimstat_info.length>0?"&":"?")+"po="+pos_x+","+i;note_array.push("Event:"+e.type);if(typeof n!="undefined"&&n.length>0)note_array.push(n);if(e.type!="click"&&typeof e.which!="undefined"){if(e.type=="keypress")note_array.push("Key:"+String.fromCharCode(parseInt(e.which)));else note_array.push("Type:"+e.which)}SlimStat.send_to_server("id="+SlimStat._id+"&ty="+code+slimstat_info+"&no="+escape(note_array.join(", ")),r);return true},slimstat_plusone:function(e){SlimStat.send_to_server("ty=4&obr="+escape("#google-plus-"+e.state))},add_event:function(e,t,n){if(e&&e.addEventListener){e.addEventListener(t,n,false)}else if(e&&e.attachEvent){e["e"+t+n]=n;e[t+n]=function(){e["e"+t+n](window.event)};e.attachEvent("on"+t,e[t+n])}else{e["on"+t]=e["e"+t+n]}},event_fire:function(e,t){var n=e;if(document.createEvent){var r=document.createEvent("MouseEvents");r.initEvent(t,true,false);n.dispatchEvent(r)}else if(document.createEventObject){var r=document.createEventObject();n.fireEvent("on"+t,r)}},in_array:function(e,t){for(var n=0;n<t.length;n++){if(t[n].trim()==e)return true}return false},in_array_substring:function(e,t){for(var n=0;n<t.length;n++){if(e.indexOf(t[n].trim())!=-1)return true}return false}};SlimStat.add_event(window,"load",function(){if(typeof SlimStatParams.disable_outbound_tracking=="undefined"){all_links=document.getElementsByTagName("a");var e=typeof SlimStatParams.extensions_to_track!="undefined"&&SlimStatParams.extensions_to_track.length>0?SlimStatParams.extensions_to_track.split(","):[];var t=typeof SlimStatParams.outbound_classes_to_ignore!="undefined"&&SlimStatParams.outbound_classes_to_ignore.length>0?SlimStatParams.outbound_classes_to_ignore.split(","):[];var n=typeof SlimStatParams.outbound_rel_to_ignore!="undefined"&&SlimStatParams.outbound_rel_to_ignore.length>0?SlimStatParams.outbound_rel_to_ignore.split(","):[];var r=typeof SlimStatParams.outbound_href_to_ignore!="undefined"&&SlimStatParams.outbound_href_to_ignore.length>0?SlimStatParams.outbound_href_to_ignore.split(","):[];for(var i=0;i<all_links.length;i++){(function(){var s=all_links[i];s.slimstat_actual_click=false;s.slimstat_type=s.href&&(s.hostname==location.hostname||s.href.indexOf("://")==-1)?2:0;s.slimstat_track_me=true;s.slimstat_callback=true;if(e.length>0&&s.pathname.indexOf(".")>0&&s.hostname==location.hostname){extension_current_link=s.pathname.split(".").pop().replace(/[\/\-]/g,"");s.slimstat_track_me=SlimStat.in_array(extension_current_link,e);s.slimstat_type=1}if(s.slimstat_track_me&&s.slimstat_type==2&&(typeof SlimStatParams.track_internal_links=="undefined"||SlimStatParams.track_internal_links=="false")){s.slimstat_track_me=false}if(s.slimstat_track_me&&t.length>0){classes_current_link=typeof s.className!="undefined"&&s.className.length>0?s.className.split(" "):[];for(var o=0;o<classes_current_link.length;o++){if(SlimStat.in_array_substring(classes_current_link[o],t)){s.slimstat_callback=false;break}}}if(s.slimstat_track_me&&typeof s.attributes.rel!="undefined"&&s.attributes.rel.value.length>0&&SlimStat.in_array_substring(s.attributes.rel.value,n)){s.slimstat_callback=false}if(s.slimstat_track_me&&typeof s.href!="undefined"&&s.href.length>0&&SlimStat.in_array_substring(s.href,r)){s.slimstat_callback=false}if(s.slimstat_track_me&&s.target&&!s.target.match(/^_(self|parent|top)$/i)){s.slimstat_callback=false}SlimStat.add_event(s,"click",function(e){if(this.slimstat_track_me){if(!this.slimstat_actual_click){if(this.slimstat_callback){if(typeof e.preventDefault=="function"){e.preventDefault()}this.slimstat_actual_click=!this.slimstat_actual_click;SlimStat.ss_track(e,this.slimstat_type,"",function(){SlimStat.event_fire(s,"click")})}else{SlimStat.ss_track(e,this.slimstat_type,"",function(){})}}}})})()}}});var current_data="";if(typeof SlimStatParams.id!="undefined"&&parseInt(SlimStatParams.id)>0){current_data="id="+SlimStatParams.id}else if(typeof SlimStatParams.ci!="undefined"){current_data="ci="+SlimStatParams.ci+"&ref="+SlimStat._base64_encode(document.referrer)+"&res="+SlimStat._base64_encode(window.location.href)}if(current_data.length){SlimStat.add_event(window,"load",function(){setTimeout(function(){SlimStat.send_to_server(current_data+"&sw="+(screen.width||window.innerWidth||document.documentElement.clientWidth||document.body.offsetWidth)+"&sh="+(screen.height||window.innerHeight||document.documentElement.clientHeight||document.body.offsetHeight)+"&cd="+screen.colorDepth+"&aa="+SlimStat.has_smoothing()+"&sl="+SlimStat.get_server_latency()+"&pp="+SlimStat.get_page_performance()+"&pl="+SlimStat.detect_plugins())},0)})}
1
+ var SlimStat={_id:typeof SlimStatParams.id!="undefined"?SlimStatParams.id:"-1.0",_base64_key_str:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_plugins:{acrobat:{substrings:["Adobe","Acrobat"],active_x_strings:["AcroPDF.PDF","PDF.PDFCtrl.5"]},director:{substrings:["Shockwave","Director"],active_x_strings:["SWCtl.SWCtl"]},flash:{substrings:["Shockwave","Flash"],active_x_strings:["ShockwaveFlash.ShockwaveFlash"]},mediaplayer:{substrings:["Windows Media"],active_x_strings:["WMPlayer.OCX"]},quicktime:{substrings:["QuickTime"],active_x_strings:["QuickTime.QuickTime"]},real:{substrings:["RealPlayer"],active_x_strings:["rmocx.RealPlayer G2 Control","RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)","RealVideo.RealVideo(tm) ActiveX Control (32-bit)"]},silverlight:{substrings:["Silverlight"],active_x_strings:["AgControl.AgControl"]}},_utf8_encode:function(e){var t,n,r="";e=e.replace(/\r\n/g,"\n");for(t=0;t<e.length;t++){n=e.charCodeAt(t);if(n<128){r+=String.fromCharCode(n)}else if(n>127&&n<2048){r+=String.fromCharCode(n>>6|192);r+=String.fromCharCode(n&63|128)}else{r+=String.fromCharCode(n>>12|224);r+=String.fromCharCode(n>>6&63|128);r+=String.fromCharCode(n&63|128)}}return r},_base64_encode:function(e){var t,n,r,i,s,o,u,a="",f=0;e=SlimStat._utf8_encode(e);while(f<e.length){t=e.charCodeAt(f++);n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=t>>2;s=(t&3)<<4|n>>4;o=(n&15)<<2|r>>6;u=r&63;if(isNaN(n)){o=u=64}else if(isNaN(r)){u=64}a=a+SlimStat._base64_key_str.charAt(i)+SlimStat._base64_key_str.charAt(s)+SlimStat._base64_key_str.charAt(o)+this._base64_key_str.charAt(u)}return a},_detect_single_plugin_not_ie:function(e){var t,n,r,i,s;for(i in navigator.plugins){n=""+navigator.plugins[i].name+navigator.plugins[i].description;r=0;for(s in SlimStat._plugins[e].substrings){if(n.indexOf(SlimStat._plugins[e].substrings[s])!=-1){r++}}if(r==SlimStat._plugins[e].substrings.length){return true}}return false},_detect_single_plugin_ie:function(e){var t;for(t in SlimStat._plugins[e].active_x_strings){try{new ActiveXObject(SlimStat._plugins[e].active_x_strings[t]);return true}catch(n){return false}}},_detect_single_plugin:function(e){if(navigator.plugins.length){this.detect=this._detect_single_plugin_not_ie}else{this.detect=this._detect_single_plugin_ie}return this.detect(e)},detect_plugins:function(){var e,t="";for(e in SlimStat._plugins){if(SlimStat._detect_single_plugin(e)){t+=e+"|"}}return t},has_smoothing:function(){if(typeof screen.fontSmoothingEnabled!="undefined"){return Number(screen.fontSmoothingEnabled)}else{if(typeof SlimStatParams.detect_smoothing!="undefined")return 0;try{var e=document.createElement("canvas");e.width="35";e.height="35";e.style.display="none";document.body.appendChild(e);var t=e.getContext("2d");t.textBaseline="top";t.font="32px Arial";t.fillStyle="black";t.strokeStyle="black";t.fillText("O",0,0);for(var n=8;n<=32;n++){for(var r=1;r<=32;r++){var i=t.getImageData(r,n,1,1).data;var s=i[3];if(s!=255&&s!=0)return 1}}return 0}catch(o){return 0}}},get_page_performance:function(){slim_performance=window.performance||window.mozPerformance||window.msPerformance||window.webkitPerformance||{};if(typeof slim_performance.timing=="undefined"){return 0}return slim_performance.timing.loadEventEnd-slim_performance.timing.responseEnd},get_server_latency:function(){slim_performance=window.performance||window.mozPerformance||window.msPerformance||window.webkitPerformance||{};if(typeof slim_performance.timing=="undefined"){return 0}return slim_performance.timing.responseEnd-slim_performance.timing.connectEnd},send_to_server:function(e,t){if(typeof SlimStatParams.ajaxurl=="undefined"||typeof e=="undefined"){if(typeof t=="function"){t()}return false}try{if(window.XMLHttpRequest){request=new XMLHttpRequest}else if(window.ActiveXObject){request=new ActiveXObject("Microsoft.XMLHTTP")}}catch(n){if(typeof t=="function"){t()}return false}if(request){var r="action=slimtrack_js&data="+SlimStat._base64_encode(e);request.open("POST",SlimStatParams.ajaxurl,true);request.setRequestHeader("Content-type","application/x-www-form-urlencoded");request.send(r);request.onreadystatechange=function(){if(request.readyState==4){if(typeof SlimStatParams.id=="undefined"){parsed_id=parseInt(request.responseText);if(!isNaN(parsed_id)&&parsed_id>0){SlimStat._id=request.responseText}}else{SlimStat._id=SlimStatParams.id}if(typeof t=="function"){t()}}};return true}return false},ss_track:function(e,t,n,r){if(!e){e=window.event}code=typeof t=="undefined"?0:parseInt(t);note_array=[];parsed_id=parseInt(SlimStat._id);if(isNaN(parsed_id)||parsed_id<=0){if(typeof r=="function"){r()}return false}node=typeof e.target!="undefined"?e.target:typeof e.srcElement!="undefined"?e.srcElement:false;if(!node){if(typeof r=="function"){r()}return false}if(node.nodeType==3)node=node.parentNode;parent_node=node.parentNode;node_hostname="";node_pathname=location.pathname;switch(node.nodeName){case"FORM":if(node.action.length>0)node_pathname=escape(node.action);break;case"INPUT":while(typeof parent_node!="undefined"&&parent_node.nodeName!="FORM"&&parent_node.nodeName!="BODY")parent_node=parent_node.parentNode;if(typeof parent_node.action!="undefined"&&parent_node.action.length>0){node_pathname=escape(parent_node.action);break};default:if(node.nodeName!="A"){if(typeof node.getAttribute=="function"&&node.getAttribute("id")!="undefined"&&node.getAttribute("id")!=null&&node.getAttribute("id").length>0){node_pathname=node.getAttribute("id");break}while(typeof node.parentNode!="undefined"&&node.parentNode!=null&&node.nodeName!="A"&&node.nodeName!="BODY")node=node.parentNode}if(typeof node.hash!="undefined"&&node.hash.length>0&&node.hostname==location.hostname){node_pathname=escape(node.hash)}else{node_hostname=typeof node.hostname!="undefined"?node.hostname:"";if(typeof node.href!="undefined"){node_pathname=escape(node.href)}}if(typeof node.getAttribute=="function"){if(node.getAttribute("title")!="undefined"&&node.getAttribute("title")!=null&&node.getAttribute("title").length>0)note_array.push("Title:"+node.getAttribute("title"));if(node.getAttribute("id")!="undefined"&&node.getAttribute("id")!=null&&node.getAttribute("id").length>0)note_array.push("ID:"+node.getAttribute("id"))}}slimstat_info="&obd="+node_hostname+"&obr="+node_pathname;pos_x=-1;var i=-1;if(typeof e.pageX!="undefined"&&typeof e.pageY!="undefined"){pos_x=e.pageX;i=e.pageY}else if(typeof e.clientX!="undefined"&&typeof e.clientY!="undefined"&&typeof document.body.scrollLeft!="undefined"&&typeof document.documentElement.scrollLeft!="undefined"&&typeof document.body.scrollTop!="undefined"&&typeof document.documentElement.scrollTop!="undefined"){pos_x=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;i=e.clientY+document.body.scrollTop+document.documentElement.scrollTop}if(pos_x>0&&i>0)slimstat_info+=(slimstat_info.length>0?"&":"?")+"po="+pos_x+","+i;note_array.push("Event:"+e.type);if(typeof n!="undefined"&&n.length>0)note_array.push(n);if(e.type!="click"&&typeof e.which!="undefined"){if(e.type=="keypress")note_array.push("Key:"+String.fromCharCode(parseInt(e.which)));else note_array.push("Type:"+e.which)}SlimStat.send_to_server("id="+SlimStat._id+"&ty="+code+slimstat_info+"&no="+escape(note_array.join(", ")),r);return true},slimstat_plusone:function(e){SlimStat.send_to_server("ty=4&obr="+escape("#google-plus-"+e.state))},add_event:function(e,t,n){if(e&&e.addEventListener){e.addEventListener(t,n,false)}else if(e&&e.attachEvent){e["e"+t+n]=n;e[t+n]=function(){e["e"+t+n](window.event)};e.attachEvent("on"+t,e[t+n])}else{e["on"+t]=e["e"+t+n]}},event_fire:function(e,t){var n=e;if(document.createEvent){var r=document.createEvent("MouseEvents");r.initEvent(t,true,false);n.dispatchEvent(r)}else if(document.createEventObject){var r=document.createEventObject();n.fireEvent("on"+t,r)}},in_array:function(e,t){for(var n=0;n<t.length;n++){if(t[n].trim()==e)return true}return false},in_array_substring:function(e,t){for(var n=0;n<t.length;n++){if(e.indexOf(t[n].trim())!=-1)return true}return false}};SlimStat.add_event(window,"load",function(){if(typeof SlimStatParams.disable_outbound_tracking=="undefined"){all_links=document.getElementsByTagName("a");var e=typeof SlimStatParams.extensions_to_track!="undefined"&&SlimStatParams.extensions_to_track.length>0?SlimStatParams.extensions_to_track.split(","):[];var t=typeof SlimStatParams.outbound_classes_to_ignore!="undefined"&&SlimStatParams.outbound_classes_to_ignore.length>0?SlimStatParams.outbound_classes_to_ignore.split(","):[];var n=typeof SlimStatParams.outbound_rel_to_ignore!="undefined"&&SlimStatParams.outbound_rel_to_ignore.length>0?SlimStatParams.outbound_rel_to_ignore.split(","):[];var r=typeof SlimStatParams.outbound_href_to_ignore!="undefined"&&SlimStatParams.outbound_href_to_ignore.length>0?SlimStatParams.outbound_href_to_ignore.split(","):[];var i=typeof SlimStatParams.outbound_classes_to_not_track!="undefined"&&SlimStatParams.outbound_classes_to_not_track.length>0?SlimStatParams.outbound_classes_to_not_track.split(","):[];var s=typeof SlimStatParams.outbound_rel_to_not_track!="undefined"&&SlimStatParams.outbound_rel_to_not_track.length>0?SlimStatParams.outbound_rel_to_not_track.split(","):[];var o=typeof SlimStatParams.outbound_href_to_not_track!="undefined"&&SlimStatParams.outbound_href_to_not_track.length>0?SlimStatParams.outbound_href_to_not_track.split(","):[];for(var u=0;u<all_links.length;u++){(function(){var a=all_links[u];a.slimstat_actual_click=false;a.slimstat_type=a.href&&(a.hostname==location.hostname||a.href.indexOf("://")==-1)?2:0;a.slimstat_track_me=true;a.slimstat_callback=true;if(e.length>0&&a.pathname.indexOf(".")>0&&a.hostname==location.hostname){extension_current_link=a.pathname.split(".").pop().replace(/[\/\-]/g,"");a.slimstat_track_me=SlimStat.in_array(extension_current_link,e);a.slimstat_type=1}if(a.slimstat_track_me&&a.slimstat_type==2&&(typeof SlimStatParams.track_internal_links=="undefined"||SlimStatParams.track_internal_links=="false")){a.slimstat_track_me=false}if(a.slimstat_track_me&&t.length>0){classes_current_link=typeof a.className!="undefined"&&a.className.length>0?a.className.split(" "):[];for(var f=0;f<classes_current_link.length;f++){if(SlimStat.in_array_substring(classes_current_link[f],t)){a.slimstat_callback=false}if(SlimStat.in_array_substring(classes_current_link[f],i)){a.slimstat_track_me=false;break}}}if(a.slimstat_track_me&&typeof a.attributes.rel!="undefined"&&a.attributes.rel.value.length>0){if(SlimStat.in_array_substring(a.attributes.rel.value,n)){a.slimstat_callback=false}if(SlimStat.in_array_substring(a.attributes.rel.value,s)){a.slimstat_track_me=false}}if(a.slimstat_track_me&&typeof a.href!="undefined"&&a.href.length>0){if(SlimStat.in_array_substring(a.href,r)){a.slimstat_callback=false}if(SlimStat.in_array_substring(a.href,o)){a.slimstat_track_me=false}}if(a.slimstat_track_me&&a.target&&!a.target.match(/^_(self|parent|top)$/i)){a.slimstat_callback=false}SlimStat.add_event(a,"click",function(e){if(this.slimstat_track_me){if(!this.slimstat_actual_click){if(this.slimstat_callback){if(typeof e.preventDefault=="function"){e.preventDefault()}this.slimstat_actual_click=!this.slimstat_actual_click;SlimStat.ss_track(e,this.slimstat_type,"",function(){SlimStat.event_fire(a,"click")})}else{SlimStat.ss_track(e,this.slimstat_type,"",function(){})}}}})})()}}});var current_data="";if(typeof SlimStatParams.id!="undefined"&&parseInt(SlimStatParams.id)>0){current_data="id="+SlimStatParams.id}else if(typeof SlimStatParams.ci!="undefined"){current_data="ci="+SlimStatParams.ci+"&ref="+SlimStat._base64_encode(document.referrer)+"&res="+SlimStat._base64_encode(window.location.href)}if(current_data.length){SlimStat.add_event(window,"load",function(){setTimeout(function(){SlimStat.send_to_server(current_data+"&sw="+(screen.width||window.innerWidth||document.documentElement.clientWidth||document.body.offsetWidth)+"&sh="+(screen.height||window.innerHeight||document.documentElement.clientHeight||document.body.offsetHeight)+"&cd="+screen.colorDepth+"&aa="+SlimStat.has_smoothing()+"&sl="+SlimStat.get_server_latency()+"&pp="+SlimStat.get_page_performance()+"&pl="+SlimStat.detect_plugins())},0)})}
wp-slimstat.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: WP Slimstat
4
  Plugin URI: http://wordpress.org/plugins/wp-slimstat/
5
  Description: The leading web analytics plugin for WordPress
6
- Version: 3.9.2
7
  Author: Camu
8
  Author URI: http://slimstat.getused.to.it/
9
  */
@@ -11,7 +11,7 @@ Author URI: http://slimstat.getused.to.it/
11
  if (!empty(wp_slimstat::$options)) return true;
12
 
13
  class wp_slimstat{
14
- public static $version = '3.9.2';
15
  public static $options = array();
16
 
17
  public static $wpdb = '';
@@ -1133,9 +1133,12 @@ class wp_slimstat{
1133
  'ignore_referers' => '',
1134
  'enable_outbound_tracking' => $val_yes,
1135
  'track_internal_links' => $val_no,
1136
- 'ignore_outbound_classes' => 'noslimstat,ab-item',
1137
  'ignore_outbound_rel' => '',
1138
  'ignore_outbound_href' => '',
 
 
 
1139
  'anonymize_ip' => $val_no,
1140
  'ignore_prefetch' => $val_yes,
1141
 
@@ -1294,6 +1297,15 @@ class wp_slimstat{
1294
  if (!empty(self::$options['ignore_outbound_href'])){
1295
  $params['outbound_href_to_ignore'] = trim(self::$options['ignore_outbound_href']);
1296
  }
 
 
 
 
 
 
 
 
 
1297
 
1298
  $params = apply_filters('slimstat_js_params', $params);
1299
 
3
  Plugin Name: WP Slimstat
4
  Plugin URI: http://wordpress.org/plugins/wp-slimstat/
5
  Description: The leading web analytics plugin for WordPress
6
+ Version: 3.9.3
7
  Author: Camu
8
  Author URI: http://slimstat.getused.to.it/
9
  */
11
  if (!empty(wp_slimstat::$options)) return true;
12
 
13
  class wp_slimstat{
14
+ public static $version = '3.9.3';
15
  public static $options = array();
16
 
17
  public static $wpdb = '';
1133
  'ignore_referers' => '',
1134
  'enable_outbound_tracking' => $val_yes,
1135
  'track_internal_links' => $val_no,
1136
+ 'ignore_outbound_classes' => '',
1137
  'ignore_outbound_rel' => '',
1138
  'ignore_outbound_href' => '',
1139
+ 'do_not_track_outbound_classes' => 'noslimstat,ab-item',
1140
+ 'do_not_track_outbound_rel' => '',
1141
+ 'do_not_track_outbound_href' => '',
1142
  'anonymize_ip' => $val_no,
1143
  'ignore_prefetch' => $val_yes,
1144
 
1297
  if (!empty(self::$options['ignore_outbound_href'])){
1298
  $params['outbound_href_to_ignore'] = trim(self::$options['ignore_outbound_href']);
1299
  }
1300
+ if (!empty(self::$options['do_not_track_outbound_classes'])){
1301
+ $params['outbound_classes_to_not_track'] = str_replace(' ', '', self::$options['do_not_track_outbound_classes']);
1302
+ }
1303
+ if (!empty(self::$options['do_not_track_outbound_rel'])){
1304
+ $params['outbound_rel_to_not_track'] = trim(self::$options['do_not_track_outbound_rel']);
1305
+ }
1306
+ if (!empty(self::$options['do_not_track_outbound_href'])){
1307
+ $params['outbound_href_to_not_track'] = trim(self::$options['do_not_track_outbound_href']);
1308
+ }
1309
 
1310
  $params = apply_filters('slimstat_js_params', $params);
1311