1<?php
2/**
3 * Referrers for DokuWiki
4 *
5 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
6 * @author     Terence J. Grant<tjgrant@tatewake.com>
7 */
8
9function re_beginsWith($str, $sub)
10{
11    return (substr($str, 0, strlen($sub)) === $sub);
12}
13
14function re_log_referrers_new($refignore)
15{
16    global $conf;
17    global $_SERVER;
18
19    $refhi = getenv("HTTP_REFERER");
20    $ref = strtolower($refhi);
21    $a = 'http://'.$refignore;
22    $b = 'http://www.'.$refignore;
23
24    if (re_beginsWith($ref, $refignore) == false && re_beginsWith($ref, $a) == false && re_beginsWith($ref, $b) == false) {
25        if (strcmp($refhi, "") == 0) {
26            $refhi = "NULL";
27        } else {
28            $refhi = "[[".$refhi."]]";
29        }
30
31        $curdate = date("l");
32        $curdatefile = $conf['datadir']."/wiki/referrers.txt";
33
34        if (is_writable($curdatefile)) {
35            $datas = file($curdatefile);
36            $data = trim($datas[0]);
37
38            if (strcmp($data, "====== Referrers : $curdate ======") == 0) {
39                $fp = fopen($curdatefile, "a");
40            } else {
41                $fp = fopen($curdatefile, "w");
42                fwrite($fp, "====== Referrers : $curdate ======\n\n");
43                fwrite($fp, "//If you find [[https://www.dokuwiki.org/plugin:referrers|Referrers for DokuWiki]] useful, please consider [[https://www.paypal.com/xclick/business=tjgrant%40tatewake.com&item_name=Referrers%20for%20DokuWiki%20Donation&no_shipping=1&no_note=1&tax=0&currency_code=USD&lc=US|donating]].//\n");
44                fwrite($fp, "^ hostname ^ ip address ^ referrer ^\n");
45            }
46
47            $rh = getenv("REMOTE_ADDR");
48
49            fwrite($fp, "| %%".gethostbyaddr($rh)."%% | ");
50            fwrite($fp, $rh);
51
52            $UA = "";
53
54            if (isset($_SERVER['HTTP_USER_AGENT'])) {
55                $UA = $_SERVER['HTTP_USER_AGENT'];
56            }
57
58            if (re_beginsWith($UA, "Mozilla") == false &&
59                re_beginsWith($UA, "Opera") == false) {
60                fwrite($fp, "((%%".$UA."%%)) ");
61            }
62
63            fwrite($fp, "| ".$refhi." |");
64            fwrite($fp, "\n");
65
66            fclose($fp);
67        } elseif (file_exists($curdatefile)) {
68            msg("For the Referrers plugin to work, please create the page :wiki:referrers.", -1);
69        }
70    }
71}
72