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'];
13 $dbh = pg_pconnect ($dsn)
14 or carp("Unable to connect to SQL server");
15 pg_exec ($dbh, "SET DateStyle='ISO'");
20 function db_query($query)
25 $sth = pg_exec ($cfg['dbh'], $query);
29 error_log (pg_last_error($cfg['dbh']));
36 function db_last_id($table, $column)
38 $query = sprintf ("SELECT currval('%s_%s_seq')", $table, $column);
40 $sth = db_query ($query);
45 if (pg_num_rows($sth) == 0) {
46 error_log ("$query resulted in an empty set");
50 $row = pg_fetch_row($sth, 0);
55 // preserve <p></p>, <b></b>, <em></em>, <br>, <a href></a>
56 function string_sanitise($text)
58 $ntext = preg_replace (array('/<a\s+href=["\']?([^>"\']*)["\']?>([^<]*)<\/a>/i'),
62 $ntext = htmlspecialchars($ntext, ENT_QUOTES);
64 $ntext = preg_replace(array('/<(\/?(p|br|b|em))>/i',
65 '/\[\[([^\]]+)\]\[([^\]]+)\]\]/'),
66 array('<$1>','<a href="$1">$2</a>'),
76 $pos = strpos(strtolower($cfg['home']), strtolower($_SERVER['SERVER_NAME']));
77 $base = substr($cfg['home'], $pos+strlen($_SERVER['SERVER_NAME']));
79 $pos = strpos($_SERVER['REQUEST_URI'], "?");
81 $uri = $_SERVER['REQUEST_URI'];
83 $uri = substr($_SERVER['REQUEST_URI'], 0, $pos);
85 if (strpos($uri, $base) === 0) {
86 $cfg['path'] = substr($uri, strlen($base));
87 $pos = strrpos($cfg['path'], '/');
89 $cfg['dir'] = substr($cfg['path'], 0, $pos);
91 return str_repeat("../", substr_count($cfg['path'], "/"));
97 return isset($_SESSION['uid']);
100 function javascript_ok()
105 if ($_SESSION['javascript'] == true)
113 if (isset($_SESSION['uid']))
114 if (isset($_SESSION['robot']))
115 return $_SESSION['robot'];
117 $known_spiders = array('Yahoo! Slurp',
119 'Mediapartners-Google',
143 'Netluchs/Nutch-1.0',
144 'Yanga WorldSearch Bot',
154 'SapphireWebCrawler/Nutch',
155 'kalooga/KaloogaBot',
156 'SimilarPages/Nutch-1.0-dev',
164 'SapphireWebCrawler/1.0',
176 'TwengaBot-Discover',
204 'waybackarchive.org/1.0',
208 'webmeup-crawler.com',
211 'publiclibraryarchive.org/',
213 'Lipperhey SEO Service',
223 foreach ($known_spiders as $spider_id) {
224 if (strpos($_SERVER['HTTP_USER_AGENT'], $spider_id) !== false) {
225 if (isset($_SESSION['uid']))
226 $_SESSION['robot'] = true;
231 if (isset($_SESSION['uid']))
232 $_SESSION['robot'] = false;
238 if (is_null($_SESSION)) return false;
240 if (!array_key_exists('nickname', $_SESSION))
243 error_log( $_SESSION['nickname'] === 'Joey');
244 return $_SESSION['nickname'] === 'Joey';
247 function format_info_bookmarks()
251 if (!isset($_SESSION['uid']))
254 $query = sprintf("SELECT zeitung,name FROM bookmarks " .
255 "JOIN zeitungen ON zeitungen.id = zeitung " .
257 "ORDER BY priority,name LIMIT 20",
260 $sth = db_query($query);
262 if ($sth === false || pg_num_rows ($sth) == 0)
266 for ($n=0; $n < pg_num_rows ($sth); $n++) {
267 $row = pg_fetch_array ($sth, $n);
268 $ret .= sprintf('<li><a href="%szeitung/%d.html">%s</a></li>',
269 $cfg['basepath'], $row['zeitung'], $row['name']);