diff --git a/mod/admin.php b/mod/admin.php index 1632f7c0aa..d1096a68b7 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -65,13 +65,6 @@ function admin_post(App $a) } $return_path = 'admin'; - if ($a->argc > 1) { - switch ($a->argv[1]) { - case 'deleteitem': - admin_page_deleteitem_post($a); - break; - } - } $a->internalRedirect($return_path); return; // NOTREACHED @@ -166,9 +159,6 @@ function admin_content(App $a) // urls if ($a->argc > 1) { switch ($a->argv[1]) { - case 'deleteitem': - $o = admin_page_deleteitem($a); - break; default: notice(L10n::t("Item not found.")); } @@ -182,67 +172,6 @@ function admin_content(App $a) } } -/** - * @brief Subpage where the admin can delete an item from their node given the GUID - * - * This subpage of the admin panel offers the nodes admin to delete an item from - * the node, given the GUID or the display URL such as http://example.com/display/123456. - * The item will then be marked as deleted in the database and processed accordingly. - * - * @param App $a - * @return string - * @throws \Friendica\Network\HTTPException\InternalServerErrorException - */ -function admin_page_deleteitem(App $a) -{ - $t = Renderer::getMarkupTemplate('admin/deleteitem.tpl'); - - return Renderer::replaceMacros($t, [ - '$title' => L10n::t('Administration'), - '$page' => L10n::t('Delete Item'), - '$submit' => L10n::t('Delete this Item'), - '$intro1' => L10n::t('On this page you can delete an item from your node. If the item is a top level posting, the entire thread will be deleted.'), - '$intro2' => L10n::t('You need to know the GUID of the item. You can find it e.g. by looking at the display URL. The last part of http://example.com/display/123456 is the GUID, here 123456.'), - '$deleteitemguid' => ['deleteitemguid', L10n::t("GUID"), '', L10n::t("The GUID of the item you want to delete."), 'required', 'autofocus'], - '$baseurl' => System::baseUrl(), - '$form_security_token' => BaseModule::getFormSecurityToken("admin_deleteitem") - ]); -} - -/** - * @brief Process send data from Admin Delete Item Page - * - * The GUID passed through the form should be only the GUID. But we also parse - * URLs like the full /display URL to make the process more easy for the admin. - * - * @param App $a - * @throws \Friendica\Network\HTTPException\InternalServerErrorException - */ -function admin_page_deleteitem_post(App $a) -{ - if (empty($_POST['page_deleteitem_submit'])) { - return; - } - - BaseModule::checkFormSecurityTokenRedirectOnError('/admin/deleteitem/', 'admin_deleteitem'); - - if (!empty($_POST['page_deleteitem_submit'])) { - $guid = trim(Strings::escapeTags($_POST['deleteitemguid'])); - // The GUID should not include a "/", so if there is one, we got an URL - // and the last part of it is most likely the GUID. - if (strpos($guid, '/')) { - $guid = substr($guid, strrpos($guid, '/') + 1); - } - // Now that we have the GUID, drop those items, which will also delete the - // associated threads. - Item::delete(['guid' => $guid]); - } - - info(L10n::t('Item marked for deletion.') . EOL); - $a->internalRedirect('admin/deleteitem'); - return; // NOTREACHED -} - function admin_page_server_vital() { // Fetch the host-meta to check if this really is a vital server diff --git a/src/App/Router.php b/src/App/Router.php index 6352a18130..c70c0c480c 100644 --- a/src/App/Router.php +++ b/src/App/Router.php @@ -134,6 +134,8 @@ class Router $collector->addRoute(['GET', 'POST'], '/features' , Module\Admin\Features::class); $collector->addRoute(['GET'] , '/federation' , Module\Admin\Federation::class); + $collector->addRoute(['GET', 'POST'], '/item/delete' , Module\Admin\Item\Delete::class); + $collector->addRoute(['GET'] , '/logs/view' , Module\Admin\Logs\View::class); $collector->addRoute(['GET', 'POST'], '/logs' , Module\Admin\Logs\Settings::class); diff --git a/src/Module/Admin/Item/Delete.php b/src/Module/Admin/Item/Delete.php new file mode 100644 index 0000000000..94bab4eb3c --- /dev/null +++ b/src/Module/Admin/Item/Delete.php @@ -0,0 +1,57 @@ + $guid]); + } + + info(L10n::t('Item marked for deletion.') . EOL); + self::getApp()->internalRedirect('admin/item/delete'); + } + + public static function content() + { + parent::content(); + + $t = Renderer::getMarkupTemplate('admin/item/delete.tpl'); + + return Renderer::replaceMacros($t, [ + '$title' => L10n::t('Administration'), + '$page' => L10n::t('Delete Item'), + '$submit' => L10n::t('Delete this Item'), + '$intro1' => L10n::t('On this page you can delete an item from your node. If the item is a top level posting, the entire thread will be deleted.'), + '$intro2' => L10n::t('You need to know the GUID of the item. You can find it e.g. by looking at the display URL. The last part of http://example.com/display/123456 is the GUID, here 123456.'), + '$deleteitemguid' => ['deleteitemguid', L10n::t("GUID"), '', L10n::t("The GUID of the item you want to delete."), 'required', 'autofocus'], + '$baseurl' => System::baseUrl(), + '$form_security_token' => parent::getFormSecurityToken("admin_deleteitem") + ]); + } +} \ No newline at end of file diff --git a/src/Module/BaseAdminModule.php b/src/Module/BaseAdminModule.php index 7ad36e8cc3..93f60172d2 100644 --- a/src/Module/BaseAdminModule.php +++ b/src/Module/BaseAdminModule.php @@ -68,6 +68,7 @@ abstract class BaseAdminModule extends BaseModule 'tools' => [L10n::t('Tools'), [ 'contactblock' => ['admin/blocklist/contact', L10n::t('Contact Blocklist') , 'contactblock'], 'blocklist' => ['admin/blocklist/server' , L10n::t('Server Blocklist') , 'blocklist'], + 'deleteitem' => ['admin/item/delete' , L10n::t('Delete Item') , 'deleteitem'], ]], 'logs' => [L10n::t('Logs'), [ 'logsconfig' => ['admin/logs/', L10n::t('Logs') , 'logs'], diff --git a/view/templates/admin/deleteitem.tpl b/view/templates/admin/item/delete.tpl similarity index 85% rename from view/templates/admin/deleteitem.tpl rename to view/templates/admin/item/delete.tpl index f5abc96c1c..497b77677a 100644 --- a/view/templates/admin/deleteitem.tpl +++ b/view/templates/admin/item/delete.tpl @@ -3,7 +3,7 @@

{{$intro1}}

{{$intro2}}

-
+ {{include file="field_input.tpl" field=$deleteitemguid}}