Completed
Push — master ( 78b205...ff93a3 )
by Olivier
18:22 queued 05:58
created

AbstractManager::arrayDiffAssocRecursive()   B

Complexity

Conditions 8
Paths 6

Size

Total Lines 18
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 8.125

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 18
ccs 14
cts 16
cp 0.875
rs 7.7777
cc 8
eloc 13
nc 6
nop 2
crap 8.125
1
<?php
2
3
namespace Ola\RabbitMqAdminToolkitBundle\Manager;
4
5
use Guzzle\Http\Exception\ClientErrorResponseException;
6
7
abstract class AbstractManager
8
{
9
    /**
10
     * @param ClientErrorResponseException $e
11
     */
12 8
    protected function handleNotFoundException(ClientErrorResponseException $e)
13
    {
14 8
        if ($e->getResponse()->getStatusCode() !== 404) {
15 1
            throw $e;
16
        }
17 7
    }
18
19
    /**
20
     * @param $configuration
21
     * @param $remoteConfiguration
22
     *
23
     * @return bool
24
     */
25 3
    protected function isUpToDate($configuration, $remoteConfiguration)
26
    {
27 3
        $diff = $this->arrayDiffAssocRecursive($configuration, $remoteConfiguration);
28
29 3
        foreach ($remoteConfiguration as $k => $v) {
30 3
            if (!isset($configuration[$k])) {
31
                unset($remoteConfiguration[$k]);
32
            }
33 3
        }
34
35 3
        $diff = array_merge_recursive(
36 3
            $diff,
37 3
            $this->arrayDiffAssocRecursive($remoteConfiguration, $configuration)
38 3
        );
39
40 3
        return empty($diff);
41
    }
42
43 3
    private function arrayDiffAssocRecursive($array1, $array2) {
44 3
        $difference = array();
45 3
        foreach ($array1 as $key => $value) {
46 3
            if (is_array($value)) {
47 1
                if (!isset($array2[$key]) || !is_array($array2[$key])) {
48
                    $difference[$key] = $value;
49
                } else {
50 1
                    $new_diff = $this->arrayDiffAssocRecursive($value, $array2[$key]);
51 1
                    if (!empty($new_diff)) {
52 1
                        $difference[$key] = $new_diff;
53 1
                    }
54
                }
55 3
            } else if (!array_key_exists($key, $array2) || $array2[$key] !== $value) {
56 3
                $difference[$key] = $value;
57 3
            }
58 3
        }
59 3
        return $difference;
60
    }
61
}
62