Code:
<?php
/**
* product_listing module
*
* @package modules
* @copyright Copyright 2003-2016 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
* @version $Id: picaflor-azul Mon Feb 15 13:59:01 2016 -0500 New in v1.5.5 $
* With CLG By LTO July 2018 Merged CBT With this File
*/
if (!defined('IS_ADMIN_FLAG')) {
die('Illegal Access');
}
// bof Column Layout Grid
if (!defined('PRODUCT_LISTING_LAYOUT_STYLE')) define('PRODUCT_LISTING_LAYOUT_STYLE',(isset($_GET['view']) ? $_GET['view'] : 'rows'));
if (!defined('PRODUCT_LISTING_COLUMNS_PER_ROW')) define('PRODUCT_LISTING_COLUMNS_PER_ROW',3);
if (!defined('PRODUCT_LISTING_GRID_SORT')) define('PRODUCT_LISTING_GRID_SORT',0);
$product_listing_layout_style = isset($_GET['view'])? $_GET['view']: PRODUCT_LISTING_LAYOUT_STYLE;
$row = 0;
$col = 0;
$list_box_contents = array();
$title = '';
$max_results = ($product_listing_layout_style=='columns' && PRODUCT_LISTING_COLUMNS_PER_ROW>0) ? (PRODUCT_LISTING_COLUMNS_PER_ROW * (int)(MAX_DISPLAY_PRODUCTS_LISTING/PRODUCT_LISTING_COLUMNS_PER_ROW)) : MAX_DISPLAY_PRODUCTS_LISTING;
// eof Column Layout Grid
$show_submit = zen_run_normal();
$listing_split = new splitPageResults($listing_sql, $max_results, 'p.products_id', 'page');
$zco_notifier->notify('NOTIFY_MODULE_PRODUCT_LISTING_RESULTCOUNT', $listing_split->number_of_rows);
$how_many = 0;
// Begin Row Layout Header
if ($product_listing_layout_style == 'rows' or PRODUCT_LISTING_GRID_SORT) { // For Column Layout (Grid Layout) add on module
$list_box_contents[0] = array('params' => 'class="productListing-rowheading"');
$zc_col_count_description = 0;
$lc_align = '';
for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
switch ($column_list[$col]) {
case 'PRODUCT_LIST_MODEL':
$lc_text = TABLE_HEADING_MODEL;
$lc_align = '';
$zc_col_count_description++;
break;
case 'PRODUCT_LIST_NAME':
$lc_text = TABLE_HEADING_PRODUCTS;
$lc_align = '';
$zc_col_count_description++;
break;
case 'PRODUCT_LIST_MANUFACTURER':
$lc_text = TABLE_HEADING_MANUFACTURER;
$lc_align = '';
$zc_col_count_description++;
break;
case 'PRODUCT_LIST_PRICE':
$lc_text = TABLE_HEADING_PRICE;
$lc_align = 'right' . (PRODUCTS_LIST_PRICE_WIDTH > 0 ? '" width="' . PRODUCTS_LIST_PRICE_WIDTH : '');
$zc_col_count_description++;
break;
case 'PRODUCT_LIST_QUANTITY':
$lc_text = TABLE_HEADING_QUANTITY;
$lc_align = 'right';
$zc_col_count_description++;
break;
case 'PRODUCT_LIST_WEIGHT':
$lc_text = TABLE_HEADING_WEIGHT;
$lc_align = 'right';
$zc_col_count_description++;
break;
case 'PRODUCT_LIST_IMAGE':
if ($product_listing_layout_style == 'rows') { //skip if grid
$lc_text = TABLE_HEADING_IMAGE;
$lc_align = 'center';
$zc_col_count_description++;
}
break;
}
if ( ($column_list[$col] != 'PRODUCT_LIST_IMAGE') ) {
$lc_text = zen_create_sort_heading($_GET['sort'], $col+1, $lc_text);
}
$list_box_contents[0][$col] = array('align' => $lc_align,
'params' => 'class="productListing-heading"',
'text' => $lc_text );
}
if ($product_listing_layout_style == 'columns') { //grid sort option
$grid_sort = $list_box_contents[0];
$list_box_contents = array();
}
} // End Row Layout Header used in Column Layout (Grid Layout) add on module
/* Header Row Above */
$num_products_count = $listing_split->number_of_rows;
if ($listing_split->number_of_rows > 0) {
$rows = 0;
// Used for Column Layout (Grid Layout) add on module
$column = 0;
if ($product_listing_layout_style == 'columns') {
if ($num_products_count < PRODUCT_LISTING_COLUMNS_PER_ROW || PRODUCT_LISTING_COLUMNS_PER_ROW == 0 ) {
$col_width = floor(100/$num_products_count) - 0.5;
} else {
$col_width = floor(100/PRODUCT_LISTING_COLUMNS_PER_ROW) - 0.5;
}
}
// Used for Column Layout (Grid Layout) add on module
$listing = $db->Execute($listing_split->sql_query);
$extra_row = 0;
while (!$listing->EOF) {
if ($product_listing_layout_style == 'rows') { // Used in Column Layout (Grid Layout) Add on module
$rows++;
if ((($rows-$extra_row)/2) == floor(($rows-$extra_row)/2)) {
$list_box_contents[$rows] = array('params' => 'class="productListing-even"');
} else {
$list_box_contents[$rows] = array('params' => 'class="productListing-odd"');
}
$cur_row = sizeof($list_box_contents) - 1;
} // End of Conditional execution - only for row (regular style layout)
$product_contents = array(); // Used For Column Layout (Grid Layout) Add on module
for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
$lc_align = '';
switch ($column_list[$col]) {
case 'PRODUCT_LIST_MODEL':
$lc_align = '';
$lc_text = $listing->fields['products_model'];
break;
case 'PRODUCT_LIST_NAME':
$lc_align = '';
if (isset($_GET['manufacturers_id'])) {
$lc_text = '<h3 class="itemTitle"><a href="' . zen_href_link(zen_get_info_page($listing->fields['products_id']), 'cPath=' . (($_GET['manufacturers_id'] > 0 and $_GET['filter_id']) > 0 ? zen_get_generated_category_path_rev($_GET['filter_id']) : ($_GET['cPath'] > 0 ? zen_get_generated_category_path_rev($_GET['cPath']) : zen_get_generated_category_path_rev($listing->fields['master_categories_id']))) . '&products_id=' . $listing->fields['products_id']) . '">' . $listing->fields['products_name'] . '</a></h3><div class="listingDescription">' . zen_trunc_string(zen_clean_html(stripslashes(zen_get_products_description($listing->fields['products_id'], $_SESSION['languages_id']))), PRODUCT_LIST_DESCRIPTION) . '</div>' ;
} else {
$lc_text = '<h3 class="itemTitle"><a href="' . zen_href_link(zen_get_info_page($listing->fields['products_id']), 'cPath=' . (($_GET['manufacturers_id'] > 0 and $_GET['filter_id']) > 0 ? zen_get_generated_category_path_rev($_GET['filter_id']) : ($_GET['cPath'] > 0 ? zen_get_generated_category_path_rev($_GET['cPath']) : zen_get_generated_category_path_rev($listing->fields['master_categories_id']))) . '&products_id=' . $listing->fields['products_id']) . '">' . $listing->fields['products_name'] . '</a></h3><div class="listingDescription">' . zen_trunc_string(zen_clean_html(stripslashes(zen_get_products_description($listing->fields['products_id'], $_SESSION['languages_id']))), PRODUCT_LIST_DESCRIPTION) . '</div>';
}
break;
case 'PRODUCT_LIST_MANUFACTURER':
$lc_align = '';
$lc_text = '<a class="list-man" href="' . zen_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $listing->fields['manufacturers_id']) . '">' . $listing->fields['manufacturers_name'] . '</a>';
break;
case 'PRODUCT_LIST_PRICE':
$lc_price = '<div class="list-price">' . zen_get_products_display_price($listing->fields['products_id']) . '</div>';
$lc_align = 'right';
$lc_text = $lc_price;
// more info in place of buy now
$lc_button = '';
if (zen_has_product_attributes($listing->fields['products_id']) or PRODUCT_LIST_PRICE_BUY_NOW == '0') {
$lc_button = '<a class="list-more" href="' . zen_href_link(zen_get_info_page($listing->fields['products_id']), 'cPath=' . (($_GET['manufacturers_id'] > 0 and $_GET['filter_id']) > 0 ? zen_get_generated_category_path_rev($_GET['filter_id']) : ($_GET['cPath'] > 0 ? $_GET['cPath'] : zen_get_generated_category_path_rev($listing->fields['master_categories_id']))) . '&products_id=' . $listing->fields['products_id']) . '">' . MORE_INFO_TEXT . '</a>';
} else {
if (PRODUCT_LISTING_MULTIPLE_ADD_TO_CART != 0) {
if (
// not a hide qty box product
$listing->fields['products_qty_box_status'] != 0 &&
// product type can be added to cart
zen_get_products_allow_add_to_cart($listing->fields['products_id']) != 'N'
&&
// product is not call for price
$listing->fields['product_is_call'] == 0
&&
// product is in stock or customers may add it to cart anyway
($listing->fields['products_quantity'] > 0 || SHOW_PRODUCTS_SOLD_OUT_IMAGE == 0) ) {
$how_many++;
}
// hide quantity box
if ($listing->fields['products_qty_box_status'] == 0) {
$lc_button = '<a href="' . zen_href_link($_GET['main_page'], zen_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing->fields['products_id']) . '">' . zen_image_button(BUTTON_IMAGE_BUY_NOW, BUTTON_BUY_NOW_ALT) . '</a>';
/* Begin mc12345678 Added for checkbox/textbox Plug-In */
} elseif (PRODUCT_LISTING_CHECKBOX_TEXTBOX_ACTIVE) {
if ((SHOW_PRODUCT_LISTING_QUANTITY_IN_CART == '1' && ($_SESSION['cart']->in_cart_mixed($listing->fields['products_id']) > 0)) || SHOW_PRODUCT_LISTING_QUANTITY_IN_CART == '2' ) {
$lc_button = PRODUCTS_QUANTITY_IN_CART_LISTING . ' ' . $_SESSION['cart']->in_cart_mixed($listing->fields['products_id']) . '<br/>';
} else {
$lc_button = '';
}
$lc_button .= sprintf(TEXT_PRODUCT_LISTING_MULTIPLE_ADD_TO_CART_CHECKBOX, TEXT_PRODUCT_MIN_MULTIPLE_LEFT . (zen_get_buy_now_qty($listing->fields['products_id'])) . TEXT_PRODUCT_MIN_MULTIPLE_RIGHT) . "<input type=\"checkbox\" name=\"products_id2[" . $listing->fields['products_id'] . "]\" value=\"1\" size=\"4\" /><input type=\"textbox\" name=\"products_id[" . $listing->fields['products_id'] . "]\" value=\"" . (zen_get_buy_now_qty($listing->fields['products_id'])) . "\" size=\"4\" />";
} elseif (PRODUCT_LISTING_CHECKBOX_ACTIVE) {
if ((SHOW_PRODUCT_LISTING_QUANTITY_IN_CART == '1' && ($_SESSION['cart']->in_cart_mixed($listing->fields['products_id']) > 0)) || SHOW_PRODUCT_LISTING_QUANTITY_IN_CART == '2' ) {
$lc_button = PRODUCTS_QUANTITY_IN_CART_LISTING . ' ' . $_SESSION['cart']->in_cart_mixed($listing->fields['products_id']) . '<br/>';
} else {
$lc_button = '';
}
$lc_button .= sprintf(TEXT_PRODUCT_LISTING_MULTIPLE_ADD_TO_CART_CHECKBOX, TEXT_PRODUCT_MIN_MULTIPLE_LEFT . (zen_get_buy_now_qty($listing->fields['products_id'])) . TEXT_PRODUCT_MIN_MULTIPLE_RIGHT) . "<input type=\"checkbox\" name=\"products_id[" . $listing->fields['products_id'] . "]\" value=\"" . (zen_get_buy_now_qty($listing->fields['products_id'])) . "\" size=\"4\" />";
/* End mc12345678 Added for checkbox/textbox Plug-In */
} else {
$lc_button = '<div class="list-input"><span class="list-addtext">' . TEXT_PRODUCT_LISTING_MULTIPLE_ADD_TO_CART . "</span><input type=\"text\" name=\"products_id[" . $listing->fields['products_id'] . "]\" value=\"0\" size=\"4\" /></div>";
}
} else {
// qty box with add to cart button
if (PRODUCT_LIST_PRICE_BUY_NOW == '2' && $listing->fields['products_qty_box_status'] != 0) {
$lc_button= '<div class="cart-add">' . zen_draw_form('cart_quantity', zen_href_link($_GET['main_page'], zen_get_all_get_params(array('action')) . 'action=add_product&products_id=' . $listing->fields['products_id']), 'post', 'enctype="multipart/form-data"') . '<input type="text" name="cart_quantity" value="' . (zen_get_buy_now_qty($listing->fields['products_id'])) . '" maxlength="6" size="4" />' . zen_draw_hidden_field('products_id', $listing->fields['products_id']) . zen_image_submit(BUTTON_IMAGE_IN_CART, BUTTON_IN_CART_ALT) . '</form></div>';
/*Begin mc12345678 Added for checkbox/textbox Plug-In */
} elseif (PRODUCT_LIST_PRICE_BUY_NOW == '3' && $listing->fields['products_qty_box_status'] !=0 ) {
if ((SHOW_PRODUCT_LISTING_QUANTITY_IN_CART == '1' && ($_SESSION['cart']->in_cart_mixed($listing->fields['products_id']) > 0)) || SHOW_PRODUCT_LISTING_QUANTITY_IN_CART == '2' ) {
$lc_button = PRODUCTS_QUANTITY_IN_CART_LISTING . ' ' . $_SESSION['cart']->in_cart_mixed($listing->fields['products_id']);
} else {
$lc_button = '';
}
if ($_SESSION['cart']->in_cart_mixed($listing->fields['products_id']) <> 0){
$check_min = zen_get_products_quantity_order_min($listing->fields['products_id']);
$check_units = zen_get_products_quantity_order_units($listing->fields['products_id']);
$zen_remove_some=-1;
//Conditions: Need to remove items from the cart.
// works on Mixed ON
switch (true) {
case ($_SESSION['cart']->in_cart_mixed($listing->fields['products_id']) == 0 ):
//If none in cart don't do anything.
$zen_remove_some = 0;
break;
//XX If the quantity is equal to the minimum, then need to take off the minimum.
//XX If current is less than minimum, then remove item totally.
case ($_SESSION['cart']->in_cart_mixed($listing->fields['products_id']) <= $check_min):
$zen_remove_some = -1 * ($_SESSION['cart']->in_cart_mixed($listing->fields['products_id']));
break;
//If greater than the minimum, then need to take off the units, but verify that result is greater than/equal to minimum or equal to zero.
case ($_SESSION['cart']->in_cart_mixed($listing->fields['products_id']) > $check_min):
// set to units or difference in units to balance cart
$new_units = $check_units - fmod_round($_SESSION['cart']->in_cart_mixed($listing->fields['products_id']), $check_units);
$zen_remove_some = ($new_units > 0 ? -$new_units : -$check_units );
$zen_remove_some = ($_SESSION['cart']->in_cart_mixed($listing->fields['products_id']) + $zen_remove_some < $check_min ? -($_SESSION['cart']->in_cart_mixed($listing->fields['products_id'])) : $zen_remove_some);
break;
default:
$zen_remove_some = -$check_units;
break;
}
if ($zen_remove_some > 0) {
$zen_remove_some = -1;
}
if ($_SESSION['cart']->in_cart_mixed($listing->fields['products_id']) == $check_min){
$lc_button.= zen_draw_form('cart_quantity', zen_href_link($_GET['main_page'], zen_get_all_get_params(array('action')) . 'action=remove_product&product_id=' . $listing->fields['products_id'] . '#' . $listing->fields['products_id']), 'post', 'enctype="multipart/form-data"') . '<input type="hidden" name="cart_quantity" value="0" /><br />' . zen_draw_hidden_field('products_id', $listing->fields['products_id']) . zen_image_submit('1' . ICON_IMAGE_TRASH, BUTTON_DELETE_ALT) . '</form>';
} else {
$lc_button.= zen_draw_form('cart_quantity', zen_href_link($_GET['main_page'], zen_get_all_get_params(array('action')) . 'action=add_product&products_id=' . $listing->fields['products_id'] . '#' . $listing->fields['products_id']), 'post', 'enctype="multipart/form-data"') . '<input type="hidden" name="cart_quantity" value="'. $zen_remove_some . '" readonly /><br />' . zen_draw_hidden_field('products_id', $listing->fields['products_id']) . zen_image_submit('1' . ICON_IMAGE_TRASH, BUTTON_DELETE_ALT) . '</form>';
}
}
$lc_button.= zen_draw_form('cart_quantity', zen_href_link($_GET['main_page'], zen_get_all_get_params(array('action')) . 'action=add_product&products_id=' . $listing->fields['products_id'] . '#' . $listing->fields['products_id']), 'post', 'enctype="multipart/form-data"') . '<input type="hidden" name="cart_quantity" value="'. (zen_get_buy_now_qty($listing->fields['products_id'])) . '"/><br />' . zen_draw_hidden_field('products_id', $listing->fields['products_id']) . zen_image_submit('1' . ICON_IMAGE_TINYCART, BUTTON_ADD_TO_CART_ALT) . '</form>';
/* End mc12345678 Added for checkbox/textbox Plug-In */
} else {
$lc_button = '<div class="cart-add"><a href="' . zen_href_link($_GET['main_page'], zen_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing->fields['products_id']) . '">' . zen_image_button(BUTTON_IMAGE_BUY_NOW, BUTTON_BUY_NOW_ALT, 'class="listingBuyNowButton"') . '</a></div>';
}
}
}
$the_button = $lc_button;
$products_link = '<a class="list-more" href="' . zen_href_link(zen_get_info_page($listing->fields['products_id']), 'cPath=' . ( ($_GET['manufacturers_id'] > 0 and $_GET['filter_id']) > 0 ? zen_get_generated_category_path_rev($_GET['filter_id']) : $_GET['cPath'] > 0 ? zen_get_generated_category_path_rev($_GET['cPath']) : zen_get_generated_category_path_rev($listing->fields['master_categories_id'])) . '&products_id=' . $listing->fields['products_id']) . '">' . MORE_INFO_TEXT . '</a>';
$lc_text .= '' . zen_get_buy_now_button($listing->fields['products_id'], $the_button, $products_link) . '' . zen_get_products_quantity_min_units_display($listing->fields['products_id']);
$lc_text .= '' . (zen_get_show_product_switch($listing->fields['products_id'], 'ALWAYS_FREE_SHIPPING_IMAGE_SWITCH') ? (zen_get_product_is_always_free_shipping($listing->fields['products_id']) ? TEXT_PRODUCT_FREE_SHIPPING_ICON . '' : '') : '');
break;
case 'PRODUCT_LIST_QUANTITY':
$lc_align = 'right';
$lc_text = '<div class="list-quantity">' . $listing->fields['products_quantity'] . '</div>';
break;
case 'PRODUCT_LIST_WEIGHT':
$lc_align = 'right';
$lc_text = '<div class="list-weight">' . $listing->fields['products_weight'] . '</div>';
break;
case 'PRODUCT_LIST_IMAGE':
$lc_align = 'center';
if ($listing->fields['products_image'] == '' and PRODUCTS_IMAGE_NO_IMAGE_STATUS == 0) {
$lc_text = '';
} else {
if (isset($_GET['manufacturers_id'])) {
$lc_text = '<div class="list-image"><a href="' . zen_href_link(zen_get_info_page($listing->fields['products_id']), 'cPath=' . (($_GET['manufacturers_id'] > 0 and $_GET['filter_id']) > 0 ? zen_get_generated_category_path_rev($_GET['filter_id']) : ($_GET['cPath'] > 0 ? zen_get_generated_category_path_rev($_GET['cPath']) : zen_get_generated_category_path_rev($listing->fields['master_categories_id']))) . '&products_id=' . $listing->fields['products_id']) . '">' . zen_image(DIR_WS_IMAGES . $listing->fields['products_image'], $listing->fields['products_name'], IMAGE_PRODUCT_LISTING_WIDTH, IMAGE_PRODUCT_LISTING_HEIGHT, 'class="listingProductImage"') . '</a></div>';
} else {
$lc_text = '<div class="list-image"><a href="' . zen_href_link(zen_get_info_page($listing->fields['products_id']), 'cPath=' . (($_GET['manufacturers_id'] > 0 and $_GET['filter_id']) > 0 ? zen_get_generated_category_path_rev($_GET['filter_id']) : ($_GET['cPath'] > 0 ? zen_get_generated_category_path_rev($_GET['cPath']) : zen_get_generated_category_path_rev($listing->fields['master_categories_id']))) . '&products_id=' . $listing->fields['products_id']) . '">' . zen_image(DIR_WS_IMAGES . $listing->fields['products_image'], $listing->fields['products_name'], IMAGE_PRODUCT_LISTING_WIDTH, IMAGE_PRODUCT_LISTING_HEIGHT, 'class="listingProductImage"') . '</a></div>';
[ CONTINUED]
Bookmarks