Skip to content
Snippets Groups Projects
Commit dff55371 authored by Florent Torregrosa's avatar Florent Torregrosa Committed by Florent Torregrosa
Browse files

Issue #3398875 by Grimreaper: Fix PHPCS Fixer and PHPStan.

parent 2d7a2bac
No related branches found
Tags 2.0.4
1 merge request!9Resolve #3398875 "Php error when"
......@@ -8,15 +8,16 @@
declare(strict_types = 1);
use Drupal\animated_gif\AnimatedGifUtility;
use Drupal\file\Entity\File;
use Drupal\Core\Form\FormStateInterface;
use Drupal\file\Entity\File;
/**
* Implements template_preprocess_image_formatter().
*/
function animated_gif_preprocess_image_formatter(array &$variables) : void {
function animated_gif_preprocess_image_formatter(array &$variables): void {
$image = $variables['item'];
$imageValues = $image->getValue();
$file = NULL;
if (isset($imageValues['entity'])) {
$file = $imageValues['entity'];
}
......@@ -24,19 +25,19 @@ function animated_gif_preprocess_image_formatter(array &$variables) : void {
$file = File::load($imageValues['target_id']);
}
if ($file && $file->getMimeType() === 'image/gif' && AnimatedGifUtility::isAnAnimatedGif($file->getFileUri())) {
if (AnimatedGifUtility::isFileAnAnimatedGif($file)) {
$variables['image']['#theme'] = 'image';
unset($variables['image']['#style_name']);
unset($variables['image_style']);
unset($variables['image']['#style_name'], $variables['image_style']);
}
}
/**
* Implements template_preprocess_responsive_image_formatter().
*/
function animated_gif_preprocess_responsive_image_formatter(array &$variables) : void {
function animated_gif_preprocess_responsive_image_formatter(array &$variables): void {
$image = $variables['item'];
$imageValues = $image->getValue();
$file = NULL;
if (isset($imageValues['entity'])) {
$file = $imageValues['entity'];
}
......@@ -44,18 +45,17 @@ function animated_gif_preprocess_responsive_image_formatter(array &$variables) :
$file = File::load($imageValues['target_id']);
}
if ($file && $file->getMimeType() === 'image/gif' && AnimatedGifUtility::isAnAnimatedGif($file->getFileUri())) {
if (AnimatedGifUtility::isFileAnAnimatedGif($file)) {
$variables['responsive_image']['#theme'] = 'image';
unset($variables['image']['#responsive_image_style_id']);
unset($variables['image_style']);
unset($variables['image']['#responsive_image_style_id'], $variables['image_style']);
}
}
/**
* Implements template_preprocess_image_style().
*/
function animated_gif_preprocess_image_style(array &$variables) : void {
// File entity ID is not available here so we need to load it by URI.
function animated_gif_preprocess_image_style(array &$variables): void {
// File entity ID is not available here, so we need to load it by URI.
$files = \Drupal::entityTypeManager()
->getStorage('file')
->loadByProperties(['uri' => $variables['uri']]);
......@@ -65,21 +65,19 @@ function animated_gif_preprocess_image_style(array &$variables) : void {
}
/** @var \Drupal\file\FileInterface $file */
$file = reset($files);
$file = \reset($files);
if ($file->getMimeType() === 'image/gif' && AnimatedGifUtility::isAnAnimatedGif($file->getFileUri())) {
if (AnimatedGifUtility::isFileAnAnimatedGif($file)) {
$variables['image']['#uri'] = $variables['uri'];
unset($variables['image']['#style_name']);
unset($variables['image_style']);
unset($variables['style_name']);
unset($variables['image']['#style_name'], $variables['image_style'], $variables['style_name']);
}
}
/**
* Implements template_preprocess_responsive_image().
*/
function animated_gif_preprocess_responsive_image(array &$variables) : void {
// File entity ID is not available here so we need to load it by URI.
function animated_gif_preprocess_responsive_image(array &$variables): void {
// File entity ID is not available here, so we need to load it by URI.
$files = \Drupal::entityTypeManager()
->getStorage('file')
->loadByProperties(['uri' => $variables['uri']]);
......@@ -89,9 +87,9 @@ function animated_gif_preprocess_responsive_image(array &$variables) : void {
}
/** @var \Drupal\file\FileInterface $file */
$file = reset($files);
$file = \reset($files);
if ($file->getMimeType() === 'image/gif' && AnimatedGifUtility::isAnAnimatedGif($file->getFileUri())) {
if (AnimatedGifUtility::isFileAnAnimatedGif($file)) {
unset($variables['img_element']['#attributes']['srcset']);
$variables['img_element']['#uri'] = $variables['uri'];
}
......@@ -100,15 +98,15 @@ function animated_gif_preprocess_responsive_image(array &$variables) : void {
/**
* Implements hook_field_widget_single_element_WIDGET_TYPE_form_alter().
*/
function animated_gif_field_widget_single_element_image_image_form_alter(array &$element, FormStateInterface $form_state, array $context) : void {
function animated_gif_field_widget_single_element_image_image_form_alter(array &$element, FormStateInterface $form_state, array $context): void {
if (!empty($element['#default_value']['fids'])) {
$fid = reset($element['#default_value']['fids']);
$fid = \reset($element['#default_value']['fids']);
$file = File::load($fid);
if ($file && $file->getMimeType() === 'image/gif' && AnimatedGifUtility::isAnAnimatedGif($file->getFileUri())) {
if (AnimatedGifUtility::isFileAnAnimatedGif($file)) {
$element[] = [
'#type' => 'container',
'#markup' => t('GIF images are not being processed by image styles, use with caution!'),
'#markup' => \t('GIF images are not being processed by image styles, use with caution!'),
'#attributes' => [
'class' => [
'messages',
......
......@@ -5,6 +5,7 @@ declare(strict_types = 1);
namespace Drupal\animated_gif;
use Drupal\Component\Utility\Bytes;
use Drupal\file\FileInterface;
/**
* Utilities for Animated Gif module.
......@@ -16,6 +17,32 @@ class AnimatedGifUtility {
*/
public const MINIMUM_NUMBER_OF_ANIMATED_FRAMES = 2;
/**
* Check if a file entity is an animated Gif.
*
* @param mixed $file
* The file variable to check.
*
* @return bool
* Return true if file is animated.
*/
public static function isFileAnAnimatedGif(mixed $file): bool {
if (!$file instanceof FileInterface) {
return FALSE;
}
if ($file->getMimeType() != 'image/gif') {
return FALSE;
}
$file_uri = $file->getFileUri();
if (!\is_string($file_uri)) {
return FALSE;
}
return AnimatedGifUtility::isAnAnimatedGif($file_uri);
}
/**
* Check if a gif image is animated.
*
......
......@@ -54,12 +54,13 @@ class AnimatedGifImageUrlFormatter extends ImageUrlFormatter implements Containe
/** @var \Drupal\file\FileInterface[] $images */
foreach ($images as $delta => $image) {
$image_uri = $image->getFileUri();
if ($image->getMimeType() === 'image/gif' && AnimatedGifUtility::isAnAnimatedGif($image_uri)) {
// No image style is wanted for animated gifs.
$url = $this->fileUrlGenerator->transformRelative($this->fileUrlGenerator->generateString($image_uri));
$elements[$delta]['#markup'] = $url;
if (AnimatedGifUtility::isFileAnAnimatedGif($image)) {
$image_uri = $image->getFileUri();
if ($image_uri != NULL) {
// No image style is wanted for animated gifs.
$url = $this->fileUrlGenerator->transformRelative($this->fileUrlGenerator->generateString($image_uri));
$elements[$delta]['#markup'] = $url;
}
}
}
return $elements;
......
......@@ -123,6 +123,7 @@ class AnimatedGifFieldTest extends AnimatedGifFunctionalTestBase {
* The file.
*/
protected function uploadImage(FileInterface $file): void {
$this->assertIsString($file->getFileUri());
$edit = [
'files[' . $this->fieldName . '_0]' => $this->fileSystem->realpath($file->getFileUri()),
];
......
......@@ -15,6 +15,7 @@ use Drupal\user\UserInterface;
* Base class for Animated GIF functional tests.
*/
abstract class AnimatedGifFunctionalTestBase extends BrowserTestBase {
use AnimatedGifTestTrait;
/**
......@@ -58,7 +59,7 @@ abstract class AnimatedGifFunctionalTestBase extends BrowserTestBase {
$this->entityTypeManager = $this->container->get('entity_type.manager');
$this->moduleExtensionList = $this->container->get('extension.list.module');
$this->adminUser = $this->drupalCreateUser([
$adminUser = $this->drupalCreateUser([
'access content',
'access administration pages',
'administer content types',
......@@ -67,6 +68,10 @@ abstract class AnimatedGifFunctionalTestBase extends BrowserTestBase {
'administer nodes',
'bypass node access',
]);
if (!($adminUser instanceof UserInterface)) {
$this->fail('Impossible to create the tests user.');
}
$this->adminUser = $adminUser;
$this->drupalCreateContentType([
'type' => 'article',
......
......@@ -17,6 +17,7 @@ use Drupal\Tests\field\Kernel\FieldKernelTestBase;
* @group animated_gif
*/
class AnimatedGifImageFormatterTest extends FieldKernelTestBase {
use AnimatedGifTestTrait;
/**
......@@ -138,6 +139,8 @@ class AnimatedGifImageFormatterTest extends FieldKernelTestBase {
public function testAnimatedGifImageUrlFormatter(): void {
$animatedGifFile = $this->getTestFile(self::TEST_ANIMATED_FILE, self::TEST_ANIMATED_FILE_URI);
$notAnimatedGifFile = $this->getTestFile(self::TEST_NOT_ANIMATED_FILE, self::TEST_NOT_ANIMATED_FILE_URI);
$this->assertIsString($animatedGifFile->getFileUri());
$this->assertIsString($notAnimatedGifFile->getFileUri());
// Create a test entity with the image field set.
$entity = EntityTest::create([
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment