+ {% import _self as blocks %}
{{ blocks.setImage(set.number,'set_min') }}
diff --git a/app/config/config.yml b/app/config/config.yml
index 3418fe3..0283072 100644
--- a/app/config/config.yml
+++ b/app/config/config.yml
@@ -110,37 +110,20 @@ knp_paginator:
sortable: KnpPaginatorBundle:Pagination:sortable_link.html.twig # sort link template
liip_imagine:
- loaders:
- rebrickable:
- stream:
- wrapper: 'http://rebrickable.com/media/'
- brickset:
- stream:
- wrapper: 'https://images.brickset.com/'
-
resolvers:
default:
web_path: ~
filter_sets:
- brickset_large:
- data_loader: brickset
- cache: ~
- quality: 92
- filters:
- thumbnail: { size: [840, 580], mode: inset }
- background: { size: [900, 600], position: center, color: '#FFFFFF' }
-
-
set_min:
quality: 80
- data_loader: rebrickable
+ data_loader: set_image_loader
cache: ~
filters:
thumbnail: { size: [200, 200], mode: inset }
background: { size: [250, 250], position: center, color: '#FFFFFF' }
set_large:
- data_loader: rebrickable
+ data_loader: set_image_loader
cache: ~
quality: 92
filters:
@@ -156,7 +139,6 @@ liip_imagine:
part_min:
quality: 80
data_loader: part_image_loader
- default_image: "noimage.png"
cache: ~
filters:
thumbnail: { size: [200, 200], mode: inset }
diff --git a/app/config/service/service.yml b/app/config/service/service.yml
index 8b1c41a..26e6e9b 100644
--- a/app/config/service/service.yml
+++ b/app/config/service/service.yml
@@ -30,4 +30,9 @@ services:
class: AppBundle\Imagine\PartImageLoader
arguments: ['@api.manager.rebrickable', '@oneup_flysystem.media_filesystem']
tags:
- - { name: liip_imagine.binary.loader, loader: part_image_loader }
\ No newline at end of file
+ - { name: liip_imagine.binary.loader, loader: part_image_loader }
+ app.set_image_loader:
+ class: AppBundle\Imagine\SetImageLoader
+ arguments: ['@api.manager.brickset', '@oneup_flysystem.media_filesystem']
+ tags:
+ - { name: liip_imagine.binary.loader, loader: set_image_loader }
\ No newline at end of file
diff --git a/src/AppBundle/Imagine/BaseImageLoader.php b/src/AppBundle/Imagine/BaseImageLoader.php
new file mode 100644
index 0000000..ffa9cf3
--- /dev/null
+++ b/src/AppBundle/Imagine/BaseImageLoader.php
@@ -0,0 +1,27 @@
+mediaFilesystem->read('noimage.png');
}
-
- /**
- * @param string $url
- *
- * @return bool
- */
- public function remoteFileExists($url)
- {
- $resource = curl_init($url);
- curl_setopt($resource, CURLOPT_NOBODY, true);
- curl_exec($resource);
- $status = curl_getinfo($resource, CURLINFO_HTTP_CODE);
- curl_close($resource);
-
- return $status === 200 ? true : false;
- }
}
diff --git a/src/AppBundle/Imagine/SetImageLoader.php b/src/AppBundle/Imagine/SetImageLoader.php
new file mode 100644
index 0000000..11bd681
--- /dev/null
+++ b/src/AppBundle/Imagine/SetImageLoader.php
@@ -0,0 +1,56 @@
+bricksetManager = $bricksetManager;
+ $this->mediaFilesystem = $mediaFilesystem;
+ }
+
+ public function find($path)
+ {
+ // try to load image from rebrickable website
+ try {
+ if ($this->remoteFileExists($this->rebrickableContext.$path)) {
+ return file_get_contents($this->rebrickableContext.$path);
+ }
+ } catch (\Exception $e) {
+ throw new NotLoadableException(sprintf('Source image %s could not be loaded.', $path), $e->getCode(), $e);
+ }
+
+ // Load part entity form rebrickable api and get image path from response
+ try {
+ if (preg_match('/^(.*)[.png|.jpg]$/', $path, $match)) {
+ $set = $this->bricksetManager->getSetByNumber($match[1]);
+
+ if ($set && $set->getImage()) {
+ return file_get_contents($set->getImageURL());
+ }
+ }
+ } catch (\Exception $e) {
+ throw new NotLoadableException(sprintf('Source image %s could not be loaded.', $path), $e->getCode(), $e);
+ }
+
+ return $this->mediaFilesystem->read('noimage.png');
+ }
+}