3 include_once('extern/rfc822.php');
5 function warning($text)
8 $ret = '<p class="warn"><img src="'.$cfg['basepath'].
9 'achtung.gif" width="33" height="32" alt="Achtung!"> ';
10 $ret .= $text .'</p>';
14 function information($text)
17 $ret = '<p class="info"><img src="'.$cfg['basepath'].
18 'information.gif" width="31" height="31" alt="Info"> ';
19 $ret .= $text .'</p>';
28 $ret .= '<!DOCTYPE html">';
29 $ret .= '<html lang="de">';
31 if (isset($zlist['newspaper']))
32 $ret .= sprintf('<title>Zeitungsliste: %s</title>', $zlist['newspaper']);
33 elseif (isset($zlist['tag']))
34 $ret .= sprintf('<title>Zeitungsliste: Tag %s</title>', $zlist['tag']);
36 $ret .= '<title>Zeitungsliste</title>';
37 header('Content-Type: text/html; charset=UTF-8');
38 $ret .= '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
39 $ret .= '<meta name="Author" content="joey@infodrom.org (Joey Schulze)">';
40 $ret .= '<meta name="Language" content="de">';
42 if ($zlist['page'] == 'index') {
43 $ret .= '<meta name="Keywords" content="Zeitung, Zeitungen, Liste, Zeitungsliste, Online-Zeitungen, Zeitungen im Web, Forum, Community, '.
44 'Liste aller Zeitungen">';
45 $ret .= sprintf('<link rel="alternate" type="application/rss+xml" title="Zeitungen" href="%szeitungen.rdf">', $cfg['basepath']);
46 } elseif ($cfg['dir'] == 'zeitung') {
47 $ret .= '<meta name="Keywords" content="Zeitung, Zeitungsliste, Online-Zeitung, Zeitung im Web, Forum, Community, '.
48 $zlist['newspaper'] . ', ' . $zlist['city'] . '">';
52 $ret .= '<meta name="Robots" content="index,follow">';
53 $ret .= '<meta name="Copyright" content="(c) 2018 Information & Consulting">';
54 $ret .= sprintf('<link href="%smain.css" rel="stylesheet" type="text/css">', $cfg['basepath']);
55 $ret .= sprintf('<link rel="icon" href="%sfavicon.ico" type="image/x-icon">', $cfg['basepath']);
56 $ret .= sprintf('<link rel="shortcut icon" href="%sfavicon.ico" type="image/x-icon">', $cfg['basepath']);
58 if (isset($zlist['redirect']))
59 $ret .= sprintf('<meta http-equiv="refresh" content="7; URL=%s%s">',
60 $cfg['home'], $zlist['redirect']);
64 if (javascript_ok()) {
65 $ret .= sprintf('<script type="text/javascript" src="%szlist.js"></script>', $cfg['basepath']);
66 $ret .= sprintf('<script type="text/javascript">var zlist_urlbase = "%s";</script>', $cfg['basepath']);
70 $ret .= '<div class="banner"><h1 class="none"><a href="http://www.debian.org/">Zeitungen online im Netz</a></h1></div>';
72 $ret .= '<div class="status">';
74 $ret .= '<div class="homestatus"><a href="'.$cfg['home'].'">Home</a>';
75 if ($cfg['path'] != 'contact.html')
76 $ret .= sprintf(' <a href="%scontact.html">Kontakt</a>', $cfg['basepath']);
77 if ($cfg['path'] != 'datenschutz.html')
78 $ret .= sprintf(' <a href="%sdatenschutz.html">Datenschutz</a>', $cfg['basepath']);
79 if (is_admin() && $cfg['path'] != 'admin.html')
80 $ret .= sprintf(' <a href="%sadmin/index.html">Admin</a>', $cfg['basepath']);
82 $ret .= sprintf(' <a href="%ssitemap.html">Sitemap</a>', $cfg['basepath']);
86 if ($cfg['path'] != "logout.html") {
87 $ret .= '<div class="logstatus">';
88 if ($cfg['path'] != "options.html")
89 $ret .= sprintf('<a href="%soptions.html">Einstellungen</a> ',
91 $ret .= sprintf('<a href="%slogout.html">Abmelden</a>',
96 if (($cfg['path'] != "login.html" && $cfg['path'] != "activate.html") ||
97 ($cfg['path'] == 'login.html' && isset($_POST['sendnew'])))
98 $ret .= sprintf('<div class="logstatus"><a href="%slogin.html">Anmelden</a></div>',
101 $ret .= sprintf('<div class="userstatus">%s</div>', userstatus());
104 $ret .= '<div class="page">';
105 if ($_SERVER['SERVER_NAME'] == 'www.zeitungsliste.de' && javascript_ok())
106 $ret .= "\n" . load_template('addsense.js');
111 function layout_page($body)
115 $ret = '<div class="info">';
116 if (is_array($zlist['info'])) {
117 include_once('info.inc');
118 foreach ($zlist['info'] as $func)
124 $ret .= '<div class="main">';
130 function layout_bookmarks($rel, $title)
134 // Mehr auf http://www.bikeshops.de/Bikeshops/BikeGuide/BikeGuideWertgarantie.asp
136 array('text' => 'Delicious',
137 'icon' => 'link_delicious.gif',
138 'link' => 'http://del.icio.us/post?v=4&noui&url=@url@&title=@title@'),
139 array('text' => 'Digg it',
140 'icon' => 'link_digg.gif',
141 'link' => 'http://digg.com/submit?phase=2&url=@url@&title=@title@'),
142 array('text' => 'folk it',
143 'icon' => 'link_folkd.gif',
144 'link' => 'http://www.folkd.com/submit/@url@'),
145 array('text' => 'Reddit',
146 'icon' => 'link_reddit.gif',
147 'link' => 'http://reddit.com/submit?url=@url@&title=@title@'),
148 array('text' => 'Spurl',
149 'icon' => 'link_spurl.gif',
150 'link' => 'http://www.spurl.net/spurl.php?url=@url@&title=@title@'),
151 array('text' => 'StumbleUpon',
152 'icon' => 'link_stumbleupon.gif',
153 'link' => 'http://www.stumbleupon.com/submit?url=@url@&title=@title@'),
154 array('text' => 'linksilo.de',
155 'icon' => 'link_linksilo.gif',
156 'link' => 'http://www.linksilo.de/index.php?area=bookmarks&func=bookmark_new&addurl=@url@&addtitle=@title@'),
159 $url = $cfg['home'] . $rel;
161 $ret = '<div class="social_bookmarks">Lesezeichen: ';
163 foreach ($bookmarks as $bm) {
164 $ret .= sprintf('<a href="%s" title="%s"><img src="%sbookmarks/%s" width="16" height="16" alt="%s" name="%s" border="0"></a>',
165 str_replace(array('@url@', '@title@'),
166 array(htmlspecialchars($url), htmlspecialchars($title)),
169 $cfg['basepath'], $bm['icon'], $bm['text'], $bm['text']);
178 * Add links to the main page for web spider so that they get the entire database
180 function layout_sitemap()
185 header('Location: ' . $cfg['home']);
187 $ret = '<h1>Sitemap der Zeitungsliste</h1>';
189 $query = 'SELECT tagname FROM tags ORDER BY lower(tagname)';
191 $sth = db_query($query);
193 if ($sth !== false && pg_num_rows($sth) > 0) {
194 $ret .= '<h3>User-Tags (Merkmale)</h3>';
195 $ret .= '<ul class="gold">';
197 for ($i=0; $i < pg_num_rows($sth); $i++) {
198 $row = pg_fetch_array($sth, $i);
200 $ret .= sprintf('<li><a href="%stag/%s.html">%s</a></li>',
201 $cfg['basepath'], urlencode($row['tagname']),
208 $query = 'SELECT id,name,city FROM zeitungen WHERE deleted IS false ORDER BY name';
210 $sth = db_query($query);
212 if ($sth !== false && pg_num_rows($sth) > 0) {
213 $ret .= '<h3>Zeitungen und Magazine</h3>';
214 $ret .= '<ul class="gold">';
215 for ($i=0; $i < pg_num_rows($sth); $i++) {
216 $row = pg_fetch_array($sth, $i);
218 $ret .= sprintf('<li><a href="%szeitung/%d.html">%s</a>, %s</li>',
219 $cfg['basepath'], $row['id'], $row['name'], $row['city']);
224 $query = 'SELECT id,topic FROM topics ORDER BY created';
226 $sth = db_query($query);
228 if ($sth !== false && pg_num_rows($sth) > 0) {
229 $ret .= '<h3>Diskussionen</h3>';
230 $ret .= '<ul class="gold">';
231 for ($i=0; $i < pg_num_rows($sth); $i++) {
232 $row = pg_fetch_array($sth, $i);
234 $ret .= sprintf('<li><a href="%stopic/%d.html">%s</a></li>',
235 $cfg['basepath'], $row['id'], $row['topic']);
243 function layout_showpaper($archived=false)
247 if (!isset($_GET['zeitung']) || !is_numeric($_GET['zeitung']))
248 $ret = warning('Keine Zeitung oder Magazin gefunden.');
250 $zid = $_GET['zeitung'];
251 $details = format_newspaper($zid, true);
252 if ($details === false)
253 $ret .= warning('Keine Zeitung oder Magazin gefunden.');
255 $zlist['zid'] = $zid;
259 $ret .= format_board($zid);
261 $ret .= format_board($zid, $archived);
263 $ret .= layout_bookmarks(sprintf('zeitung/%d.html', $zid), $zlist['newspaper']);
270 function layout_archive()
275 if (!isset($_GET['archiv']) || !is_numeric($_GET['archiv']))
276 $ret = warning('Keine Zeitung oder Magazin gefunden.');
278 $zid = $_GET['archiv'];
279 $details = format_newspaper($zid, true);
280 if ($details === false)
281 $ret .= warning('Keine Zeitung oder Magazin gefunden.');
283 $zlist['zid'] = $zid;
286 $query = sprintf('SELECT id,topic FROM topics ' .
287 'WHERE zeitung = %d ORDER BY created DESC',
290 $sth = db_query($query);
292 if (!$sth || pg_num_rows ($sth) == 0)
293 $ret .= warning('Kein Archiv gefunden.');
295 $ret .= '<p><ul class="gold">';
296 for ($i=0; $i < pg_num_rows ($sth); $i++) {
297 $row = pg_fetch_array($sth, $i);
298 $ret .= sprintf('<li><a href="%stopic/%d.html">%s</a></li>',
299 $cfg['basepath'], $row['id'], $row['topic']);
309 function layout_showtag()
314 if (!isset($_GET['tag']))
315 $ret = warning('Keine derartiges Merkmal gefunden.');
317 $tagname = $_GET['tag'];
318 $ret .= '<h3>Merkmal <span class="tag">' . $tagname . '</span></h3>';
320 $query = sprintf("SELECT zeitungen.id,name,count(uid) AS count FROM zeitungen " .
321 "JOIN zeitung_tags ON zeitung = id " .
322 "JOIN tags ON tag = tags.id " .
323 "WHERE tagname = '%s' " .
324 "GROUP BY zeitungen.id,name ORDER BY count DESC",
325 pg_escape_string($tagname));
327 $sth = db_query($query);
329 $zlist['tag'] = htmlspecialchars($tagname);
330 if (!$sth || pg_num_rows ($sth) == 0) {
331 $ret .= warning('Keine Zeitungen oder Magazine mit diesem Merkmal gefunden.');
332 unset($zlist['newspaper']);
334 $headlines = array('Mäßige','Mittelmäßige','Gute','Häufige','Häufigste');
337 for ($i=0; $i < pg_num_rows ($sth); $i++) {
338 $row = pg_fetch_array ($sth, $i);
339 $tag = tag_class($row['count']);
341 if ($oldtag != $tag) {
344 $ret .= sprintf('<h3 class="tag%d">%s Bewertungen</h3>', $tag, $headlines[$tag]);
345 $ret .= '<ul class="gold">';
349 $ret .= sprintf('<li><a href="%szeitung/%d.html">%s</a></li>',
350 $cfg['basepath'], $row['id'], $row['name'], $row['city']);
354 $ret .= layout_bookmarks(sprintf('tag/%s.html', htmlspecialchars($tagname)), 'Merkmal '.$tagname);
361 function layout_topic()
365 if (!isset($_GET['topic']) || !is_numeric($_GET['topic']))
366 $ret = warning('Keine passende Diskussion gefunden.');
368 $discussion = format_topic($_GET['topic']);
370 if (isset($zlist['zid'])) {
371 $ret .= format_newspaper($zlist['zid'], true);
373 if ($zlist['archived'])
374 $ret .= '<h3>Abgeschlossene Diskussion</h3>';
376 $ret .= '<h3>Diskussion</h3>';
379 if (isset($zlist['zid']))
380 $ret .= layout_bookmarks(sprintf('topic/%d.html', $zlist['zid']), $zlist['topic']);
388 header("HTTP/1.0 404 Not Found");
390 return warning('Diese Seite existiert nicht!');
393 function contact_send($topic, $email, $body)
398 if (!empty($email)) {
399 if (isset($_SESSION['uid']))
400 $header[] = sprintf('Reply-To: %s <%s>',
401 strlen($_SESSION['realname'])?$_SESSION['realname']:$_SESSION['nickname'],
404 $header[] = 'Reply-To: ' . $email;
408 ."HTTP_USER_AGENT: " . $_SERVER['HTTP_USER_AGENT'] . "\n"
409 ."REMOTE_ADDR : " . $_SERVER['REMOTE_ADDR'] . "\n";
411 if (isset($_SESSION['uid']))
412 $body .= "Nickname : " . $_SESSION['nickname'] . "\n";
414 $subject = str_replace(array('<', '>', '(', ')', '$', '/', '%', '\\', '#', ';', '&'), '', $topic);
416 sendmail($cfg['mailto'], '', $subject, $body, $header);
419 function process_contact()
421 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
422 if (empty($_POST['topic']))
423 return warning('Sie haben keinen Titel für die Nachricht angegeben!');
424 elseif (empty($_POST['body']))
425 return warning('Sie haben keinen Text der Nachricht angegeben!');
426 elseif (!empty($_POST['email']) && !is_valid_email_address($_POST['email']))
427 return warning('Die angegebene Mail-Adresse ist ungültig.');
428 elseif (intval($_POST['pivot']) != intval(date('m')))
429 return warning('Die Testfrage ist falsch beantwortet.');
431 contact_send($_POST['topic'], $_POST['email'], $_POST['body']);
432 $ret = information('Die Nachricht wurde an den Chef geschickt.');
433 $ret .= '<p>Die Bearbeitung kann eine Weile dauern. Wenn Sie eine '.
434 'Antwort erwarten, sollte diese in den nächsten Tagen an die von '.
435 'Ihnen angegebene Adresse geschickt werden.</p>';
438 $replace = array('topic' => $_POST['topic'],
439 'email' => $_POST['email'],
440 'body' => $_POST['body']);
441 } elseif ($_SERVER['REQUEST_METHOD'] == 'GET') {
442 if (isset($_SESSION['email']))
443 $replace = array('email' => $_SESSION['email']);
448 return load_javascript('contact.js') . load_template('contact.html', $replace);