nieuws: apply tag changes to article links in edit mode
[minimedit.git] / edit / nieuws / tag / index.php
diff --git a/edit/nieuws/tag/index.php b/edit/nieuws/tag/index.php
new file mode 100644 (file)
index 0000000..d4edb71
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+ob_clean();
+
+if (empty($User['admin']))
+       abort("geen beheersrechten", '401 unauthorised');
+
+if (!$_POST)
+       abort("niets te doen", '405 post error');
+if (!$Args)
+       abort("pagina niet opgegeven", '409 input error');
+
+$pagename = ltrim($Args, '/').'.html';
+@list ($category, $year, $article) = explode('/', $pagename);
+if (empty($article) or !file_exists($pagename))
+       abort("artikel onbekend: $pagename", '404 page error');
+
+if (!isset($_REQUEST['value']))
+       abort("ongeldige tagwaarde {$_REQUEST['value']}", '403 missing value');
+
+if (!isset($_REQUEST['tag']))
+       abort("geen tag ontvangen", '403 input error');
+
+$target = "$category/.tags/{$_REQUEST['tag']}";
+if (!file_exists($target))
+       abort("tag onbekend: $target", '404 tag error');
+
+$target .= "/$year-$article";
+if (is_link($target) or file_exists($target)) {
+       if (!unlink($target))
+               abort("kon bestaande link niet weghalen op $target", '500 unlink error');
+}
+
+$pagelink = "../../../$pagename";
+if ($_REQUEST['value'] and !symlink($pagelink, $target))
+       abort("fout bij link aanmaken op $target", '500 link error');
+
+abort("Tag {$_REQUEST['tag']} aangepast");
+