summaryrefslogtreecommitdiffstats
path: root/modules-available/sysconfig/inc/configmodulebaseldap.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/sysconfig/inc/configmodulebaseldap.inc.php')
-rw-r--r--modules-available/sysconfig/inc/configmodulebaseldap.inc.php41
1 files changed, 36 insertions, 5 deletions
diff --git a/modules-available/sysconfig/inc/configmodulebaseldap.inc.php b/modules-available/sysconfig/inc/configmodulebaseldap.inc.php
index ad3d32c5..39f4f68e 100644
--- a/modules-available/sysconfig/inc/configmodulebaseldap.inc.php
+++ b/modules-available/sysconfig/inc/configmodulebaseldap.inc.php
@@ -32,12 +32,43 @@ abstract class ConfigModuleBaseLdap extends ConfigModule
return $list;
}
- protected function generateInternal($tgz, $parent)
+ public static function getActiveModuleIds()
+ {
+ return Database::queryColumnArray("SELECT DISTINCT moduleid FROM configtgz_module"
+ . " INNER JOIN configtgz_x_module USING (moduleid)"
+ . " INNER JOIN configtgz USING (configid)"
+ . " INNER JOIN configtgz_location USING (configid)"
+ . " WHERE moduletype IN ('AdAuth', 'LdapAuth')");
+ }
+
+ /**
+ * Launch all ldadp instances that need to be running.
+ *
+ * @param string $command start, restart, check
+ * @param bool|int|int[] $ids list of IDs to run command on, or false meaning "all"
+ * @param string $parent if not NULL, this will be the parent task of the launch-task
+ * @return boolean|string false on error, id of task otherwise
+ */
+ public static function ldadp($command = 'start', $ids = false, $parent = null)
{
- $np = Trigger::ldadp($this->id(), $parent);
- if ($np !== false) {
- $parent = $np;
+ if ($ids === false) {
+ $ids = self::getActiveModuleIds();
+ } elseif (!is_array($ids)) {
+ $ids = [$ids];
}
+ $task = Taskmanager::submit('LdadpLauncher', array(
+ 'ids' => $ids,
+ 'command' => $command,
+ 'parentTask' => $parent,
+ 'failOnParentFail' => false
+ ));
+ if (!isset($task['id']))
+ return false;
+ return $task['id'];
+ }
+
+ protected function generateInternal($tgz, $parent)
+ {
$config = $this->moduleData;
if (isset($config['certificate']) && !is_string($config['certificate'])) {
unset($config['certificate']);
@@ -72,7 +103,7 @@ abstract class ConfigModuleBaseLdap extends ConfigModule
$this->preTaskmanagerHook($config);
$task = Taskmanager::submit('CreateLdapConfig', $config);
if (is_array($task) && isset($task['id'])) {
- Trigger::ldadp(null, $task['id']);
+ self::ldadp('restart', $this->id(), $task['id']); // TODO: Use --restart for this one only
}
return $task;
}