Added documentation to methods

This commit is contained in:
Nedim Uka
2018-09-28 14:24:47 +02:00
parent 6f6fb1115a
commit f1c99c28ae
4 changed files with 107 additions and 51 deletions

View File

@@ -11,6 +11,9 @@ class Wiaas_Admin_Template_Selection {
}
/**
* Renders template selection meta box
*/
public static function create_template_meta_box() {
add_meta_box(
'template_product_meta_box',
@@ -22,7 +25,12 @@ class Wiaas_Admin_Template_Selection {
);
}
/**
* Fill in the value of template selection dropdown,
* and render template categories of the selected template
*
* @param $post WP_Post object
*/
public static function add_template_content_meta_box($post) {
$value = get_post_meta($post->ID, '_select_template', true);
@@ -56,31 +64,44 @@ class Wiaas_Admin_Template_Selection {
}
public static function get_categories_from_templates($products_form_template) {
/**
* Extract template categories for all of the main product categories
* (software , hardware, services, installation) and combine them in one array
*
* @param $categories_form_template
* @return array of Wiaas_Template_Category_Object
*/
public static function get_categories_from_templates($categories_form_template) {
$all_template_categories = array();
$all_template_categories = array_merge($all_template_categories,
WC_Product_Template::extract_template_product_categories($products_form_template['hardware']));
WC_Product_Template::extract_template_product_categories($categories_form_template['hardware']));
$all_template_categories = array_merge($all_template_categories,
WC_Product_Template::extract_template_product_categories($products_form_template['service']));
WC_Product_Template::extract_template_product_categories($categories_form_template['service']));
$all_template_categories = array_merge($all_template_categories,
WC_Product_Template::extract_template_product_categories($products_form_template['installation']));
WC_Product_Template::extract_template_product_categories($categories_form_template['installation']));
$all_template_categories = array_merge($all_template_categories,
WC_Product_Template::extract_template_product_categories($products_form_template['software']));
WC_Product_Template::extract_template_product_categories($categories_form_template['software']));
return $all_template_categories;
}
/**
* Return all of the template product meta_data from selected template
*
* @param $selected_template integer an id of selected template
* @return array of template categories
*/
public static function show_template_products($selected_template) {
if (empty($selected_template)) {
return;
return array();
} else {
@@ -107,6 +128,11 @@ class Wiaas_Admin_Template_Selection {
}
/**
* Render html of template categories
*
* @param $template_products array containing template category information
*/
public static function render_template_products($template_products) {
if (!empty($template_products)) {
@@ -123,35 +149,12 @@ class Wiaas_Admin_Template_Selection {
}
}
public static function get_bundled_product_categories($bundled_items) {
$template_category_objects = array();
foreach ($bundled_items as $item_id => $item) {
$item_data = $item->get_data();
$post_terms = wp_get_object_terms($item->get_product_id(), 'template_category', array('fields' => 'id=>name'));
if (!empty($post_terms) && !is_wp_error($post_terms)) {
$cat = '';
$category_template_id = '';
foreach ($post_terms as $id => $term) {
$cat = $term;
$category_template_id = $id;
}
$template_category_object = new Wiaas_Template_Category_Object(
$category_template_id,
$cat,
$item_data['quantity_max']);
$template_category_objects[$category_template_id] = $template_category_object;
}
}
return $template_category_objects;
}
/**
* Save selected template
*
* @param $post_id WP_Post
*/
function save_template_content_meta_box($post_id) {
$selected_template = $_POST['_select_template'];
@@ -160,6 +163,14 @@ class Wiaas_Admin_Template_Selection {
}
/**
* Get the template categories from bundle products and selected template
* Compare template categories and quantities that are required by the template with those in bundle products
*
* Admin error is added if validation is not satisfied
*
* @param $product WC_Product_Bundle
*/
public static function validate_bundle($product) {
@@ -168,8 +179,8 @@ class Wiaas_Admin_Template_Selection {
$bundled_items = $product->get_bundled_items('view');
$template_categories_form_template = self::show_template_products($selected_template);
$missing_categories = array();
$insufficient_product_quantities = array();
$missing_template_categories = array();
$insufficient_template_category_quantities = array();
$categories_form_template = self::get_categories_from_templates($template_categories_form_template);
$categories_form_bundle = WC_Product_Template::extract_bundled_product_categories($bundled_items);
@@ -183,7 +194,7 @@ class Wiaas_Admin_Template_Selection {
if (!in_array($template_cat_id, $bundle_category_keys)) {
array_push($missing_categories, $category->name);
array_push($missing_template_categories, $category->name);
} else {
@@ -191,20 +202,20 @@ class Wiaas_Admin_Template_Selection {
$quantity_from_template = $category->quantity;
if ((int)($quantity_from_template) !== $product_from_bundle_quantity) {
array_push($insufficient_product_quantities, $category->name);
array_push($insufficient_template_category_quantities, $category->name);
}
}
}
}
$categories_message = implode(',', $missing_categories);
$quantity_message = implode(',', $insufficient_product_quantities);
$template_categories_message = implode(',', $missing_template_categories);
$quantity_message = implode(',', $insufficient_template_category_quantities);
if (!empty($missing_categories)) {
WC_PB_Meta_Box_Product_Data::add_admin_error(__(' <strong> WIAAS This product bundle does not correspond to selected template</strong> Categories missing: ' . $categories_message, 'woocommerce-product-bundles'));
if (!empty($missing_template_categories)) {
WC_PB_Meta_Box_Product_Data::add_admin_error(__(' <strong> WIAAS This product bundle does not correspond to selected template</strong> Categories missing: ' . $template_categories_message, 'woocommerce-product-bundles'));
}
if (!empty($insufficient_product_quantities)) {
if (!empty($insufficient_template_category_quantities)) {
WC_PB_Meta_Box_Product_Data::add_admin_error(__(' <strong> WIAAS This product bundle does not correspond to selected template</strong> Categories with different quantities: ' . $quantity_message, 'woocommerce-product-bundles'));
}
}