Let plugins run their own PHP code
CMS quality / php (8.2) (push) Canceled after 0s
CMS quality / php (8.4) (push) Canceled after 0s
CMS quality / browser (push) Canceled after 0s
CMS quality / mysql (push) Canceled after 0s

A plugin can now bring a plugin.php that registers hooks, scheduled tasks, its own tables, public pages and admin screens. Failures stay contained to the plugin; a form on a plugin page can be submitted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
kantarciandClaude Opus 5.5 committed 2026-11-09 18:56:14 +01:00
1 parent b61f958ca1
commit 9825bac3b3
17 files changed
+897 -19

No files matched your search

+12
View File
@@ -62,6 +62,7 @@ final class Scheduler
private Connection $db,
private iterable $tasks,
private string $projectDir,
private ?\App\Plugin\PluginRuntime $plugins = null,
) {
}
@@ -268,6 +269,14 @@ final class Scheduler
* @return bool false, wenn die Tabelle (noch) nicht da ist - vor der Installation und
* zwischen hochgeladenem Code und ausgefuehrter Migration
*/
/** Nach dem Ein- oder Ausschalten eines Plugins: Der Plan kennt dessen Aufgaben sofort. */
public function pluginsChanged(): void
{
$this->registry = null;
$this->sync();
$this->refreshState();
}
public function sync(?\DateTimeImmutable $now = null): bool
{
$now ??= self::now();
@@ -396,6 +405,9 @@ final class Scheduler
foreach ($this->tasks as $task) {
$registry[$task->name()] = $task;
}
foreach ($this->plugins?->tasks() ?? [] as $task) {
$registry[$task->name()] = $task;
}
ksort($registry);
return $this->registry = $registry;