Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * default_filter.php for index filters
- *
- * index filter for the default product type
- * show the products of a specified manufacturer
- *
- * @package productTypes
- * @copyright Copyright 2003-2009 Zen Cart Development Team
- * @copyright Portions Copyright 2003 osCommerce
- * @todo Need to add/fine-tune ability to override or insert entry-points on a per-product-type basis
- * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
- * @version $Id: default_filter.php 14870 2009-11-19 22:36:24Z drbyte $
- */
- if (!defined('IS_ADMIN_FLAG')) {
- die('Illegal Access');
- }
- if (isset($_GET['sort']) && strlen($_GET['sort']) > 3) {
- $_GET['sort'] = substr($_GET['sort'], 0, 3);
- }
- if (isset($_GET['alpha_filter_id']) && (int)$_GET['alpha_filter_id'] > 0) {
- $alpha_sort = " and pd.products_name LIKE '" . chr((int)$_GET['alpha_filter_id']) . "%' ";
- } else {
- $alpha_sort = "";
- }
- //BOF: Recommended Products 01 of 03
- if ($_GET['sort'] == "red") {
- $date_parameters = "and osh.date_added >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY";
- } else {
- $date_parameters = "";
- }
- //EOF: Recommended Products 01 0f 03
- //BOF product listing filters
- $filterCond = "";
- if (function_exists('getFilterWhereCond'))
- {
- $filterCond = getFilterWhereCond();
- }
- //EOF product listing filters
- if (!isset($select_column_list)) $select_column_list = "";
- // show the products of a specified manufacturer
- if (isset($_GET['manufacturers_id']) && $_GET['manufacturers_id'] != '' ) {
- if (isset($_GET['filter_id']) && zen_not_null($_GET['filter_id'])) {
- // We are asked to show only a specific category
- $listing_sql = "select " . $select_column_list . " p.products_id, COUNT(opc.products_id), p.products_type, p.master_categories_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, pd.products_description, if(s.status = 1, s.specials_new_products_price, NULL) AS specials_new_products_price, IF(s.status = 1, s.specials_new_products_price, p.products_price) as final_price, p.products_sort_order, p.product_is_call, p.product_is_always_free_shipping, p.products_qty_box_status
- from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id , "
- . TABLE_ORDERS_STATUS_HISTORY . " osh left join " . TABLE_ORDERS_TOTAL . " ot on osh.orders_id = ot.orders_id, "
- . TABLE_PRODUCTS_DESCRIPTION . " pd left join " . TABLE_ORDERS_PRODUCTS . " opc on pd.products_id = opc.products_id, "
- . TABLE_MANUFACTURERS . " m, "
- . TABLE_PRODUCTS_TO_CATEGORIES . " p2c
- where p.products_status = 1 "
- . $date_parameters .
- " and p.manufacturers_id = m.manufacturers_id
- and m.manufacturers_id = '" . (int)$_GET['manufacturers_id'] . "'
- and p.products_id = p2c.products_id
- and pd.products_id = p2c.products_id
- and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
- and p2c.categories_id = '" . (int)$_GET['filter_id'] . "'" .
- $alpha_sort
- . " GROUP BY p.products_id ";
- } else {
- // We show them all
- $listing_sql = "select " . $select_column_list . " p.products_id, COUNT(opc.products_id), p.products_type, p.master_categories_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, pd.products_description, IF(s.status = 1, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status = 1, s.specials_new_products_price, p.products_price) as final_price, p.products_sort_order, p.product_is_call, p.product_is_always_free_shipping, p.products_qty_box_status
- from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, "
- . TABLE_ORDERS_STATUS_HISTORY . " osh left join " . TABLE_ORDERS_TOTAL . " ot on osh.orders_id = ot.orders_id, "
- . TABLE_PRODUCTS_DESCRIPTION . " pd left join " . TABLE_ORDERS_PRODUCTS . " opc on pd.products_id = opc.products_id, "
- . TABLE_MANUFACTURERS . " m
- where p.products_status = 1 "
- . $date_parameters .
- " and pd.products_id = p.products_id
- and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
- and p.manufacturers_id = m.manufacturers_id
- and m.manufacturers_id = '" . (int)$_GET['manufacturers_id'] . "'" .
- $alpha_sort
- . " GROUP BY p.products_id ";
- }
- } else {
- // show the products in a given category
- if (isset($_GET['filter_id']) && zen_not_null($_GET['filter_id'])) {
- // We are asked to show only specific category
- $listing_sql = "select " . $select_column_list . " p.products_id, COUNT(opc.products_id), p.products_type, p.master_categories_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, pd.products_description, IF(s.status = 1, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status = 1, s.specials_new_products_price, p.products_price) as final_price, p.products_sort_order, p.product_is_call, p.product_is_always_free_shipping, p.products_qty_box_status
- from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, "
- . TABLE_ORDERS_STATUS_HISTORY . " osh left join " . TABLE_ORDERS_TOTAL . " ot on osh.orders_id = ot.orders_id, "
- . TABLE_PRODUCTS_DESCRIPTION . " pd left join " . TABLE_ORDERS_PRODUCTS . " opc on pd.products_id = opc.products_id, "
- . TABLE_MANUFACTURERS . " m, "
- . TABLE_PRODUCTS_TO_CATEGORIES . " p2c
- where p.products_status = 1 "
- . $date_parameters .
- " and p.manufacturers_id = m.manufacturers_id
- and m.manufacturers_id = '" . (int)$_GET['filter_id'] . "'
- and p.products_id = p2c.products_id
- and pd.products_id = p2c.products_id
- and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
- and p2c.categories_id = '" . (int)$current_category_id . "'" .
- $alpha_sort
- . " GROUP BY p.products_id ";
- } else {
- // We show them all
- $listing_sql = "select " . $select_column_list . " p.products_id, COUNT(opc.products_id), p.products_type, p.master_categories_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, pd.products_description, IF(s.status = 1, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status =1, s.specials_new_products_price, p.products_price) as final_price, p.products_sort_order, p.product_is_call, p.product_is_always_free_shipping, p.products_qty_box_status
- from "
- . TABLE_ORDERS_STATUS_HISTORY . " osh left join " . TABLE_ORDERS_TOTAL . " ot on osh.orders_id = ot.orders_id, "
- . TABLE_PRODUCTS_DESCRIPTION . " pd left join " . TABLE_ORDERS_PRODUCTS . " opc on pd.products_id = opc.products_id, "
- . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id, "
- . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_SPECIALS . " s on p2c.products_id = s.products_id
- " . (($filterCond != "") ? " LEFT JOIN " . TABLE_PRODUCTS_EXTRA_INFO . " pe ON p2c.products_id = pe.products_id " : "") . "
- where p.products_status = 1 "
- . $date_parameters .
- " and p.products_id = p2c.products_id
- and pd.products_id = p2c.products_id
- and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
- and p2c.categories_id = '" . (int)$current_category_id . "'" .
- $alpha_sort .
- $filterCond
- //BOF: Recommended Products 02 of 03
- . " GROUP BY p.products_id ";
- //BOF: Recommended Products 02 of 03
- }
- }
- // set the default sort order setting from the Admin when not defined by customer
- if (!isset($_GET['sort']) and PRODUCT_LISTING_DEFAULT_SORT_ORDER != '') {
- $_GET['sort'] = PRODUCT_LISTING_DEFAULT_SORT_ORDER;
- }
- //bof customer defined sort order of results
- if (isset($_POST['resultsSortOrder']) && $_POST['resultsSortOrder'] != '') {
- $_GET['sort'] = $_SESSION['resultsSortOrder'] = zen_db_input($_POST['resultsSortOrder']);
- } elseif (isset($_GET['sort']) && $_GET['sort'] != '') {
- $_GET['sort'] = $_SESSION['resultsSortOrder'] = zen_db_input($_GET['sort']);
- } elseif (isset($_SESSION['resultsSortOrder']) && $_SESSION['resultsSortOrder'] != '') {
- $_GET['sort'] = $_SESSION['resultsSortOrder'];
- }
- //eof customer defined sort order of results
- if (isset($column_list)) {
- if ((!isset($_GET['sort'])) || (isset($_GET['sort']) && !preg_match('/[1-8][ad]/', $_GET['sort'])) || (substr($_GET['sort'], 0, 1) > sizeof($column_list)) ) {
- for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
- //BOF: Recommended Products 03 of 03
- if ($_GET['sort'] == "red") {
- $listing_sql .= " ORDER BY COUNT(opc.products_id) DESC";
- break;
- //BOF: Recommended Products 03 of 03
- } elseif (isset($column_list[$i]) && $column_list[$i] == 'PRODUCT_LIST_NAME') {
- $_GET['sort'] = $i+1 . 'a';
- $listing_sql .= " order by p.products_sort_order, pd.products_name";
- break;
- } else {
- // sort by products_sort_order when PRODUCT_LISTING_DEFAULT_SORT_ORDER is left blank
- // for reverse, descending order use:
- // $listing_sql .= " order by p.products_sort_order desc, pd.products_name";
- $listing_sql .= " order by p.products_sort_order, pd.products_name";
- break;
- }
- }
- // if set to nothing use products_sort_order and PRODUCTS_LIST_NAME is off
- if (PRODUCT_LISTING_DEFAULT_SORT_ORDER == '') {
- $_GET['sort'] = '20a';
- }
- } else {
- $sort_col = substr($_GET['sort'], 0 , 1);
- $sort_order = substr($_GET['sort'], 1);
- switch ($column_list[$sort_col-1]) {
- case 'PRODUCT_LIST_MODEL':
- $listing_sql .= " order by p.products_model " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
- break;
- case 'PRODUCT_LIST_NAME':
- $listing_sql .= " order by pd.products_name " . ($sort_order == 'd' ? 'desc' : '');
- break;
- case 'PRODUCT_LIST_MANUFACTURER':
- $listing_sql .= " order by m.manufacturers_name " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
- break;
- case 'PRODUCT_LIST_QUANTITY':
- $listing_sql .= " order by p.products_quantity " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
- break;
- case 'PRODUCT_LIST_IMAGE':
- $listing_sql .= " order by pd.products_name";
- break;
- case 'PRODUCT_LIST_WEIGHT':
- $listing_sql .= " order by p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
- break;
- case 'PRODUCT_LIST_PRICE':
- $listing_sql .= " order by p.products_price_sorter " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
- break;
- }
- }
- }
- if (($_GET['sort'] == "red") && (!isset($column_list))) {
- $listing_sql .= " ORDER BY COUNT(opc.products_id) DESC";
- }
- // optional Product List Filter
- if (PRODUCT_LIST_FILTER > 0) {
- if (isset($_GET['manufacturers_id']) && $_GET['manufacturers_id'] != '') {
- $filterlist_sql = "select distinct c.categories_id as id, cd.categories_name as name
- from " . TABLE_PRODUCTS . " p, " .
- TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " .
- TABLE_CATEGORIES . " c, " .
- TABLE_CATEGORIES_DESCRIPTION . " cd
- where p.products_status = 1
- and p.products_id = p2c.products_id
- and p2c.categories_id = c.categories_id
- and p2c.categories_id = cd.categories_id
- and cd.language_id = '" . (int)$_SESSION['languages_id'] . "'
- and p.manufacturers_id = '" . (int)$_GET['manufacturers_id'] . "'
- order by cd.categories_name";
- } else {
- $filterlist_sql= "select distinct m.manufacturers_id as id, m.manufacturers_name as name
- from " . TABLE_PRODUCTS . " p, " .
- TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " .
- TABLE_MANUFACTURERS . " m
- where p.products_status = 1
- and p.manufacturers_id = m.manufacturers_id
- and p.products_id = p2c.products_id
- and p2c.categories_id = '" . (int)$current_category_id . "'
- order by m.manufacturers_name";
- }
- $do_filter_list = false;
- $filterlist = $db->Execute($filterlist_sql);
- if ($filterlist->RecordCount() > 1) {
- $do_filter_list = true;
- if (isset($_GET['manufacturers_id'])) {
- $getoption_set = true;
- $get_option_variable = 'manufacturers_id';
- $options = array(array('id' => '', 'text' => TEXT_ALL_CATEGORIES));
- } else {
- $options = array(array('id' => '', 'text' => TEXT_ALL_MANUFACTURERS));
- }
- while (!$filterlist->EOF) {
- $options[] = array('id' => $filterlist->fields['id'], 'text' => $filterlist->fields['name']);
- $filterlist->MoveNext();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement