ffc9bedea7b0f7fd01a56dc949f9fc1c4337b5c7
[infodrom.org/www.zeitungsliste.de] / lib / core.inc
1 <?php
2
3 function db_connect()
4 {
5   global $cfg;
6
7   $dsn = "dbname=".$cfg['dbname'];
8   if (isset($cfg['dbhost'])) $dsn .= " host=".$cfg['dbhost'];
9   if (isset($cfg['dbport'])) $dsn .= " port=".$cfg['dbport'];
10   if (isset($cfg['dbuser'])) $dsn .= " user=".$cfg['dbuser'];
11   if (isset($cfg['dbpass'])) $dsn .= " password=".$cfg['dbpass'];
12
13   $dbh = pg_pconnect ($dsn)
14     or carp("Unable to connect to SQL server");
15   pg_exec ($dbh, "SET DateStyle='ISO'");
16
17   return $dbh;
18 }
19
20 function db_query($query)
21 {
22   global $cfg;
23
24   // error_log($query);
25   $sth = pg_exec ($cfg['dbh'], $query);
26
27   if ($sth === false) {
28     error_log ($query);
29     error_log (pg_last_error($cfg['dbh']));
30     return false;
31   }
32
33   return $sth;
34 }
35
36 function db_last_id($table, $column)
37 {
38   $query = sprintf ("SELECT currval('%s_%s_seq')", $table, $column);
39
40   $sth =  db_query ($query);
41
42   if (!$sth)
43     return false;
44
45   if (pg_num_rows($sth) == 0) {
46     error_log ("$query resulted in an empty set");
47     return false;
48   }
49
50   $row = pg_fetch_row($sth, 0);
51
52   return $row[0];
53 }
54
55 // preserve <p></p>, <b></b>, <em></em>, <br>, <a href></a>
56 function string_sanitise($text)
57 {
58   $ntext = preg_replace (array('/<a\s+href=["\']?([^>"\']*)["\']?>([^<]*)<\/a>/i'),
59                          array('[[$1][$2]]'),
60                          $text);
61
62   $ntext = htmlspecialchars($ntext, ENT_QUOTES);
63
64   $ntext = preg_replace(array('/&lt;(\/?(p|br|b|em))&gt;/i',
65                               '/\[\[([^\]]+)\]\[([^\]]+)\]\]/'),
66                         array('<$1>','<a href="$1">$2</a>'),
67                         $ntext);
68
69   return $ntext;
70 }
71
72 function basepath()
73 {
74   global $cfg;
75   global $_SERVER;
76
77   $pos = strpos(strtolower($cfg['home']), strtolower($_SERVER['SERVER_NAME']));
78   $base = substr($cfg['home'], $pos+strlen($_SERVER['SERVER_NAME']));
79
80   $pos = strpos($_SERVER['REQUEST_URI'], "?");
81   if ($pos === false)
82     $uri = $_SERVER['REQUEST_URI'];
83   else 
84     $uri = substr($_SERVER['REQUEST_URI'], 0, $pos);
85
86   if (strpos($uri, $base) === 0) {
87     $cfg['path'] = substr($uri, strlen($base));
88     $pos = strrpos($cfg['path'], '/');
89     if ($pos !== false) {
90       $cfg['dir'] = substr($cfg['path'], 0, $pos);
91     }
92     return str_repeat("../", substr_count($cfg['path'], "/"));
93   }
94 }
95
96 function logged_in()
97 {
98   global $_SESSION;
99
100   return isset($_SESSION['uid']);
101 }
102
103 function javascript_ok()
104 {
105   global $_SESSION;
106
107   if (!logged_in())
108     return true;
109
110   if ($_SESSION['javascript'] == true)
111     return true;
112
113   return false;
114 }
115
116 function is_spider()
117 {
118   global $_SERVER;
119   global $_SESSION;
120
121   if (isset($_SESSION['uid']))
122     if (isset($_SESSION['robot']))
123       return $_SESSION['robot'];
124
125   if (strpos($_SERVER['HTTP_USER_AGENT'], 'Yahoo! Slurp') !== false ||
126       strpos($_SERVER['HTTP_USER_AGENT'], 'Googlebot') !== false ||
127       strpos($_SERVER['HTTP_USER_AGENT'], 'Mediapartners-Google') !== false ||
128       strpos($_SERVER['HTTP_USER_AGENT'], 'VoilaBot') !== false ||
129       strpos($_SERVER['HTTP_USER_AGENT'], 'Gigabot/3.0') !== false ||
130       strpos($_SERVER['HTTP_USER_AGENT'], 'Speedy Spider') !== false ||
131       strpos($_SERVER['HTTP_USER_AGENT'], 'LinkWalker/2.0') !== false ||
132       strpos($_SERVER['HTTP_USER_AGENT'], 'proximic') !== false ||
133       strpos($_SERVER['HTTP_USER_AGENT'], 'Yeti/1.0') !== false ||
134       strpos($_SERVER['HTTP_USER_AGENT'], 'Eurobot/1.0') !== false ||
135       strpos($_SERVER['HTTP_USER_AGENT'], 'MnoGoSearch/') !== false ||
136       strpos($_SERVER['HTTP_USER_AGENT'], 'ia_archiver') !== false ||
137       strpos($_SERVER['HTTP_USER_AGENT'], 'Seekbot/1.0') !== false ||
138       strpos($_SERVER['HTTP_USER_AGENT'], 'MyEngines-Bot') !== false ||
139       strpos($_SERVER['HTTP_USER_AGENT'], 'larbin_') !== false ||
140       strpos($_SERVER['HTTP_USER_AGENT'], 'findlinks/1') !== false ||
141       strpos($_SERVER['HTTP_USER_AGENT'], 'holmes/3.12') !== false ||
142       strpos($_SERVER['HTTP_USER_AGENT'], 'NoteworthyBot/0.1') !== false ||
143       strpos($_SERVER['HTTP_USER_AGENT'], 'Eurosoft-Bot') !== false ||
144       strpos($_SERVER['HTTP_USER_AGENT'], 'msnbot') !== false ||
145       strpos($_SERVER['HTTP_USER_AGENT'], 'Twiceler-0.9') !== false ||
146       strpos($_SERVER['HTTP_USER_AGENT'], 'ScoutJet') !== false ||
147       strpos($_SERVER['HTTP_USER_AGENT'], 'penthesilea/0.3') !== false ||
148       strpos($_SERVER['HTTP_USER_AGENT'], 'VisBot/2.0') !== false ||
149       strpos($_SERVER['HTTP_USER_AGENT'], 'Netluchs/Nutch-1.0') !== false ||
150       strpos($_SERVER['HTTP_USER_AGENT'], 'Yanga WorldSearch Bot') !== false ||
151       strpos($_SERVER['HTTP_USER_AGENT'], 'Semager') !== false ||
152       strpos($_SERVER['HTTP_USER_AGENT'], 'DotBot') !== false ||
153       strpos($_SERVER['HTTP_USER_AGENT'], 'Baiduspider') !== false ||
154       strpos($_SERVER['HTTP_USER_AGENT'], 'MJ12bot/') !== false ||
155       strpos($_SERVER['HTTP_USER_AGENT'], 'Yahoo-MMCrawler') !== false ||
156       strpos($_SERVER['HTTP_USER_AGENT'], 'Charlotte/1.1') !== false ||
157       strpos($_SERVER['HTTP_USER_AGENT'], 'Gaisbot/3.0') !== false ||
158       strpos($_SERVER['HTTP_USER_AGENT'], 'Cityreview Robot') !== false) {
159     if (isset($_SESSION['uid']))
160       $_SESSION['robot'] = true;
161     return true;
162   }
163
164   if (isset($_SESSION['uid']))
165     $_SESSION['robot'] = false;
166   return false;
167 }
168
169 function is_admin()
170 {
171   global $_SESSION;
172
173   if (!array_key_exists('nickname', $_SESSION))
174     return false;
175
176   error_log( $_SESSION['nickname'] === 'Joey');
177   return $_SESSION['nickname'] === 'Joey';
178 }
179
180 function format_info_bookmarks()
181 {
182   global $_SESSION;
183   global $cfg;
184
185   if (!isset($_SESSION['uid']))
186     return false;
187
188   $query = sprintf("SELECT zeitung,name FROM bookmarks " .
189                    "JOIN zeitungen ON zeitungen.id = zeitung " .
190                    "WHERE uid = %d " .
191                    "ORDER BY priority,name LIMIT 20",
192                    $_SESSION['uid']);
193
194   $sth = db_query($query);
195
196   if ($sth === false || pg_num_rows ($sth) == 0)
197     return false;
198
199   $ret = '<p><ul>';
200   for ($n=0; $n < pg_num_rows ($sth); $n++) {
201     $row = pg_fetch_array ($sth, $n);
202     $ret .= sprintf('<li><a href="%szeitung/%d.html">%s</a></li>',
203                     $cfg['basepath'], $row['zeitung'], $row['name']);
204   }
205   $ret .= '</ul></p>';
206
207   return $ret;
208 }
209
210 ?>