Passed
Push — master ( ac9a19...e11ae0 )
by Michael
13:36 queued 09:25
created

BlockActionsHandler   A

Complexity

Total Complexity 14

Size/Duplication

Total Lines 148
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 92
c 1
b 0
f 0
dl 0
loc 148
rs 10
wmc 14

5 Methods

Rating   Name   Duplication   Size   Complexity  
A processOrderBlockAction() 0 35 1
A processPostData() 0 30 1
A setRequest() 0 3 1
B handleActions() 0 50 10
A __construct() 0 4 1
1
<?php declare(strict_types=1);
2
3
namespace XoopsModules\Xoopspoll\Common;
4
5
/**
6
 * You may not change or alter any portion of this comment or credits
7
 * of supporting developers from this source code or any supporting source code
8
 * which is considered copyrighted (c) material of the original comment or credit authors.
9
 *
10
 *
11
 * @category        Module
12
 * @author          XOOPS Development Team
13
 * @copyright       XOOPS Project
14
 * @link            https://xoops.org
15
 * @license         GNU GPL 2.0 or later (https://www.gnu.org/licenses/gpl-2.0.html)
16
 */
17
18
use Xmf\Module\Admin;
19
use Xmf\Request;
20
use XoopsModules\Xoopspoll\{
21
    Helper
22
};
23
24
/**
25
 * class BlockActionsHandler
26
 */
27
class BlockActionsHandler
28
{
29
    private $blocksadmin;
30
    private $helper;
31
    private $request;
32
33
    /**
34
     * @param $blocksadmin
35
     */
36
    public function __construct($blocksadmin)
37
    {
38
        $this->blocksadmin = $blocksadmin;
39
        $this->helper = Helper::getInstance();
40
    }
41
42
    public function processPostData(): BlockData
43
    {
44
        $blockData                 = new BlockData();
45
        $blockData->ok             = Request::getInt('ok', 0, 'POST');
46
        $blockData->confirm_submit = Request::getCmd('confirm_submit', '', 'POST');
47
        $blockData->submit         = Request::getString('submit', '', 'POST');
48
        $blockData->bside          = Request::getString('bside', '0', 'POST');
49
        $blockData->bweight        = Request::getString('bweight', '0', 'POST');
50
        $blockData->bvisible       = Request::getString('bvisible', '0', 'POST');
51
        $blockData->bmodule        = Request::getArray('bmodule', [], 'POST');
52
        $blockData->btitle         = Request::getString('btitle', '', 'POST');
53
        $blockData->bcachetime     = Request::getString('bcachetime', '0', 'POST');
54
        $blockData->groups         = Request::getArray('groups', [], 'POST');
55
        $blockData->options        = Request::getArray('options', [], 'POST');
56
        $blockData->submitblock    = Request::getString('submitblock', '', 'POST');
57
        $blockData->fct            = Request::getString('fct', '', 'POST');
58
        $blockData->title          = Request::getString('title', '', 'POST');
59
        $blockData->side           = Request::getString('side', '0', 'POST');
60
        $blockData->weight         = Request::getString('weight', '0', 'POST');
61
        $blockData->visible        = Request::getString('visible', '0', 'POST');
62
63
//        $blockData->oldTitle      = [];
64
//        $blockData->oldSide       = [];
65
//        $blockData->oldWeight     = [];
66
//        $blockData->oldVisible    = [];
67
//        $blockData->oldGroups     = [];
68
//        $blockData->oldBcachetime = [];
69
//        $blockData->oldBmodule    = [];
70
71
        return $blockData;
72
    }
73
74
    public function handleActions(BlockData $blockData)
75
    {
76
        $moduleDirNameUpper = \mb_strtoupper(Helper::getInstance()->getDirname());
77
        $bid = Request::getInt('bid', 0);
78
79
        switch ($blockData->op) {
80
            case 'order':
81
                $blockData->bid        = Request::getArray('bid', []);
82
                $blockData->titleArray = Request::getArray('title', [], 'POST');
83
                // Fill in other properties from the request
84
                $this->processOrderBlockAction($blockData);
85
                break;
86
87
            case 'clone':
88
                $this->blocksadmin->cloneBlock($bid);
89
                break;
90
91
            case 'delete':
92
                if (1 === $blockData->ok) {
93
                    $this->blocksadmin->deleteBlock($bid);
94
                } else {
95
                    xoops_confirm(['ok' => 1, 'op' => 'delete', 'bid' => $bid], 'blocksadmin.php', constant('CO_' . $moduleDirNameUpper . '_' . 'DELETE_BLOCK_CONFIRM'), constant('CO_' . $moduleDirNameUpper . '_' . 'CONFIRM'), true);
96
                    xoops_cp_footer();
97
                }
98
                break;
99
100
            case 'edit':
101
                if ($bid > 0) {
102
                    $this->blocksadmin->editBlock($bid);
103
                } else {
104
                    $this->helper->redirect('admin/blocksadmin.php', 3, _AM_BLOCK_EDIT_ID_ERROR);
105
                }
106
                break;
107
108
            case 'edit_ok':
109
                $this->blocksadmin->updateBlock($bid, $blockData->btitle, $blockData->bside, $blockData->bweight, $blockData->bvisible, $blockData->bcachetime, $blockData->bmodule, $blockData->options, $blockData->groups);
110
                break;
111
112
            case 'clone_ok':
113
                $this->blocksadmin->isBlockCloned($bid, $blockData->bside, $blockData->bweight, $blockData->bvisible, $blockData->bcachetime, $blockData->bmodule, $blockData->options, $blockData->groups, true);
114
                break;
115
116
            case 'list':
117
                //        xoops_cp_header();
118
                $this->blocksadmin->listBlocks();
119
                break;
120
121
            default:
122
                // Add the code to handle the default operation here
123
                break;
124
        }
125
    }
126
127
    public function processOrderBlockAction(BlockData $blockData)
128
    {
129
        $blockData->bid           = Request::getArray('bid', []);
130
        $blockData->oldtitle      = Request::getArray('oldtitle', [], 'POST');
131
        $blockData->oldside       = Request::getArray('oldside', [], 'POST');
132
        $blockData->oldweight     = Request::getArray('oldweight', [], 'POST');
133
        $blockData->oldvisible    = Request::getArray('oldvisible', [], 'POST');
134
        $blockData->oldgroups     = Request::getArray('oldgroups', [], 'POST');
135
        $blockData->oldbcachetime = Request::getArray('oldcachetime', [], 'POST');
136
        $blockData->oldbmodule    = Request::getArray('oldbmodule', [], 'POST');
137
        $blockData->title         = Request::getArray('title', [], 'POST');
138
        $blockData->weight        = Request::getArray('weight', [], 'POST');
139
        $blockData->visible       = Request::getArray('visible', [], 'POST');
140
        $blockData->side          = Request::getArray('side', [], 'POST');
141
        $blockData->bcachetime    = Request::getArray('bcachetime', [], 'POST');
142
        $blockData->groups        = Request::getArray('groups', [], 'POST');
143
        $blockData->bmodule       = Request::getArray('bmodule', [], 'POST');
144
145
146
        $this->blocksadmin->orderBlock(
147
            $blockData->bid,
148
            $blockData->oldtitle,
149
            $blockData->oldside,
150
            $blockData->oldweight,
151
            $blockData->oldvisible,
152
            $blockData->oldgroups,
153
            $blockData->oldbcachetime,
154
            $blockData->oldbmodule,
155
            $blockData->title,
156
            $blockData->weight,
157
            $blockData->visible,
158
            $blockData->side,
159
            $blockData->bcachetime,
160
            $blockData->groups,
161
            $blockData->bmodule
162
        );
163
    }
164
165
166
    //for testing mocking
167
168
    /**
169
     * @param $request
170
     * @return void
171
     */
172
    public function setRequest($request): void
173
    {
174
        $this->request = $request;
175
    }
176
177
}
178