1<?php 2/** 3 * 4 * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 5 * @author Andreas Gohr <gohr@cosmocode.de> 6 */ 7 8// must be run within Dokuwiki 9if(!defined('DOKU_INC')) die(); 10 11if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 12require_once(DOKU_PLUGIN.'action.php'); 13 14class action_plugin_statistics extends DokuWiki_Action_Plugin { 15 16 /** 17 * return some info 18 */ 19 function getInfo(){ 20 return confToHash(dirname(__FILE__).'/info.txt'); 21 } 22 23 /** 24 * register the eventhandlers and initialize some options 25 */ 26 function register(&$controller){ 27 28 $controller->register_hook('TPL_METAHEADER_OUTPUT', 29 'BEFORE', 30 $this, 31 'handle_metaheaders', 32 array()); 33 } 34 35 /** 36 * Extend the meta headers 37 */ 38 function handle_metaheaders(&$event, $param){ 39 global $ACT; 40 global $ID; 41 if($ACT != 'show') return; //only log page views for now 42 43 $url = DOKU_BASE.'lib/plugins/statistics/log.php?p='.rawurlencode($ID).'&rnd='.time(); 44 45 // we create an image object and load the logger here 46 $data = "var plugin_statistics_image = new Image(); 47 var plugin_statistics_uid = DokuCookie.getValue('plgstats'); 48 if(!plugin_statistics_uid){ 49 plugin_statistics_uid = new Date().getTime()+'-'+Math.floor(Math.random()*32000); 50 DokuCookie.setValue('plgstats',plugin_statistics_uid); 51 if(!DokuCookie.getCookie(DokuCookie.name)){ 52 plugin_statistics_uid = ''; 53 } 54 } 55 plugin_statistics_image.src = '$url&r='+encodeURIComponent(document.referrer)+ 56 '&sx='+screen.width+ 57 '&sy='+screen.height+ 58 '&vx='+window.innerWidth+ 59 '&vy='+window.innerHeight+ 60 '&uid='+plugin_statistics_uid+ 61 '&js=1';"; 62 63 $event->data['script'][] = array( 'type'=>'text/javascript', 'charset'=>'utf-8', '_data'=>$data); 64 } 65 66 /** 67 * @fixme call this in the webbug call 68 */ 69 function putpixel(){ 70 global $ID; 71 $url = DOKU_BASE.'lib/plugins/statistics/log.php?p='.rawurlencode($ID). 72 '&r='.rawurlencode($_SERVER['HTTP_REFERER']).'&rnd='.time(); 73 74 echo '<noscript><img src="'.$url.'" width="1" height="1" /></noscript>'; 75 } 76} 77 78