diff options
Diffstat (limited to 'Zotlabs/Web/SubModule.php')
-rw-r--r-- | Zotlabs/Web/SubModule.php | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Zotlabs/Web/SubModule.php b/Zotlabs/Web/SubModule.php new file mode 100644 index 000000000..5f49b9292 --- /dev/null +++ b/Zotlabs/Web/SubModule.php @@ -0,0 +1,43 @@ +<?php + +namespace Zotlabs\Web; + + +class SubModule { + + private $controller = false; + + /** + * Initiate sub-modules. By default the submodule name is in argv(1), though this is configurable. + * Example: Given a URL path such as /admin/plugins, and the Admin module initiates sub-modules. + * This means we'll look for a class Plugins in Zotlabs/Module/Admin/Plugins.php + * The specific methods and calling parameters are up to the top level module controller logic. + * + * **If** you were to provide sub-module support on the photos module, you would probably use + * $whicharg = 2, as photos are typically called with a URL path of /photos/channel_address/submodule_name + * where submodule_name might be something like album or image. + */ + + + function __construct($whicharg = 1) { + + if(argc() < ($whicharg + 1)) + return; + + $filename = 'Zotlabs/Module/' . ucfirst(argv(0)) . '/'. ucfirst(argv($whicharg)) . '.php'; + $modname = '\\Zotlabs\\Module\\' . ucfirst(argv(0)) . '\\' . ucfirst(argv($whicharg)); + if(file_exists($filename)) { + $this->controller = new $modname(); + } + } + + function call($method) { + if(! $this->controller) + return false; + if(method_exists($this->controller,$method)) + return $this->controller->$method(); + return false; + } + +} + |