CreateElement   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 3
dl 0
loc 53
ccs 0
cts 12
cp 0
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
newElement() 0 1 ?
A run() 0 4 1
A validBodyParams() 0 4 1
A performAction() 0 4 1
1
<?php
2
3
/**
4
 * @copyright  Copyright (c) Flipbox Digital Limited
5
 * @license    https://github.com/flipboxfactory/craft-ember/blob/master/LICENSE
6
 * @link       https://github.com/flipboxfactory/craft-ember/
7
 */
8
9
namespace flipbox\craft\ember\actions\elements;
10
11
use Craft;
12
use craft\base\ElementInterface;
13
use yii\base\Action;
14
15
/**
16
 * @author Flipbox Factory <[email protected]>
17
 * @since 2.0.0
18
 */
19
abstract class CreateElement extends Action
20
{
21
    use SaveElementTrait;
22
23
    /**
24
     * @var array
25
     */
26
    public $validBodyParams = [];
27
28
    /**
29
     * @inheritdoc
30
     */
31
    public $statusCodeSuccess = 201;
32
33
    /**
34
     * @inheritdoc
35
     * @return ElementInterface
36
     */
37
    abstract protected function newElement(array $config = []): ElementInterface;
38
39
    /**
40
     * @return mixed
41
     * @throws \yii\base\Exception
42
     * @throws \yii\web\HttpException
43
     * @throws \yii\web\UnauthorizedHttpException
44
     */
45
    public function run()
46
    {
47
        return $this->runInternal($this->newElement());
48
    }
49
50
    /**
51
     * Body params that should be set on the record.
52
     *
53
     * @return array
54
     */
55
    protected function validBodyParams(): array
56
    {
57
        return $this->validBodyParams;
58
    }
59
60
    /**
61
     * @param ElementInterface $element
62
     * @return bool
63
     * @throws \Throwable
64
     * @throws \craft\errors\ElementNotFoundException
65
     * @throws \yii\base\Exception
66
     */
67
    protected function performAction(ElementInterface $element): bool
68
    {
69
        return Craft::$app->getElements()->saveElement($element);
70
    }
71
}
72