/**
  * Returns the enum constants
  *
  * @return array<KalturaPropertyInfo>
  */
 public function getConstants()
 {
     if (!is_null($this->_constants)) {
         return $this->_constants;
     }
     $this->_constants = array();
     $constantsDescription = array();
     if ($this->isEnum() || $this->isStringEnum()) {
         $reflectClass = new ReflectionClass($this->_type);
         $constantsDescription = call_user_func(array($this->_type, 'getDescriptions'));
         $contants = $reflectClass->getConstants();
         foreach ($contants as $enum => $value) {
             if ($this->isEnum()) {
                 $prop = new KalturaPropertyInfo("int", $enum);
             } else {
                 $prop = new KalturaPropertyInfo("string", $enum);
             }
             if (isset($constantsDescription[$value])) {
                 $prop->setDescription($constantsDescription[$value]);
             }
             $prop->setDefaultValue($value);
             $this->_constants[] = $prop;
         }
     }
     if ($this->isDynamicEnum()) {
         $type = $this->getType();
         $baseEnumName = $type::getEnumClass();
         $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaEnumerator');
         foreach ($pluginInstances as $pluginInstance) {
             $pluginName = $pluginInstance->getPluginName();
             $enums = $pluginInstance->getEnums($baseEnumName);
             foreach ($enums as $enum) {
                 $enumConstans = $enum::getAdditionalValues();
                 foreach ($enumConstans as $name => $value) {
                     $value = $pluginName . IKalturaEnumerator::PLUGIN_VALUE_DELIMITER . $value;
                     $prop = new KalturaPropertyInfo("string", $name);
                     $prop->setDefaultValue($value);
                     if (isset($constantsDescription[$value])) {
                         $prop->setDescription($constantsDescription[$value]);
                     }
                     $this->_constants[] = $prop;
                 }
             }
         }
     }
     return $this->_constants;
 }
 /**
  * Returns the enum constants
  *
  * @return array
  */
 public function getConstants()
 {
     if ($this->_constants === null) {
         $this->_constants = array();
         if ($this->isEnum() || $this->isStringEnum()) {
             $reflectClass = new ReflectionClass($this->_type);
             $constantsDescription = array();
             if ($reflectClass->hasMethod("getDescription")) {
                 $constantsDescription = $reflectClass->getMethod("getDescription")->invoke($this->_instance);
             }
             $contants = $reflectClass->getConstants();
             foreach ($contants as $enum => $value) {
                 if ($this->isEnum()) {
                     $prop = new KalturaPropertyInfo("int", $enum);
                 } else {
                     $prop = new KalturaPropertyInfo("string", $enum);
                 }
                 if (array_key_exists($value, $constantsDescription)) {
                     $prop->setDescription($constantsDescription[$value]);
                 }
                 $prop->setDefaultValue($value);
                 $this->_constants[] = $prop;
             }
         }
         if ($this->isDynamicEnum()) {
             $type = $this->getType();
             // TODO remove call_user_func after moving to php 5.3
             $baseEnumName = call_user_func(array($type, 'getEnumClass'));
             //				$baseEnumName = $type::getEnumClass();
             $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaEnumerator');
             foreach ($pluginInstances as $pluginInstance) {
                 $pluginName = $pluginInstance->getPluginName();
                 $enums = $pluginInstance->getEnums($baseEnumName);
                 foreach ($enums as $enum) {
                     // TODO remove call_user_func after moving to php 5.3
                     $enumConstans = call_user_func(array($enum, 'getAdditionalValues'));
                     //						$enumConstans = $enum::getAdditionalValues();
                     foreach ($enumConstans as $name => $value) {
                         $prop = new KalturaPropertyInfo("string", $name);
                         $prop->setDefaultValue($pluginName . IKalturaEnumerator::PLUGIN_VALUE_DELIMITER . $value);
                         $this->_constants[] = $prop;
                     }
                 }
             }
         }
     }
     return $this->_constants;
 }