public static function getScriptingBuiltinVariables() { if (!self::$BUILTIN_VARIABLES_LOADED) { $ReflectEVENT_TYPE = new ReflectionClass("EVENT_TYPE"); $event_types = $ReflectEVENT_TYPE->getConstants(); foreach ($event_types as $event_type) { if (class_exists("{$event_type}Event")) { $ReflectClass = new ReflectionClass("{$event_type}Event"); $retval = $ReflectClass->getMethod("GetScriptingVars")->invoke(null); if (!empty($retval)) { foreach ($retval as $k => $v) { if (!self::$BUILTIN_VARIABLES[$k]) { self::$BUILTIN_VARIABLES[$k] = array("PropName" => $v, "EventName" => "{$event_type}"); } else { if (!is_array(self::$BUILTIN_VARIABLES[$k]['EventName'])) { $events = array(self::$BUILTIN_VARIABLES[$k]['EventName']); } else { $events = self::$BUILTIN_VARIABLES[$k]['EventName']; } $events[] = $event_type; self::$BUILTIN_VARIABLES[$k] = array("PropName" => $v, "EventName" => $events); } } } } } foreach (self::$BUILTIN_VARIABLES as $k => $v) { self::$BUILTIN_VARIABLES["event_{$k}"] = $v; } self::$BUILTIN_VARIABLES_LOADED = true; } return self::$BUILTIN_VARIABLES; }