Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Hide Products From Customer Groups For Sppc


invasi0n

Recommended Posts

Hello,

 

I couldn't find the support thread for Hide products from customer groups for SPPC that's why I opened a new one.

 

I need some help with catalog/includes/modules/new_products.php

 

This is the code of my modules/new_products.php. It works perfectly with Separate Pricing Per Customer but I don't know how to modify it for Hide products from customer groups for SPPC

 

<?php
/*
$Id: new_products.php,v 1.35 2004/02/05 15:50:00 adf Exp $
Randomize New Products
adapted for Separate Pricing Per Customer 2006/04/29

$Id: new_products.php,v 1.34 2003/06/09 22:49:58 hpdl Exp $

osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com

Copyright (c) 2003 osCommerce

Released under the GNU General Public License
*/
?>
<!-- new_products //-->
<?php

if ( (!isset($new_products_category_id)) || ($new_products_category_id == '0') ) {
// start random new products
// deleted all reference to specials, only NULL as specials_new_products_price left
$new_products_query = tep_db_query("select p.products_id, p.products_image, p.products_price, p.products_tax_class_id, pd.products_name, NULL as specials_new_products_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p where products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added desc limit " . MAX_RANDOM_SELECT_NEW);
} else { // in a category

$cats[] = $new_products_category_id; // current catID as starting value
// put cat-IDs of all cats nested in current branch into $cats array, go through all subbranches
for($i=0;$i<count($cats);$i++) {
$categorie_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$cats[$i] . "'");
while ($categorie = tep_db_fetch_array($categorie_query)) {
$cats[] = $categorie['categories_id'];
}
$cats=array_unique($cats); // sort out doubles
}

$num = (int) MAX_DISPLAY_NEW_PRODUCTS;
$new_products_query = tep_db_query("select distinct p.products_id, p.products_image, p.products_price, NULL as specials_new_products_price, p.products_tax_class_id, pd.products_name from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p , " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c where p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and c.parent_id in (".implode(', ', $cats).") and p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added desc limit " . MAX_RANDOM_SELECT_NEW);
// end random new products
}

if (tep_db_num_rows($new_products_query) > 0) {
$info_box_contents = array();
$info_box_contents[] = array('text' => sprintf(TABLE_HEADING_NEW_PRODUCTS, strftime('%B')));
new contentBoxHeading($info_box_contents);
$row = 0;
$col = 0;
$pCount = 0;
$info_box_contents = array();
$found_products = array();

$num_rows = tep_db_num_rows($new_products_query);
if (MAX_DISPLAY_NEW_PRODUCTS > MAX_RANDOM_SELECT_NEW) {
// don't allow more new products than will be queried
$max_new_products = MAX_RANDOM_SELECT_NEW;
} else {
$max_new_products = MAX_DISPLAY_NEW_PRODUCTS;
}
if ($num_rows < $max_new_products) {
$max_new_products = $num_rows;
}

if ($num_rows > 0) {
// SPPC code to get correct prices
if(!tep_session_is_registered('sppc_customer_group_id')) {
$customer_group_id = '0';
} else {
$customer_group_id = $sppc_customer_group_id;
}
while ($_new_products = tep_db_fetch_array($new_products_query)) {
$new_products[] = $_new_products;
$list_of_prdct_ids[] = $_new_products['products_id'];
}

$select_list_of_prdct_ids = "products_id = '".$list_of_prdct_ids[0]."' ";
if ($num_rows > 1) {
for ($n = 1; $n < count($list_of_prdct_ids); $n++) {
$select_list_of_prdct_ids .= "or products_id = '".$list_of_prdct_ids[$n]."' ";
}
}
// get all customers_group_prices for products with the particular customer_group_id
// however not necessary for customer_group_id = 0
if ($customer_group_id != '0') {
$pg_query = tep_db_query("select pg.products_id, customers_group_price as price from " . TABLE_PRODUCTS_GROUPS . " pg where (".$select_list_of_prdct_ids.") and pg.customers_group_id = '".$customer_group_id."'");
while ($pg_array = tep_db_fetch_array($pg_query)) {
$new_prices[] = array ('products_id' => $pg_array['products_id'], 'products_price' => $pg_array['price'], 'specials_new_products_price' => '');
}

for ($x = 0; $x < $num_rows; $x++) {
// replace products prices with those from customers_group table
if(!empty($new_prices)) {
for ($i = 0; $i < count($new_prices); $i++) {
if( $new_products[$x]['products_id'] == $new_prices[$i]['products_id'] ) {
$new_products[$x]['products_price'] = $new_prices[$i]['products_price'];
}
}
} // end if(!empty($new_prices)
} // end for ($x = 0; $x < $num_rows; $x++)
} // end if ($customer_group_id != '0')

// an extra query is needed for all the specials
$specials_query = tep_db_query("select products_id, specials_new_products_price from specials where (".$select_list_of_prdct_ids.") and status = '1' and customers_group_id = '" .$customer_group_id. "' ");
while ($specials_array = tep_db_fetch_array($specials_query)) {
$new_s_prices[] = array ('products_id' => $specials_array['products_id'], 'specials_new_products_price' => $specials_array['specials_new_products_price']);
}

// replace NULL with the correct specials_new_products_price
if(!empty($new_s_prices)) {
for ($x = 0; $x < $num_rows; $x++) {
for ($i = 0; $i < count($new_s_prices); $i++) {
if( $new_products[$x]['products_id'] == $new_s_prices[$i]['products_id'] ) {
$new_products[$x]['specials_new_products_price'] = $new_s_prices[$i]['specials_new_products_price'];
}
}
}
} // // end if(!empty($new_s_prices)

while ($pCount < $max_new_products) {
// choose a random row
$random_product = '';
$random_row = tep_rand(0, ($num_rows - 1));
// tep_db_data_seek($new_products_query, $random_row);
// $random_product = tep_db_fetch_array($new_products_query);
// because the fetch array of the new_products_query has already been done, slightly different
// code is used:
$random_product = $new_products[$random_row];
// see if found already, if not use else skip
$found = 0;
for ($ii=0; $ii < $pCount; $ii++) {
if ($found_products[$ii] == $random_product['products_id']) {
$found = 1;
break;
}
}
if ($found == 0) {
// keep track of found id's
$found_products[$pCount] += $random_product['products_id'];
$pCount++;
// add to display array
// next two queries made obsolete by adapted $new_products_query (products_name) and sppc code (special prices)
// $random_product['products_name'] = tep_get_products_name($random_product['products_id']);

// $random_product['specials_new_products_price'] = tep_get_products_special_price($random_product['products_id']);

if (tep_not_null($random_product['specials_new_products_price'])) {
$whats_new_price = '<s>' . $currencies->display_price($random_product['products_price'], tep_get_tax_rate($random_product['products_tax_class_id'])) . '</s>   ';
$whats_new_price .= '<span class="productSpecialPrice">' . $currencies->display_price($random_product['specials_new_products_price'], tep_get_tax_rate($random_product['products_tax_class_id'])) . '</span>';
} else {
$whats_new_price = $currencies->display_price($random_product['products_price'], tep_get_tax_rate($random_product['products_tax_class_id']));
}
$product_query = tep_db_query("select products_description  from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$random_product['products_id'] . "' and language_id = '" . (int)1 . "'");
  $product = tep_db_fetch_array($product_query);
  $random_product['products_description'] = $product['products_description'];

$info_box_contents[$row][$col] = array('align' => 'center',
'params' => 'class="smallText" width="25%" align="center" valign="top"',
'text' => '<table class="new_product" border="0" width="100%" height="100%" cellspacing="0" cellpadding="0">
<tr>
<td class="new_product_title" align="center" valign="midle" height="82" colspan="4"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $random_product['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $random_product['products_image'], $random_product['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>
</td>
</tr>
<tr>
<td height="12" colspan="4"></td>
</tr>
<tr>
<td class="new_product_price" align="center" valign="top" height="65" colspan="4"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $random_product['products_id']) . '">' . $random_product['products_name'] . '</a>
</td>
</tr>
<tr>
<td class="new_product_price" height="52" width="3%"></td>
<td class="new_product_price" height="52" valign="center">Price: ' . $whats_new_price . '
</td>
<td class="new_product_price" height="52" valign="center"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $random_product['products_id']) . '">Buy Now</a></td>
<td class="new_product_price" height="52" width="3%"></td>
</tr>
</table>');
$col ++;
if ($col > 3) {
$col = 0;
$row ++;
}
} // found
} // while pCount
} // num_rows
// end random new products

new contentBox($info_box_contents);
}
?>
<!-- new_products_eof //-->

Thanks.

Link to comment
Share on other sites

Anybody can help please?

Nice to see you already tried a couple of things looking at the code in Hide Products :-"

 

This might work in one go, but I haven't tested it. No changes are needed below the last lines I post:

<!-- new_products //-->
<?php
// customer group id needed for queries so move it up
 if (isset($_SESSION['sppc_customer_group_id']) && $_SESSION['sppc_customer_group_id'] != '0') {
$customer_group_id = $_SESSION['sppc_customer_group_id'];
 } else {
$customer_group_id = '0';
 }

if ( (!isset($new_products_category_id)) || ($new_products_category_id == '0') ) {
// start random new products
// deleted all reference to specials, only NULL as specials_new_products_price left
// leave out products that are hidden and those in hidden categories
$new_products_query = tep_db_query("select p.products_id, p.products_image, p.products_price, p.products_tax_class_id, pd.products_name, NULL as specials_new_products_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c using(products_id) left join " . TABLE_CATEGORIES . " c using(categories_id) where products_status = '1' and p.products_id = pd.products_id and find_in_set('" . $customer_group_id . "', products_hide_from_groups) = 0 and find_in_set('" . $customer_group_id . "', categories_hide_from_groups) = 0 and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added desc limit " . MAX_RANDOM_SELECT_NEW);
} else { // in a category
$cats[] = $new_products_category_id; // current catID as starting value
// put cat-IDs of all cats nested in current branch into $cats array, go through all subbranches
for($i=0;$i<count($cats);$i++) {
// leave out hidden categories
$categorie_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$cats[$i] . "' and find_in_set('" . $customer_group_id . "', categories_hide_from_groups) = 0");
while ($categorie = tep_db_fetch_array($categorie_query)) {
$cats[] = $categorie['categories_id'];
}
$cats=array_unique($cats); // sort out doubles
}

$num = (int) MAX_DISPLAY_NEW_PRODUCTS;
// products in hidden categories already dealt with above, so it should only need to be checked for individual
// products that are hidden but the tables are joined already so why not add the check hidden category here too.
$new_products_query = tep_db_query("select distinct p.products_id, p.products_image, p.products_price, NULL as specials_new_products_price, p.products_tax_class_id, pd.products_name from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p , " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c where p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and c.parent_id in (".implode(', ', $cats).") and p.products_status = '1' and find_in_set('" . $customer_group_id . "', products_hide_from_groups) = 0 and find_in_set('" . $customer_group_id . "', categories_hide_from_groups) = 0 and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added desc limit " . MAX_RANDOM_SELECT_NEW);
// end random new products
}

if (tep_db_num_rows($new_products_query) > 0) {
$info_box_contents = array();
$info_box_contents[] = array('text' => sprintf(TABLE_HEADING_NEW_PRODUCTS, strftime('%B')));
new contentBoxHeading($info_box_contents);
$row = 0;
$col = 0;
$pCount = 0;
$info_box_contents = array();
$found_products = array();

$num_rows = tep_db_num_rows($new_products_query);
if (MAX_DISPLAY_NEW_PRODUCTS > MAX_RANDOM_SELECT_NEW) {
// don't allow more new products than will be queried
$max_new_products = MAX_RANDOM_SELECT_NEW;
} else {
$max_new_products = MAX_DISPLAY_NEW_PRODUCTS;
}
if ($num_rows < $max_new_products) {
$max_new_products = $num_rows;
}

if ($num_rows > 0) {
// SPPC code to get correct prices
// already done, no need to do it twice
/*
if(!tep_session_is_registered('sppc_customer_group_id')) {
$customer_group_id = '0';
} else {
$customer_group_id = $sppc_customer_group_id;
} */

while ($_new_products = tep_db_fetch_array($new_products_query)) {
$new_products[] = $_new_products;
$list_of_prdct_ids[] = $_new_products['products_id'];
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...