Completed
Push — develop ( 21139f...eaa140 )
by Tom
12s
created

FromCommand::findModuleDependencies()   D

Complexity

Conditions 9
Paths 38

Size

Total Lines 33
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
c 1
b 1
f 0
dl 0
loc 33
rs 4.909
cc 9
eloc 19
nc 38
nop 2
1
<?php
2
3
namespace N98\Magento\Command\Developer\Module\Dependencies;
4
5
use InvalidArgumentException;
6
7
class FromCommand extends AbstractCommand
8
{
9
    /**#@+
10
     * Command texts to output
11
     *
12
     * @var string
13
     */
14
    const COMMAND_NAME               = 'dev:module:dependencies:from';
15
    const COMMAND_DESCRIPTION        = 'Show list of modules which depend on %s module';
16
    const COMMAND_SECTION_TITLE_TEXT = "List of modules which depend on %s module";
17
    const COMMAND_NO_RESULTS_TEXT    = "No modules depend on %s module";
18
    /**#@-*/
19
20
    /**
21
     * @inheritdoc
22
     */
23
    protected function findModuleDependencies($moduleName, $recursive = false)
24
    {
25
        if ($this->modules === null) {
26
            $this->modules = \Mage::app()->getConfig()->getNode('modules')->asArray();
27
        }
28
29
        if (!isset($this->modules[$moduleName])) {
30
            throw new InvalidArgumentException(sprintf("Module %s was not found", $moduleName));
31
        }
32
33
        $dependencies = array();
34
        foreach ($this->modules as $dependencyName => $module) {
35
            if (!isset($module['depends'][$moduleName])) {
36
                continue;
37
            }
38
39
            $dependencies[$dependencyName] = array(
40
                $dependencyName,
41
                isset($module['active']) ? $this->formatActive($module['active']) : '-',
42
                isset($module['version']) ? $module['version'] : '-',
43
                isset($module['codePool']) ? $module['codePool'] : '-',
44
            );
45
46
            if ($recursive) {
47
                $dependencies = array_merge(
48
                    $dependencies,
49
                    $this->findModuleDependencies($dependencyName, $recursive)
50
                );
51
            }
52
        }
53
54
        return $dependencies;
55
    }
56
}
57