]> git.mxchange.org Git - friendica.git/commitdiff
Add new purge contact content option to admin contact blocklist
authorHypolite Petovan <hypolite@mrpetovan.com>
Wed, 13 Oct 2021 00:15:20 +0000 (20:15 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sat, 16 Oct 2021 23:29:38 +0000 (19:29 -0400)
src/Module/Admin/Blocklist/Contact.php
view/templates/admin/blocklist/contact.tpl
view/theme/frio/templates/admin/blocklist/contact.tpl

index 8d325810ecbcdc9c21ebe09b7d52ef4a7bc34ade..bd30e2f8ddbef14e42a3f03c280bdc917b5c826a 100644 (file)
@@ -23,10 +23,12 @@ namespace Friendica\Module\Admin\Blocklist;
 
 use Friendica\Content\Pager;
 use Friendica\Core\Renderer;
+use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\DI;
-use Friendica\Module\BaseAdmin;
 use Friendica\Model;
+use Friendica\Module\BaseAdmin;
+use Friendica\Util\Network;
 
 class Contact extends BaseAdmin
 {
@@ -38,16 +40,30 @@ class Contact extends BaseAdmin
 
                $contact_url  = $_POST['contact_url'] ?? '';
                $block_reason = $_POST['contact_block_reason'] ?? '';
+               $block_purge  = $_POST['contact_block_purge'] ?? false;
                $contacts     = $_POST['contacts'] ?? [];
 
                if (!empty($_POST['page_contactblock_block'])) {
-                       $contact_id = Model\Contact::getIdForURL($contact_url);
-                       if ($contact_id) {
-                               Model\Contact::block($contact_id, $block_reason);
-                               info(DI::l10n()->t('The contact has been blocked from the node'));
-                       } else {
+                       $contact = Model\Contact::getByURL($contact_url, null, ['id', 'nurl']);
+                       if (empty($contact)) {
                                notice(DI::l10n()->t('Could not find any contact entry for this URL (%s)', $contact_url));
+                               DI::baseUrl()->redirect('admin/blocklist/contact');
+                       }
+
+                       if (Network::isLocalLink($contact['nurl'])) {
+                               notice(DI::l10n()->t('You can\'t block a local contact, please block the user instead'));
+                               DI::baseUrl()->redirect('admin/blocklist/contact');
                        }
+
+                       Model\Contact::block($contact['id'], $block_reason);
+
+                       if ($block_purge) {
+                               foreach (Model\Contact::selectToArray(['id'], ['nurl' => $contact['nurl']]) as $contact) {
+                                       Worker::add(PRIORITY_LOW, 'Contact\RemoveContent', $contact['id']);
+                               }
+                       }
+
+                       info(DI::l10n()->t('The contact has been blocked from the node'));
                }
 
                if (!empty($_POST['page_contactblock_unblock'])) {
@@ -98,6 +114,7 @@ class Contact extends BaseAdmin
                        '$total_contacts' => DI::l10n()->tt('%s total blocked contact', '%s total blocked contacts', $total),
                        '$paginate'   => $pager->renderFull($total),
                        '$contacturl' => ['contact_url', DI::l10n()->t('Profile URL'), '', DI::l10n()->t('URL of the remote contact to block.')],
+                       '$contact_block_purge'  => ['contact_block_purge', DI::l10n()->t('Also purge contact'), false, DI::l10n()->t('Removes all content related to this contact from the node. Keeps the contact record. This action canoot be undone.')],
                        '$contact_block_reason' => ['contact_block_reason', DI::l10n()->t('Block Reason')],
                ]);
                return $o;
index 78b4cd78fea93593aba3f36552fb9dffb914ee28..f12eed7a5f8ddb7d045e3615224406ad570243fd 100644 (file)
@@ -56,6 +56,7 @@
                        <tbody>
                                <tr>
                                        <td>{{include file="field_input.tpl" field=$contacturl}}</td>
+                                       <td>{{include file="field_checkbox.tpl" field=$contact_block_purge}}</td>
                                        <td>{{include file="field_textarea.tpl" field=$contact_block_reason}}</td>
                                </tr>
                        </tbody>
@@ -63,3 +64,4 @@
                <div class="submit"><input type="submit" name="page_contactblock_block" value="{{$submit}}" /></div>
        </form>
 </div>
+
index fabfa928f0422cafb3464cd267470ecb59760648..8f9fd282fcec40cded5c91846c07338b278873b2 100644 (file)
@@ -22,6 +22,7 @@
                                        <input type="hidden" name="form_security_token" value="{{$form_security_token}}">
 
                                        {{include file="field_input.tpl" field=$contacturl}}
+                                       {{include file="field_checkbox.tpl" field=$contact_block_purge}}
                                        {{include file="field_textarea.tpl" field=$contact_block_reason}}
 
                                        <div class="admin-settings-submit-wrapper form-group pull-right">