Merge pull request #3569 from tobiasd/20170702-delete
delete item from admin panel
This commit is contained in:
commit
896bf4046c
2 changed files with 80 additions and 0 deletions
|
@ -11,6 +11,7 @@ use Friendica\Core\Config;
|
|||
|
||||
require_once("include/enotify.php");
|
||||
require_once("include/text.php");
|
||||
require_once('include/items.php');
|
||||
|
||||
/**
|
||||
* @brief Process send data from the admin panels subpages
|
||||
|
@ -113,6 +114,9 @@ function admin_post(App $a) {
|
|||
case 'blocklist':
|
||||
admin_page_blocklist_post($a);
|
||||
break;
|
||||
case 'deleteitem':
|
||||
admin_page_deleteitem_post($a);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -172,6 +176,7 @@ function admin_content(App $a) {
|
|||
'queue' => array("admin/queue/", t('Inspect Queue'), "queue"),
|
||||
'blocklist' => array("admin/blocklist/", t('Server Blocklist'), "blocklist"),
|
||||
'federation' => array("admin/federation/", t('Federation Statistics'), "federation"),
|
||||
'deleteitem' => array("admin/deleteitem/", t('Delete Item'), 'deleteitem'),
|
||||
);
|
||||
|
||||
/* get plugins admin page */
|
||||
|
@ -244,6 +249,9 @@ function admin_content(App $a) {
|
|||
case 'blocklist':
|
||||
$o = admin_page_blocklist($a);
|
||||
break;
|
||||
case 'deleteitem':
|
||||
$o = admin_page_deleteitem($a);
|
||||
break;
|
||||
default:
|
||||
notice(t("Item not found."));
|
||||
}
|
||||
|
@ -348,6 +356,67 @@ function admin_page_blocklist_post(App $a) {
|
|||
return; // NOTREACHED
|
||||
}
|
||||
|
||||
/**
|
||||
* @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
|
||||
*/
|
||||
function admin_page_deleteitem(App $a) {
|
||||
$t = get_markup_template("admin_deleteitem.tpl");
|
||||
|
||||
return replace_macros($t, array(
|
||||
'$title' => t('Administration'),
|
||||
'$page' => t('Delete Item'),
|
||||
'$submit' => t('Delete this Item'),
|
||||
'$intro1' => 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' => 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' => array('deleteitemguid', t("GUID"), '', t("The GUID of the item you want to delete."), 'required', 'autofocus'),
|
||||
'$baseurl' => App::get_baseurl(),
|
||||
'$form_security_token' => get_form_security_token("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
|
||||
*/
|
||||
function admin_page_deleteitem_post(App $a) {
|
||||
if (!x($_POST['page_deleteitem_submit'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
check_form_security_token_redirectOnErr('/admin/deleteitem/', 'admin_deleteitem');
|
||||
|
||||
if (x($_POST['page_deleteitem_submit'])) {
|
||||
$guid = trim(notags($_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 get all IDs of the associated entries in the
|
||||
// item table of the DB and drop those items, which will also delete the
|
||||
// associated threads.
|
||||
$r = dba::select('item', array('id'), array('guid'=>$guid));
|
||||
while ($row = dba::fetch($r)) {
|
||||
drop_item($row['id'], false);
|
||||
}
|
||||
dba::close($r);
|
||||
}
|
||||
|
||||
info(t('Item marked for deletion.').EOL);
|
||||
goaway('admin/deleteitem');
|
||||
return; // NOTREACHED
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Subpage with some stats about "the federation" network
|
||||
*
|
||||
|
|
11
view/templates/admin_deleteitem.tpl
Normal file
11
view/templates/admin_deleteitem.tpl
Normal file
|
@ -0,0 +1,11 @@
|
|||
<div id="adminpage">
|
||||
<h1>{{$title}} - {{$page}}</h1>
|
||||
<p>{{$intro1}}</p>
|
||||
<p>{{$intro2}}</p>
|
||||
</div>
|
||||
|
||||
<form action="{{$baseurl}}/admin/deleteitem" method="post">
|
||||
<input type="hidden" name="form_security_token" value="{{$form_security_token}}">
|
||||
{{include file="field_input.tpl" field=$deleteitemguid}}
|
||||
<div class="submit"><input type="submit" name="page_deleteitem_submit" value="{{$submit}}" /></div>
|
||||
</form>
|
Loading…
Reference in a new issue