0) { $ret_mytags = '

'; for ($i=0; $i < pg_num_rows ($sth); $i++) { $row = pg_fetch_array ($sth, $i); if (javascript_ok()) $link = sprintf('href="%stags.html" onclick="return tag_action(\'del\',%d,%d);"', $cfg['basepath'], $zid, $row['id']); else $link = sprintf('href="%stags.html?zeitung=%d&deltag=%d"', $cfg['basepath'], $zid, $row['id']); $ret_mytags .= sprintf('%s ', $link, $row['tagname']); unset($tags[$row['id']]); } $ret_mytags .= '

'; } if (count($tags)) { $ret_rest = '

'; foreach ($tags as $id => $tagname) { if (javascript_ok()) $link = sprintf('href="%stags.html" onclick="return tag_action(\'add\',%d,%d);"', $cfg['basepath'], $zid, $id); else $link = sprintf('href="%stags.html?zeitung=%d&deltag=%d"', $cfg['basepath'], $zid, $id); $ret_rest .= sprintf('%s ', $link, $tagname); } $ret_rest .= '

'; } return array($ret_mytags, $ret_rest); } function tag_add($zid, $tag, $uid) { $query = sprintf('INSERT INTO zeitung_tags (zeitung,tag,uid) ' . 'VALUES (%d,%d,%d)', $zid, $tag, $uid); db_query($query); } function tag_del($zid, $tag, $uid) { $query = sprintf('DELETE FROM zeitung_tags WHERE zeitung = %d ' . 'AND tag = %d AND uid = %d', $zid, $tag, $uid); db_query($query); } function tag_addnew($zid, $tag, $uid) { db_query('BEGIN TRANSACTION'); $query = sprintf("INSERT INTO tags (tagname) VALUES ('%s')", pg_escape_string($tag)); if (($sth = db_query($query)) === false) { db_query('ROLLBACK'); return; } $id = db_last_id('tags', 'id'); tag_add($zid, $id, $uid); db_query('COMMIT'); } function tag_sanitise($tag) { return str_replace(array('<', '>', '(', ')', '$', '/', '%', '\\', '#', ';', '&'), '', $tag); } function process_tags() { global $cfg; global $zlist; global $_SESSION; global $_GET; global $_POST; if (isset($_GET['zeitung']) && is_numeric($_GET['zeitung'])) $zid = $_GET['zeitung']; elseif (isset($_POST['zeitung']) && is_numeric($_POST['zeitung'])) $zid = $_POST['zeitung']; else return warning('Keine Zeitung oder Magazin gefunden!'); $try = format_newspaper($zid, true); if ($try === false) $ret .= warning('Keine Zeitung oder Magazin gefunden!'); else { $ret .= $try; if (!isset($_SESSION['uid'])) $ret .= warning('Sie sind nicht angemeldet. Zum Hinzufügen von Tags ist das erforderlich.'); else { if (isset($_GET['addtag']) && is_numeric($_GET['addtag'])) { tag_add($zid, $_GET['addtag'], $_SESSION['uid']); header(sprintf('Location: tags.html?zeitung=%d', $zid)); } elseif (isset($_GET['deltag']) && is_numeric($_GET['deltag'])) { tag_del($zid, $_GET['deltag'], $_SESSION['uid']); header(sprintf('Location: tags.html?zeitung=%d', $zid)); } elseif (isset($_POST['newtag'])) { if (empty($_POST['newtag'])) $ret .= warning('Sie haben vergessen, ein Merkmal anzugeben!'); else { tag_addnew($zid, tag_sanitise($_POST['newtag']), $_SESSION['uid']); header(sprintf('Location: tags.html?zeitung=%d', $zid)); } } else { $ret .= sprintf('

  ' . 'Tags verwalten

', $cfg['basepath']); $tags = format_tags($zid); $replace = array('zeitung' => $zid, 'mytags'=> $tags[0], 'tags' => $tags[1]); $ret .= load_javascript('tags.js') . load_template('tags.html', $replace); } } } return $ret; } function ajax_tag_check() { global $_POST; global $_SESSION; if (!isset($_POST['zeitung']) || !is_numeric($_POST['zeitung']) || !isset($_POST['tag']) || !is_numeric($_POST['tag']) || !isset($_SESSION['uid'])) return false; return true; } function ajax_tag_add() { global $_POST; global $_SESSION; if (!ajax_tag_check()) return false; tag_add($_POST['zeitung'], $_POST['tag'], $_SESSION['uid']); return format_tags($_POST['zeitung']); } function ajax_tag_del() { global $_POST; global $_SESSION; if (!ajax_tag_check()) return false; tag_del($_POST['zeitung'], $_POST['tag'], $_SESSION['uid']); return format_tags($_POST['zeitung']); } function ajax_tag_new() { global $_POST; global $_SESSION; if (!isset($_POST['zeitung']) || !is_numeric($_POST['zeitung']) || !isset($_POST['tag']) || !isset($_SESSION['uid'])) return false; tag_addnew($_POST['zeitung'], tag_sanitise($_POST['tag']), $_SESSION['uid']); return format_tags($_POST['zeitung']); } function ajax_tag_exists() { global $_POST; if (!isset($_POST['tag'])) return true; // eigentlich false, aber da true=exists einen Fehler liefert... $query = sprintf("SELECT id FROM tags WHERE lower(tagname) = lower('%s')", pg_escape_string(tag_sanitise($_POST['tag']))); $sth = db_query($query); if ($sth === false) return true; // eigentlich false, aber da true=exists einen Fehler liefert... if (pg_num_rows($sth) == 0) return false; return true; } ?>