3 function format_tags($zid)
7 $query = 'SELECT id,tagname FROM tags ORDER BY lower(tagname)';
8 if (($sth = db_query($query)) === false) return;
11 for ($i=0; $i < pg_num_rows ($sth); $i++) {
12 $row = pg_fetch_array ($sth, $i);
13 $tags[$row['id']] = $row['tagname'];
16 $query = sprintf('SELECT id,tagname FROM tags ' .
17 'JOIN zeitung_tags ON id = tag ' .
18 'WHERE zeitung = %d AND uid = %d ' .
19 'ORDER BY lower(tagname)',
20 $zid, $_SESSION['uid']);
22 if (($sth = db_query($query)) === false) return;
24 if (pg_num_rows($sth) > 0) {
25 $ret_mytags = '<p class="tagcloud">';
26 for ($i=0; $i < pg_num_rows ($sth); $i++) {
27 $row = pg_fetch_array ($sth, $i);
29 $link = sprintf('href="%stags.html" onclick="return tag_action(\'del\',%d,%d);"',
30 $cfg['basepath'], $zid, $row['id']);
32 $link = sprintf('href="%stags.html?zeitung=%d&deltag=%d"',
33 $cfg['basepath'], $zid, $row['id']);
34 $ret_mytags .= sprintf('<span class="tag1"><a %s>%s</a></span> ',
35 $link, $row['tagname']);
36 unset($tags[$row['id']]);
38 $ret_mytags .= '</p>';
42 $ret_rest = '<p class="tagcloud">';
43 foreach ($tags as $id => $tagname) {
45 $link = sprintf('href="%stags.html" onclick="return tag_action(\'add\',%d,%d);"',
46 $cfg['basepath'], $zid, $id);
48 $link = sprintf('href="%stags.html?zeitung=%d&deltag=%d"',
49 $cfg['basepath'], $zid, $id);
50 $ret_rest .= sprintf('<span class="tag1"><a %s>%s</a></span> ',
56 return array($ret_mytags, $ret_rest);
59 function tag_add($zid, $tag, $uid)
61 $query = sprintf('INSERT INTO zeitung_tags (zeitung,tag,uid) ' .
62 'VALUES (%d,%d,%d)', $zid, $tag, $uid);
66 function tag_del($zid, $tag, $uid)
68 $query = sprintf('DELETE FROM zeitung_tags WHERE zeitung = %d ' .
69 'AND tag = %d AND uid = %d', $zid, $tag, $uid);
73 function tag_addnew($zid, $tag, $uid)
75 db_query('BEGIN TRANSACTION');
77 $query = sprintf("INSERT INTO tags (tagname) VALUES ('%s')",
78 pg_escape_string($tag));
80 if (($sth = db_query($query)) === false) {
85 $id = db_last_id('tags', 'id');
87 tag_add($zid, $id, $uid);
91 function tag_sanitise($tag)
93 return str_replace(array('<', '>', '(', ')', '$', '/', '%', '\\', '#', ';', '&'), '', $tag);
96 function process_tags()
101 if (isset($_GET['zeitung']) && is_numeric($_GET['zeitung']))
102 $zid = $_GET['zeitung'];
103 elseif (isset($_POST['zeitung']) && is_numeric($_POST['zeitung']))
104 $zid = $_POST['zeitung'];
106 return warning('Keine Zeitung oder Magazin gefunden!');
108 $try = format_newspaper($zid, true);
110 $ret .= warning('Keine Zeitung oder Magazin gefunden!');
114 if (!isset($_SESSION['uid']))
115 $ret .= warning('Sie sind nicht angemeldet. Zum Hinzufügen von Tags ist das erforderlich.');
117 if (isset($_GET['addtag']) && is_numeric($_GET['addtag'])) {
118 tag_add($zid, $_GET['addtag'], $_SESSION['uid']);
119 header(sprintf('Location: tags.html?zeitung=%d', $zid));
120 } elseif (isset($_GET['deltag']) && is_numeric($_GET['deltag'])) {
121 tag_del($zid, $_GET['deltag'], $_SESSION['uid']);
122 header(sprintf('Location: tags.html?zeitung=%d', $zid));
123 } elseif (isset($_POST['newtag'])) {
124 if (empty($_POST['newtag']))
125 $ret .= warning('Sie haben vergessen, ein Merkmal anzugeben!');
127 tag_addnew($zid, tag_sanitise($_POST['newtag']), $_SESSION['uid']);
128 header(sprintf('Location: tags.html?zeitung=%d', $zid));
132 $ret .= sprintf('<p class="info"><img src="%stag.gif" width="27" height="25" alt=""> ' .
133 '<strong>Tags verwalten</strong></p>',
136 $tags = format_tags($zid);
137 $replace = array('zeitung' => $zid,
140 $ret .= load_javascript('tags.js') . load_template('tags.html', $replace);
148 function ajax_tag_check()
150 if (!isset($_POST['zeitung']) || !is_numeric($_POST['zeitung']) ||
151 !isset($_POST['tag']) || !is_numeric($_POST['tag']) ||
152 !isset($_SESSION['uid']))
158 function ajax_tag_add()
160 if (!ajax_tag_check())
163 tag_add($_POST['zeitung'], $_POST['tag'], $_SESSION['uid']);
165 return format_tags($_POST['zeitung']);
168 function ajax_tag_del()
170 if (!ajax_tag_check())
173 tag_del($_POST['zeitung'], $_POST['tag'], $_SESSION['uid']);
175 return format_tags($_POST['zeitung']);
178 function ajax_tag_new()
180 if (!isset($_POST['zeitung']) || !is_numeric($_POST['zeitung']) ||
181 !isset($_POST['tag']) ||
182 !isset($_SESSION['uid']))
185 tag_addnew($_POST['zeitung'], tag_sanitise($_POST['tag']), $_SESSION['uid']);
187 return format_tags($_POST['zeitung']);
190 function ajax_tag_exists()
192 if (!isset($_POST['tag']))
193 return true; // eigentlich false, aber da true=exists einen Fehler liefert...
195 $query = sprintf("SELECT id FROM tags WHERE lower(tagname) = lower('%s')",
196 pg_escape_string(tag_sanitise($_POST['tag'])));
198 $sth = db_query($query);
201 return true; // eigentlich false, aber da true=exists einen Fehler liefert...
203 if (pg_num_rows($sth) == 0)