protected static function loadConsumers() { $cachePath = kConf::get('cache_root_path') . '/EventConsumers.cache'; if (file_exists($cachePath)) { self::$consumers = unserialize(file_get_contents($cachePath)); return; } $coreConsumers = kConf::get('event_consumers'); $pluginConsumers = array(); $pluginInstances = KalturaPluginManager::getPluginInstances('IKalturaEventConsumers'); foreach ($pluginInstances as $pluginInstance) { foreach ($pluginInstance->getEventConsumers() as $pluginConsumer) { $pluginConsumers[] = $pluginConsumer; } } $consumers = array_merge($coreConsumers, $pluginConsumers); $consumersLists = array(); foreach ($consumers as $consumer) { if (!class_exists($consumer)) { continue; } $clazz = new ReflectionClass($consumer); $interfaces = $clazz->getInterfaces(); foreach ($interfaces as $interface) { if ($interface->name == self::BASE_CONSUMER_INTERFACE) { continue; } if (!$interface->implementsInterface(self::BASE_CONSUMER_INTERFACE)) { continue; } if (!isset($consumersLists[$interface->name])) { $consumersLists[$interface->name] = array(); } $consumersLists[$interface->name][] = $consumer; } } foreach ($consumersLists as $interfaceName => $interfaceConsumersArray) { usort($interfaceConsumersArray, array('kEventsManager', 'compareConsumers')); self::$consumers[$interfaceName] = $interfaceConsumersArray; } $cacheDir = dirname($cachePath); if (!file_exists($cacheDir)) { kFile::fullMkfileDir($cacheDir, 0777, true); } @file_put_contents($cachePath, serialize(self::$consumers)); }