]> git.openstreetmap.org Git - nominatim.git/blob - lib/log.php
80e2ac54db8490284d0d4400bed9332c5ac3c5cc
[nominatim.git] / lib / log.php
1 <?php
2
3         function logStart(&$oDB, $sType = '', $sQuery = '', $aLanguageList = array())
4         {
5                 $aStartTime = explode('.',microtime(true));
6                 if (!isset($aStartTime[1])) $aStartTime[1] = '0';
7
8                 $sOutputFormat = '';
9                 if (isset($_GET['format'])) $sOutputFormat = $_GET['format'];
10
11                 if ($sType == 'reverse')
12                 {
13                         $sOutQuery = (isset($_GET['lat'])?$_GET['lat']:'').'/';
14                         if (isset($_GET['lon'])) $sOutQuery .= $_GET['lon'];
15                         if (isset($_GET['zoom'])) $sOutQuery .= '/'.$_GET['zoom'];
16                 }
17                 else
18                         $sOutQuery = $sQuery;
19
20                 $hLog = array(
21                                 date('Y-m-d H:i:s',$aStartTime[0]).'.'.$aStartTime[1],
22                                 $_SERVER["REMOTE_ADDR"],
23                                 $_SERVER['QUERY_STRING'],
24                                 $sOutQuery,
25                                 $sType,
26                                 $sOutputFormat
27                                 );
28
29                 if (CONST_Log_DB)
30                 {
31                         if (isset($_GET['email']))
32                                 $sUserAgent = $_GET['email'];
33                         elseif (isset($_SERVER['HTTP_REFERER']))
34                                 $sUserAgent = $_SERVER['HTTP_REFERER'];
35                         elseif (isset($_SERVER['HTTP_USER_AGENT']))
36                                 $sUserAgent = $_SERVER['HTTP_USER_AGENT'];
37                         else
38                                 $sUserAgent = '';
39                         $sSQL = 'insert into new_query_log (type,starttime,query,ipaddress,useragent,language,format,searchterm)';
40                         $sSQL .= ' values ('.getDBQuoted($sType).','.getDBQuoted($hLog[0]).','.getDBQuoted($hLog[2]);
41                         $sSQL .= ','.getDBQuoted($hLog[1]).','.getDBQuoted($sUserAgent).','.getDBQuoted(join(',',$aLanguageList)).','.getDBQuoted($sOutputFormat).','.getDBQuoted($hLog[3]).')';
42                         $oDB->query($sSQL);
43                 }
44
45                 return $hLog;
46         }
47
48         function logEnd(&$oDB, $hLog, $iNumResults)
49         {
50                 $aEndTime = explode('.',microtime(true));
51                 if (!$aEndTime[1]) $aEndTime[1] = '0';
52                 $sEndTime = date('Y-m-d H:i:s',$aEndTime[0]).'.'.$aEndTime[1];
53
54                 if (CONST_Log_DB)
55                 {
56                         $sSQL = 'update new_query_log set endtime = '.getDBQuoted($sEndTime).', results = '.$iNumResults;
57                         $sSQL .= ' where starttime = '.getDBQuoted($hLog[0]);
58                         $sSQL .= ' and ipaddress = '.getDBQuoted($hLog[1]);
59                         $sSQL .= ' and query = '.getDBQuoted($hLog[2]);
60                         $oDB->query($sSQL);
61                 }
62
63                 if (CONST_Log_File)
64                 {
65                         $aOutdata = array($hLog[0], $sEndTime, $iNumResults, $hLog[4], $hLog[2]);
66                         $fLog = fopen(CONST_Log_File, 'a');
67                         flock($fLog, LOCK_EX);
68                         fputcsv($fLog, $aOutdata);
69                         fflush($fLog);
70                         flock($fLog, LOCK_UN);
71                         fclose($fLog);
72                 }
73
74         }