NameResolver   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 4
Bugs 0 Features 1
Metric Value
c 4
b 0
f 1
dl 0
loc 30
wmc 6
lcom 0
cbo 0
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B resolveName() 0 20 6
1
<?php
2
3
/*
4
 * This file is part of Sulu.
5
 *
6
 * (c) MASSIVE ART WebServices GmbH
7
 *
8
 * This source file is subject to the MIT license that is bundled
9
 * with this source code in the file LICENSE.
10
 */
11
12
namespace Sulu\Component\DocumentManager;
13
14
use PHPCR\NodeInterface;
15
16
/**
17
 * Ensures that node names are unique.
18
 */
19
class NameResolver
20
{
21
    /**
22
     * @param NodeInterface $parentNode
23
     * @param string $name
24
     * @param null|NodeInterface $forNode
25
     *
26
     * @return string
27
     */
28
    public function resolveName(NodeInterface $parentNode, $name, $forNode = null)
29
    {
30
        if ($forNode && $parentNode->hasNode($name) && $parentNode->getNode($name) == $forNode) {
31
            return $name;
32
        }
33
34
        $index = 0;
35
        $baseName = $name;
36
        do {
37
            if ($index > 0) {
38
                $name = $baseName . '-' . $index;
39
            }
40
41
            $hasChild = $parentNode->hasNode($name);
42
43
            ++$index;
44
        } while ($hasChild);
45
46
        return $name;
47
    }
48
}
49