protected function JuiceboxFormatter::styleImage in Juicebox HTML5 Responsive Image Galleries 8.3
Same name and namespace in other branches
- 8.2 src/JuiceboxFormatter.php \Drupal\juicebox\JuiceboxFormatter::styleImage()
Utility to style an individual file entity for use in a Juicebox gallery.
This method can detect if the passed file is incompatible with Juicebox. If so it styles the output as a mimetype image icon representing the file type. Otherwise the item is styled normally with the passed image style.
Parameters
\Drupal\file\FileInterface $file: A file entity containing the image data to append Juicebox styled image data to.
string $style: The Drupal image style to apply to the item.
bool $check_compatible: Whether-or-not to detect if the item is compatible with Juicebox, and if so, substitute a mimetype icon for its output.
Return value
array The styled image data.
1 call to JuiceboxFormatter::styleImage()
- JuiceboxFormatter::styleImageSrcData in src/
JuiceboxFormatter.php - Utility to extract image source data.
File
- src/
JuiceboxFormatter.php, line 355
Class
- JuiceboxFormatter
- Class to define a Drupal service with common formatter methods.
Namespace
Drupal\juiceboxCode
protected function styleImage(FileInterface $file, $style, $check_compatible = TRUE) {
$global_settings = $this
->getGlobalSettings();
$library = $this
->getLibrary();
$mimetype = $file
->getMimeType();
$image_data = [];
$image_data['juicebox_compatible'] = TRUE;
// Set the normal, unstyled, url for reference.
$image_data['unstyled_src'] = file_create_url($file
->getFileUri());
// Check compatibility if configured and if the library info contains
// mimetype compatibitly information.
if ($check_compatible && !empty($library['compatible_mimetypes']) && !in_array($mimetype, $library['compatible_mimetypes'])) {
// If the item is not compatible, find the substitute mimetype icon.
$image_data['juicebox_compatible'] = FALSE;
$icon_dir = drupal_get_path('module', 'juicebox') . '/images/mimetypes';
// We only have icons for each major type, so simplify accordingly.
// file_icon_class() could also be useful here but would require
// supporting icons for more package types.
$type_parts = explode('/', $mimetype);
$icon_path = $icon_dir . '/' . reset($type_parts) . '.png';
if (file_exists($icon_path)) {
$image_data['imageURL'] = file_create_url($icon_path);
}
else {
$image_data['imageURL'] = file_create_url($icon_dir . '/general.png');
}
}
else {
$sizes = [
'imageURL' => $style,
];
// The "juicebox_multisize" style is special, and actually consists of 3
// individual styles configured globally.
if ($style == 'juicebox_multisize') {
$sizes = [
'smallImageURL' => $global_settings['juicebox_multisize_small'],
'imageURL' => $global_settings['juicebox_multisize_medium'],
'largeImageURL' => $global_settings['juicebox_multisize_large'],
];
}
foreach ($sizes as $size => $style_each) {
if (!empty($style_each)) {
$style_obj = $this->entityTypeManager
->getStorage('image_style')
->load($style_each);
if ($style_obj) {
$image_data[$size] = $style_obj
->buildUrl($file
->getFileUri());
}
}
else {
$image_data[$size] = $image_data['unstyled_src'];
}
}
}
return $image_data;
}