aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Web/SubModule.php
diff options
context:
space:
mode:
Diffstat (limited to 'Zotlabs/Web/SubModule.php')
-rw-r--r--Zotlabs/Web/SubModule.php43
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;
+ }
+
+}
+