/** * @param ObjectEvent $event */ public function onPostSerialize(ObjectEvent $event) { // getSubscribedEvents doesn't seem to support parent classes if (!$event->getObject() instanceof MediaInterface) { return; } $provider = $this->pool->getProvider($event->getObject()->getProvider()); if ($provider->getName() == 'image') { $reference = $provider->getThumb($event->getObject()); $groups = $event->getContext()->attributes->get('groups'); if (!$groups instanceof None && in_array('detail', $groups->get())) { $filters = array_keys($this->filterConfig->all()); } else { $filters = ['medialibrary']; } $variants = []; foreach ($filters as $filter) { if ($event->getObject()->getContentType() == 'image/svg+xml') { $variants[$filter] = $provider->getUrl($event->getObject()); } else { $variants[$filter] = $this->cacheManager->getBrowserPath($reference, $filter); } } $event->getVisitor()->addData('images', $variants); } $event->getVisitor()->addData('original', $provider->getUrl($event->getObject())); }
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options = array()) { $filters = array(); foreach (array_keys($this->filterConfiguration->all()) as $filter) { $filters[$filter] = sprintf('sylius.form.imagine_block.filter.%s', $filter); } $builder->add('publishable', null, array('label' => 'sylius.form.imagine_block.publishable'))->add('publishStartDate', 'datetime', array('label' => 'sylius.form.imagine_block.publish_start_date', 'empty_value' => array('year' => '-', 'month' => '-', 'day' => '-'), 'time_widget' => 'text'))->add('publishEndDate', 'datetime', array('label' => 'sylius.form.imagine_block.publish_end_date', 'empty_value' => array('year' => '-', 'month' => '-', 'day' => '-'), 'time_widget' => 'text'))->add('parentDocument', null, array('label' => 'sylius.form.imagine_block.parent'))->add('name', 'text', array('label' => 'sylius.form.imagine_block.internal_name'))->add('label', 'text', array('label' => 'sylius.form.imagine_block.label', 'required' => false))->add('linkUrl', 'text', array('label' => 'sylius.form.imagine_block.link_url', 'required' => false))->add('filter', 'choice', array('choices' => $filters, 'label' => 'sylius.form.imagine_block.filter', 'required' => false))->add('image', 'cmf_media_image', array('label' => 'sylius.form.imagine_block.image', 'attr' => array('class' => 'imagine-thumbnail'), 'required' => false)); }
/** * @param string|string[]|null $paths * @param string|string[]|null $filters * * @return void */ public function remove($paths = null, $filters = null) { if (null === $filters) { $filters = array_keys($this->filterConfig->all()); } if (!is_array($filters)) { $filters = array($filters); } if (!is_array($paths)) { $paths = array($paths); } $paths = array_filter($paths); $filters = array_filter($filters); $mapping = new \SplObjectStorage(); foreach ($filters as $filter) { $resolver = $this->getResolver($filter); $list = isset($mapping[$resolver]) ? $mapping[$resolver] : array(); $list[] = $filter; $mapping[$resolver] = $list; } foreach ($mapping as $resolver) { $resolver->remove($paths, $mapping[$resolver]); } }
/** * @param string[] $paths The paths where the original files are expected to be. * @param string[] $filters The imagine filters in effect. * * @return void */ public function remove(array $paths, array $filters) { // TODO: $paths may be empty, meaning that all generated images corresponding to $filters need to be removed. if (empty($filters)) { $filters = array_keys($this->filterConfiguration->all()); } foreach ($paths as $path) { foreach ($filters as $filter) { $filteredImagePath = $this->getFilePath($path, $filter); if (!$this->ioService->exists($filteredImagePath)) { continue; } $binaryFile = $this->ioService->loadBinaryFile($filteredImagePath); $this->ioService->deleteBinaryFile($binaryFile); } } }
public function testReturnAllFilters() { $filterConfiguration = new FilterConfiguration(); $filterConfiguration->set('foo', array('fooConfig')); $filterConfiguration->set('bar', array('barConfig')); $filters = $filterConfiguration->all(); $this->assertInternalType('array', $filters); $this->assertArrayHasKey('foo', $filters); $this->assertEquals(array('fooConfig'), $filters['foo']); $this->assertArrayHasKey('bar', $filters); $this->assertEquals(array('barConfig'), $filters['bar']); }
/** * @param string[] $paths The paths where the original files are expected to be. * @param string[] $filters The imagine filters in effect. */ public function remove(array $paths, array $filters) { if (empty($filters)) { $filters = array_keys($this->filterConfiguration->all()); } if (empty($paths)) { $this->variationPurger->purge($filters); } foreach ($paths as $path) { foreach ($filters as $filter) { $filteredImagePath = $this->getFilePath($path, $filter); if (!$this->ioService->exists($filteredImagePath)) { continue; } $binaryFile = $this->ioService->loadBinaryFile($filteredImagePath); $this->ioService->deleteBinaryFile($binaryFile); } } }
public function all() { return $this->configResolver->getParameter('image_variations') + parent::all(); }