zend-blog-3-backend
63 строки · 1.7 Кб
1<?php
2
3namespace App\Command;
4
5use App\Entity\MediaFile;
6use App\Model\Image;
7use Doctrine\ORM\EntityManagerInterface;
8use Symfony\Component\Console\Command\Command;
9use Symfony\Component\Console\Helper\Table;
10use Symfony\Component\Console\Input\InputInterface;
11use Symfony\Component\Console\Output\OutputInterface;
12
13class ImagesSizeUpdate extends Command
14{
15private EntityManagerInterface $em;
16
17public function __construct(EntityManagerInterface $em)
18{
19parent::__construct();
20
21$this->em = $em;
22}
23
24protected function configure(): void
25{
26$this
27->setName('mtt:images:update-size')
28->setDescription('Update image size for `media_file` table')
29;
30}
31
32protected function execute(InputInterface $input, OutputInterface $output): int
33{
34$rows = [];
35$repository = $this->em->getRepository(MediaFile::class);
36foreach ($repository->findAll() as $mediaFile) {
37if ($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
52if (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
61return 0;
62}
63}
64