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 plugin_statistics_image.src = '$url&r='+encodeURIComponent(document.referrer)+ 48 '&sx='+screen.width+ 49 '&sy='+screen.height+ 50 '&vx='+window.innerWidth+ 51 '&vy='+window.innerHeight;"; 52 53 $event->data['script'][] = array( 'type'=>'text/javascript', 'charset'=>'utf-8', '_data'=>$data); 54 } 55 56 /** 57 * @fixme call this in the webbug call 58 */ 59 function putpixel(){ 60 global $ID; 61 $url = DOKU_BASE.'lib/plugins/statistics/log.php?p='.rawurlencode($ID). 62 '&r='.rawurlencode($_SERVER['HTTP_REFERER']).'&rnd='.time(); 63 64 echo '<noscript><img src="'.$url.'" width="1" height="1" /></noscript>'; 65 } 66} 67 68