3 function zeitung_load($zid)
5 $query = sprintf('SELECT id,name,url,city,description FROM zeitungen ' .
6 'WHERE deleted IS false AND id = %d', $zid);
8 if (($sth = db_query($query)) === false) return false;
10 return pg_fetch_array($sth, 0);
13 function zeitung_delete($zid)
15 $query = sprintf('UPDATE zeitungen SET deleted = true WHERE id = %d', $zid);
17 if (db_query($query) === false) return false;
19 logbook('zeitungen', $zid, 'deleted', 'false', 'true');
24 function zeitung_check_url($url, $zid=false)
26 $query = sprintf("SELECT name FROM zeitungen WHERE lower(url) = lower('%s')",
27 pg_escape_string($url));
30 $query .= sprintf(' AND id <> %d', $zid);
32 if (($sth = db_query($query)) === false) return false;
34 if (pg_num_rows($sth) == 0) return false;
36 $row = pg_fetch_array($sth, 0);
41 function zeitung_check_data()
43 if (empty($_POST['name']) ||
44 empty($_POST['city']) ||
45 empty($_POST['url']) ||
46 empty($_POST['description']))
47 return 'Sie müssen alle Pflichtfelder ausfüllen! Siehe Beschreibung unten.';
49 $_POST['url'] = fix_url($_POST['url']);
50 if (!is_valid_url($_POST['url']))
51 return 'Die angegebene Homepage ist ungültig!';
53 if ($_POST['city'] == 'Deutschland (Stadt)')
54 return 'Sie haben keinen Erscheinungsort angegeben!';
56 if (isset($_POST['zeitung']))
57 $try = zeitung_check_url($_POST['url'], $_POST['zeitung']);
59 $try = zeitung_check_url($_POST['url']);
61 return 'Die angegebene URL ist bereits als "'.$try.'" gespeichert.';
66 function zeitung_reportnew($id)
70 $url = sprintf('%szeitung/%d.html', $cfg['home'], $id);
71 $subject = 'Neue Zeitung '.$_POST['name'];
74 $body = "Folgende Zeitung wurde neu im System aufgenommen:\n\n";
76 $body .= "Zeitung : " . $_POST['name'] . "\n"
77 ."URL : " . $_POST['url'] . "\n"
78 ."Ort : " . $_POST['city'] . "\n"
79 ."Description: " . $_POST['description'] . "\n"
81 ."Nickname: " . $_SESSION['nickname'] . "\n"
82 ."Realname: " . $_SESSION['realname'] . "\n"
83 ."E-Mail : " . $_SESSION['email'] . "\n"
85 ."HTTP_USER_AGENT: " . $_SERVER['HTTP_USER_AGENT'] . "\n"
86 ."REMOTE_ADDR : " . $_SERVER['REMOTE_ADDR'] . "\n";
88 $body .= "\n" . $url . "\n";
90 return sendmail($cfg['mailto'], '', $subject, $body);
93 function zeitung_update($zid)
95 $query = sprintf("UPDATE zeitungen SET name='%s',city='%s',url='%s',description='%s' " .
97 pg_escape_string(htmlspecialchars(trim($_POST['name']))),
98 pg_escape_string(htmlspecialchars(trim($_POST['city']))),
99 pg_escape_string(htmlspecialchars(trim($_POST['url']))),
100 pg_escape_string(htmlspecialchars(trim($_POST['description']))),
103 $old = zeitung_load($zid);
105 if (db_query($query) === false) return false;
107 foreach (array('name','city','url','description') as $col) {
108 if ($old[$col] != $_POST[$col])
109 logbook('zeitungen', $zid, $col, $old[$col], htmlspecialchars(trim($_POST[$col])));
115 function zeitung_insert()
117 // Bei Problemen das Feld 'deleted' wieder rausnehmen und manuell approven
118 $query = sprintf("INSERT INTO zeitungen (name,city,url,description,deleted,changed) " .
119 "VALUES ('%s','%s','%s','%s',false,now())",
120 pg_escape_string(htmlspecialchars(trim($_POST['name']))),
121 pg_escape_string(htmlspecialchars(trim($_POST['city']))),
122 pg_escape_string(htmlspecialchars(trim($_POST['url']))),
123 pg_escape_string(htmlspecialchars(trim($_POST['description']))));
125 if (db_query($query) === false) return false;
127 $id = db_last_id('zeitungen', 'id');
129 logbook('zeitungen', $id, 'name', '', htmlspecialchars(trim(trim($_POST['name']))));
131 zeitung_reportnew($id);
136 function process_edit()
140 if (isset($_GET['zeitung']) && is_numeric($_GET['zeitung']))
141 $zid = $_GET['zeitung'];
142 elseif (isset($_POST['zeitung']) && is_numeric($_POST['zeitung']))
143 $zid = $_POST['zeitung'];
145 return warning('Keine Zeitung oder Magazin gefunden!');
148 $try = format_newspaper($zid, 1);
150 $ret .= warning('Keine Zeitung oder Magazin gefunden!');
154 if (!isset($_SESSION['uid']))
155 $ret .= warning('Sie sind nicht angemeldet. Zum Bearbeiten von Zeitungen ist das erforderlich.');
157 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
158 if (isset($_POST['delete'])) {
159 zeitung_delete($zid);
160 $ret .= information('Die Zeitung wurde gelöscht.');
163 $try = zeitung_check_data();
165 $ret .= warning($try);
166 $replace = array('id' => $zid,
167 'name' => htmlspecialchars($_POST['name']),
168 'city' => htmlspecialchars($_POST['city']),
169 'url' => htmlspecialchars($_POST['url']),
170 'description' => htmlspecialchars($_POST['description']));
172 zeitung_update($zid);
173 $ret .= information('Die Zeitung wurde aktualisiert.');
175 $zlist['redirect'] = sprintf('zeitung/%d.html', $zid);
179 $replace = zeitung_load($zid);
181 $ret .= load_template('zeitung.html', $replace);
188 function process_new()
193 if (!isset($_SESSION['uid']))
194 $ret .= warning('Sie sind nicht angemeldet. Zum Hinzufügen von Zeitungen ist das erforderlich.');
196 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
197 $try = zeitung_check_data();
199 $ret .= warning($try);
200 $replace = array('name' => htmlspecialchars($_POST['name']),
201 'city' => htmlspecialchars($_POST['city']),
202 'url' => htmlspecialchars($_POST['url']),
203 'description' => htmlspecialchars($_POST['description']));
205 $zid = zeitung_insert();
206 if ($zid === false) {
207 $ret .= warning('Es ist ein Datenbankfehler aufgetreten.');
210 $ret .= information('Die Zeitung wurde hinzugefügt.');
211 $zlist['redirect'] = sprintf('zeitung/%d.html', $zid);
216 $replace = array('city' => 'Deutschland (Stadt)');
218 $ret .= load_javascript('zeitung.js') . load_template('zeitung_new.html', $replace);
224 function ajax_zeitung_check_url()
226 if (empty($_POST['url'])) return false;
228 return zeitung_check_url($_POST['url']);