Completed
Pull Request — master (#19)
by Tim
10:08
created

AdditionalAttributeObserver::process()   B

Complexity

Conditions 5
Paths 5

Size

Total Lines 31
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 30

Importance

Changes 0
Metric Value
dl 0
loc 31
ccs 0
cts 17
cp 0
rs 8.439
c 0
b 0
f 0
cc 5
eloc 11
nc 5
nop 0
crap 30
1
<?php
2
3
/**
4
 * TechDivision\Import\Product\Observers\AdditionalAttributeObserver
5
 *
6
 * NOTICE OF LICENSE
7
 *
8
 * This source file is subject to the Open Software License (OSL 3.0)
9
 * that is available through the world-wide-web at this URL:
10
 * http://opensource.org/licenses/osl-3.0.php
11
 *
12
 * PHP version 5
13
 *
14
 * @author    Tim Wagner <[email protected]>
15
 * @copyright 2016 TechDivision GmbH <[email protected]>
16
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
17
 * @link      https://github.com/techdivision/import-product
18
 * @link      http://www.techdivision.com
19
 */
20
21
namespace TechDivision\Import\Product\Observers;
22
23
use TechDivision\Import\Product\Utils\ColumnKeys;
24
use TechDivision\Import\Product\Observers\AbstractProductImportObserver;
25
26
/**
27
 * Observer that prepares the additional product attribues found in the CSV file
28
 * in the row 'additional_attributes'.
29
 *
30
 * @author    Tim Wagner <[email protected]>
31
 * @copyright 2016 TechDivision GmbH <[email protected]>
32
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
33
 * @link      https://github.com/techdivision/import-product
34
 * @link      http://www.techdivision.com
35
 */
36
class AdditionalAttributeObserver extends AbstractProductImportObserver
37
{
38
39
    /**
40
     * Process the observer's business logic.
41
     *
42
     * @return array The processed row
43
     */
44
    protected function process()
45
    {
46
47
        // load the header information
48
        $headers = $this->getHeaders();
0 ignored issues
show
Unused Code introduced by
$headers is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
49
50
        // query whether or not the row has additional attributes
51
        if ($additionalAttributes = $this->getValue(ColumnKeys::ADDITIONAL_ATTRIBUTES)) {
52
            // query if the additional attributes have a value, at least
53
            if (strstr($additionalAttributes, '=') === false) {
54
                return;
55
            }
56
57
            // explode the additional attributes
58
            $additionalAttributes = explode(',', $additionalAttributes);
59
60
            // iterate over the attributes and append them to the row
61
            foreach ($additionalAttributes as $additionalAttribute) {
62
                // explode attribute code/option value from the attribute
63
                list ($attributeCode, $optionValue) = explode('=', $additionalAttribute);
64
65
                // try to load the appropriate key for the value
66
                if (!$this->hasHeader($attributeCode)) {
67
                    $this->addHeader($attributeCode);
68
                }
69
70
                // append/replace the attribute value
71
                $this->setValue($attributeCode, $optionValue);
72
            }
73
        }
74
    }
75
}
76