This repository has been archived by the owner on Sep 1, 2022. It is now read-only.
/
Approval.php
59 lines (44 loc) · 1.47 KB
/
Approval.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
namespace Luceos\Spam\Concerns;
use Flarum\Extension\ExtensionManager;
use Flarum\Flags\Flag;
use Flarum\Post\Post;
use Luceos\Spam\Filter;
trait Approval
{
use Users;
protected function requireApproval(Post $post, string $reason = null)
{
/** @var ExtensionManager $extensions */
$extensions = resolve(ExtensionManager::class);
if ($extensions->isEnabled('flarum-approval')) {
$post->is_approved = false;
$post->afterSave(function (Post $post) use ($reason, $extensions) {
$this->unapproveAndFlag($post, $reason);
});
return true;
}
return false;
}
protected function unapproveAndFlag(Post $post, string $reason = null)
{
/** @var ExtensionManager $extensions */
$extensions = resolve(ExtensionManager::class);
if (! $extensions->isEnabled('flarum-approval')) return false;
if ($post->number === 1) {
$post->discussion->is_approved = false;
$post->discussion->save();
}
if ($extensions->isEnabled('flarum-flags')) {
$flag = new Flag;
$flag->post_id = $post->id;
$flag->type = 'approval';
$flag->reason = 'Blocked by discuss';
$flag->reason_detail = $reason;
$flag->user()->associate($this->getModerator());
$flag->created_at = time();
$flag->save();
}
return true;
}
}