3 function format_tags($zid)
8 $query = 'SELECT id,tagname FROM tags ORDER BY lower(tagname)';
9 if (($sth = db_query($query)) === false) return;
12 for ($i=0; $i < pg_num_rows ($sth); $i++) {
13 $row = pg_fetch_array ($sth, $i);
14 $tags[$row['id']] = $row['tagname'];
17 $query = sprintf('SELECT id,tagname FROM tags ' .
18 'JOIN zeitung_tags ON id = tag ' .
19 'WHERE zeitung = %d AND uid = %d ' .
20 'ORDER BY lower(tagname)',
21 $zid, $_SESSION['uid']);
23 if (($sth = db_query($query)) === false) return;
25 if (pg_num_rows($sth) > 0) {
26 $ret_mytags = '<p class="tagcloud">';
27 for ($i=0; $i < pg_num_rows ($sth); $i++) {
28 $row = pg_fetch_array ($sth, $i);
30 $link = sprintf('href="%stags.html" onclick="return tag_action(\'del\',%d,%d);"',
31 $cfg['basepath'], $zid, $row['id']);
33 $link = sprintf('href="%stags.html?zeitung=%d&deltag=%d"',
34 $cfg['basepath'], $zid, $row['id']);
35 $ret_mytags .= sprintf('<span class="tag1"><a %s>%s</a></span> ',
36 $link, $row['tagname']);
37 unset($tags[$row['id']]);
39 $ret_mytags .= '</p>';
43 $ret_rest = '<p class="tagcloud">';
44 foreach ($tags as $id => $tagname) {
46 $link = sprintf('href="%stags.html" onclick="return tag_action(\'add\',%d,%d);"',
47 $cfg['basepath'], $zid, $id);
49 $link = sprintf('href="%stags.html?zeitung=%d&deltag=%d"',
50 $cfg['basepath'], $zid, $id);
51 $ret_rest .= sprintf('<span class="tag1"><a %s>%s</a></span> ',
57 return array($ret_mytags, $ret_rest);
60 function tag_add($zid, $tag, $uid)
62 $query = sprintf('INSERT INTO zeitung_tags (zeitung,tag,uid) ' .
63 'VALUES (%d,%d,%d)', $zid, $tag, $uid);
67 function tag_del($zid, $tag, $uid)
69 $query = sprintf('DELETE FROM zeitung_tags WHERE zeitung = %d ' .
70 'AND tag = %d AND uid = %d', $zid, $tag, $uid);
74 function tag_addnew($zid, $tag, $uid)
76 db_query('BEGIN TRANSACTION');
78 $query = sprintf("INSERT INTO tags (tagname) VALUES ('%s')",
79 pg_escape_string($tag));
81 if (($sth = db_query($query)) === false) {
86 $id = db_last_id('tags', 'id');
88 tag_add($zid, $id, $uid);
92 function tag_sanitise($tag)
94 return str_replace(array('<', '>', '(', ')', '$', '/', '%', '\\', '#', ';', '&'), '', $tag);
97 function process_tags()
105 if (isset($_GET['zeitung']) && is_numeric($_GET['zeitung']))
106 $zid = $_GET['zeitung'];
107 elseif (isset($_POST['zeitung']) && is_numeric($_POST['zeitung']))
108 $zid = $_POST['zeitung'];
110 return warning('Keine Zeitung oder Magazin gefunden!');
112 $try = format_newspaper($zid, true);
114 $ret .= warning('Keine Zeitung oder Magazin gefunden!');
118 if (!isset($_SESSION['uid']))
119 $ret .= warning('Sie sind nicht angemeldet. Zum Hinzufügen von Tags ist das erforderlich.');
121 if (isset($_GET['addtag']) && is_numeric($_GET['addtag'])) {
122 tag_add($zid, $_GET['addtag'], $_SESSION['uid']);
123 header(sprintf('Location: tags.html?zeitung=%d', $zid));
124 } elseif (isset($_GET['deltag']) && is_numeric($_GET['deltag'])) {
125 tag_del($zid, $_GET['deltag'], $_SESSION['uid']);
126 header(sprintf('Location: tags.html?zeitung=%d', $zid));
127 } elseif (isset($_POST['newtag'])) {
128 if (empty($_POST['newtag']))
129 $ret .= warning('Sie haben vergessen, ein Merkmal anzugeben!');
131 tag_addnew($zid, tag_sanitise($_POST['newtag']), $_SESSION['uid']);
132 header(sprintf('Location: tags.html?zeitung=%d', $zid));
136 $ret .= sprintf('<p class="info"><img src="%stag.gif" width="27" height="25" alt=""> ' .
137 '<strong>Tags verwalten</strong></p>',
140 $tags = format_tags($zid);
141 $replace = array('zeitung' => $zid,
144 $ret .= load_javascript('tags.js') . load_template('tags.html', $replace);
152 function ajax_tag_check()
157 if (!isset($_POST['zeitung']) || !is_numeric($_POST['zeitung']) ||
158 !isset($_POST['tag']) || !is_numeric($_POST['tag']) ||
159 !isset($_SESSION['uid']))
165 function ajax_tag_add()
170 if (!ajax_tag_check())
173 tag_add($_POST['zeitung'], $_POST['tag'], $_SESSION['uid']);
175 return format_tags($_POST['zeitung']);
178 function ajax_tag_del()
183 if (!ajax_tag_check())
186 tag_del($_POST['zeitung'], $_POST['tag'], $_SESSION['uid']);
188 return format_tags($_POST['zeitung']);
191 function ajax_tag_new()
196 if (!isset($_POST['zeitung']) || !is_numeric($_POST['zeitung']) ||
197 !isset($_POST['tag']) ||
198 !isset($_SESSION['uid']))
201 tag_addnew($_POST['zeitung'], tag_sanitise($_POST['tag']), $_SESSION['uid']);
203 return format_tags($_POST['zeitung']);
206 function ajax_tag_exists()
210 if (!isset($_POST['tag']))
211 return true; // eigentlich false, aber da true=exists einen Fehler liefert...
213 $query = sprintf("SELECT id FROM tags WHERE lower(tagname) = lower('%s')",
214 pg_escape_string(tag_sanitise($_POST['tag'])));
216 $sth = db_query($query);
219 return true; // eigentlich false, aber da true=exists einen Fehler liefert...
221 if (pg_num_rows($sth) == 0)