PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.4.7
JetFormBuilder — Dynamic Blocks Form Builder v3.4.7
3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 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.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / modules / gateways / export / base-export-controller.php
jetformbuilder / modules / gateways / export Last commit date
base-export-controller.php 2 years ago multiple-controller.php 2 years ago single-controller.php 2 years ago
base-export-controller.php
243 lines
1 <?php
2
3
4 namespace JFB_Modules\Gateways\Export;
5
6 use Jet_Form_Builder\Exceptions\Query_Builder_Exception;
7 use JFB_Components\Export\Interfaces\Base_Export_Controller_It;
8 use JFB_Components\Export\Traits\Base_Export_Controller_Trait;
9 use JFB_Modules\Gateways\Db_Models\Payer_Model;
10 use JFB_Modules\Gateways\Db_Models\Payer_Shipping_Model;
11 use JFB_Modules\Gateways\Db_Models\Payment_To_Record;
12 use JFB_Modules\Gateways\Query_Views\Payment_View;
13
14 // If this file is called directly, abort.
15 if ( ! defined( 'WPINC' ) ) {
16 die;
17 }
18
19 abstract class Base_Export_Controller implements Base_Export_Controller_It {
20
21 use Base_Export_Controller_Trait;
22
23 protected $columns = array();
24
25 protected $record_columns = array();
26 protected $record_columns_empty = array();
27
28 protected $payers_columns = array();
29 protected $payers_columns_empty = array();
30
31 protected $shipping_columns = array();
32 protected $shipping_columns_empty = array();
33
34 /**
35 * @var Payment_View
36 */
37 protected $view;
38
39 public function __construct() {
40 $this->columns = array(
41 'id' => __( 'ID (primary)', 'jet-form-builder' ),
42 'amount_value' => __( 'Amount Value', 'jet-form-builder' ),
43 'amount_code' => __( 'Amount Code', 'jet-form-builder' ),
44 'gateway_id' => __( 'Gateway Slug', 'jet-form-builder' ),
45 'scenario' => __( 'Scenario', 'jet-form-builder' ),
46 'type' => __( 'Type', 'jet-form-builder' ),
47 'status' => __( 'Status', 'jet-form-builder' ),
48 'transaction_id' => __( 'Transaction ID', 'jet-form-builder' ),
49 'form_id' => __( 'Form ID', 'jet-form-builder' ),
50 'user_id' => __( 'User ID', 'jet-form-builder' ),
51 'created_at' => __( 'Created', 'jet-form-builder' ),
52 'updated_at' => __( 'Updated', 'jet-form-builder' ),
53 );
54
55 $this->record_columns = array(
56 'record_id' => __( 'Record ID', 'jet-form-builder' ),
57 );
58
59 foreach ( $this->record_columns as $name => $label ) {
60 $this->record_columns[ $name ] = sprintf(
61 /* translators: %s - column title */
62 __( '[Record] %s', 'jet-form-builder' ),
63 $label
64 );
65 }
66
67 $this->update_record_empty_columns();
68
69 $this->payers_columns = array(
70 'payer_id' => __( 'Payer ID', 'jet-form-builder' ),
71 'first_name' => __( 'First Name', 'jet-form-builder' ),
72 'last_name' => __( 'Last Name', 'jet-form-builder' ),
73 'email' => __( 'Email', 'jet-form-builder' ),
74 );
75
76 foreach ( $this->payers_columns as $payer_name => $payer_value ) {
77 $this->payers_columns[ $payer_name ] = sprintf(
78 /* translators: %s - column title */
79 __( '[Payer] %s', 'jet-form-builder' ),
80 $payer_value
81 );
82 }
83
84 $this->update_payer_empty_columns();
85
86 $this->shipping_columns = array(
87 'full_name' => __( 'Full Name', 'jet-form-builder' ),
88 'address_line_1' => __( 'Address Line 1', 'jet-form-builder' ),
89 'address_line_2' => __( 'Address Line 2', 'jet-form-builder' ),
90 'admin_area_1' => __( 'Admin Area 1', 'jet-form-builder' ),
91 'admin_area_2' => __( 'Admin Area 2', 'jet-form-builder' ),
92 'postal_code' => __( 'Postal Code', 'jet-form-builder' ),
93 'country_code' => __( 'Country Code', 'jet-form-builder' ),
94 );
95
96 foreach ( $this->shipping_columns as $ship_name => $ship_value ) {
97 $this->shipping_columns[ $ship_name ] = sprintf(
98 /* translators: %s - column title */
99 __( '[Shipping] %s', 'jet-form-builder' ),
100 $ship_value
101 );
102 }
103
104 $this->update_shipping_empty_columns();
105 }
106
107 /**
108 * @param $payment
109 *
110 * @return void
111 */
112 public function add_row( $payment ) {
113 if ( ! $this->view ) {
114 $this->view = $this->get_payment_view();
115 }
116
117 $this->view->set_payment_id( $payment->id );
118
119 /**
120 * @see https://github.com/Crocoblock/issues-tracker/issues/3112
121 */
122 if ( empty( $this->columns['id'] ) ) {
123 unset( $payment->id );
124 }
125
126 try {
127 $shipping = $this->view->query()->query_one();
128 $payer = $shipping['payer'] ?? array();
129 $record = $shipping['record'] ?? array();
130 $shipping = $shipping['shipping'] ?? array();
131
132 } catch ( Query_Builder_Exception $exception ) {
133 $shipping = $this->shipping_columns_empty;
134 $payer = $this->payers_columns_empty;
135 $record = $this->record_columns_empty;
136 }
137
138 $this->get_exporter()->add_row(
139 $this->prepare_row(
140 $payment,
141 $record,
142 $payer,
143 $shipping
144 )
145 );
146 }
147
148 protected function prepare_row( $payment_values, array $record, array $payer_values, array $payer_shipping ): array {
149 foreach ( $record as $property => $record_value ) {
150 $record[ sprintf( 'record|%s', $property ) ] = is_null( $record_value ) ? '' : $record_value;
151 unset( $record[ $property ] );
152 }
153
154 foreach ( $payer_values as $property => $record_value ) {
155 $payer_values[ sprintf( 'payer|%s', $property ) ] = is_null( $record_value ) ? '' : $record_value;
156 unset( $payer_values[ $property ] );
157 }
158
159 foreach ( $payer_shipping as $property => $record_value ) {
160 $payer_shipping[ sprintf( 'shipping|%s', $property ) ] = is_null( $record_value ) ? '' : $record_value;
161 unset( $payer_shipping[ $property ] );
162 }
163
164 return apply_filters(
165 'jet-form-builder/export/payment/row',
166 array_merge(
167 is_array( $payment_values ) ? $payment_values : get_object_vars( $payment_values ),
168 $record,
169 $payer_values,
170 $payer_shipping
171 ),
172 $this
173 );
174 }
175
176 protected function get_select_row_columns(): array {
177 $columns = array();
178 $shipping_generator = Payer_Shipping_Model::generate_scoped_columns( 'shipping' );
179 $generator = Payer_Model::generate_scoped_columns( 'payer' );
180 $record_generator = Payment_To_Record::generate_scoped_columns( 'record' );
181
182 foreach ( $generator as $column ) {
183 $generator->next();
184
185 if ( array_key_exists( $column, $this->payers_columns ) ) {
186 $columns[] = $generator->current();
187 }
188 }
189
190 foreach ( $shipping_generator as $column ) {
191 $shipping_generator->next();
192
193 if ( array_key_exists( $column, $this->shipping_columns ) ) {
194 $columns[] = $shipping_generator->current();
195 }
196 }
197
198 foreach ( $record_generator as $column ) {
199 $record_generator->next();
200
201 if ( array_key_exists( $column, $this->record_columns ) ) {
202 $columns[] = $record_generator->current();
203 }
204 }
205
206 return $columns;
207 }
208
209 protected function get_payment_view(): Payment_View {
210 $view = new Payment_View();
211 $view->set_select( $this->get_select_row_columns() );
212 $view->set_limit( array( 1 ) );
213
214 if ( ! empty( $this->record_columns ) ) {
215 $view->set_with_record( true );
216 }
217
218 return $view;
219 }
220
221 protected function update_payer_empty_columns() {
222 $this->payers_columns_empty = array_fill_keys(
223 array_keys( $this->payers_columns ),
224 ''
225 );
226 }
227
228 protected function update_shipping_empty_columns() {
229 $this->shipping_columns_empty = array_fill_keys(
230 array_keys( $this->shipping_columns ),
231 ''
232 );
233 }
234
235 protected function update_record_empty_columns() {
236 $this->record_columns_empty = array_fill_keys(
237 array_keys( $this->record_columns ),
238 ''
239 );
240 }
241
242 }
243