data = new stdClass(); $this->initiate_fields(); add_action( 'xlwcty_page_meta_setup_completed', array( $this, 'prepare_out_put_data' ) ); add_action( 'xlwcty_after_components_loaded', array( $this, 'setup_fields' ) ); add_action( 'wp', function () { $query_object = get_queried_object(); if ( ! $query_object instanceof WP_Post ) { return; } $page_id = $query_object->ID; $post_type = $query_object->post_type; $thank_you_page_id = XLWCTY_Common::get_thankyou_page_id( $page_id ); if ( XLWCTY_Common::get_thank_you_page_post_type_slug() === $post_type ) { $thank_you_page_id = $page_id; } $slug = $this->get_slug(); $slug = substr( $slug, 1 ); if ( $this->is_multiple ) { if ( ! isset( self::$multiple_components[ $slug . '_' . 1 ] ) ) { self::$multiple_components[ $slug . '_' . 1 ] = $slug . '_' . 1; new Xlwcty_Dynamic_Component( $slug . '_' . 1, $thank_you_page_id ); } } else { add_shortcode( $slug, array( $this, 'display_component_shortcode_view' ) ); } }, 12 ); } public function initiate_fields() { $fields = $this->fields; foreach ( $fields as $key => $val ) { $this->data->{$key} = ''; } } public function get_slug() { return $this->slug; } public function set_slug( $slug = '' ) { $this->slug = $slug; } public static function push_css( $component, $component_css ) { if ( '' !== $component && '' !== $component_css ) { if ( ! isset( self::$component_css[ $component ] ) ) { self::$component_css[ $component ] = array(); } self::$component_css[ $component ] = $component_css; } } public static function get_multiple_components( $page_id ) { if ( empty( $page_id ) ) { return ''; } $thankyou_component = json_decode( get_post_meta( $page_id, '_xlwcty_builder_layout', true ), true ); if ( empty( $thankyou_component ) ) { return ''; } $components = array(); $multiple_components = self::$multiple_components; $thankyou_component_template = get_post_meta( $page_id, '_xlwcty_builder_template', true ); /** Checking first column components */ if ( isset( $thankyou_component[ $thankyou_component_template ]['first'] ) ) { foreach ( $thankyou_component[ $thankyou_component_template ]['first'] as $key => $thankyou_comp ) { $slug = ltrim( $thankyou_comp['slug'], '_' ); if ( isset( $multiple_components[ $slug ] ) ) { $components[ $slug ] = $thankyou_comp; } } } /** Checking second column components */ if ( isset( $thankyou_component[ $thankyou_component_template ]['second'] ) ) { foreach ( $thankyou_component[ $thankyou_component_template ]['second'] as $key => $thankyou_comp ) { $slug = ltrim( $thankyou_comp['slug'], '_' ); if ( isset( $multiple_components[ $slug ] ) ) { $components[ $slug ] = $thankyou_comp; } } } /** Checking third column components */ if ( isset( $thankyou_component[ $thankyou_component_template ]['third'] ) ) { foreach ( $thankyou_component[ $thankyou_component_template ]['third'] as $key => $thankyou_comp ) { $slug = ltrim( $thankyou_comp['slug'], '_' ); if ( isset( $multiple_components[ $slug ] ) ) { $components[ $slug ] = $thankyou_comp; } } } return $components; } public static function get_css( $component = '' ) { if ( array_key_exists( $component, self::$component_css ) ) { return self::$component_css[ $component ]; } return self::$component_css; } public static function save_original_content( $original_value, $args, $cmb2_field ) { return $original_value; // Unsanitized value. } public function display_component_shortcode_view() { ob_start(); echo '
'; $this->get_view(); echo '
'; return ob_get_clean(); } public function get_view() { $order_data = $this->get_view_data(); if ( isset( $order_data['order_id'] ) && 0 === $order_data['order_id'] ) { return; } extract( $order_data ); if ( file_exists( $this->viewpath ) ) { $index = 0; if ( false !== $this->current_index ) { $index = $this->current_index; } if ( $this->is_enable( $index ) ) { $slug = $this->get_slug(); $slug = substr( $slug, 8 ); do_action( 'xlwcty_woocommerce_before_' . $slug, $order_data, $this ); include $this->viewpath; do_action( 'xlwcty_woocommerce_after_' . $slug, $order_data, $this ); } } } public function get_view_data( $key = 'order' ) { $order = XLWCTY_Core()->data->get_order(); if ( $order instanceof WC_Order ) { return array( 'campaign_data' => $this->instance_campaign_data, 'order_data' => $order, ); } else { return array( 'order_id' => 0, ); } } final public function wc_version() { return WC()->version; } public function component_script() { } public function setup_fields() { } public function is_enable( $index = 0 ) { if ( ! $this->has_multiple_fields() ) { if ( XLWCTY_Core()->data->get_meta( $this->get_slug() . '_enable', 'raw' ) == '1' ) { return true; } } else { if ( XLWCTY_Core()->data->get_meta( $this->get_slug() . '_enable_' . $index, 'raw' ) == '1' ) { return true; } } return false; } public function has_multiple_fields() { return false; } public function prepare_out_put_data() { $get_values = XLWCTY_Core()->data->get_meta( $this->get_slug() ); if ( is_array( $get_values ) && count( $get_values ) > 0 ) { if ( $this->has_multiple_fields() ) { foreach ( $get_values as $key => $values ) { $this->data->{$key} = new stdClass(); foreach ( $values as $key_meta => $val ) { $this->data->{$key}->{$key_meta} = maybe_unserialize( $val ); } do_action( 'xlwcty_after_component_data_setup' . $this->get_slug(), $this->get_slug(), $key ); } } else { foreach ( $get_values as $key => $val ) { $this->data->{$key} = maybe_unserialize( $val ); } do_action( 'xlwcty_after_component_data_setup' . $this->get_slug(), $this->get_slug() ); } } } public function get_highest_order_product() { $max_product = array(); $maxs = array(); $product = array(); $order_data = $order = XLWCTY_Core()->data->get_order(); if ( $order instanceof WC_Order ) { foreach ( $order_data->get_items() as $key => $val ) { $pro = XLWCTY_Compatibility::get_product_from_item( $order_data, $val ); $pid = $pro->get_id(); $product[ $pid ] = $pro; $max_product[ $pid ] = XLWCTY_Compatibility::get_item_subtotal( $order_data, $val ); } if ( is_array( $max_product ) && count( $max_product ) > 0 ) { $maxs = array_keys( $max_product, max( $max_product ) ); } } return $maxs; } public function get_wp_date_format() { return get_option( 'date_format', 'Y-m-d' ); } public function render_view( $slug ) { if ( $slug !== $this->get_slug() && $this->has_multiple_fields() ) { $this->current_index = str_replace( $this->get_slug() . '_', '', $slug ); } $this->get_view(); } public function get_data( $key = 'order' ) { if ( '' !== $key ) { return self::$order_meta_data[ $key ]; } return self::$order_meta_data; } public function get_defaults() { if ( false === $this->_component ) { return array(); } return ( isset( $this->_component['default'] ) ? $this->_component['default'] : array() ); } public function set_component( $component ) { $this->_component = $component; } public function get_title() { return $this->get_component_property( 'title' ); } public function get_component_property( $property ) { $component = $this->get_component(); return isset( $component[ $property ] ) ? $component[ $property ] : ''; } public function get_component() { return $this->_component; } }