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>';
30 $ret .= '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">';
31 $ret .= '<html lang="de">';
33 if (isset($zlist['newspaper']))
34 $ret .= sprintf('<title>Zeitungsliste: %s</title>', $zlist['newspaper']);
35 elseif (isset($zlist['tag']))
36 $ret .= sprintf('<title>Zeitungsliste: Tag %s</title>', $zlist['tag']);
38 $ret .= '<title>Zeitungsliste</title>';
39 $ret .= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
40 $ret .= '<meta name="Author" content="joey@infodrom.org (Joey Schulze)">';
41 $ret .= '<meta name="Language" content="de">';
43 if ($zlist['page'] == 'index') {
44 $ret .= '<meta name="Keywords" content="Zeitung, Zeitungen, Liste, Zeitungsliste, Online-Zeitungen, Zeitungen im Web, Forum, Community">';
45 $ret .= sprintf('<link rel="alternate" type="application/rss+xml" title="Zeitungen" href="%szeitungen.rdf">', $cfg['basepath']);
49 $ret .= '<meta name="Robots" content="index,follow">';
50 $ret .= '<meta name="Copyright" content="(c) 2008 Information & Consulting">';
51 $ret .= sprintf('<link href="%smain.css" rel="stylesheet" type="text/css">', $cfg['basepath']);
52 $ret .= sprintf('<link rel="icon" href="%sfavicon.ico" type="image/x-icon">', $cfg['basepath']);
53 $ret .= sprintf('<link rel="shortcut icon" href="%sfavicon.ico" type="image/x-icon">', $cfg['basepath']);
55 if (isset($zlist['redirect']))
56 $ret .= sprintf('<meta http-equiv="refresh" content="7; URL=%s%s">',
57 $cfg['home'], $zlist['redirect']);
61 if (javascript_ok()) {
62 $ret .= sprintf('<script type="text/javascript" src="%szlist.js"></script>', $cfg['basepath']);
63 $ret .= sprintf('<script type="text/javascript">var zlist_urlbase = "%s";</script>', $cfg['basepath']);
67 $ret .= '<div class="banner"><h1 class="none"><a href="http://www.debian.org/">Zeitungen online im Netz</a></h1></div>';
69 $ret .= '<div class="status">';
71 $ret .= '<div class="homestatus"><a href="'.$cfg['home'].'">Home</a>';
72 if ($cfg['path'] != 'contact.html')
73 $ret .= sprintf(' <a href="%scontact.html">Kontakt</a>', $cfg['basepath']);
75 $ret .= sprintf(' <a href="%ssitemap.html">Sitemap</a>', $cfg['basepath']);
79 if ($cfg['path'] != "logout.html") {
80 $ret .= '<div class="logstatus">';
81 if ($cfg['path'] != "options.html")
82 $ret .= sprintf('<a href="%soptions.html">Einstellungen</a> ',
84 $ret .= sprintf('<a href="%slogout.html">Abmelden</a>',
89 if (($cfg['path'] != "login.html" && $cfg['path'] != "activate.html") ||
90 ($cfg['path'] == 'login.html' && isset($_POST['sendnew'])))
91 $ret .= sprintf('<div class="logstatus"><a href="%slogin.html">Anmelden</a></div>',
94 $ret .= sprintf('<div class="userstatus">%s</div>', userstatus());
97 $ret .= '<div class="page">';
98 if ($_SERVER['SERVER_NAME'] == 'www.zeitungsliste.de' && javascript_ok())
99 $ret .= "\n" . load_template('addsense.js');
104 function layout_page($body)
108 $ret = '<div class="info">';
109 if (is_array($zlist['info'])) {
110 include_once('info.inc');
111 foreach ($zlist['info'] as $func)
117 $ret .= '<div class="main">';
123 function layout_bookmarks($rel, $title)
127 // Mehr auf http://www.bikeshops.de/Bikeshops/BikeGuide/BikeGuideWertgarantie.asp
129 array('text' => 'Mister Wong',
130 'icon' => 'link_misterwong.gif',
131 'link' => 'http://www.mister-wong.de/index.php?action=addurl&bm_url=@url@&bm_description=@title@'),
132 array('text' => 'Delicious',
133 'icon' => 'link_delicious.gif',
134 'link' => 'http://del.icio.us/post?v=4&noui&url=@url@&title=@title@'),
135 array('text' => 'Google Bookmarks',
136 'icon' => 'link_google.gif',
137 'link' => 'http://www.google.com/bookmarks/mark?op=add&hl=de&bkmk=@url@&title=@title@'),
138 array('text' => 'Yahoo Web',
139 'icon' => 'link_yahoo.gif',
140 'link' => 'http://myweb2.search.yahoo.com/myresults/bookmarklet?u=@url@&t=@title@'),
141 array('text' => 'Technorati',
142 'icon' => 'link_technorati.gif',
143 'link' => 'http://technorati.com/faves?add=@url@'),
144 array('text' => 'Digg it',
145 'icon' => 'link_digg.gif',
146 'link' => 'http://digg.com/submit?phase=2&url=@url@&title=@title@'),
147 array('text' => 'Yigg',
148 'icon' => 'link_yigg.gif',
149 'link' => 'http://yigg.de/neu?action=addurl&exturl=@url@&exttitle=@title@'),
150 array('text' => 'Taggle',
151 'icon' => 'link_taggle.gif',
152 'link' => 'http://taggle.de/addLinkDetails?mAddress=@url@&title=B@title@&submitted=Weiter'),
153 array('text' => 'Linkarena',
154 'icon' => 'link_linkarena.gif',
155 'link' => 'http://www.linkarena.com/linkadd.php?linkName=@title@&linkURL=@url@'),
156 array('text' => 'OneView',
157 'icon' => 'link_oneview.gif',
158 'link' => 'http://www.oneview.de/quickadd/neu/addBookmark.jsf?URL=@url@&title=@title@'),
159 array('text' => 'folk it',
160 'icon' => 'link_folkd.gif',
161 'link' => 'http://www.folkd.com/submit/@url@'),
162 array('text' => 'Facebook',
163 'icon' => 'link_facebook.gif',
164 'link' => 'http://www.facebook.com/sharer.php?u=@url@&title=@title@'),
165 array('text' => 'Blinklist',
166 'icon' => 'link_blinklist.gif',
167 'link' => 'http://www.blinklist.com/index.php?Action=Blink/addblink.php&Url=@url@&Description=@title@'),
168 array('text' => 'Furl',
169 'icon' => 'link_furl.gif',
170 'link' => 'http://www.furl.net/storeIt.jsp?t=@title@&u=@url@'),
171 array('text' => 'Reddit',
172 'icon' => 'link_reddit.gif',
173 'link' => 'http://reddit.com/submit?url=@url@&title=@title@'),
174 array('text' => 'Spurl',
175 'icon' => 'link_spurl.gif',
176 'link' => 'http://www.spurl.net/spurl.php?url=@url@&title=@title@'),
177 array('text' => 'Shadows',
178 'icon' => 'link_shadows.gif',
179 'link' => 'http://www.shadows.com/features/tcr.htm?url=@url@&title=@title@'),
180 array('text' => 'newsvine',
181 'icon' => 'link_newsvine.gif',
182 'link' => 'http://www.newsvine.com/_wine/save?popoff=1&u=@url@&tags=&blurb=@title@'),
183 array('text' => 'CXWeb',
184 'icon' => 'link_cxweb.gif',
185 'link' => 'http://www.cxweb.de/login/?action=add&address=@url@&title=@title@'),
186 array('text' => 'Simpy',
187 'icon' => 'link_simpy.gif',
188 'link' => 'http://www.simpy.com/simpy/LinkAdd.do?title=@title@&href=@url@'),
189 array('text' => 'Ma.Gnolia',
190 'icon' => 'link_magnolia.gif',
191 'link' => 'http://ma.gnolia.com/bookmarklet/add?url=@url@&title=@title@&description=&tags='),
192 array('text' => 'StumbleUpon',
193 'icon' => 'link_stumbleupon.gif',
194 'link' => 'http://www.stumbleupon.com/submit?url=@url@&title=@title@'),
195 array('text' => 'linksilo.de',
196 'icon' => 'link_linksilo.gif',
197 'link' => 'http://www.linksilo.de/index.php?area=bookmarks&func=bookmark_new&addurl=@url@&addtitle=@title@'),
198 array('text' => 'bookmarks.cc',
199 'icon' => 'link_bookmarkscc.gif',
200 'link' => 'http://www.bookmarks.cc/bookmarken.php?action=neu&url=@url@&title=@title@'),
203 $url = $cfg['home'] . $rel;
205 $ret = '<div class="social_bookmarks">Lesezeichen: ';
207 foreach ($bookmarks as $bm) {
208 $ret .= sprintf('<a href="%s" title="%s"><img src="%sbookmarks/%s" width="16" height="16" alt="%s" name="%s" border="0"></a>',
209 str_replace(array('@url@', '@title@'),
210 array(htmlspecialchars($url), htmlspecialchars($title)),
213 $cfg['basepath'], $bm['icon'], $bm['text'], $bm['text']);
222 * Add links to the main page for web spider so that they get the entire database
224 function layout_sitemap()
231 header('Location: ' . $cfg['home']);
233 $ret = '<h1>Sitemap der Zeitungsliste</h1>';
235 $query = 'SELECT tagname FROM tags ORDER BY lower(tagname)';
237 $sth = db_query($query);
239 if ($sth !== false && pg_NumRows($sth) > 0) {
240 $ret .= '<h3>User-Tags (Merkmale)</h3>';
241 $ret .= '<ul class="gold">';
243 for ($i=0; $i < pg_NumRows($sth); $i++) {
244 $row = pg_fetch_array($sth, $i);
246 $ret .= sprintf('<li><a href="%stag/%s.html">%s</a></li>',
247 $cfg['basepath'], urlencode($row['tagname']),
254 $query = 'SELECT id,name,city FROM zeitungen WHERE deleted IS false ORDER BY name';
256 $sth = db_query($query);
258 if ($sth !== false && pg_NumRows($sth) > 0) {
259 $ret .= '<h3>Zeitungen und Magazine</h3>';
260 $ret .= '<ul class="gold">';
261 for ($i=0; $i < pg_NumRows($sth); $i++) {
262 $row = pg_fetch_array($sth, $i);
264 $ret .= sprintf('<li><a href="%szeitung/%d.html">%s</a>, %s</li>',
265 $cfg['basepath'], $row['id'], $row['name'], $row['city']);
270 $query = 'SELECT id,topic FROM topics ORDER BY created';
272 $sth = db_query($query);
274 if ($sth !== false && pg_NumRows($sth) > 0) {
275 $ret .= '<h3>Diskussionen</h3>';
276 $ret .= '<ul class="gold">';
277 for ($i=0; $i < pg_NumRows($sth); $i++) {
278 $row = pg_fetch_array($sth, $i);
280 $ret .= sprintf('<li><a href="%stopic/%d.html">%s</a></li>',
281 $cfg['basepath'], $row['id'], $row['topic']);
289 function layout_showpaper($archived=false)
294 if (!isset($_GET['zeitung']) || !is_numeric($_GET['zeitung']))
295 $ret = warning('Keine Zeitung oder Magazin gefunden.');
297 $zid = $_GET['zeitung'];
298 $details = format_newspaper($zid, true);
299 if ($details === false)
300 $ret .= warning('Keine Zeitung oder Magazin gefunden.');
302 $zlist['zid'] = $zid;
306 $ret .= format_board($zid);
308 $ret .= format_board($zid, $archived);
310 $ret .= layout_bookmarks(sprintf('zeitung/%d.html', $zid), $zlist['newspaper']);
317 function layout_archive()
323 if (!isset($_GET['archiv']) || !is_numeric($_GET['archiv']))
324 $ret = warning('Keine Zeitung oder Magazin gefunden.');
326 $zid = $_GET['archiv'];
327 $details = format_newspaper($zid, true);
328 if ($details === false)
329 $ret .= warning('Keine Zeitung oder Magazin gefunden.');
331 $zlist['zid'] = $zid;
334 $query = sprintf('SELECT id,topic FROM topics ' .
335 'WHERE zeitung = %d ORDER BY created DESC',
338 $sth = db_query($query);
340 if (!$sth || pg_NumRows ($sth) == 0)
341 $ret .= warning('Kein Archiv gefunden.');
343 $ret .= '<p><ul class="gold">';
344 for ($i=0; $i < pg_NumRows ($sth); $i++) {
345 $row = pg_fetch_array($sth, $i);
346 $ret .= sprintf('<li><a href="%stopic/%d.html">%s</a></li>',
347 $cfg['basepath'], $row['id'], $row['topic']);
357 function layout_showtag()
363 if (!isset($_GET['tag']))
364 $ret = warning('Keine derartiges Merkmal gefunden.');
366 $tagname = $_GET['tag'];
367 $ret .= '<h3>Merkmal <span class="tag">' . $tagname . '</span></h3>';
369 $query = sprintf("SELECT zeitungen.id,name,count(uid) AS count FROM zeitungen " .
370 "JOIN zeitung_tags ON zeitung = id " .
371 "JOIN tags ON tag = tags.id " .
372 "WHERE tagname = '%s' " .
373 "GROUP BY zeitungen.id,name ORDER BY count DESC",
374 pg_escape_string($tagname));
376 $sth = db_query($query);
378 $zlist['tag'] = htmlspecialchars($tagname);
379 if (!$sth || pg_NumRows ($sth) == 0) {
380 $ret .= warning('Keine Zeitungen oder Magazine mit diesem Merkmal gefunden.');
381 unset($zlist['newspaper']);
383 $headlines = array('Mäßige','Mittelmäßige','Gute','Häufige','Häufigste');
386 for ($i=0; $i < pg_NumRows ($sth); $i++) {
387 $row = pg_fetch_array ($sth, $i);
388 $tag = tag_class($row['count']);
390 if ($oldtag != $tag) {
393 $ret .= sprintf('<h3 class="tag%d">%s Bewertungen</h3>', $tag, $headlines[$tag]);
394 $ret .= '<ul class="gold">';
398 $ret .= sprintf('<li><a href="%szeitung/%d.html">%s</a></li>',
399 $cfg['basepath'], $row['id'], $row['name'], $row['city']);
403 $ret .= layout_bookmarks(sprintf('tag/%s.html', htmlspecialchars($tagname)), 'Merkmal '.$tagname);
410 function layout_topic()
415 if (!isset($_GET['topic']) || !is_numeric($_GET['topic']))
416 $ret = warning('Keine passende Diskussion gefunden.');
418 $discussion = format_topic($_GET['topic']);
420 if (isset($zlist['zid'])) {
421 $ret .= format_newspaper($zlist['zid'], true);
423 if ($zlist['archived'])
424 $ret .= '<h3>Abgeschlossene Diskussion</h3>';
426 $ret .= '<h3>Diskussion</h3>';
429 if (isset($zlist['zid']))
430 $ret .= layout_bookmarks(sprintf('topic/%d.html', $zlist['zid']), $zlist['topic']);
438 header("HTTP/1.0 404 Not Found");
440 return warning('Diese Seite existiert nicht!');
443 function contact_send($topic, $email, $body)
450 if (!empty($email)) {
451 if (isset($_SESSION['uid']))
452 $header[] = sprintf('Reply-To: %s <%s>',
453 strlen($_SESSION['realname'])?$_SESSION['realname']:$_SESSION['nickname'],
456 $header[] = 'Reply-To: ' . $email;
460 ."HTTP_USER_AGENT: " . $_SERVER['HTTP_USER_AGENT'] . "\n"
461 ."REMOTE_ADDR : " . $_SERVER['REMOTE_ADDR'] . "\n";
463 if (isset($_SESSION['uid']))
464 $body .= "Nickname : " . $_SESSION['nickname'] . "\n";
466 $subject = str_replace(array('<', '>', '(', ')', '$', '/', '%', '\\', '#', ';', '&'), '', $topic);
468 sendmail($cfg['mailto'], '', $subject, $body, $header);
471 function process_contact()
476 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
477 if (empty($_POST['topic']))
478 $ret = warning('Sie haben keinen Titel für die Nachricht angegeben!');
479 elseif (empty($_POST['body']))
480 $ret = warning('Sie haben keinen Text der Nachricht angegeben!');
481 elseif (!empty($_POST['email']) && !is_valid_email_address($_POST['email']))
482 $ret = warning('Die angegebene Mail-Adresse ist ungültig.');
484 contact_send($_POST['topic'], $_POST['email'], $_POST['body']);
485 $ret = information('Die Nachricht wurde an den Chef geschickt.');
486 $ret .= '<p>Die Bearbeitung kann eine Weile dauern. Wenn Sie eine '.
487 'Antwort erwarten, sollte diese in den nächsten Tagen an die von '.
488 'Ihnen angegebene Adresse geschickt werden.</p>';
491 $replace = array('topic' => $_POST['topic'],
492 'email' => $_POST['email'],
493 'body' => $_POST['body']);
494 } elseif ($_SERVER['REQUEST_METHOD'] == 'GET') {
495 if (isset($_SESSION['email']))
496 $replace = array('email' => $_SESSION['email']);
501 return load_javascript('contact.js') . load_template('contact.html', $replace);