zend-blog-3-backend

Форк
0
/
ImagesSizeUpdate.php 
63 строки · 1.7 Кб
1
<?php
2

3
namespace App\Command;
4

5
use App\Entity\MediaFile;
6
use App\Model\Image;
7
use Doctrine\ORM\EntityManagerInterface;
8
use Symfony\Component\Console\Command\Command;
9
use Symfony\Component\Console\Helper\Table;
10
use Symfony\Component\Console\Input\InputInterface;
11
use Symfony\Component\Console\Output\OutputInterface;
12

13
class ImagesSizeUpdate extends Command
14
{
15
    private EntityManagerInterface $em;
16

17
    public function __construct(EntityManagerInterface $em)
18
    {
19
        parent::__construct();
20

21
        $this->em = $em;
22
    }
23

24
    protected function configure(): void
25
    {
26
        $this
27
            ->setName('mtt:images:update-size')
28
            ->setDescription('Update image size for `media_file` table')
29
        ;
30
    }
31

32
    protected function execute(InputInterface $input, OutputInterface $output): int
33
    {
34
        $rows = [];
35
        $repository = $this->em->getRepository(MediaFile::class);
36
        foreach ($repository->findAll() as $mediaFile) {
37
            if ($mediaFile->isImage()) {
38
                $image = new Image($mediaFile);
39
                $geometry = $image->getImageGeometry();
40

41
                $mediaFile
42
                    ->setWidth($geometry->width)
43
                    ->setHeight($geometry->height)
44
                ;
45

46
                $pathInfo = pathinfo($mediaFile->getPath());
47
                $rows[] = [$pathInfo['basename'], $geometry->width, $geometry->height];
48
                $this->em->flush();
49
            }
50
        }
51

52
        if (count($rows)) {
53
            $table = new Table($output);
54
            $table->setHeaders(['File', 'width', 'height']);
55

56
            $table->setRows($rows)->render();
57
        } else {
58
            $output->writeln('Nothing to show');
59
        }
60

61
        return 0;
62
    }
63
}
64

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.