/** * @param \Carrooi\ImagesManager\ImagesManager $manager * @param string $namespace * @param string $name * @param int|string|null $size * @param string|null $resizeFlag * @return string */ public static function getUrl(ImagesManager $manager, $namespace, $name, $size = null, $resizeFlag = null) { $width = $height = null; if ($size !== null) { if (!is_int($size) && !preg_match('/^(\\d+)x(\\d+)$/', $size)) { // probably preset $config = $manager->getConfiguration(); if (!$config->hasPreset($namespace, $size)) { throw new PresetNotExistsException('Preset ' . $size . ' does not exists.'); } $preset = $config->getPreset($namespace, $size); $width = $preset['width']; $height = $preset['height']; $resizeFlag = $preset['resizeFlag']; } else { $size = UtilsHelpers::parseSize($size); $width = $size[0]; $height = $size[1]; } } if ($resizeFlag !== null && is_string($resizeFlag)) { $resizeFlag = UtilsHelpers::parseResizeFlags($resizeFlag); } if (!($image = $manager->findImage($namespace, $name))) { $dummyImageUrl = $manager->getDummyImageUrl($namespace, $width, $height); return $dummyImageUrl ? $dummyImageUrl : ''; } if ($width || $height) { $manager->tryStoreThumbnail($image, $width, $height, $resizeFlag); } return $manager->getUrl($image, $width, $height, $resizeFlag); }
/** * @param \Nette\DI\ServiceDefinition $configuration * @param string $namespace * @param array $config */ private function applyNamespaceConfiguration(ServiceDefinition $configuration, $namespace, array $config) { $builder = $this->getContainerBuilder(); $safeNamespace = str_replace('-', '_', Strings::webalize($namespace)); if ($namespace === Configuration::DEFAULT_NAMESPACE_NAME || $config['nameResolver']['class']) { if (!class_exists($config['nameResolver']['class'])) { throw new ConfigurationException('Name resolver ' . $config['nameResolver']['class'] . ' for namespace ' . $namespace . ' does not exists.'); } $nameResolver = $builder->addDefinition($this->prefix('nameResolver.' . $safeNamespace))->setClass($config['nameResolver']['class']); $configuration->addSetup('setNameResolver', [$namespace, $nameResolver]); } if ($config['default'] !== null) { $configuration->addSetup('setDefaultImage', [$namespace, $config['default']]); } if ($config['resizeFlag'] !== null) { $resizeFlag = Helpers::parseResizeFlags($config['resizeFlag']); $configuration->addSetup('setResizeFlag', [$namespace, $resizeFlag]); } if ($config['quality'] !== null) { $configuration->addSetup('setQuality', [$namespace, $config['quality']]); } if (isset($config['presets']) && count($config['presets'])) { foreach ($config['presets'] as $name => $preset) { if ($preset instanceof Statement) { $size = Helpers::parseSize($preset->getEntity()); $resizeFlags = Helpers::parseResizeFlags($preset->arguments); } else { $size = Helpers::parseSize($preset); $resizeFlags = null; } $configuration->addSetup('addPreset', [$namespace, $name, $size[0], $size[1], $resizeFlags]); } } if ($config['dummy']['enabled'] !== null) { $configuration->addSetup('enableDummy', [$namespace, $config['dummy']['enabled']]); } if ($config['dummy']['class'] !== null) { if (!class_exists($config['dummy']['class'])) { throw new ConfigurationException('Dummy provider class ' . $config['dummy']['class'] . ' for namespace ' . $namespace . ' does not exists.'); } $provider = $builder->addDefinition($this->prefix('dummy.' . $safeNamespace))->setClass($config['dummy']['class']); $configuration->addSetup('setDummyProvider', [$namespace, $provider]); } if ($config['dummy']['category'] !== null) { $configuration->addSetup('setDummyCategory', [$namespace, $config['dummy']['category']]); } if ($config['dummy']['fallbackSize'] !== null) { $size = $config['dummy']['fallbackSize']; $configuration->addSetup('setDummyFallbackSize', [$namespace, $size[0], $size[1]]); } if ($config['dummy']['chance'] !== null) { $configuration->addSetup('setDummyDisplayChance', [$namespace, $config['dummy']['chance']]); } }