From 8528817e0b59eba7596efb04c661720f4bca3d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20H=C3=BCbner?= Date: Mon, 8 May 2017 10:51:09 +0200 Subject: [PATCH] Add SetImageLoader --- .../assets/style/{model.scss => part.scss} | 0 app/Resources/views/macros/blocks.html.twig | 37 ++++++------ app/config/config.yml | 22 +------- app/config/service/service.yml | 7 ++- src/AppBundle/Imagine/BaseImageLoader.php | 27 +++++++++ src/AppBundle/Imagine/PartImageLoader.php | 21 +------ src/AppBundle/Imagine/SetImageLoader.php | 56 +++++++++++++++++++ 7 files changed, 110 insertions(+), 60 deletions(-) rename app/Resources/assets/style/{model.scss => part.scss} (100%) create mode 100644 src/AppBundle/Imagine/BaseImageLoader.php create mode 100644 src/AppBundle/Imagine/SetImageLoader.php diff --git a/app/Resources/assets/style/model.scss b/app/Resources/assets/style/part.scss similarity index 100% rename from app/Resources/assets/style/model.scss rename to app/Resources/assets/style/part.scss diff --git a/app/Resources/views/macros/blocks.html.twig b/app/Resources/views/macros/blocks.html.twig index a1c4c5e..d926d2d 100644 --- a/app/Resources/views/macros/blocks.html.twig +++ b/app/Resources/views/macros/blocks.html.twig @@ -18,43 +18,40 @@ {% set placeholder = asset("resources/images/unknown.png") %} {% endif %} - + {% endmacro %} {% macro model(model, quantity = null, color = -1) %} -
- -
- {% import _self as blocks %} - {{ blocks.partImage(model.number, 'part_min', color) }} -
-
+ {% endmacro %} {% macro part(part, quantity = null, color = -1) %} -
- + {% endmacro %} {% macro set(set) %}
+ {% 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'); + } +}