diff options
Diffstat (limited to 'inc/module.inc.php')
-rw-r--r-- | inc/module.inc.php | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/inc/module.inc.php b/inc/module.inc.php index 336d0a5b..a7a767ef 100644 --- a/inc/module.inc.php +++ b/inc/module.inc.php @@ -182,6 +182,28 @@ class Module } } } + + public function getDependencies() + { + $deps = array(); + $this->getDepsInternal($deps); + return array_keys($deps); + } + + private function getDepsInternal(&$deps) + { + if (!is_array($this->dependencies)) + return array(); + foreach ($this->dependencies as $dep) { + if (isset($deps[$dep])) // Handle cyclic dependencies + continue; + $deps[$dep] = true; + $mod = self::get($dep); + if ($mod === false) + continue; + $mod->getDepsInternal($deps); + } + } public function getIdentifier() { |