summaryrefslogtreecommitdiffstats
path: root/wp-inst/wp-content/smarty-plugins/function.referer.php
blob: cda8e59712c5335fad30c1b4df5805c8fc898da9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php

/* $Id: function.referer.php,v 1.4 2005/03/11 17:52:56 donncha Exp $ */


// Based on code by Nathan Young @ http://ncyoung.com/entry/57
// Modified by Donncha O Caoimh, donncha@linux.ie


function getreferers( $wpblog, $siteDomain )
{
    global $wpdb;

    /*if( $p || $cat || $m )
    {
        $sql = "select baseDomain,referingURL, visitTimes from referer_visitLog WHERE visitURL = '".$currentURL."' ORDER BY visitTime ASC LIMIT 0 , 10";
    }
    else
    {*/
        $sql = "select referingURL, visitTimes, visitTime from referer_visitLog WHERE blogID='".$wpblog."' and  visitTime >= NOW() - INTERVAL 24 HOUR ORDER BY visitTime DESC";
    //}
    $result = $wpdb->get_results($sql);
    if( $result )
    {
        foreach( $result as $details )
        {
            if( $details->referingURL == 'DIRECT' )
            {
		$details->baseDomain = $details->referingURL;
            }
            else
            {
                $t = preg_replace("/http:\/\//i", "", $details->referingURL );
                $t = preg_replace("/^www\./i", "", $t );
                $t = preg_replace("/\/.*/i", "", $t );
		$details->baseDomain = $t;
            }
            if( $details->baseDomain != 'DIRECT' )
            {
                if( substr( $details->baseDomain, 0, 6 ) == 'google' )
                {
                    $refererlinks[ 'google' ][ 'visitTimes' ] += $details->visitTimes;
                    $refererlinks[ 'google' ][ 'referingURL' ] = "http://www.google.com/";
                    $refererlinks[ 'google' ][ 'baseDomain' ] = "google.com";
                }
                elseif( strpos( $details->baseDomain, "ebsearch.com" ) )
                {
                    $refererlinks[ 'websearch' ][ 'visitTimes' ] += $details->visitTimes;
                    $refererlinks[ 'websearch' ][ 'referingURL' ] = "http://www.websearch.com/";
                    $refererlinks[ 'websearch' ][ 'baseDomain' ] = "websearch.com";
                }
                elseif( strpos( $details->baseDomain, "ahoo.com" ) )
                {
                    $refererlinks[ 'yahoo' ][ 'visitTimes' ] += $details->visitTimes;
                    $refererlinks[ 'yahoo' ][ 'referingURL' ] = "http://www.yahoo.com/";
                    $refererlinks[ 'yahoo' ][ 'baseDomain' ] = "yahoo.com";
                }
                elseif( strpos( $details->baseDomain, "sxml.infospace.com" ) )
                {
                    $refererlinks[ 'yahoo' ][ 'visitTimes' ] += $details->visitTimes;
                    $refererlinks[ 'yahoo' ][ 'referingURL' ] = "http://msxml.infospace.com/";
                    $refererlinks[ 'yahoo' ][ 'baseDomain' ] = "infospace.com";
                }
                elseif( strpos( $details->baseDomain, $siteDomain ) === false )
                {
                    $refererlinks[ $details->referingURL ][ "referingURL" ] = $details->referingURL;
                    $refererlinks[ $details->referingURL ][ "visitTimes" ]  += $details->visitTimes;
                    $refererlinks[ $details->referingURL ][ "baseDomain" ]  = $details->baseDomain;
                }
            }
        }
        if(is_array( $refererlinks ) == false )
            $refererlinks = array();
        reset( $refererlinks );
        while( list( $key, $val ) = each( $refererlinks ) ) 
        { 
            if( $val[ 'visitTimes' ] < 3 )
                unset( $refererlinks[ $key ] );
        }
    }
    else
    {
        $refererlinks = '';
    }
    return $refererlinks;
}

function smarty_function_referer($params, &$smarty)
{
    global $post, $wpdb, $wpblog;


    $ref = getenv('HTTP_REFERER');
    $currentURL = $_SERVER['REQUEST_URI'];
    $fullCurrentURL = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

    $tomorrow  = date( "d", mktime (0,0,0,date("m")  ,date("d")+1,date("Y")) );
    if( $site == 'root' )
    {
        $sql = "delete from referer_visitLog WHERE dayofmonth = '$tomorrow'"; // delete referers from a (month - 1 day) ago.
        $result = $wpdb->query( $query );
    }

    $siteurl = get_settings( "siteurl" );
    $siteDomain = str_replace( "http://", "", $siteurl );
    if( strpos( $siteDomain, "/" ) )
        $siteDomain = substr( $siteDomain, 0, strpos( $siteDomain, "/" ) );

    // find referers for current page

    if( @include_once( "Cache/Function.php" ) )
    {
        $cache = new Cache_Function( 'file', array('cache_dir' => ABSPATH . "/wp-content/smarty-cache", 'filename_prefix' => 'referers_cache_' ), 600 ); 
	$refererlinks = $cache->call( "getreferers", $wpblog, $siteDomain );
    }
    else
    {
	$refererlinks = getreferers( $wpblog, $siteDomain );
    }


    if( is_array( $refererlinks ) )
        reset( $refererlinks );

    $smarty->assign( "refererlinks", $refererlinks );
}

?>