public function UltimenuSkin::loadMultiple in Ultimenu 8.2
Retrieves stored CSS files for Ultimenu skin options.
Return value
array An array of available CSS files.
Overrides UltimenuSkinInterface::loadMultiple
1 call to UltimenuSkin::loadMultiple()
- UltimenuSkin::libraryInfoBuild in src/
UltimenuSkin.php - Implements hook_library_info_build().
File
- src/
UltimenuSkin.php, line 131
Class
- UltimenuSkin
- Provides Ultimenu skins utility methods.
Namespace
Drupal\ultimenuCode
public function loadMultiple() {
if (!isset($this->skins)) {
if ($cache = $this->cacheBackend
->get($this->cacheKey . ':skin')) {
$this->skins = $cache->data;
}
else {
$theme_default = $this
->getConfig('system.theme')
->get('default');
$theme_skin = drupal_get_path('theme', $theme_default) . '/css/ultimenu';
$custom_skin = $this
->getSetting('skins');
$module_skin = drupal_get_path('module', 'ultimenu') . '/css/theme';
$mask = '/.css$/';
$files = [];
if (is_dir($module_skin)) {
foreach ($this->fileSystem
->scanDirectory($module_skin, $mask) as $filename => $file) {
$files[$filename] = $file;
}
}
if (!empty($custom_skin) && is_dir($custom_skin)) {
foreach ($this->fileSystem
->scanDirectory($custom_skin, $mask) as $filename => $file) {
$files[$filename] = $file;
}
}
if (is_dir($theme_skin)) {
foreach ($this->fileSystem
->scanDirectory($theme_skin, $mask) as $filename => $file) {
$files[$filename] = $file;
}
}
if ($files) {
$skins = [];
foreach ($files as $file) {
$uri = $file->uri;
$name = $file->name;
// Simplify lengthy deep directory structure.
if (strpos($uri, $module_skin) !== FALSE) {
$uri = "module|" . $name;
}
elseif (!empty($custom_skin) && strpos($uri, $custom_skin) !== FALSE) {
$uri = "custom|" . $name;
}
elseif (is_dir($theme_skin) && strpos($uri, $theme_skin) !== FALSE) {
$uri = "theme|" . $name;
}
// Convert file name to CSS friendly for option label and styling.
$skins[$uri] = Html::cleanCssIdentifier(mb_strtolower($name));
}
ksort($skins);
$this->cacheBackend
->set($this->cacheKey . ':skin', $skins, Cache::PERMANENT, [
'skin',
]);
$this->skins = $skins;
}
}
}
return $this->skins;
}