NameResolver::resolveName()   B
last analyzed

Complexity

Conditions 6
Paths 3

Size

Total Lines 20
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 1
Metric Value
c 3
b 0
f 1
dl 0
loc 20
rs 8.8571
cc 6
eloc 12
nc 3
nop 3
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