diff --git a/contrib/admin/main.php b/contrib/admin/main.php
index 5a34a376..23e0d179 100644
--- a/contrib/admin/main.php
+++ b/contrib/admin/main.php
@@ -58,6 +58,10 @@ class AdminPage implements Extension {
$redirect = false;
switch($_POST['action']) {
+ case 'delete by query':
+ $this->delete_by_query($_POST['query']);
+ $redirect = true;
+ break;
case 'lowercase all tags':
$this->lowercase_all_tags();
$redirect = true;
@@ -98,6 +102,14 @@ class AdminPage implements Extension {
}
}
+ private function delete_by_query($query) {
+ global $page, $user;
+ assert(strlen($query) > 1);
+ foreach(Image::find_images(0, 1000000, Tag::explode($query)) as $image) {
+ send_event(new ImageDeletionEvent($image));
+ }
+ }
+
private function lowercase_all_tags() {
global $database;
$database->execute("UPDATE tags SET tag=lower(tag)");
diff --git a/contrib/admin/theme.php b/contrib/admin/theme.php
index d79c5c5f..65358e3f 100644
--- a/contrib/admin/theme.php
+++ b/contrib/admin/theme.php
@@ -32,6 +32,15 @@ class AdminPageTheme extends Themelet {
";
$page->add_block(new Block("Misc Admin Tools", $html));
+
+ $html = "
+ ".make_form(make_link("admin_utils"))."
+
+
+
+
+ ";
+ $page->add_block(new Block("Delete by Query", $html));
}
}
?>