Completed
Push — master ( 0db8da...fd044c )
by Olivier
02:12
created

AbstractManager::array_diff_assoc_recursive()   B

Complexity

Conditions 8
Paths 6

Size

Total Lines 17
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 8.0368

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 17
ccs 11
cts 12
cp 0.9167
rs 7.7777
cc 8
eloc 13
nc 6
nop 2
crap 8.0368
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->array_diff_assoc_recursive($configuration, $remoteConfiguration);
28
29 3
        foreach ($remoteConfiguration as $k => $v) {
30 3
            if (!isset($configuration[$k])) {
31 3
                unset($remoteConfiguration[$k]);
32
            }
33
        }
34
35 3
        $diff = array_merge_recursive(
36
            $diff,
37 3
            $this->array_diff_assoc_recursive($remoteConfiguration, $configuration)
38
        );
39
40 3
        return empty($diff);
41
    }
42
43 3
    private function array_diff_assoc_recursive($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->array_diff_assoc_recursive($value, $array2[$key]);
51 1
                    if( !empty($new_diff) )
52 1
                        $difference[$key] = $new_diff;
53
                }
54 3
            } else if( !array_key_exists($key,$array2) || $array2[$key] !== $value ) {
55 3
                $difference[$key] = $value;
56
            }
57
        }
58 3
        return $difference;
59
    }
60
}
61