Example #1
0
function woo_ce_get_gravity_form_fields()
{
    if ($gf_products = woo_ce_get_gravity_forms_products()) {
        $fields = array();
        foreach ($gf_products as $gf_product) {
            if ($gf_product_data = maybe_unserialize(get_post_meta($gf_product->post_id, '_gravity_form_data', true))) {
                // Check the class and method for Gravity Forms exists
                if (class_exists('RGFormsModel') && method_exists('RGFormsModel', 'get_form_meta')) {
                    // Check the form exists
                    $gf_form_meta = RGFormsModel::get_form_meta($gf_product_data['id']);
                    if (!empty($gf_form_meta)) {
                        // Check that the form has fields assigned to it
                        if (!empty($gf_form_meta['fields'])) {
                            foreach ($gf_form_meta['fields'] as $gf_form_field) {
                                // Check for duplicate Gravity Form fields
                                $gf_form_field['formTitle'] = $gf_form_meta['title'];
                                // Do not include page and section breaks, hidden as exportable fields
                                if (!in_array($gf_form_field['type'], array('page', 'section', 'hidden'))) {
                                    $fields[] = $gf_form_field;
                                }
                            }
                        }
                    }
                    unset($gf_form_meta);
                }
            }
        }
        return $fields;
    }
}
Example #2
0
function woo_ce_extend_order_item_custom_meta( $order_item, $meta_key = '', $meta_value = '' ) {

	global $export;

	// WooCommerce TM Extra Product Options - http://codecanyon.net/item/woocommerce-extra-product-options/7908619
	if( class_exists( 'TM_Extra_Product_Options' ) ) {
		if( $tm_fields = woo_ce_get_extra_product_option_fields() ) {
			foreach( $tm_fields as $tm_field )
				$order_item->{sprintf( 'tm_%s', sanitize_key( $tm_field['name'] ) )} = woo_ce_get_extra_product_option_value( $order_item->id, $tm_field );
		}
		unset( $tm_fields, $tm_field );
	}

	// Gravity Forms - http://woothemes.com/woocommerce
	if( woo_ce_get_gravity_forms_products() ) {
		$meta_type = 'order_item';
		$gravity_forms_history = get_metadata( $meta_type, $order_item->id, '_gravity_forms_history', true );
		// Check that Gravity Forms Order item meta isn't empty
		if( !empty( $gravity_forms_history ) ) {
			if( isset( $gravity_forms_history['_gravity_form_data'] ) ) {
				$order_item->gf_form_id = ( isset( $gravity_forms_history['_gravity_form_data']['id'] ) ? $gravity_forms_history['_gravity_form_data']['id'] : 0 );
				if( $order_item->gf_form_id ) {
					$gravity_form = ( method_exists( 'RGFormsModel', 'get_form' ) ? RGFormsModel::get_form( $gravity_forms_history['_gravity_form_data']['id'] ) : array() );
					$order_item->gf_form_label = ( !empty( $gravity_form ) ? $gravity_form->title : '' );
				}
			}
		}
	}

	// Product Add-ons - http://www.woothemes.com/
	if( $product_addons = woo_ce_get_product_addons() ) {
		foreach( $product_addons as $product_addon ) {
			if( strpos( $meta_key, $product_addon->post_name ) !== false ) {
				// Check if this Product Addon has already been set
				if( isset( $order_item->product_addons[$product_addon->post_name] ) ) {
					// Append the new result to the existing value (likely a checkbox, multiple select, etc.)
					$order_item->product_addons[$product_addon->post_name] .= $export->category_separator . $meta_value;
				} else {
					// Otherwise make a new one
					$order_item->product_addons[$product_addon->post_name] = $meta_value;
				}
			}
		}
	}

	// WooCommerce Checkout Add-Ons - http://www.skyverge.com/product/woocommerce-checkout-add-ons/
	if( function_exists( 'init_woocommerce_checkout_add_ons' ) ) {
		$meta_type = 'fee';
		if( $meta_key == '_wc_checkout_add_on_id' )
			$order_item->checkout_addon_id = $meta_value;
		if( $meta_key == '_wc_checkout_add_on_label' )
			$order_item->checkout_addon_label = $meta_value;
		if( $meta_key == '_wc_checkout_add_on_value' )
			$order_item->checkout_addon_value = $meta_value;
	}

	// Local Pickup Plus - http://www.woothemes.com/products/local-pickup-plus/
	if( class_exists( 'WC_Local_Pickup_Plus' ) ) {
		$meta_type = 'order_item';
		if( $meta_key == 'Pickup Location' )
			$order_item->pickup_location = $meta_value;
	}

	// WooCommerce Bookings - http://www.woothemes.com/products/woocommerce-bookings/
	if( class_exists( 'WC_Bookings' ) ) {
		$meta_type = 'order_item';
		if( $meta_key == 'Booking Date' )
			$order_item->booking_date = $meta_value;
		if( $meta_key == 'Booking Type' )
			$order_item->booking_type = $meta_value;
	}

	return $order_item;

}