X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Flibraries%2Fsrc%2FPlugin%2Flibraries%2FLocator%2FGlobalLocator.php;fp=web%2Fmodules%2Fcontrib%2Flibraries%2Fsrc%2FPlugin%2Flibraries%2FLocator%2FGlobalLocator.php;h=3501338d4f66133e9c2d49ecb32ec9b70ef45650;hp=0000000000000000000000000000000000000000;hb=8acec36f19c470dfcda1ae2336826a782f41874c;hpb=e0411c4e83ba0d079034db83c3f7f55be24a0e35 diff --git a/web/modules/contrib/libraries/src/Plugin/libraries/Locator/GlobalLocator.php b/web/modules/contrib/libraries/src/Plugin/libraries/Locator/GlobalLocator.php new file mode 100644 index 000000000..3501338d4 --- /dev/null +++ b/web/modules/contrib/libraries/src/Plugin/libraries/Locator/GlobalLocator.php @@ -0,0 +1,76 @@ +configFactory = $config_factory; + $this->locatorFactory = $locator_factory; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $container->get('config.factory'), + $container->get('plugin.manager.libraries.locator') + ); + } + + /** + * Locates a library. + * + * @param \Drupal\libraries\ExternalLibrary\Local\LocalLibraryInterface $library + * The library to locate. + * + * @see \Drupal\libraries\ExternalLibrary\Local\LocatorInterface::locate() + */ + public function locate(LocalLibraryInterface $library) { + foreach ($this->configFactory->get('libraries.settings')->get('global_locators') as $locator) { + $this->locatorFactory->createInstance($locator['id'], $locator['configuration'])->locate($library); + if ($library->isInstalled()) { + return; + } + } + $library->setUninstalled(); + } + +}