PluginProbe
Packeta / trunk
Packeta vtrunk
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 trunk, at src/Packetery/Module/Checkout/CheckoutRenderer.php

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