GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — dev ( c7bcbf...fead3a )
by Андрей
06:13
created

Data::validateIterateData()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 3.576

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 7
ccs 3
cts 5
cp 0.6
rs 9.4285
cc 3
eloc 4
nc 2
nop 1
crap 3.576
1
<?php
2
/**
3
 * @link https://github.com/old-town/old-town-workflow
4
 * @author  Malofeykin Andrey  <[email protected]>
5
 */
6
namespace OldTown\Workflow\Engine;
7
8
use OldTown\PropertySet\PropertySetInterface;
9
use OldTown\Workflow\Exception\InternalWorkflowException;
10
use OldTown\Workflow\Exception\WorkflowException;
11
use OldTown\Workflow\Loader\RegisterDescriptor;
12
use OldTown\Workflow\Spi\WorkflowEntryInterface;
13
use OldTown\Workflow\TransientVars\TransientVarsInterface;
14
use Traversable;
15
use OldTown\Workflow\Exception\InvalidArgumentException;
16
use SplObjectStorage;
17
18
19
/**
20
 * Class Data
21
 *
22
 * @package OldTown\Workflow\Engine
23
 */
24
class Data extends AbstractEngine implements DataInterface
25
{
26
    /**
27
     * @param WorkflowEntryInterface $entry
28
     * @param TransientVarsInterface $transientVars
29
     * @param array|Traversable|RegisterDescriptor[]|SplObjectStorage $registersStorage
30
     * @param integer $actionId
31
     * @param array|Traversable $currentSteps
32
     * @param PropertySetInterface $ps
33
     *
34
     *
35
     * @return TransientVarsInterface
36
     *
37
     * @throws InvalidArgumentException
38
     * @throws WorkflowException
39
     * @throws InternalWorkflowException
40
     */
41 19
    public function populateTransientMap(WorkflowEntryInterface $entry, TransientVarsInterface $transientVars, $registersStorage, $actionId = null, $currentSteps, PropertySetInterface $ps)
42
    {
43 19
        $this->validateIterateData($currentSteps);
44
45 19
        $workflowManager = $this->getWorkflowManager();
46 19
        $context = $workflowManager->getContext();
47 19
        $configuration = $workflowManager->getConfiguration();
48 19
        $engineManagers = $this->getWorkflowManager()->getEngineManager();
49
50 19
        $registers = $engineManagers->getDataEngine()->convertDataInArray($registersStorage);
51
52
53
        /** @var RegisterDescriptor[] $registers */
54
55 19
        $transientVars['context'] = $context;
56 19
        $transientVars['entry'] = $entry;
57 19
        $transientVars['entryId'] = $entry->getId();
58 19
        $transientVars['store'] = $configuration->getWorkflowStore();
59 19
        $transientVars['configuration'] = $configuration;
60 19
        $transientVars['descriptor'] = $configuration->getWorkflow($entry->getWorkflowName());
61
62 19
        if (null !== $actionId) {
63 19
            $transientVars['actionId'] = $actionId;
64 19
        }
65
66 19
        $transientVars['currentSteps'] = $currentSteps;
67
68
69 19
        foreach ($registers as $register) {
70 3
            $args = $register->getArgs();
71 3
            $type = $register->getType();
72
73
            try {
74 3
                $r = $workflowManager->getResolver()->getRegister($type, $args);
75 3
            } catch (\Exception $e) {
76
                $errMsg = 'Ошибка при инициализации register';
77
                $context->setRollbackOnly();
78
                throw new WorkflowException($errMsg, $e->getCode(), $e);
79
            }
80
81 3
            $variableName = $register->getVariableName();
82
            try {
83 3
                $value = $r->registerVariable($context, $entry, $args, $ps);
84
85 3
                $transientVars[$variableName] = $value;
86 3
            } catch (\Exception $e) {
87
                $context->setRollbackOnly();
88
89
                $errMsg = sprintf(
90
                    'При получение значения переменной %s из registry %s произошла ошибка',
91
                    $variableName,
92
                    get_class($r)
93
                );
94
95
                throw new WorkflowException($errMsg, $e->getCode(), $e);
96
            }
97 19
        }
98
99 19
        return $transientVars;
100
    }
101
102
    /**
103
     * Преобразование данных в массив
104
     *
105
     * @param $data
106
     *
107
     * @return array
108
     *
109
     * @throws InvalidArgumentException
110
     */
111 19
    public function convertDataInArray($data)
112
    {
113 19
        $result = [];
114 19
        if ($data instanceof Traversable) {
115 19
            foreach ($data as $k => $v) {
116 7
                $result[$k] = $v;
117 19
            }
118 19
        } elseif (is_array($data)) {
119
            $result = $data;
120
        } else {
121
            $errMsg = 'Data must be an array or an interface to implement Traversable';
122
            throw new InvalidArgumentException($errMsg);
123
        }
124
125 19
        return $result;
126
    }
127
128
    /**
129
     * Проверка того что данные могут быть использованы в цикле
130
     *
131
     * @param $data
132
     *
133
     * @throws InvalidArgumentException
134
     */
135 19
    public function validateIterateData($data)
136
    {
137 19
        if (!is_array($data) && !$data  instanceof Traversable) {
138
            $errMsg = 'Data not iterate';
139
            throw new InvalidArgumentException($errMsg);
140
        }
141 19
    }
142
}
143