| @@ -1,8 +1,9 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | namespace FluentCart\App\Services\Payments; |
| 4 | 4 | |
| 5 | +use FluentCart\App\Helpers\Helper; | |
| 5 | 6 | use FluentCart\Api\CurrencySettings; |
| 6 | 7 | use FluentCart\App\Helpers\ProductAdminHelper; |
| 7 | 8 | use FluentCart\App\Models\ProductVariation; |
| 8 | 9 | use FluentCart\App\Services\OrderService; |
| @@ -138,11 +139,14 @@ | ||
| 138 | 139 | |
| 139 | 140 | foreach ($orderItems as $key => &$item) { |
| 140 | 141 | |
| 141 | 142 | $variant = $variantMap->firstWhere('id', $item['object_id']); |
| 142 | - $mediaUrl = Vite::getAssetUrl('images/placeholder.svg'); | |
| 143 | + // Receipts travel into emails and PDFs, where WebP is not safe | |
| 144 | + // (Outlook), so an image-less item gets the PNG placeholder. | |
| 145 | + $mediaUrl = ''; | |
| 143 | 146 | if ($variant) { |
| 144 | - $mediaUrl = $variant->thumbnail ?: (new ProductAdminHelper())->getFeaturedMedia($variant->product_detail->featured_media); | |
| 147 | + $detail = $variant->product_detail; | |
| 148 | + $mediaUrl = $variant->thumbnail ?: ($detail ? Arr::get((array) $detail->featured_media, 'url', '') : ''); | |
| 145 | 149 | //Image Check Test |
| 146 | 150 | //$mediaUrl = Arr::get($variant->media, 'meta_value.0.url', (new ProductAdminHelper())->getFeaturedMedia($variant->product_detail->featured_media)); |
| 147 | 151 | } |
| 148 | 152 | |
| @@ -147,9 +151,9 @@ | ||
| 147 | 151 | } |
| 148 | 152 | |
| 149 | 153 | Arr::set( |
| 150 | 154 | $this->order, 'order_items.' . $key . '.media_url', |
| 151 | - $mediaUrl | |
| 155 | + $mediaUrl ?: Helper::getProductPlaceholderEmailUrl() | |
| 152 | 156 | ); |
| 153 | 157 | |
| 154 | 158 | Arr::set( |
| 155 | 159 | $this->order, |