1: <?php
2:
3: App::uses('Plugin', 'PluginManager.Lib');
4:
5: class PluginManager {
6:
7: private static $plugins = array();
8:
9: public static function init($pluginName, $dependencies = array()) {
10: self::$plugins[$pluginName] = new Plugin($pluginName, $dependencies);
11: self::$plugins[$pluginName]->load();
12: }
13:
14: public static function plugin($name) {
15: if (empty(self::$plugins[$name])) {
16: self::init($name, array());
17: }
18:
19: return self::$plugins[$name];
20: }
21:
22: public static function inTree($pluginName = 'app') {
23: foreach (self::plugin($pluginName)->dependencies() as $dependency) {
24: foreach (self::inTree($dependency) as $subDependency) {
25: $plugins[$subDependency] = true;
26: }
27: }
28: $plugins[$pluginName] = true;
29: return array_keys($plugins);
30: }
31:
32: public static function notInTree($pluginName = 'app') {
33: $plugins = array();
34: foreach (CakePlugin::loaded() as $plugin) {
35: $plugins[$plugin] = true;
36: }
37:
38: foreach (self::inTree($pluginName) as $plugin) {
39: unset($plugins[$plugin]);
40: }
41: return array_keys($plugins);
42: }
43:
44: }
45: