/** * {@inheritDoc} */ public function getConfigTreeBuilder() { $treeBuilder = new TreeBuilder(); $rootNode = $treeBuilder->root('silvestra_media'); $rootNode->children()->scalarNode('db_driver')->cannotBeOverwritten()->isRequired()->end()->scalarNode('image_manager')->defaultValue('silvestra_media.manager.image.default')->cannotBeEmpty()->end()->arrayNode('class')->isRequired()->children()->arrayNode('model')->isRequired()->children()->scalarNode('image')->isRequired()->end()->end()->end()->end()->end()->arrayNode('filesystem')->addDefaultsIfNotSet()->children()->scalarNode('root_dir')->defaultValue('')->end()->end()->end()->arrayNode('image')->addDefaultsIfNotSet()->children()->variableNode('available_mime_types')->defaultValue(Media::getImageMimeTypes())->end()->booleanNode('default_cropper_enabled')->defaultTrue()->end()->scalarNode('default_resize_strategy')->defaultValue('max')->end()->integerNode('max_file_size')->defaultValue(5)->end()->integerNode('max_height')->defaultValue(768)->end()->integerNode('max_width')->defaultValue(1024)->end()->integerNode('min_height')->defaultValue(0)->end()->integerNode('min_width')->defaultValue(0)->end()->scalarNode('no_image')->defaultValue('/bundles/silvestramedia/image/noimage.png')->end()->scalarNode('cropper')->defaultValue('silvestra_media.image.cropper.gd')->end()->scalarNode('resizer')->defaultValue('silvestra_media.image.resizer.gd')->end()->scalarNode('resizer_background_color')->defaultValue('#FFFFFF')->cannotBeEmpty()->end()->integerNode('resizer_background_color_alpha')->defaultValue(100)->end()->end()->end()->arrayNode('token')->addDefaultsIfNotSet()->children()->scalarNode('key')->defaultValue(Media::NAME)->end()->end()->end()->end(); return $treeBuilder; }
/** * {@inheritdoc} */ public function validate($value, ImageDefaultConfig $defaultConfig) { return in_array($value, Media::getResizeStrategies()); }
/** * {@inheritdoc} */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array('data_class' => $this->imageClass, 'label' => false, 'mime_types' => $this->defaultConfig->getAvailableMimeTypes(), 'max_file_size' => $this->defaultConfig->getMaxFileSize(), 'max_height' => $this->defaultConfig->getMaxHeight(), 'max_width' => $this->defaultConfig->getMaxWidth(), 'min_height' => $this->defaultConfig->getMinHeight(), 'min_width' => $this->defaultConfig->getMinWidth(), 'resize_strategy' => $this->defaultConfig->getDefaultResizeStrategy(), 'cropper_enabled' => $this->defaultConfig->isDefaultCropperEnabled(), 'cropper_coordinates' => function (Options $options) { return array('x1' => 0, 'y1' => 0, 'x2' => $options['max_width'], 'y2' => $options['max_height']); }, 'error_bubbling' => false)); $defaultConfig = $this->defaultConfig; $resolver->setAllowedValues(array('mime_types' => function ($mimeTypes) use($defaultConfig) { foreach ($mimeTypes as $type) { if (!in_array($type, $defaultConfig->getAvailableMimeTypes())) { return false; } } return true; }, 'max_file_size' => function ($maxFileSize) use($defaultConfig) { return $defaultConfig->getMaxFileSize() >= $maxFileSize; }, 'max_height' => function ($maxHeight) use($defaultConfig) { return $defaultConfig->getMaxHeight() >= $maxHeight; }, 'max_width' => function ($maxWidth) use($defaultConfig) { return $defaultConfig->getMaxWidth() >= $maxWidth; }, 'min_height' => function ($minHeight) use($defaultConfig) { return $defaultConfig->getMinHeight() <= $minHeight; }, 'min_width' => function ($minWidth) use($defaultConfig) { return $defaultConfig->getMinWidth() <= $minWidth; }, 'resize_strategy' => function ($resizeStrategy) { return in_array($resizeStrategy, Media::getResizeStrategies()); })); }
public function testValidateWithNotValidData() { $defaultConfig = $this->getMockImageDefaultConfig(); $defaultConfig->expects($this->any())->method('getAvailableMimeTypes')->willReturn(Media::getImageMimeTypes()); $this->assertFalse($this->validator->validate(array('text/html'), $defaultConfig)); }