X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fvideo%2Fsrc%2FProviderManager.php;fp=web%2Fmodules%2Fcontrib%2Fvideo%2Fsrc%2FProviderManager.php;h=07c73b6e78775a221cd65ade691d5ea0652c259e;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/modules/contrib/video/src/ProviderManager.php b/web/modules/contrib/video/src/ProviderManager.php new file mode 100644 index 000000000..07c73b6e7 --- /dev/null +++ b/web/modules/contrib/video/src/ProviderManager.php @@ -0,0 +1,82 @@ +getDefinitions() as $definition) { + $options[$definition['id']] = $definition['label']; + } + return $options; + } + + /** + * {@inheritdoc} + */ + public function loadDefinitionsFromOptionList($options) { + $definitions = []; + // When no options are selected, all plugins are applicable. + if (count(array_keys($options, '0')) == count($options) || empty($options)) { + return $this->getDefinitions(); + } + else { + foreach ($options as $provider_id => $enabled) { + if ($enabled) { + $definitions[$provider_id] = $this->getDefinition($provider_id); + } + } + } + return $definitions; + } + + /** + * {@inheritdoc} + */ + public function loadApplicableDefinitionMatches(array $definitions, $user_input) { + foreach ($definitions as $definition) { + foreach($definition['regular_expressions'] as $reqular_expr){ + if (preg_match($reqular_expr, $user_input, $matches)) { + return array('definition' => $definition, 'matches' => $matches); + } + } + } + return FALSE; + } + + /** + * {@inheritdoc} + */ + public function loadProviderFromStream($stream, $file, $metadata = array(), $settings = array()) { + $definitions = $this->getDefinitions(); + foreach ($definitions as $definition) { + if($definition['stream_wrapper'] == $stream){ + return $definition ? $this->createInstance($definition['id'], ['file' => $file, 'metadata' => $metadata, 'settings' => $settings]) : FALSE; + } + } + } +}