Failed Conditions
Push — newinternal ( 216d62...410e59 )
by Simon
05:28 queued 13s
created

WelcomeUserTask   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
eloc 32
c 1
b 0
f 0
dl 0
loc 70
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A execute() 0 39 5
A performWelcome() 0 10 1
A enqueue() 0 8 1
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\Background\Task;
10
11
use Waca\Background\BackgroundTaskBase;
12
use Waca\DataObjects\JobQueue;
13
use Waca\DataObjects\Request;
14
use Waca\DataObjects\User;
15
use Waca\DataObjects\WelcomeTemplate;
16
use Waca\Helpers\MediaWikiHelper;
17
use Waca\Helpers\OAuthUserHelper;
18
use Waca\PdoDatabase;
19
use Waca\RequestStatus;
20
21
class WelcomeUserTask extends BackgroundTaskBase
22
{
23
    public static function enqueue(User $triggerUser, Request $request, PdoDatabase $database)
24
    {
25
        $job = new JobQueue();
26
        $job->setDatabase($database);
27
        $job->setTask(WelcomeUserTask::class);
28
        $job->setRequest($request->getId());
29
        $job->setTriggerUserId($triggerUser->getId());
30
        $job->save();
31
    }
32
33
    public function execute()
34
    {
35
        $database = $this->getDatabase();
36
        $request = $this->getRequest();
37
        $user = $this->getTriggerUser();
38
39
        if ($user->getWelcomeTemplate() === null) {
0 ignored issues
show
introduced by
The condition $user->getWelcomeTemplate() === null is always false.
Loading history...
40
            $this->markFailed('Welcome template not specified');
41
42
            return;
43
        }
44
45
        /** @var WelcomeTemplate $template */
46
        $template = WelcomeTemplate::getById($user->getWelcomeTemplate(), $database);
47
48
        if ($template === false) {
0 ignored issues
show
introduced by
The condition $template === false is always false.
Loading history...
49
            $this->markFailed('Welcome template missing');
50
51
            return;
52
        }
53
54
        $oauth = new OAuthUserHelper($user, $database, $this->getOauthProtocolHelper(),
55
            $this->getSiteConfiguration());
56
        $mediaWikiHelper = new MediaWikiHelper($oauth, $this->getSiteConfiguration());
57
58
        if ($request->getStatus() !== RequestStatus::CLOSED) {
59
            $this->markFailed('Request is currently open');
60
61
            return;
62
        }
63
64
        if (!$mediaWikiHelper->checkAccountExists($request->getName())){
65
            $this->markFailed('Account does not exist!');
66
67
            return;
68
        }
69
70
        $this->performWelcome($template, $request, $mediaWikiHelper);
71
        $this->markComplete();
72
    }
73
74
    /**
75
     * Performs the welcome
76
     *
77
     * @param WelcomeTemplate $template
78
     * @param Request         $request
79
     * @param MediaWikiHelper $mediaWikiHelper
80
     */
81
    private function performWelcome(
82
        WelcomeTemplate $template,
83
        Request $request,
84
        MediaWikiHelper $mediaWikiHelper
85
    ) {
86
        $templateText = $template->getBotCode();
87
        $templateText = str_replace('$signature', '~~~~', $templateText);
88
        $templateText = str_replace('$username', $request->getName(), $templateText);
89
90
        $mediaWikiHelper->addTalkPageMessage($request->getName(), 'Welcome!', 'Welcoming user created through [[WP:ACC]]', $templateText);
91
    }
92
}