Marius Cramer
2013-11-14 b1a6a5a3991cec5cd08873b01376e45d0b247f18
server/lib/classes/services.inc.php
@@ -33,50 +33,51 @@
   var $registered_services = array();
   var $delayed_restarts = array();
   var $debug = false;
   // This function adds a request for restarting
   // 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 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("Calling function '$function_name' from module '$module_name'.",LOGLEVEL_DEBUG);
         $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);
         return call_user_func(array($app->loaded_modules[$module_name], $function_name), $action);
      } else {
         $app->log("Unable to restart $service_name. Service 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);
      if($this->debug) $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);
      }
   }
}
?>