PluginProbe
Packeta / 2.1
Packeta v2.1
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / src / Packetery / Module / Checkout / CheckoutRenderer.php

CheckoutRenderer.php in Packeta 2.1, at src/Packetery/Module/Checkout/CheckoutRenderer.php

145 lines 3.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare( strict_types=1 );
4
5 namespace Packetery\Module\Checkout;
6
7 use Packetery\Latte\Engine;
8 use Packetery\Module\Framework\WpAdapter;
9 use Packetery\Module\Options\OptionsProvider;
10 use Packetery\Module\Order;
11 use Packetery\Module\Views\UrlBuilder;
12 use WC_Shipping_Rate;
13
14 class CheckoutRenderer {
15
16 private const BUTTON_RENDERER_TABLE_ROW = 'table-row';
17 private const BUTTON_RENDERER_AFTER_RATE = 'after-rate';
18
19 /**
20 * @var Engine
21 */
22 private $latteEngine;
23
24 /**
25 * @var UrlBuilder
26 */
27 private $urlBuilder;
28
29 /**
30 * @var CheckoutService
31 */
32 private $checkoutService;
33
34 /**
35 * @var WpAdapter
36 */
37 private $wpAdapter;
38
39 /**
40 * @var OptionsProvider
41 */
42 private $optionsProvider;
43
44 public function __construct(
45 Engine $latteEngine,
46 UrlBuilder $urlBuilder,
47 CheckoutService $checkoutService,
48 WpAdapter $wpAdapter,
49 OptionsProvider $optionsProvider
50 ) {
51 $this->latteEngine = $latteEngine;
52 $this->urlBuilder = $urlBuilder;
53 $this->checkoutService = $checkoutService;
54 $this->wpAdapter = $wpAdapter;
55 $this->optionsProvider = $optionsProvider;
56 }
57
58 /**
59 * Adds fields to the checkout page to save the values later
60 */
61 public function actionRenderHiddenInputFields(): void {
62 $this->latteEngine->render(
63 PACKETERY_PLUGIN_DIR . '/template/checkout/input_fields.latte',
64 [
65 'fields' => array_unique(
66 array_merge(
67 array_column( Order\Attribute::$pickupPointAttributes, 'name' ),
68 array_column( Order\Attribute::$homeDeliveryAttributes, 'name' ),
69 array_column( Order\Attribute::$carDeliveryAttributes, 'name' )
70 )
71 ),
72 ]
73 );
74 }
75
76 /**
77 * Renders widget button and information about chosen pickup point
78 *
79 * @param WC_Shipping_Rate $shippingRate Shipping rate.
80 */
81 public function actionRenderWidgetButtonAfterShippingRate( WC_Shipping_Rate $shippingRate ): void {
82 if ( ! is_checkout() ) {
83 return;
84 }
85
86 if ( ! $this->checkoutService->isPacketeryShippingMethod( $shippingRate->get_id() ) ) {
87 return;
88 }
89
90 $this->latteEngine->render(
91 PACKETERY_PLUGIN_DIR . '/template/checkout/widget-button.latte',
92 [
93 'renderer' => self::BUTTON_RENDERER_AFTER_RATE,
94 'logo' => $this->urlBuilder->buildAssetUrl( 'public/images/packeta-symbol.png' ),
95 'showLogo' => $this->optionsProvider->isCheckoutLogoShown(),
96 'translations' => [
97 'packeta' => $this->wpAdapter->__( 'Packeta', 'packeta' ),
98 ],
99 ]
100 );
101 }
102
103 /**
104 * Render widget button table row.
105 *
106 * @return void
107 */
108 public function actionRenderWidgetButtonTableRow(): void {
109 if ( ! is_checkout() ) {
110 return;
111 }
112
113 $this->latteEngine->render(
114 PACKETERY_PLUGIN_DIR . '/template/checkout/widget-button-row.latte',
115 [
116 'renderer' => self::BUTTON_RENDERER_TABLE_ROW,
117 'logo' => $this->urlBuilder->buildAssetUrl( 'public/images/packeta-symbol.png' ),
118 'showLogo' => $this->optionsProvider->isCheckoutLogoShown(),
119 'translations' => [
120 'packeta' => $this->wpAdapter->__( 'Packeta', 'packeta' ),
121 ],
122 ]
123 );
124 }
125
126 /**
127 * Shows an estimated delivery date for Car Delivery.
128 *
129 * @return void
130 */
131 public function actionRenderEstimatedDeliveryDateSection(): void {
132 if ( ! is_checkout() ) {
133 return;
134 }
135
136 if ( ! $this->checkoutService->isCarDeliveryOrder() ) {
137 return;
138 }
139
140 $this->latteEngine->render(
141 PACKETERY_PLUGIN_DIR . '/template/checkout/car-delivery-estimated-delivery-date.latte'
142 );
143 }
144 }
145