summaryrefslogtreecommitdiffstats
path: root/inc/taskmanagercallback.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2014-10-09 16:01:11 +0200
committerSimon Rettberg2014-10-09 16:01:11 +0200
commite1dc0d3c99217504de2ac8467156274786efc0bd (patch)
tree130d7fed1fff8aaaffe5942cf2a3d6bb1dad03c8 /inc/taskmanagercallback.inc.php
parentMinor fixes and improvements (diff)
downloadslx-admin-e1dc0d3c99217504de2ac8467156274786efc0bd.tar.gz
slx-admin-e1dc0d3c99217504de2ac8467156274786efc0bd.tar.xz
slx-admin-e1dc0d3c99217504de2ac8467156274786efc0bd.zip
Big load of changes
- Added callback functionality for taskmanager tasks. You can launch a task and define a callback function to be run when the task finished. This requires activating the cronjob - Added cron functionality: Add cronjob that calls the cron api every 5 minutes to use it. (See cron.inc.php) - Added eventlog - Added missing translations - Merged main-menu-login and main-menu-logout
Diffstat (limited to 'inc/taskmanagercallback.inc.php')
-rw-r--r--inc/taskmanagercallback.inc.php43
1 files changed, 43 insertions, 0 deletions
diff --git a/inc/taskmanagercallback.inc.php b/inc/taskmanagercallback.inc.php
new file mode 100644
index 00000000..3ef4745c
--- /dev/null
+++ b/inc/taskmanagercallback.inc.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * Contains all callbacks for detached taskmanager tasks.
+ */
+class TaskmanagerCallback
+{
+
+ /**
+ * Add a callback for given task id. This is the only exception in this class,
+ * as this is not a callback, but a function to define one :)
+ *
+ * @param string|array $task Task or Task ID to define callback for
+ * @param string $callback name of callback function, must be a static method in this class
+ */
+ public static function addCallback($task, $callback)
+ {
+ if (!call_user_func_array('method_exists', array('TaskmanagerCallback', $callback))) {
+ EventLog::warning("addCallback: Invalid callback function: $callback");
+ return;
+ }
+ if (is_array($task) && isset($task['id']))
+ $task = $task['id'];
+ if (!is_string($task)) {
+ EventLog::warning("addCallback: Not a valid task id: $task");
+ return;
+ }
+ Database::exec("INSERT INTO callback (taskid, dateline, cbfunction) VALUES (:task, UNIX_TIMESTAMP(), :callback)", array(
+ 'task' => $task,
+ 'callback' => $callback
+ ));
+ }
+
+ /**
+ * Result of trying to (re)launch ldadp.
+ */
+ public static function ldadpStartup($task)
+ {
+ if (Taskmanager::isFailed($task))
+ EventLog::warning("Could not start/stop LDAP-AD-Proxy instances", $task['data']['messages']);
+ }
+
+}