xref: /plugin/statistics/action.php (revision 3c0acc14a7443f3b1e8e9d865c403b7c2162ffda)
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               '&amp;r='.rawurlencode($_SERVER['HTTP_REFERER']).'&rnd='.time();
73
74        echo '<noscript><img src="'.$url.'" width="1" height="1" /></noscript>';
75    }
76}
77
78