Passed
Branch master (48d769)
by Michael
02:30
created

SISContext   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 52
rs 10
c 0
b 0
f 0
wmc 7

4 Methods

Rating   Name   Duplication   Size   Complexity  
A myGoto() 0 18 4
A getAllContextNames() 0 3 1
A __construct() 0 4 1
A getAllContexts() 0 3 1
1
<?php namespace XoopsModules\Pedigree;
2
3
use XoopsModules\Pedigree;
4
5
/**
6
 * Class Pedigree\SISContext
7
 */
8
class SISContext
9
{
10
    private $contexts;
11
    private $depth;
12
13
    /**
14
     * SISContext constructor.
15
     */
16
    public function __construct()
17
    {
18
        $this->contexts = [];
19
        $this->depth    = 0;
20
    }
21
22
    /**
23
     * @param $url
24
     * @param $name
25
     */
26
    public function myGoto($url, $name)
27
    {
28
        $keys = array_keys($this->contexts);
29
        for ($i = 0; $i < $this->depth; ++$i) {
30
            if ($keys[$i] == $name) {
31
                $this->contexts[$name] = $url; // the url might be slightly different
32
                $this->depth           = $i + 1;
33
34
                for ($x = count($this->contexts); $x > $i + 1; $x--) {
35
                    array_pop($this->contexts);
36
                }
37
38
                return;
39
            }
40
        }
41
42
        $this->contexts[$name] = $url;
43
        $this->depth++;
44
    }
45
46
    /**
47
     * @return array
48
     */
49
    public function getAllContexts()
50
    {
51
        return $this->contexts;
52
    }
53
54
    /**
55
     * @return array
56
     */
57
    public function getAllContextNames()
58
    {
59
        return array_keys($this->contexts);
60
    }
61
}
62