Florian Schaal
2016-03-22 5ca959fa688255a8de61f89fe2751eb4d24a6912
server/lib/classes/services.inc.php
@@ -32,48 +32,52 @@
   var $registered_services = array();
   var $delayed_restarts = array();
   // This function adds a request for restarting
   var $debug = false;
   // This function adds a request for restarting
   // a service at the end of the configuration run.
   function restartServiceDelayed($service_name,$action = 'restart') {
   function restartServiceDelayed($service_name, $action = 'restart') {
      global $app;
      if(is_array($this->registered_services[$service_name])) {
         $this->delayed_restarts[$service_name] = $action;
      } else {
         $app->log("Unable to add a delayed restart for  '$service_name'. Service '$service_name' is not registered.",LOGLEVEL_WARNING);
         $app->log("Unable to add a delayed restart for '$service_name'. Service not registered.", LOGLEVEL_WARNING);
      }
   }
   // This function restarts a service when the function is called
   function restartService($service_name,$action = 'restart') {
   function restartService($service_name, $action = 'restart') {
      global $app;
      if(is_array($this->registered_services[$service_name])) {
         $module_name = $this->registered_services[$service_name]["module"];
         $function_name = $this->registered_services[$service_name]["function"];
         $app->log("Call function '$function_name' in module '$module_name'.",LOGLEVEL_DEBUG);
         call_user_method($function_name,$app->loaded_modules[$module_name],$action);
         $module_name = $this->registered_services[$service_name]['module'];
         $function_name = $this->registered_services[$service_name]['function'];
         $app->log("Calling function '$function_name' from module '$module_name'.", LOGLEVEL_DEBUG);
         // call_user_method($function_name,$app->loaded_modules[$module_name],$action);
         return call_user_func(array($app->loaded_modules[$module_name], $function_name), $action);
      } else {
         $app->log("Unable to restart $service_name. Service $service_name is not registered.",LOGLEVEL_WARNING);
         $app->log("Unable to restart $service_name. Service not registered.", LOGLEVEL_WARNING);
         return array('output' => '', 'retval' => 0);
      }
   }
   // This function is used to register callback functions for services that can be restarted
   function registerService($service_name,$module_name, $function_name) {
   function registerService($service_name, $module_name, $function_name) {
      global $app;
      $this->registered_services[$service_name] = array('module' => $module_name, 'function' => $function_name);
      $app->log("Registered Service '$service_name' in module '$module_name' for processing function '$function_name'",LOGLEVEL_DEBUG);
      if($this->debug) $app->log("Registered Service '$service_name' in module '$module_name' for processing function '$function_name'", LOGLEVEL_DEBUG);
   }
   // This function is called at the end of the server script to restart services.
   function processDelayedActions() {
      global $app;
      foreach($this->delayed_restarts as $service_name => $action) {
         $this->restartService($service_name,$action);
         $this->restartService($service_name, $action);
      }
   }
}
?>
?>