$event_callback) { if ($callback === $event_callback) { unset(self::$events[$name][$i]); } } } } /** * Execute all of the callbacks attached to an event. * * @param string event name * @param array data can be processed as Event::$data by the callbacks * @return void */ public static function run($name, & $data = NULL) { if ( ! empty(self::$events[$name])) { // So callbacks can access Event::$data self::$data =& $data; $callbacks = self::get($name); foreach ($callbacks as $callback) { call_user_func($callback); } // Do this to prevent data from getting 'stuck' $clear_data = ''; self::$data =& $clear_data; } // The event has been run! self::$has_run[$name] = $name; } /** * Check if a given event has been run. * * @param string event name * @return boolean */ public static function has_run($name) { return isset(self::$has_run[$name]); } } // End Event