14473e26f4bdff9a856172e2f0b70c2c7a50355d
[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'], 'Eurobot/1') !== false ||
145       strpos($_SERVER['HTTP_USER_AGENT'], 'Yandex') !== false ||
146       strpos($_SERVER['HTTP_USER_AGENT'], 'msnbot') !== false ||
147       strpos($_SERVER['HTTP_USER_AGENT'], 'Twiceler-0.9') !== false ||
148       strpos($_SERVER['HTTP_USER_AGENT'], 'ScoutJet') !== false ||
149       strpos($_SERVER['HTTP_USER_AGENT'], 'penthesilea/0.3') !== false ||
150       strpos($_SERVER['HTTP_USER_AGENT'], 'VisBot/2.0') !== false ||
151       strpos($_SERVER['HTTP_USER_AGENT'], 'Netluchs/Nutch-1.0') !== false ||
152       strpos($_SERVER['HTTP_USER_AGENT'], 'Yanga WorldSearch Bot') !== false ||
153       strpos($_SERVER['HTTP_USER_AGENT'], 'Semager') !== false ||
154       strpos($_SERVER['HTTP_USER_AGENT'], 'DotBot') !== false ||
155       strpos($_SERVER['HTTP_USER_AGENT'], 'Baiduspider') !== false ||
156       strpos($_SERVER['HTTP_USER_AGENT'], 'MJ12bot/') !== false ||
157       strpos($_SERVER['HTTP_USER_AGENT'], 'Yahoo-MMCrawler') !== false ||
158       strpos($_SERVER['HTTP_USER_AGENT'], 'Charlotte/1.1') !== false ||
159       strpos($_SERVER['HTTP_USER_AGENT'], 'Gaisbot/3.0') !== false ||
160       strpos($_SERVER['HTTP_USER_AGENT'], 'psbot/0.1') !== false ||
161       strpos($_SERVER['HTTP_USER_AGENT'], 'Ask Jeeves/Teoma') !== false ||
162       strpos($_SERVER['HTTP_USER_AGENT'], 'SapphireWebCrawler/Nutch') !== false ||
163       strpos($_SERVER['HTTP_USER_AGENT'], 'kalooga/KaloogaBot') !== false ||
164       strpos($_SERVER['HTTP_USER_AGENT'], 'SimilarPages/Nutch-1.0-dev') !== false ||
165       strpos($_SERVER['HTTP_USER_AGENT'], 'Cogentbot/1.') !== false ||
166       strpos($_SERVER['HTTP_USER_AGENT'], 'CatchBot/1.0') !== false ||
167       strpos($_SERVER['HTTP_USER_AGENT'], 'GingerCrawler/1.0') !== false ||
168       strpos($_SERVER['HTTP_USER_AGENT'], 'yacybot') !== false ||
169       strpos($_SERVER['HTTP_USER_AGENT'], 'www.yacy.net') !== false ||
170       strpos($_SERVER['HTTP_USER_AGENT'], 'Nutch-1.0') !== false ||
171       strpos($_SERVER['HTTP_USER_AGENT'], 'Tagoobot/3.0') !== false ||
172       strpos($_SERVER['HTTP_USER_AGENT'], 'SapphireWebCrawler/1.0') !== false ||
173       strpos($_SERVER['HTTP_USER_AGENT'], 'BotOnParade') !== false ||
174       strpos($_SERVER['HTTP_USER_AGENT'], 'SurveyBot/2.3') !== false ||
175       strpos($_SERVER['HTTP_USER_AGENT'], 'XmarksFetch/1.0') !== false ||
176       strpos($_SERVER['HTTP_USER_AGENT'], 'spbot/2.0') !== false ||
177       strpos($_SERVER['HTTP_USER_AGENT'], 'TinEye/1.1') !== false ||
178       strpos($_SERVER['HTTP_USER_AGENT'], 'TurnitinBot/2.1') !== false ||
179       strpos($_SERVER['HTTP_USER_AGENT'], 'CligooRobot/1.0') !== false ||
180       strpos($_SERVER['HTTP_USER_AGENT'], 'libwww-perl') !== false ||
181       strpos($_SERVER['HTTP_USER_AGENT'], 'Wget') !== false ||
182       strpos($_SERVER['HTTP_USER_AGENT'], 'Python-urllib') !== false ||
183       strpos($_SERVER['HTTP_USER_AGENT'], 'CamontSpider/1.0') !== false ||
184       strpos($_SERVER['HTTP_USER_AGENT'], 'TwengaBot-Discover') !== false ||
185       strpos($_SERVER['HTTP_USER_AGENT'], 'Hailoobot/1.2') !== false ||
186       strpos($_SERVER['HTTP_USER_AGENT'], 'bingbot/2.0') !== false ||
187       strpos($_SERVER['HTTP_USER_AGENT'], 'Exabot/3.0') !== false ||
188       strpos($_SERVER['HTTP_USER_AGENT'], 'spbot/2.1') !== false ||
189       strpos($_SERVER['HTTP_USER_AGENT'], 'Search17Bot/1') !== false ||
190       strpos($_SERVER['HTTP_USER_AGENT'], 'Linguee Bot') !== false ||
191       strpos($_SERVER['HTTP_USER_AGENT'], 'findlinks/2') !== false ||
192       strpos($_SERVER['HTTP_USER_AGENT'], 'Cityreview Robot') !== false) {
193     if (isset($_SESSION['uid']))
194       $_SESSION['robot'] = true;
195     return true;
196   }
197
198   if (isset($_SESSION['uid']))
199     $_SESSION['robot'] = false;
200   return false;
201 }
202
203 function is_admin()
204 {
205   global $_SESSION;
206
207   if (!array_key_exists('nickname', $_SESSION))
208     return false;
209
210   error_log( $_SESSION['nickname'] === 'Joey');
211   return $_SESSION['nickname'] === 'Joey';
212 }
213
214 function format_info_bookmarks()
215 {
216   global $_SESSION;
217   global $cfg;
218
219   if (!isset($_SESSION['uid']))
220     return false;
221
222   $query = sprintf("SELECT zeitung,name FROM bookmarks " .
223                    "JOIN zeitungen ON zeitungen.id = zeitung " .
224                    "WHERE uid = %d " .
225                    "ORDER BY priority,name LIMIT 20",
226                    $_SESSION['uid']);
227
228   $sth = db_query($query);
229
230   if ($sth === false || pg_num_rows ($sth) == 0)
231     return false;
232
233   $ret = '<p><ul>';
234   for ($n=0; $n < pg_num_rows ($sth); $n++) {
235     $row = pg_fetch_array ($sth, $n);
236     $ret .= sprintf('<li><a href="%szeitung/%d.html">%s</a></li>',
237                     $cfg['basepath'], $row['zeitung'], $row['name']);
238   }
239   $ret .= '</ul></p>';
240
241   return $ret;
242 }
243
244 ?>