No need to declare superglobals global
[infodrom.org/www.zeitungsliste.de] / lib / board.inc
1 <?php
2
3 // Precondition: $body is already sanitised
4 function article_add($topic, $body)
5 {
6   $query = sprintf("INSERT INTO article (topic,uid,status,body,created,remote_addr) ".
7                    "VALUES (%d,%d,%d,'%s',now(),'%s')",
8                    $topic,  $_SESSION['uid'], 1, pg_escape_string($body),
9                    $_SERVER['REMOTE_ADDR']);
10
11   $sth = db_query($query);
12   if ($sth === false)
13     return false;
14
15   return true;
16 }
17
18 function topic_add($zid, $topic, $body)
19 {
20   db_query('BEGIN TRANSACTION');
21
22   $query = sprintf("INSERT INTO topics (zeitung,topic,created,modified) ".
23                    "VALUES (%d,'%s',now(),now())",
24                    $zid, $topic);
25
26   $sth = db_query($query);
27   if ($sth === false) {
28     db_query('ROLLBACK');
29     return false;
30   }
31
32   $id = db_last_id('topics', 'id');
33   if ($id === false) {
34     db_query('ROLLBACK');
35     return false;
36   }
37
38   if (article_add($id, $body) === false) {
39     db_query('ROLLBACK');
40     return false;
41   }
42
43   db_query('COMMIT');
44
45   return $id;
46 }
47
48 function process_topic()
49 {
50   global $cfg;
51   global $zlist;
52
53   if (isset($_GET['zeitung']) && is_numeric($_GET['zeitung']))
54     $zid = $_GET['zeitung'];
55   elseif (isset($_POST['zeitung']) && is_numeric($_POST['zeitung']))
56     $zid = $_POST['zeitung'];
57   else
58     $ret = warning('Keine Zeitung oder Magazin gefunden!');
59
60   if (isset($zid)) {
61     $try = format_newspaper($zid, true);
62     if ($try === false) {
63       $ret .= warning('Keine Zeitung oder Magazin gefunden!');
64       unset($zid);
65     } else
66       $ret .= $try;
67   }
68
69   if (isset($zid)) {
70     if (!isset($_SESSION['uid']))
71       $ret .= warning('Um eine neue Diskussion zu beginnen, müssen Sie angemeldet sein.');
72     else {
73       $replace = array('zeitung' => $zid);
74       if (!isset($_POST['zeitung'])) {
75         $ret .= information('Sie beginnen eine neue Diskussion im Forum.');
76       } else {
77         $replace['topic'] = htmlspecialchars($_POST['topic']);
78         $replace['body'] = string_sanitise($_POST['body']);
79
80         if (strlen($_POST['topic'])) {
81           if (strlen($_POST['body'])) {
82             if (($tid = topic_add($zid, $replace['topic'], $replace['body'])) !== false) {
83               header(sprintf('Location: %stopic/%d.html', $cfg['home'], $tid));
84             } else
85               $ret .= warning('Es ist ein Datenbankfehler aufgetreten.');
86           } else
87             $ret .= warning('Sie haben keinen Text für die Diskussion angegeben!');
88         } else
89           $ret .= warning('Sie haben keinen Titel für die Diskussion angegeben!');
90       }
91
92       $ret .= load_javascript('topic.js') . load_template('topic.html', $replace);
93     }
94   }
95
96   return $ret;
97 }
98
99 // Sideeffect: May set $zlist['redirect']
100 function process_reply()
101 {
102   global $cfg;
103   global $zlist;
104
105   if (isset($_GET['topic']) && is_numeric($_GET['topic']))
106     $topic = $_GET['topic'];
107   elseif (isset($_POST['topic']) && is_numeric($_POST['topic']))
108     $topic = $_POST['topic'];
109   else
110     $ret = warning('Keine passende Diskussion gefunden!');
111
112   if (isset($topic)) {
113     $discussion = format_topic($topic);
114     if (isset($zlist['zid'])) {
115       $ret .= format_newspaper($zlist['zid'], true);
116
117       if (isset($_POST['body'])) {
118         if (article_add($topic, string_sanitise($_POST['body'])) === true) {
119           $ret .= information('Danke für Ihren Beitrag.  Sie werden automatisch zur Diskussion weitergeleitet.');
120           header(sprintf('Location: %stopic/%d.html', $cfg['home'], $topic));
121         } else {
122           $ret .= warning('Ihr Beitrag konnte nicht aufgenommen werden.');
123           $ret .= $discussion;
124           $replace = array('topic' => $topic,
125                            'title' => $zlist['topic'],
126                            'body' => htmlspecialchars($_POST['body']));
127           $ret .= load_javascript('reply.js') . load_template('reply.html', $replace);
128         }
129       } else {
130         $ret .= $discussion;
131         $replace = array('topic' => $topic,
132                          'title' => $zlist['topic']);
133         $ret .= load_javascript('reply.js') . load_template('reply.html', $replace);
134       }
135     } else
136       $ret .= $discussion;
137   }
138
139   return $ret;
140 }