Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions extend.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
(new Extend\Settings())
->default('fof-filter.autoDeletePosts', false)
->default('fof-filter.autoMergePosts', false)
->default('fof-filter.autoMergeDivider', false)
->default('fof-filter.cooldown', 15)
->default('fof-filter.emailWhenFlagged', false),
];
6 changes: 6 additions & 0 deletions js/src/admin/components/FilterSettingsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,12 @@ export default class FilterSettingsPage extends ExtensionPage {
help: app.translator.trans('fof-filter.admin.help2'),
min: 0,
})}
{this.buildSettingComponent({
type: 'boolean',
setting: 'fof-filter.autoMergeDivider',
label: app.translator.trans('fof-filter.admin.input.switch.merge_divider'),
help: app.translator.trans('fof-filter.admin.merge_divider_help'),
})}
<hr />
<h2>{app.translator.trans('fof-filter.admin.input.email_label')}</h2>
<p className="helpText">{app.translator.trans('fof-filter.admin.input.email_help')}</p>
Expand Down
5 changes: 5 additions & 0 deletions resources/locale/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ fof-filter:
countLabel: Censor Tolorance
cooldownLabel: Merge Post Cooldown
auto_merge_title: Auto merge
merge_divider_help: A divider will be inserted between the existing post content and the newly merged content.
input:
placeholder: Strings to be filtered
filter_title: Strings to filter
Expand All @@ -20,6 +21,7 @@ fof-filter:
switch:
email: Email user when post is filtered
merge: Auto merge double posts
merge_divider: Add a divider when posts are automatically merged
delete: Auto delete filtered posts
email_subject: Subject
email_body: Body
Expand All @@ -38,3 +40,6 @@ fof-filter:
If you believe this was an error, you are in luck, each removed post is reviewed by our moderators. If they find that this was wrongfully removed, they will restore it.

Thank you for your understanding.
views:
auto_merged_divider: 'Posts merged automatically: {datetime}'
auto_merged_datetime_format: 'M j, Y, H:i'
24 changes: 21 additions & 3 deletions src/Handler/AutoMergePostReplyHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

use Flarum\Discussion\DiscussionRepository;
use Flarum\Foundation\DispatchEventsTrait;
use Flarum\Locale\Translator;
use Flarum\Post\Command\PostReply;
use Flarum\Post\Command\PostReplyHandler;
use Flarum\Post\CommentPost;
Expand All @@ -32,19 +33,22 @@ class AutoMergePostReplyHandler
protected SettingsRepositoryInterface $settings;
protected PostRepository $posts;
protected DiscussionRepository $discussions;
protected Translator $translator;

public function __construct(
PostReplyHandler $original,
SettingsRepositoryInterface $settings,
PostRepository $posts,
DiscussionRepository $discussions,
Dispatcher $events
Dispatcher $events,
Translator $translator
) {
$this->original = $original;
$this->settings = $settings;
$this->posts = $posts;
$this->discussions = $discussions;
$this->events = $events;
$this->translator = $translator;
}

/**
Expand Down Expand Up @@ -85,8 +89,22 @@ public function handle(PostReply $command): CommentPost

$actor->assertCan('reply', $discussion);

$newContent = Arr::get($command->data, 'attributes.content', '');
$mergedContent = $lastPost->content."\n\n".$newContent;
$parts = [$lastPost->content];

if ($this->settings->get('fof-filter.autoMergeDivider')) {
$locale = $actor->getPreference('locale')
?? $this->settings->get('default_locale')
?? 'en';

$label = $this->translator->trans(
'fof-filter.views.auto_merged_divider',
['{datetime}' => Carbon::now()->locale($locale)->translatedFormat($this->translator->trans('fof-filter.views.auto_merged_datetime_format'))]
);
$parts[] = "---\n\n_{$label}_\n\n---";
}

$parts[] = Arr::get($command->data, 'attributes.content', '');
$mergedContent = implode("\n\n", $parts);

$lastPost->revise($mergedContent, $actor);

Expand Down
Loading