utils->is_step_post_type() ) { $flow_id = wcf()->utils->get_flow_id(); if ( ! empty( $flow_id ) ) { $path = Cartflows_Helper::get_global_setting( '_cartflows_store_checkout' ) === $flow_id ? 'store-checkout' : 'flows'; $admin_bar->add_node( array( 'id' => 'edit-flow', 'title' => '' . esc_html__( 'Edit Funnel', 'cartflows' ), 'href' => admin_url( 'admin.php?page=cartflows&path=' . $path . '&action=wcf-edit-flow&flow_id=' . $flow_id ), 'meta' => array( 'class' => 'wcf-admin_bar-edit_flow--menu', ), ) ); } } } /** * Footer markup */ public function footer_markup() { if ( wcf()->utils->is_step_post_type() ) { $flow_id = wcf()->utils->get_flow_id(); ?> is_flow_testmode( $flow_id ) ) { ?>
utils->get_flow_id(); } $test_mode = wcf()->options->get_flow_meta_value( $flow_id, 'wcf-testing' ); if ( 'no' === $test_mode ) { return false; } return true; } /** * Get steps data. * * @since 1.0.0 * @param int $flow_id flow ID. * * @return array */ public function get_steps( $flow_id ) { $steps = get_post_meta( $flow_id, 'wcf-steps', true ); if ( ! is_array( $steps ) ) { $steps = array(); } return $steps; } /** * Check thank you page exists. * * @since 1.0.0 * @param array $order order data. * * @return bool */ public function is_thankyou_page_exists( $order ) { $thankyou_step_exist = false; $flow_id = wcf()->utils->get_flow_id_from_order( $order ); if ( $flow_id ) { $step_id = wcf()->utils->get_checkout_id_from_order( $order ); // Get control step and flow steps. $wcf_step_obj = wcf_get_step( $step_id ); $flow_steps = $wcf_step_obj->get_flow_steps(); $control_step = $wcf_step_obj->get_control_step(); if ( is_array( $flow_steps ) ) { $current_step_found = false; foreach ( $flow_steps as $index => $data ) { if ( $current_step_found ) { if ( 'thankyou' === $data['type'] ) { $thankyou_step_exist = true; break; } } else { if ( intval( $data['id'] ) === $control_step ) { $current_step_found = true; } } } } } return $thankyou_step_exist; } /** * Check thank you page exists. * * @since 1.0.0 * @param array $order order data. * * @return bool */ public function get_thankyou_page_id( $order ) { $thankyou_step_id = false; $flow_id = wcf()->utils->get_flow_id_from_order( $order ); if ( $flow_id ) { $step_id = wcf()->utils->get_checkout_id_from_order( $order ); // Get control step and flow steps. $wcf_step_obj = wcf_get_step( $step_id ); $flow_steps = $wcf_step_obj->get_flow_steps(); $control_step = $wcf_step_obj->get_control_step(); if ( is_array( $flow_steps ) ) { $current_step_found = false; foreach ( $flow_steps as $index => $data ) { if ( $current_step_found ) { if ( 'thankyou' === $data['type'] ) { $thankyou_step_id = intval( $data['id'] ); break; } } else { if ( intval( $data['id'] ) === $control_step ) { $current_step_found = true; } } } } } return $thankyou_step_id; } /** * Update the CartFlows steps link as per the latest UI. * * @param WP_Admin_Bar $wp_admin_bar WP_Admin_Bar object. * @since x.x.x */ public function update_edit_step_menu_link( $wp_admin_bar ) { if ( wcf()->utils->is_step_post_type() ) { global $post; if ( ! empty( $post ) ) { $edit_node = $wp_admin_bar->get_node( 'edit' ); if ( $edit_node ) { // Show the edit node only if the page builder option is set to other and gutenberg, else remove/hide the node. if ( in_array( Cartflows_Helper::get_common_setting( 'default_page_builder' ), array( 'other', 'gutenberg' ) ) ) { $edit_node->title = esc_html__( 'Edit Design', 'cartflows' ); $edit_node->href = Cartflows_Helper::get_page_builder_edit_link( $post->ID ); $wp_admin_bar->add_node( $edit_node ); } else { $wp_admin_bar->remove_node( 'edit' ); } } } } } /** * Enqueue the Global Color Pallet CSS vars to the page to use in the page builder settings. * * Note: Currently the GCP support is added for Elementor and Block Builder. * * @param string $css_dependency the CSS file handle as a dependency to add the inline css. * @since x.x.x * @return void */ public function enqueue_gcp_color_vars( $css_dependency = '' ) { if ( wcf()->utils->is_step_post_type() ) { $flow_id = wcf()->utils->get_flow_id(); // Return if no flow ID is found. if ( empty( $flow_id ) ) { return; } if ( ! Cartflows_Helper::is_gcp_styling_enabled( (int) $flow_id ) ) { return; } $gcp_vars = Cartflows_Helper::generate_gcp_css_style( (int) $flow_id ); $css_dependency = ! empty( $css_dependency ) ? $css_dependency : 'wcf-frontend-global'; // Don't print the inline CSS style if no style is generated. if ( ! empty( $gcp_vars ) ) { $output = ':root { ' . $gcp_vars . ' }'; wp_add_inline_style( $css_dependency, $output ); } } } } /** * Kicking this off by calling 'get_instance()' method */ Cartflows_Flow_Frontend::get_instance();