RequestActionBase::checkPosted()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 9
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 0
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\Pages\RequestAction;
10
11
use Waca\Background\Task\WelcomeUserTask;
12
use Waca\DataObjects\JobQueue;
13
use Waca\DataObjects\Request;
14
use Waca\DataObjects\User;
15
use Waca\Exceptions\ApplicationLogicException;
16
use Waca\PdoDatabase;
17
use Waca\Tasks\InternalPageBase;
18
use Waca\WebRequest;
19
20
abstract class RequestActionBase extends InternalPageBase
21
{
22
    /**
23
     * @param PdoDatabase $database
24
     *
25
     * @return Request
26
     * @throws ApplicationLogicException
27
     */
28
    protected function getRequest(PdoDatabase $database)
29
    {
30
        $requestId = WebRequest::postInt('request');
31
        if ($requestId === null) {
32
            throw new ApplicationLogicException('Request ID not found');
33
        }
34
35
        /** @var Request $request */
36
        $request = Request::getById($requestId, $database);
37
38
        if ($request === false) {
0 ignored issues
show
introduced by
The condition $request === false is always false.
Loading history...
39
            throw new ApplicationLogicException('Request not found');
40
        }
41
42
        return $request;
43
    }
44
45
    final protected function checkPosted()
46
    {
47
        // if the request was not posted, send the user away.
48
        if (!WebRequest::wasPosted()) {
49
            throw new ApplicationLogicException('This page does not support GET methods.');
50
        }
51
52
        // validate the CSRF token
53
        $this->validateCSRFToken();
54
    }
55
56
    /**
57
     * @param Request     $request
58
     * @param             $parentTaskId
59
     * @param User        $user
60
     * @param PdoDatabase $database
61
     */
62
    protected function enqueueWelcomeTask(Request $request, $parentTaskId, User $user, PdoDatabase $database)
63
    {
64
        $welcomeTask = new JobQueue();
65
        $welcomeTask->setTask(WelcomeUserTask::class);
66
        $welcomeTask->setRequest($request->getId());
67
        $welcomeTask->setParent($parentTaskId);
68
        $welcomeTask->setTriggerUserId($user->getId());
69
        $welcomeTask->setDatabase($database);
70
        $welcomeTask->save();
71
    }
72
}