original_string: public function postEvent($eventName, $params, $pending = false, $plugins = null)
      {
          if ($pending) {
              $this->pendingEvents[] = array($eventName, $params);
          }
  
          $manager = $this->pluginManager;
  
          if (empty($plugins)) {
              $plugins = $manager->getPluginsLoadedAndActivated();
          }
  
          $callbacks = array();
  
          // collect all callbacks to execute
          foreach ($plugins as $pluginName) {
              if (!is_string($pluginName)) {
                  $pluginName = $pluginName->getPluginName();
              }
  
              if (!isset($this->pluginHooks[$pluginName])) {
                  $plugin = $manager->getLoadedPlugin($pluginName);
                  $this->pluginHooks[$pluginName] = $plugin->getListHooksRegistered();
              }
  
              $hooks = $this->pluginHooks[$pluginName];
  
              if (isset($hooks[$eventName])) {
                  list($pluginFunction, $callbackGroup) = $this->getCallbackFunctionAndGroupNumber($hooks[$eventName]);
  
                  if (is_string($pluginFunction)) {
                      $plugin = $manager->getLoadedPlugin($pluginName);
                      $callbacks[$callbackGroup][] = array($plugin, $pluginFunction) ;
                  } else {
                      $callbacks[$callbackGroup][] = $pluginFunction;
                  }
              }
          }
  
          if (isset($this->extraObservers[$eventName])) {
              foreach ($this->extraObservers[$eventName] as $callbackInfo) {
                  list($callback, $callbackGroup) = $this->getCallbackFunctionAndGroupNumber($callbackInfo);
  
                  $callbacks[$callbackGroup][] = $callback;
              }
          }
  
          // sort callbacks by their importance
          ksort($callbacks);
  
          // execute callbacks in order
          foreach ($callbacks as $callbackGroup) {
              foreach ($callbackGroup as $callback) {
                  call_user_func_array($callback, $params);
              }
          }
      }
code: public function postEvent($eventName, $params, $pending = false, $plugins = null)
      {
          if ($pending) {
              $this->pendingEvents[] = array($eventName, $params);
          }
  
          $manager = $this->pluginManager;
  
          if (empty($plugins)) {
              $plugins = $manager->getPluginsLoadedAndActivated();
          }
  
          $callbacks = array();
  
          // collect all callbacks to execute
          foreach ($plugins as $pluginName) {
              if (!is_string($pluginName)) {
                  $pluginName = $pluginName->getPluginName();
              }
  
              if (!isset($this->pluginHooks[$pluginName])) {
                  $plugin = $manager->getLoadedPlugin($pluginName);
                  $this->pluginHooks[$pluginName] = $plugin->getListHooksRegistered();
              }
  
              $hooks = $this->pluginHooks[$pluginName];
  
              if (isset($hooks[$eventName])) {
                  list($pluginFunction, $callbackGroup) = $this->getCallbackFunctionAndGroupNumber($hooks[$eventName]);
  
                  if (is_string($pluginFunction)) {
                      $plugin = $manager->getLoadedPlugin($pluginName);
                      $callbacks[$callbackGroup][] = array($plugin, $pluginFunction) ;
                  } else {
                      $callbacks[$callbackGroup][] = $pluginFunction;
                  }
              }
          }
  
          if (isset($this->extraObservers[$eventName])) {
              foreach ($this->extraObservers[$eventName] as $callbackInfo) {
                  list($callback, $callbackGroup) = $this->getCallbackFunctionAndGroupNumber($callbackInfo);
  
                  $callbacks[$callbackGroup][] = $callback;
              }
          }
  
          // sort callbacks by their importance
          ksort($callbacks);
  
          // execute callbacks in order
          foreach ($callbacks as $callbackGroup) {
              foreach ($callbackGroup as $callback) {
                  call_user_func_array($callback, $params);
              }
          }
      }
code_tokens: public function postEvent ( $ eventName , $ params , $ pending = false , $ plugins = null ) { if ( $ pending ) { $ this -> pendingEvents [ ] = array ( $ eventName , $ params ) ; } $ manager = $ this -> pluginManager ; if ( empty ( $ plugins ) ) { $ plugins = $ manager -> getPluginsLoadedAndActivated ( ) ; } $ callbacks = array ( ) ; // collect all callbacks to execute foreach ( $ plugins as $ pluginName ) { if ( ! is_string ( $ pluginName ) ) { $ pluginName = $ pluginName -> getPluginName ( ) ; } if ( ! isset ( $ this -> pluginHooks [ $ pluginName ] ) ) { $ plugin = $ manager -> getLoadedPlugin ( $ pluginName ) ; $ this -> pluginHooks [ $ pluginName ] = $ plugin -> getListHooksRegistered ( ) ; } $ hooks = $ this -> pluginHooks [ $ pluginName ] ; if ( isset ( $ hooks [ $ eventName ] ) ) { list ( $ pluginFunction , $ callbackGroup ) = $ this -> getCallbackFunctionAndGroupNumber ( $ hooks [ $ eventName ] ) ; if ( is_string ( $ pluginFunction ) ) { $ plugin = $ manager -> getLoadedPlugin ( $ pluginName ) ; $ callbacks [ $ callbackGroup ] [ ] = array ( $ plugin , $ pluginFunction ) ; } else { $ callbacks [ $ callbackGroup ] [ ] = $ pluginFunction ; } } } if ( isset ( $ this -> extraObservers [ $ eventName ] ) ) { foreach ( $ this -> extraObservers [ $ eventName ] as $ callbackInfo ) { list ( $ callback , $ callbackGroup ) = $ this -> getCallbackFunctionAndGroupNumber ( $ callbackInfo ) ; $ callbacks [ $ callbackGroup ] [ ] = $ callback ; } } // sort callbacks by their importance ksort ( $ callbacks ) ; // execute callbacks in order foreach ( $ callbacks as $ callbackGroup ) { foreach ( $ callbackGroup as $ callback ) { call_user_func_array ( $ callback , $ params ) ; } } }
docstring: Triggers an event, executing all callbacks associated with it.
  
  @param string $eventName The name of the event, ie, API.getReportMetadata.
  @param array $params The parameters to pass to each callback when executing.
  @param bool $pending Whether this event should be posted again for plugins
  loaded after the event is fired.
  @param array|null $plugins The plugins to post events to. If null, the event
  is posted to all plugins. The elements of this array
  can be either the Plugin objects themselves
  or their string names.
docstring_tokens: Triggers an event executing all callbacks associated with it .