name)); } return $queueSource; } /** * Gets a list of compatible storage sources for the analysis queue. * @return array */ public static function getCompatibleStorages() { $storageSources = []; foreach (Storage::where('is_active', true)->orderBy('name')->get() as $storage) { $queueSource = self::createStorageSource($storage); if (is_null($queueSource)) { continue; } $storageSources[$storage->id] = $storage->name; } return $storageSources; } private static function createStorageSource(Storage $queueStorage) { $fullClassName = sprintf('App\AlbumSources\%s', $queueStorage->source); /** @var IAnalysisQueueSource $source */ $source = new $fullClassName; if (!$source instanceof IAnalysisQueueSource) { return null; } $source->setConfiguration($queueStorage); return $source; } }