/** * Returns generated name for a image * * @param \Imager\ImageInfo $image * @return string */ public static function createName(ImageInfo $image) { $source = $image->getSource() ?: $image; $id = $image->getParameter('id'); if (!isset($id)) { $name = md5($source->getPathname()); } else { $name = Strings::before($id, '.', -1); } // dimensions of image only for thumbnail (has source) $width = $image->getParameter('width'); $height = $image->getParameter('height'); $quality = $image->getParameter('quality'); $dimensionName = self::createDimensionName($width, $height, $quality); if ($source->getExtension() !== '') { $ext = '.' . $source->getExtension(); } else { $extensions = [IMAGETYPE_GIF => '.gif', IMAGETYPE_JPEG => '.jpg', IMAGETYPE_PNG => '.png', IMAGETYPE_BMP => '.bmp']; if (!array_key_exists($source->getType(), $extensions)) { $msg = sprintf('Image "%s" is unsupported type.', $source->getFilename()); throw new InvalidStateException($msg); } $ext = $extensions[$source->getType()]; } $fileName = $name . $dimensionName . $ext; return $fileName; }
/** * @inheritdoc */ protected function execute(InputInterface $input, OutputInterface $output) { $languageArgument = $input->getArgument(self::LANGUAGE_ARGUMENT); /** @var Language $language */ if (($language = $this->languagesRepository->findOneBy(['shortCode' => $languageArgument])) === NULL) { $output->writeln("<error>Unknown language {$languageArgument}</error>"); return 1; } /** @var Season $season */ foreach ($this->seasonsRepository->findBy(['language' => $language]) as $season) { foreach ($season->getEpisodes() as $episode) { $file = "S{$season->getNumber()}E{$episode->getNumber()}{$language->getShortCode()}.txt"; $handle = fopen($this->scenariosDir . '/' . $file, 'r'); if ($handle) { $screenplayLine = 1; while (($line = fgets($handle)) !== FALSE) { $name = Strings::before($line, ':'); $isCharacter = $name && !in_array($name, self::KNOWN_NON_CHARACTERS, TRUE) && str_word_count($name, 0) < 3 ? TRUE : FALSE; $character = $isCharacter ? $this->charactersRepository->findOneBy(['slug' => Strings::webalize($name), 'language' => $language]) : NULL; if ($isCharacter && $character === NULL) { $character = new Character(Strings::capitalize($name), $language); $this->entityManager->persist($character); $this->entityManager->flush($character); } $text = $isCharacter ? str_replace($name . ': ', '', $line) : $line; $text = Strings::trim($text); if (empty($text)) { continue; } $screenplay = new Screenplay($episode, $text, $character, $screenplayLine, !$isCharacter); $this->entityManager->persist($screenplay); $this->entityManager->flush($screenplay); $screenplayLine++; } fclose($handle); } else { $output->writeln("<error>Scénář {$file} neexistuje!</error>"); return 1; } } } return 0; }