Fix handlePageAction for multiple plugin instances, move renderTemplate to plugins

This commit is contained in:
billz 2024-11-07 10:23:10 -08:00
parent 0bcc396b78
commit 39a8a58f38

View file

@ -3,7 +3,7 @@
/** /**
* Plugin Manager class * Plugin Manager class
* *
* @description Architecture to support user plugins for RaspAP * @description Class supporting user plugins to extend RaspAP
* @author Bill Zimmerman <billzimmerman@gmail.com> * @author Bill Zimmerman <billzimmerman@gmail.com>
* Special thanks to GitHub user @assachs * Special thanks to GitHub user @assachs
* @license https://github.com/raspap/raspap-webgui/blob/master/LICENSE * @license https://github.com/raspap/raspap-webgui/blob/master/LICENSE
@ -66,32 +66,6 @@ class PluginManager
$this->plugins[] = $plugin; // store the plugin instance $this->plugins[] = $plugin; // store the plugin instance
} }
/**
* Renders a template from inside a plugin directory
* @param string $pluginName
* @param string $templateName
* @param array $__data
*/
public function renderTemplate(string $pluginName, string $templateName, array $__data = []): string
{
// Construct the file path for the template
$templateFile = "{$this->pluginPath}/{$pluginName}/templates/{$templateName}.php";
if (!file_exists($templateFile)) {
return "Template file {$templateFile} not found.";
}
// Extract the data for use in the template
if (!empty($__data)) {
extract($__data);
}
// Start output buffering to capture the template output
ob_start();
include $templateFile;
return ob_get_clean(); // return the output
}
// Returns the sidebar // Returns the sidebar
public function getSidebar(): Sidebar public function getSidebar(): Sidebar
{ {
@ -106,13 +80,10 @@ class PluginManager
{ {
foreach ($this->getInstalledPlugins() as $pluginClass) { foreach ($this->getInstalledPlugins() as $pluginClass) {
$plugin = new $pluginClass($this->pluginPath, $pluginClass); $plugin = new $pluginClass($this->pluginPath, $pluginClass);
if ($plugin instanceof PluginInterface && $plugin->handlePageAction($page)) {
if ($plugin instanceof PluginInterface) { return true;
if ($plugin->handlePageAction($page, $this)) { } else {
return true; continue;
} else {
return false;
}
} }
} }
} }