product details
This commit is contained in:
@@ -1,30 +1,21 @@
|
||||
<?php
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
|
||||
class Wiaas_Package {
|
||||
|
||||
public static function init() {
|
||||
require_once dirname( __FILE__ ) . '/package/class-wiaas-package-pricing.php';
|
||||
require_once dirname( __FILE__ ) . '/package/class-wiaas-package-addon.php';
|
||||
require_once dirname( __FILE__ ) . '/package/class-wiaas-package-option-groups.php';
|
||||
|
||||
add_action( 'woocommerce_checkout_create_order_line_item', array( __CLASS__, 'add_order_item_meta' ), 10, 3 );
|
||||
require_once dirname( __FILE__ ) . '/package/class-wiaas-package-type.php';
|
||||
|
||||
require_once dirname( __FILE__ ) . '/package/wiaas-package-functions.php';
|
||||
|
||||
add_filter('woocommerce_rest_prepare_product_object', array(__CLASS__, 'transform_rest_package'), 999, 3);
|
||||
|
||||
add_filter( 'woocommerce_hidden_order_itemmeta', array( __CLASS__, 'hidden_order_item_meta' ) );
|
||||
}
|
||||
|
||||
public static function add_order_item_meta( $order_item, $cart_item_key, $cart_item ){
|
||||
if (isset($cart_item['_wiaas_standard_package'])) {
|
||||
$order_item->add_meta_data( '_wiaas_standard_package', $cart_item['_wiaas_standard_package'], true );
|
||||
}
|
||||
}
|
||||
|
||||
public static function hidden_order_item_meta( $hidden ) {
|
||||
|
||||
return array_merge( $hidden, array(
|
||||
'_wiaas_standard_package',
|
||||
) );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -33,21 +24,78 @@ class Wiaas_Package {
|
||||
* @param $package
|
||||
* @param $request
|
||||
*
|
||||
* @return mixed
|
||||
* @return array
|
||||
*/
|
||||
public static function transform_rest_package($response, $package, $request) {
|
||||
$data = $response->get_data();
|
||||
|
||||
$data = self::_append_package_prices($data, $package, $request);
|
||||
$data = self::_append_country_info($data, $package, $request);
|
||||
|
||||
$data = self::_append_grouped_products($data, $package, $request);
|
||||
if (isset($request['id'])) {
|
||||
$data = self::_append_package_prices($data, $package, $request);
|
||||
|
||||
$data = self::_append_documents_info($data, $package, $request);
|
||||
|
||||
$data = self::_append_additional_packages($data, $package, $request);
|
||||
}
|
||||
|
||||
$response->set_data($data);
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
private static function _append_grouped_products($data, $package, $request) {
|
||||
/**
|
||||
* Append package documents
|
||||
* @param $data
|
||||
* @param $package
|
||||
* @param $request
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private static function _append_documents_info($data, $package, $request) {
|
||||
|
||||
unset($data['downloads']);
|
||||
|
||||
$data['documents'] = array_map(function($download) {
|
||||
return array(
|
||||
'id' => $download->get_id(),
|
||||
'name' => $download->get_name(),
|
||||
'extension' => $download->get_file_extension(),
|
||||
);
|
||||
}, array_values($package->get_downloads()));
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Append package country and currency info
|
||||
* @param $data
|
||||
* @param $package
|
||||
* @param $request
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private static function _append_country_info($data, $package, $request) {
|
||||
$package_country = Wiaas_Countries::get_package_country($package);
|
||||
|
||||
if (isset($package_country)) {
|
||||
$data['country'] = $package_country['name'];
|
||||
$data['country_code'] = $package_country['code'];
|
||||
$data['currency'] = $package_country['currency'];
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Append package addons and options
|
||||
* @param $data
|
||||
* @param $package
|
||||
* @param $request
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private static function _append_additional_packages($data, $package, $request) {
|
||||
|
||||
$data['additional_packages'] = array();
|
||||
$addons = Wiaas_Package_Addon::get_package_addons($package);
|
||||
@@ -56,7 +104,7 @@ class Wiaas_Package {
|
||||
'id' => $addon->get_id(),
|
||||
'name' => $addon->get_name(),
|
||||
'description' => $addon->get_description(),
|
||||
'prices' => array_values(Wiaas_Package_Pricing::get_package_prices($addon))
|
||||
'prices' => Wiaas_Pricing::get_addon_package_customer_price($addon, $package),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -66,15 +114,18 @@ class Wiaas_Package {
|
||||
$data['groups'][$option_group['id']] = array(
|
||||
'id' => $option_group['id'],
|
||||
'name' => $option_group['name'],
|
||||
'default' => $option_group['default'],
|
||||
'options' => array()
|
||||
);
|
||||
$default_option_id = (int) $option_group['default'];
|
||||
|
||||
foreach ($option_group['options'] as $option_package) {
|
||||
$data['groups'][$option_group['id']]['options'][] = array(
|
||||
'id' => $option_package->get_id(),
|
||||
'name' => $option_package->get_name(),
|
||||
'description' => $option_package->get_description(),
|
||||
'default' => 0,
|
||||
'prices' => array_values(Wiaas_Package_Pricing::get_package_prices($option_package))
|
||||
'default' => $default_option_id === $option_package->get_id(),
|
||||
'prices' => Wiaas_Pricing::get_option_package_customer_price($option_package, $package),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -88,12 +139,10 @@ class Wiaas_Package {
|
||||
* @param $package
|
||||
* @param $request
|
||||
*
|
||||
* @return mixed
|
||||
* @return array
|
||||
*/
|
||||
private static function _append_package_prices($data, $package, $request) {
|
||||
$package_prices = array_values(Wiaas_Package_Pricing::get_package_prices($package));
|
||||
|
||||
$data['prices'] = $package_prices;
|
||||
$data['prices'] = Wiaas_Pricing::get_standard_package_customer_prices($package);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user