Passed
Push — multiproject/requestforms ( 675fe5 )
by Simon
08:58 queued 04:51
created

RequestQueueHelper::isRequestFormTarget()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 0
Metric Value
eloc 8
c 0
b 0
f 0
dl 0
loc 14
ccs 0
cts 9
cp 0
rs 10
cc 4
nc 4
nop 2
crap 20
1
<?php
2
/******************************************************************************
3
 * Wikipedia Account Creation Assistance tool                                 *
4
 *                                                                            *
5
 * All code in this file is released into the public domain by the ACC        *
6
 * Development Team. Please see team.json for a list of contributors.         *
7
 ******************************************************************************/
8
9
namespace Waca\Helpers;
10
11
use Waca\DataObjects\EmailTemplate;
12
use Waca\DataObjects\RequestForm;
13
use Waca\DataObjects\RequestQueue;
14
use Waca\PdoDatabase;
15
16
class RequestQueueHelper
17
{
18
    /**
19
     * @param RequestQueue $queue
20
     * @param bool         $enabled
21
     * @param bool         $default
22
     * @param bool         $antiSpoof
23
     * @param bool         $titleBlacklist
24
     */
25 256
    public function configureDefaults(
26
        RequestQueue $queue,
27
        bool $enabled,
28
        bool $default,
29
        bool $antiSpoof,
30
        bool $titleBlacklist,
31
        bool $isTarget
32
    ) {
33
        // always allow enabling a queue
34 256
        if ($enabled) {
35 128
            $queue->setEnabled($enabled);
36
        }
37
38
        // only allow other enable-flag changes if we're not a default
39 256
        if (!($queue->isDefault() || $queue->isDefaultAntispoof() || $queue->isDefaultTitleBlacklist() || $isTarget)) {
40 32
            $queue->setEnabled($enabled);
41
        }
42
43
        // only allow enabling the default flags, and only when we're enabled.
44 256
        $queue->setDefault(($queue->isDefault() || $default) && $queue->isEnabled());
45 256
        $queue->setDefaultAntispoof(($queue->isDefaultAntispoof() || $antiSpoof) && $queue->isEnabled());
46 256
        $queue->setDefaultTitleBlacklist(($queue->isDefaultTitleBlacklist() || $titleBlacklist) && $queue->isEnabled());
47 256
    }
48
49
    /**
50
     * @param RequestQueue $queue
51
     * @param PdoDatabase  $database
52
     *
53
     * @return bool
54
     */
55
    public function isEmailTemplateTarget(RequestQueue $queue, PdoDatabase $database): bool
56
    {
57
        $isTarget = false;
58
        /** @var EmailTemplate[] $deferralTemplates */
59
        $deferralTemplates = EmailTemplate::getAllActiveTemplates('defer', $database);
60
        foreach ($deferralTemplates as $t) {
61
            if ($t->getQueue() === $queue->getId()) {
62
                $isTarget = true;
63
                break;
64
            }
65
        }
66
67
        return $isTarget;
68
    }
69
70
    public function isRequestFormTarget(RequestQueue $queue, PdoDatabase $database): bool
71
    {
72
        $isTarget = false;
73
        $forms = RequestForm::getAllForms($database, 1); // FIXME: domains
74
        foreach ($forms as $t) {
75
            if ($t->isEnabled()) {
76
                if ($t->getOverrideQueue() === $queue->getId()) {
77
                    $isTarget = true;
78
                    break;
79
                }
80
            }
81
        }
82
83
        return $isTarget;
84
    }
85
}