[Piwik-svn] r360 - in trunk: . modules/LogStats

svnmaster at piwik.org svnmaster at piwik.org
Tue Mar 11 22:50:10 CET 2008


Author: julien
Date: 2008-03-11 22:50:07 +0100 (Tue, 11 Mar 2008)
New Revision: 360

Modified:
   trunk/modules/LogStats/Action.php
   trunk/piwik.js
Log:
-Tracker code update : Patch by Maciej Zawadzi?\197?\132ski

Modified: trunk/modules/LogStats/Action.php
===================================================================
--- trunk/modules/LogStats/Action.php	2008-03-11 19:07:20 UTC (rev 359)
+++ trunk/modules/LogStats/Action.php	2008-03-11 21:50:07 UTC (rev 360)
@@ -120,6 +120,11 @@
 		{
 			$this->actionType = self::TYPE_OUTLINK;
 			$url = $this->outlinkUrl;
+			//remove the last '/' character if it's present
+			if(substr($url,-1) == '/')
+			{
+				$url = substr($url,0,-1);
+			}
 			$actionName = $this->nameDownloadOutlink;
 			if( empty($actionName) )
 			{

Modified: trunk/piwik.js
===================================================================
--- trunk/piwik.js	2008-03-11 19:07:20 UTC (rev 359)
+++ trunk/piwik.js	2008-03-11 21:50:07 UTC (rev 360)
@@ -1,6 +1,9 @@
 // Web analytics by Piwik - http://piwik.org
 // Copyleft 2007, All rights reversed.
 var _pk_use_title_as_name = 0;
+var _pk_install_tracker = 1;
+var _pk_tracker_pause = 250;
+var _pk_download_extensions = "7z|aac|avi|csv|doc|exe|flv|gif|gz|jpe?g|js|mp(3|4|e?g)|mov|pdf|phps|png|ppt|rar|sit|tar|torrent|txt|wma|wmv|xls|xml|zip";
 
 // Beginning script
 function _pk_plug_normal(_pk_pl) {
@@ -108,4 +111,79 @@
 	var _pk_src = _pk_getUrlLog(_pk_action_name, _pk_site, _pk_pkurl, _pk_custom_vars );
 	document.writeln('<img src="'+_pk_src+'" alt="Piwik" style="border:0" />');
 	if(!_pk_action_name || _pk_action_name=="") _pk_called=1;
+	
+	if(_pk_install_tracker) _pk_init_tracker(_pk_site, _pk_pkurl);
+}
+
+
+function _pk_add_event(elm, evType, fn, useCapture) 
+{
+	if (elm.addEventListener) { 
+		elm.addEventListener(evType, fn, useCapture); 
+		return true; 
+	} else if (elm.attachEvent) { 
+		var r = elm.attachEvent('on' + evType, fn); 
+		return r; 
+	} else {
+		elm['on' + evType] = fn;
+	}
+}
+
+var _pk_tracker_site, _pk_tracker_url;
+
+function _pk_init_tracker(_pk_site, _pk_pkurl) 
+{
+	_pk_tracker_site = _pk_site;
+	_pk_tracker_url = _pk_pkurl;
+
+	if (document.getElementsByTagName) {
+		linksElements = document.getElementsByTagName('a')
+		for (var i = 0; i < linksElements.length; i++) {
+			_pk_add_event(linksElements[i], 'mousedown', _pk_click, false);
+		}
+	}
+}
+
+function _pk_dummy() { return true; }
+
+function _pk_pause(_pk_time_msec) {
+	var _pk_now = new Date();
+	var _pk_expire = _pk_now.getTime() + _pk_time_msec;
+	while(_pk_now.getTime() < _pk_expire)
+		_pk_now = new Date();
+}
+
+// _pk_type only 'download' and 'link' types supported
+function piwik_track(url, _pk_site, _pk_url, _pk_type) 
+{
+	var _pk_image = new Image();
+	_pk_image.onLoad = function() { _pk_dummy(); };
+	_pk_image.src = _pk_url + '?idsite=' + _pk_site + '&' + _pk_type + '=' + url + '&rand=' + Math.random();
+	_pk_pause(_pk_tracker_pause);
+}
+
+function _pk_click(e)
+{
+	var source;
+
+	if (typeof e == 'undefined')
+		var e = window.event;
+
+	if (typeof e.target != 'undefined') 
+		source = e.target;
+	else if (typeof e.srcElement != 'undefined')
+		source = e.srcElement;
+	else return true;
+
+	var target = new String(source.getAttribute('href'));
+	//var title = source.childNodes[0].nodeValue;
+
+	var _pk_download = new RegExp('\\.(' + _pk_download_extensions + ')$', 'i');
+	var _pk_link_type = (_pk_download.test(target) ? 'download' : 'link');
+
+	if( target != 'null' && (source.hostname != window.location.hostname || _pk_link_type == 'download') ) {
+		piwik_track(target, _pk_tracker_site, _pk_tracker_url, _pk_link_type);
+	}
+
+	return true;
 }
\ No newline at end of file



More information about the Piwik-svn mailing list