diff --git a/config/app.php b/config/app.php index c79026ded..79bf8456c 100755 --- a/config/app.php +++ b/config/app.php @@ -340,5 +340,6 @@ return [ 'Concord' => Konekt\Concord\Facades\Concord::class, 'Helper' => Konekt\Concord\Facades\Helper::class, 'Debugbar' => Barryvdh\Debugbar\Facade::class, + 'ProductImage' => Webkul\Product\Facades\ProductImage::class ], ]; \ No newline at end of file diff --git a/packages/Webkul/Product/src/Facades/ProductImage.php b/packages/Webkul/Product/src/Facades/ProductImage.php new file mode 100644 index 000000000..d8a1aa62f --- /dev/null +++ b/packages/Webkul/Product/src/Facades/ProductImage.php @@ -0,0 +1,18 @@ +productRepository = $productRepository; + } + + public function sampleText() + { + echo "Sample Text"; + } + + /** + * Retrieve collection of gallery images + * + * @param \Webkul\Product\Contracts\Product|\Webkul\Product\Contracts\ProductFlat $product + * @return array + */ + public function getGalleryImages($product) + { + if (! $product) { + return []; + } + + $images = []; + + foreach ($product->images as $image) { + if (! Storage::has($image->path)) { + continue; + } + + $images[] = [ + 'small_image_url' => url('cache/small/' . $image->path), + 'medium_image_url' => url('cache/medium/' . $image->path), + 'large_image_url' => url('cache/large/' . $image->path), + 'original_image_url' => url('cache/original/' . $image->path), + ]; + } + + if (! $product->parent_id && ! count($images) && ! count($product->videos)) { + $images[] = [ + 'small_image_url' => asset('vendor/webkul/ui/assets/images/product/small-product-placeholder.webp'), + 'medium_image_url' => asset('vendor/webkul/ui/assets/images/product/meduim-product-placeholder.webp'), + 'large_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.webp'), + 'original_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.webp'), + ]; + } + + return $images; + } + + /** + * Get product's base image + * + * @param \Webkul\Product\Contracts\Product|\Webkul\Product\Contracts\ProductFlat $product + * @return array + */ + public function getProductBaseImage($product) + { + $images = $product ? $product->images : null; + + if ($images && $images->count()) { + $image = [ + 'small_image_url' => url('cache/small/' . $images[0]->path), + 'medium_image_url' => url('cache/medium/' . $images[0]->path), + 'large_image_url' => url('cache/large/' . $images[0]->path), + 'original_image_url' => url('cache/original/' . $images[0]->path), + ]; + } else { + $image = [ + 'small_image_url' => asset('vendor/webkul/ui/assets/images/product/small-product-placeholder.webp'), + 'medium_image_url' => asset('vendor/webkul/ui/assets/images/product/meduim-product-placeholder.webp'), + 'large_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.webp'), + 'original_image_url' => asset('vendor/webkul/ui/assets/images/product/large-product-placeholder.webp'), + ]; + } + + return $image; + } + + /** + * Get product varient image if available otherwise product base image + * + * @param \Webkul\Customer\Contracts\Wishlist $item + * @return array + */ + public function getProductImage($item) + { + if ($item instanceof \Webkul\Customer\Contracts\Wishlist) { + if (isset($item->additional['selected_configurable_option'])) { + $product = $this->productRepository->find($item->additional['selected_configurable_option']); + } else { + $product = $item->product; + } + } else { + $product = $item->product; + } + + return $this->getProductBaseImage($product); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Providers/ProductServiceProvider.php b/packages/Webkul/Product/src/Providers/ProductServiceProvider.php index 36da00135..8d2471001 100755 --- a/packages/Webkul/Product/src/Providers/ProductServiceProvider.php +++ b/packages/Webkul/Product/src/Providers/ProductServiceProvider.php @@ -8,6 +8,9 @@ use Webkul\Product\Models\ProductProxy; use Webkul\Product\Observers\ProductObserver; use Webkul\Product\Console\Commands\PriceUpdate; use Webkul\Product\Console\Commands\GenerateProducts; +use Illuminate\Foundation\AliasLoader; +use Webkul\Product\Facades\ProductImage as ProductImageFacade; +use Webkul\Product\ProductImage; class ProductServiceProvider extends ServiceProvider { @@ -42,6 +45,8 @@ class ProductServiceProvider extends ServiceProvider $this->registerCommands(); + $this->registerFacades(); + $this->registerEloquentFactoriesFrom(__DIR__ . '/../Database/Factories'); } @@ -79,4 +84,56 @@ class ProductServiceProvider extends ServiceProvider { $this->app->make(EloquentFactory::class)->load($path); } + + + /** + * Register Bouncer as a singleton. + * + * @return void + */ + protected function registerFacades() + { + $loader = AliasLoader::getInstance(); + $loader->alias('productimage', ProductImageFacade::class); + + $this->app->singleton('productimage', function () { + return app()->make(ProductImage::class); + }); + } + + /** + * Register facade + * + */ + public function registerFacadesd() + { + //to make the cart facade and bind the + //alias to the class needed to be called. + // $loader = AliasLoader::getInstance(); + + // $loader->alias('productimage', ProductImageFacade::class); + + // $this->app->singleton('productimage', function () { + // return new cart(); + // }); + + // $this->app->bind('productimage', 'Webkul\Checkout\Cart'); + + + // \App::bind('mysiteclass', function() + // { + // return new \Webkul\Product\Helpers\ProductImage; + // }); + + $this->app->bind('ProductImage', function() { + return new ProductImage; + }); + + // $loader = AliasLoader::getInstance(); + // $loader->alias('productimage', ProductImageFacade::class); + + // $this->app->singleton('productimage', function () { + // return app()->make(ProductImage::class); + // }); + } } \ No newline at end of file