public static function do_action($eventName, $parameter = false)
 {
     $startTime = microtime(true);
     self::$numCounter[0]++;
     // if vtiger.footer Action is called, output the timings for admins
     if ($eventName == 'corebos.footer') {
         global $current_user;
         if ($current_user->is_admin == 'on') {
             echo "<div style='text-align:left;font-size:11px;padding:0 30px;color:rgb(153, 153, 153);'>Event processing <span title='total time the EventHandler was active' alt='total time the EventHandler was active'>" . round(self::$Counter * 1000, 1) . "</span> / <span title='time Events used internal' alt='time Events used internal'>" . round(self::$CounterInternal * 1000, 1) . " msec (" . self::$numCounter[0] . " Actions / " . self::$numCounter[1] . " Filter)</div>";
         }
     }
     // Handle Events with the internal EventsManager
     if (self::$_eventManager === false) {
         global $adb;
         self::$_eventManager = new VTEventsManager($adb);
         // Initialize Event trigger cache
         self::$_eventManager->initTriggerCache();
     }
     $startTime2 = microtime(true);
     self::$_eventManager->triggerEvent($eventName, $parameter);
     self::$Counter += microtime(true) - $startTime;
     self::$CounterInternal += microtime(true) - $startTime2;
 }