예제 #1
0
파일: Manager.php 프로젝트: scalr/scalr
 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;
 }