5fbbe7e9ce774d7b21508c57e1d2b396b5f3e8c3
[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'], 'psbot/0.1') !== false ||
159       strpos($_SERVER['HTTP_USER_AGENT'], 'Ask Jeeves/Teoma') !== false ||
160       strpos($_SERVER['HTTP_USER_AGENT'], 'SapphireWebCrawler/Nutch') !== false ||
161       strpos($_SERVER['HTTP_USER_AGENT'], 'kalooga/KaloogaBot') !== false ||
162       strpos($_SERVER['HTTP_USER_AGENT'], 'SimilarPages/Nutch-1.0-dev') !== false ||
163       strpos($_SERVER['HTTP_USER_AGENT'], 'Cogentbot/1.') !== false ||
164       strpos($_SERVER['HTTP_USER_AGENT'], 'CatchBot/1.0') !== false ||
165       strpos($_SERVER['HTTP_USER_AGENT'], 'Cityreview Robot') !== false) {
166     if (isset($_SESSION['uid']))
167       $_SESSION['robot'] = true;
168     return true;
169   }
170
171   if (isset($_SESSION['uid']))
172     $_SESSION['robot'] = false;
173   return false;
174 }
175
176 function is_admin()
177 {
178   global $_SESSION;
179
180   if (!array_key_exists('nickname', $_SESSION))
181     return false;
182
183   error_log( $_SESSION['nickname'] === 'Joey');
184   return $_SESSION['nickname'] === 'Joey';
185 }
186
187 function format_info_bookmarks()
188 {
189   global $_SESSION;
190   global $cfg;
191
192   if (!isset($_SESSION['uid']))
193     return false;
194
195   $query = sprintf("SELECT zeitung,name FROM bookmarks " .
196                    "JOIN zeitungen ON zeitungen.id = zeitung " .
197                    "WHERE uid = %d " .
198                    "ORDER BY priority,name LIMIT 20",
199                    $_SESSION['uid']);
200
201   $sth = db_query($query);
202
203   if ($sth === false || pg_num_rows ($sth) == 0)
204     return false;
205
206   $ret = '<p><ul>';
207   for ($n=0; $n < pg_num_rows ($sth); $n++) {
208     $row = pg_fetch_array ($sth, $n);
209     $ret .= sprintf('<li><a href="%szeitung/%d.html">%s</a></li>',
210                     $cfg['basepath'], $row['zeitung'], $row['name']);
211   }
212   $ret .= '</ul></p>';
213
214   return $ret;
215 }
216
217 ?>