Passed
Pull Request — dev (#47)
by Stone
04:17 queued 01:57
created

Update::updateConfig()   A

Complexity

Conditions 5
Paths 12

Size

Total Lines 25
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 16
nc 12
nop 0
dl 0
loc 25
rs 9.4222
c 0
b 0
f 0
1
<?php
2
3
namespace App\Controllers\Admin;
4
5
use App\Models\ConfigModel;
6
use Core\AdminController;
7
use Core\Traits\StringFunctions;
8
9
10
class Update extends AdminController
11
{
12
13
    use StringFunctions;
14
15
    /**
16
     * gets the information in post and sets the corresponding site config details
17
     * this is pure php with no ajax
18
     * @throws \Exception
19
     */
20
    public function updateConfig()
21
    {
22
        //Security checks
23
        $this->onlyAdmin();
24
        if (!$this->container->getRequest()->isPost()) {
25
            $this->alertBox->setAlert('Only post messages allowed', 'error');
26
            $this->container->getResponse()->redirect('admin');
27
        }
28
29
        $configModel = new ConfigModel($this->container);
30
        $posts = $this->container->getRequest()->getDataFull();
31
        $success = true;
32
33
        foreach ($posts as $key => $config) {
34
            $configId = $this->removeFromBeginning($key, 'config-');
35
            if (!$configModel->updateConfig($configId, $config)) {
36
                $success = false;
37
            }
38
        }
39
        if ($success) {
40
            $this->alertBox->setAlert('Configuration updates successfully');
41
        } else {
42
            $this->alertBox->setAlert('error in configuration update', 'error');
43
        }
44
        $this->container->getResponse()->redirect('admin/config');
45
    }
46
}