/** * Define output for product * * @param mixed $initialContent The initial product content defined into wordpress basic admin interface * @param integer $product_id The product identifier we want to get and output attribute for * * @return mixed $content The content to add or to modify the product output in frontend */ public static function product_complete_sheet_output($initialContent, $product_id) { $content = $attributeContentOutput = ''; $wps_product_ctr = new wps_product_ctr(); /** Log number of view for the current product */ $product_view_number = get_post_meta($product_id, WPSHOP_PRODUCT_VIEW_NB, true); $product_view_number++; update_post_meta($product_id, WPSHOP_PRODUCT_VIEW_NB, $product_view_number); /** Get product definition */ $product = self::get_product_data($product_id); wp_cache_set('wpshop_product_data_' . $product_id, $product); /** Get the product thumbnail */ $productThumbnail = wpshop_display::display_template_element('product_thumbnail_default', array()); if (has_post_thumbnail($product_id)) { $thumbnail_url = wp_get_attachment_image_src(get_post_thumbnail_id(), 'full'); $tpl_component = array(); $tpl_component['PRODUCT_THUMBNAIL_URL'] = $thumbnail_url[0]; $tpl_component['PRODUCT_THUMBNAIL'] = get_the_post_thumbnail($product_id, 'wpshop-product-galery'); $tpl_component['PRODUCT_THUMBNAIL_FULL'] = get_the_post_thumbnail($product_id, 'full'); $image_attributes = wp_get_attachment_metadata(get_post_thumbnail_id()); if (!empty($image_attributes) && !empty($image_attributes['sizes']) && is_array($image_attributes['sizes'])) { foreach ($image_attributes['sizes'] as $size_name => $size_def) { $tpl_component['PRODUCT_THUMBNAIL_' . strtoupper($size_name)] = wp_get_attachment_image(get_post_thumbnail_id(), $size_name); $tpl_component['PRODUCT_THUMBNAIL_' . strtoupper($size_name)] = !empty($tpl_component['PRODUCT_THUMBNAIL_' . strtoupper($size_name)]) ? $tpl_component['PRODUCT_THUMBNAIL_' . strtoupper($size_name)] : WPSHOP_DEFAULT_PRODUCT_PICTURE; } } $productThumbnail = wpshop_display::display_template_element('product_thumbnail', $tpl_component); unset($tpl_component); } $product_document_galery = wps_media_manager_frontend_ctr::get_product_complete_sheet_attachments($product_id); /** Retrieve product attributes for output */ $attributeContentOutput = wpshop_attributes::attribute_of_entity_to_tab(wpshop_entities::get_entity_identifier_from_code(self::currentPageCode), $product_id, $product); /** Retrieve product price */ $price_attribute = wpshop_attributes::getElement('product_price', "'valid'", 'code'); $price_display = wpshop_attributes::check_attribute_display($price_attribute->is_visible_in_front, $product['custom_display'], 'attribute', 'product_price', 'complete_sheet'); $catalog_options = get_option('wpshop_catalog_main_option', array()); $productPrice = ''; $wpshop_price_piloting_option = get_option('wpshop_shop_price_piloting'); $check_product_price = wpshop_prices::check_product_price($product); $result_price_piloting = !empty($wpshop_price_piloting_option) && $wpshop_price_piloting_option == 'HT' ? $check_product_price['et'] : $check_product_price['ati']; if ($price_display && !(!empty($catalog_options) && (!empty($catalog_options['wpshop_catalog_empty_price_behaviour']) && $catalog_options['wpshop_catalog_empty_price_behaviour'] == 'yes') && $result_price_piloting == 0)) { $productPrice = wpshop_prices::get_product_price($product, 'price_display', 'complete_sheet'); } /** Check if there is at less 1 product in stock */ $productStock = $wps_product_ctr->check_stock($product_id, 1); $productStock = $productStock === true ? 1 : null; /** if !product stock check product have variation with stock **/ // if ( empty($productStock) ) { $product_variation_meta = get_post_meta($product_id, '_wpshop_variation_defining', true); if (!empty($product_variation_meta) && !empty($product_variation_meta['options']) && !empty($product_variation_meta['options']['priority']) && in_array('combined', $product_variation_meta['options']['priority'])) { $variations = wpshop_products::get_variation($product_id); if (!empty($variations)) { foreach ($variations as $variation) { if (!empty($variation) && !empty($variation['variation_dif']) && array_key_exists('product_stock', $variation['variation_dif']) && round($variation['variation_dif']['product_stock']) > 0) { $productStock = 1; } } } } // } /** Define "Add to cart" button */ $add_to_cart_button_display_state = wpshop_attributes::check_attribute_display(WPSHOP_DEFINED_SHOP_TYPE == 'sale' ? 'yes' : 'no', $product['custom_display'], 'product_action_button', 'add_to_cart', 'complete_sheet'); $display_price_state_when_price_is_empty = true; if (empty($productPrice) && (!empty($catalog_options) || !empty($catalog_options['wpshop_catalog_empty_price_behaviour']) && $catalog_options['wpshop_catalog_empty_price_behaviour'] == 'yes')) { $display_price_state_when_price_is_empty = false; } else { if (!empty($productPrice)) { $display_price_state_when_price_is_empty = true; } } $add_to_cart_button = true === $add_to_cart_button_display_state && true === $display_price_state_when_price_is_empty ? self::display_add_to_cart_button($product_id, $productStock, 'complete') : ''; $product_quantity_chooser_input = true === $add_to_cart_button_display_state ? wpshop_display::display_template_element('product_complete_sheet_quantity_chooser', array('PRODUCT_ID' => $product_id)) : ''; /** Define "Ask a quotation" button */ $quotation_button = self::display_quotation_button($product_id, !empty($product['quotation_allowed']) ? $product['quotation_allowed'] : null, 'complete'); /** Template parameters */ $template_part = 'product_complete_tpl'; $tpl_component = array(); $tpl_component['PRODUCT_VARIATIONS'] = wpshop_products::wpshop_variation($product_id); $tpl_component['PRODUCT_ID'] = $product_id; $tpl_component['PRODUCT_TITLE'] = $product['post_title']; $tpl_component['PRODUCT_THUMBNAIL'] = $productThumbnail; $tpl_component['PRODUCT_GALERY_PICS'] = ''; $tpl_component['PRODUCT_PRICE'] = $productPrice; $modules_option = get_option('wpshop_modules'); $tpl_component['LOW_STOCK_ALERT_MESSAGE'] = ''; if (!empty($modules_option) && !empty($modules_option['wpshop_low_stock_alert']) && $modules_option['wpshop_low_stock_alert']['activated'] == 'on') { $wps_marketing_tools = new wps_marketing_tools_ctr(); $tpl_component['LOW_STOCK_ALERT_MESSAGE'] = $wps_marketing_tools->display_alert_stock_message(array('id' => $product_id)); } /** Gallery **/ $tpl_component['PRODUCT_COMPLETE_SHEET_GALLERY'] = wps_media_manager_frontend_ctr::get_product_complete_sheet_galery($product_id); $product_new_def = self::display_product_special_state('declare_new', 'complete', !empty($product['declare_new']) ? $product['declare_new'] : 'no', !empty($product['set_new_from']) ? $product['set_new_from'] : '', !empty($product['set_new_to']) ? $product['set_new_to'] : ''); $product_new = $product_new_def['output']; $product_class = $product_new_def['class']; $product_featured_def = self::display_product_special_state('highlight_product', 'complete', !empty($product['highlight_product']) ? $product['highlight_product'] : 'no', !empty($product['highlight_from']) ? $product['highlight_from'] : '', !empty($product['highlight_to']) ? $product['highlight_to'] : ''); $product_featured = $product_featured_def['output']; $product_class .= $product_featured_def['class']; $tpl_component['PRODUCT_IS_NEW'] = $product_new; $tpl_component['PRODUCT_IS_FEATURED'] = $product_featured; $tpl_component['PRODUCT_EXTRA_STATE'] = $tpl_component['PRODUCT_IS_NEW'] . $tpl_component['PRODUCT_IS_FEATURED']; $tpl_component['PRODUCT_INITIAL_CONTENT'] = $initialContent; $tpl_component['PRODUCT_BUTTON_ADD_TO_CART'] = $add_to_cart_button; $tpl_component['PRODUCT_BUTTON_QUOTATION'] = $quotation_button; $tpl_component['PRODUCT_QUANTITY_CHOOSER'] = $product_quantity_chooser_input; $tpl_component['PRODUCT_BUTTONS'] = $tpl_component['PRODUCT_BUTTON_QUOTATION'] . $tpl_component['PRODUCT_BUTTON_ADD_TO_CART']; $tpl_component['PRODUCT_GALERY_DOCS'] = $product_document_galery; $tpl_component['PRODUCT_FEATURES'] = $attributeContentOutput; $tpl_component = apply_filters('wps-filter-product-complete-sheet-output', $tpl_component, $product_id); /** Build template */ $tpl_way_to_take = wpshop_display::check_way_for_template($template_part); if ($tpl_way_to_take[0] && !empty($tpl_way_to_take[1])) { /* Include the old way template part */ ob_start(); require wpshop_display::get_template_file($tpl_way_to_take[1]); $content = ob_get_contents(); ob_end_clean(); } else { $content = wpshop_display::display_template_element($template_part, $tpl_component); } unset($tpl_component); return $content; }