@@ -156,6 +156,12 @@ public function import_remote_xml( WP_REST_Request $request ) {
156156 }
157157 do_action ( 'themeisle_ob_after_shop_pages_setup ' );
158158
159+ // Set payment forms.
160+ if ( isset ( $ body ['paymentForms ' ] ) ) {
161+ $ this ->setup_payment_forms ( $ body ['paymentForms ' ] );
162+ }
163+ do_action ( 'themeisle_ob_after_payment_forms_setup ' );
164+
159165 if ( empty ( $ frontpage_id ) ) {
160166 $ this ->logger ->log ( 'No front page ID. ' );
161167 }
@@ -265,6 +271,62 @@ public function setup_shop_pages( $pages, $demo_slug ) {
265271 $ this ->logger ->log ( 'Shop pages set up. ' , 'success ' );
266272 }
267273
274+ public function setup_payment_forms ( $ forms ) {
275+ $ this ->logger ->log ( 'Setting up payment forms. ' , 'progress ' );
276+ if ( ! class_exists ( 'MM_WPFS_Database ' ) ) {
277+ $ this ->logger ->log ( 'No WP Full Stripe. ' , 'success ' );
278+ return ;
279+ }
280+
281+ if ( ! is_array ( $ forms ) ) {
282+ $ this ->logger ->log ( 'No Payment Forms. ' , 'success ' );
283+ return ;
284+ }
285+
286+ $ db = new \MM_WPFS_Database ();
287+
288+ $ payment_form_options = array ();
289+ foreach ( $ forms as $ key => $ form ) {
290+ if ( ! in_array ( $ form ['type ' ], array ( 'payment ' , 'subscription ' , 'donation ' ) ) || ! in_array ( $ form ['layout ' ], array ( 'inline ' , 'checkout ' ) ) ) {
291+ continue ;
292+ }
293+
294+ $ check = 'get ' . ucfirst ( $ form ['layout ' ] ) . ucfirst ( $ form ['type ' ] ) . 'FormByName ' ;
295+ $ insert = 'insert ' . ucfirst ( $ form ['layout ' ] ) . ucfirst ( $ form ['type ' ] ) . 'Form ' ;
296+
297+ if ( method_exists ( $ db , $ check ) ) {
298+ $ existing_form = $ db ->$ check ( $ form ['name ' ] );
299+ if ( $ existing_form ) {
300+ $ this ->logger ->log ( "Form {$ form ['name ' ]} already exists. " , 'success ' );
301+ continue ;
302+ }
303+ }
304+
305+ if ( method_exists ( $ db , $ insert ) ) {
306+ $ form ['data ' ] = array_filter (
307+ $ form ['data ' ],
308+ function ( $ key ) {
309+ return strpos ( $ key , 'FormID ' ) === false ;
310+ },
311+ ARRAY_FILTER_USE_KEY
312+ );
313+
314+ $ db ->$ insert ( $ form ['data ' ] );
315+
316+ $ payment_form_options [ $ form ['data ' ]['name ' ] ] = array (
317+ 'layout ' => $ form ['layout ' ],
318+ 'type ' => $ form ['type ' ],
319+ );
320+ } else {
321+ $ this ->logger ->log ( "Method {$ insert } does not exist. " , 'error ' );
322+ }
323+ }
324+
325+ do_action ( 'themeisle_cl_add_property_state ' , Active_State::PAYMENT_FORM_NSP , $ payment_form_options );
326+
327+ $ this ->logger ->log ( 'Payment forms set up. ' , 'success ' );
328+ }
329+
268330 /**
269331 * Maybe bust cache for elementor plugin.
270332 */
0 commit comments