final class LibrariesDirectoryFileFinder in Lightning Media 8.4
Looks for front-end JavaScript libraries in common directories.
@internal This class is an internal part of Lightning Media and will be deleted when Drupal 8.9 is the minimum supported version of core. It may change or be removed at any time without warning! External code should not use this class in ANY way!
Hierarchy
- class \Drupal\lightning_media\LibrariesDirectoryFileFinder
Expanded class hierarchy of LibrariesDirectoryFileFinder
File
- src/
LibrariesDirectoryFileFinder.php, line 16
Namespace
Drupal\lightning_mediaView source
final class LibrariesDirectoryFileFinder {
/**
* The app root.
*
* @var string
*/
protected $root;
/**
* The site path.
*
* @var string
*/
protected $sitePath;
/**
* The profile extension list.
*
* @var \Drupal\Core\Extension\ExtensionList
*/
protected $profileExtensionList;
/**
* The install profile.
*
* @var string
*/
protected $installProfile;
/**
* Constructs a new LibrariesDirectoryFileFinder instance.
*
* @param string $root
* The app root.
* @param string $site_path
* The site path.
* @param \Drupal\Core\Extension\ProfileExtensionList $profile_extension_list
* The profile extension list.
* @param string $install_profile
* The install profile.
*/
public function __construct($root, $site_path, ProfileExtensionList $profile_extension_list, $install_profile) {
$this->root = $root;
$this->sitePath = $site_path;
$this->profileExtensionList = $profile_extension_list;
$this->installProfile = $install_profile;
}
/**
* Finds files that are located in the supported 'libraries' directories.
*
* It searches the following locations:
* - A libraries directory in the current site directory, for example:
* sites/default/libraries.
* - The root libraries directory.
* - A libraries directory in the selected installation profile, for example:
* profiles/my_install_profile/libraries.
* If the same library is present in multiple locations the first location
* found will be used. The locations are searched in the order listed.
*
* @param string $path
* The path for the library file to find.
*
* @return string|false
* The real path to the library file relative to the root directory. If the
* library cannot be found then FALSE.
*/
public function find($path) {
// Search sites/<domain>/*.
$directories[] = "{$this->sitePath}/libraries/";
// Always search the root 'libraries' directory.
$directories[] = 'libraries/';
// Installation profiles can place libraries into a 'libraries' directory.
if ($this->installProfile) {
$profile_path = $this->profileExtensionList
->getPath($this->installProfile);
$directories[] = "{$profile_path}/libraries/";
}
foreach ($directories as $dir) {
if (file_exists($this->root . '/' . $dir . $path)) {
return $dir . $path;
}
}
// The library has not been found.
return FALSE;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
LibrariesDirectoryFileFinder:: |
protected | property | The install profile. | |
LibrariesDirectoryFileFinder:: |
protected | property | The profile extension list. | |
LibrariesDirectoryFileFinder:: |
protected | property | The app root. | |
LibrariesDirectoryFileFinder:: |
protected | property | The site path. | |
LibrariesDirectoryFileFinder:: |
public | function | Finds files that are located in the supported 'libraries' directories. | |
LibrariesDirectoryFileFinder:: |
public | function | Constructs a new LibrariesDirectoryFileFinder instance. |