PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.7.0
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.7.0
1.7.0 1.6.6 1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.5.4 1.5.5 1.5.3 1.5.2 1.5.1 1.5.0 1.4.2 1.4.1 1.4.0 1.3.28 1.3.27 1.3.26 1.3.25 1.3.23 1.3.22 1.3.21 1.3.20 All 50 releases
← All changes | app/Services/ShortCodeParser/ShortcodeParser.php +13 -0 1.5.2 → 1.7.0 View file →
@@ -3,8 +3,9 @@
3 3 namespace FluentCart\App\Services\ShortCodeParser;
4 4
5 5 use FluentCart\Api\StoreSettings;
6 6 use FluentCart\App\Helpers\Helper;
7 +use FluentCart\App\Models\Order;
7 8 use FluentCart\App\Services\Payments\PaymentHelper;
8 9 use FluentCart\App\Services\Payments\PaymentReceipt;
9 10 use FluentCart\App\Services\WpMetaHelper;
10 11 use FluentCart\Framework\Support\Arr;
@@ -297,8 +298,20 @@
297 298 $parsedData[$placeholder] = Arr::get($order, 'id');
298 299 }
299 300 } elseif ($targetItem === 'payment_link') {
300 301 $parsedData[$placeholder] = PaymentHelper::getCustomPaymentLink(Arr::get($order, 'uuid'));
302 + } elseif ($targetItem === 'review_url') {
303 + // Resolved here rather than through OrderParser: this
304 + // parser handles every order.* code itself and never
305 + // consults that class, so a methodMap entry alone would
306 + // render an empty string in a real email.
307 + $reviewHash = (string) Arr::get($order, 'uuid', '');
308 + if ($reviewHash !== '') {
309 + $parsedData[$placeholder] = Order::reviewUrlForHash($reviewHash);
310 + } else {
311 + $reviewOrder = Order::query()->find(Arr::get($order, 'id'));
312 + $parsedData[$placeholder] = $reviewOrder instanceof Order ? $reviewOrder->getOrderReviewUrl() : '';
313 + }
301 314 } else if ($targetItem === 'total_amount') {
302 315 $parsedData[$placeholder] = Helper::toDecimal(Arr::get($order, 'total_amount'), false);
303 316 } elseif ($targetItem === 'total_paid') {
304 317 $parsedData[$placeholder] = Helper::toDecimal(Arr::get($order, 'total_paid'), false);