home *** CD-ROM | disk | FTP | other *** search
/ Practical Internet Web Designer 90 / PIWD90.iso / pc / contents / ecommerce / software / osCommerce.exe / oscommerce-2.2ms2 / catalog / index.php < prev    next >
PHP Script  |  2003-06-11  |  19KB  |  341 lines

  1. <?php
  2. /*
  3.   $Id: index.php,v 1.1 2003/06/11 17:37:59 hpdl Exp $
  4.  
  5.   osCommerce, Open Source E-Commerce Solutions
  6.   http://www.oscommerce.com
  7.  
  8.   Copyright (c) 2003 osCommerce
  9.  
  10.   Released under the GNU General Public License
  11. */
  12.  
  13.   require('includes/application_top.php');
  14.  
  15. // the following cPath references come from application_top.php
  16.   $category_depth = 'top';
  17.   if (isset($cPath) && tep_not_null($cPath)) {
  18.     $categories_products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'");
  19.     $cateqories_products = tep_db_fetch_array($categories_products_query);
  20.     if ($cateqories_products['total'] > 0) {
  21.       $category_depth = 'products'; // display products
  22.     } else {
  23.       $category_parent_query = tep_db_query("select count(*) as total from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$current_category_id . "'");
  24.       $category_parent = tep_db_fetch_array($category_parent_query);
  25.       if ($category_parent['total'] > 0) {
  26.         $category_depth = 'nested'; // navigate through the categories
  27.       } else {
  28.         $category_depth = 'products'; // category has no products, but display the 'no products' message
  29.       }
  30.     }
  31.   }
  32.  
  33.   require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_DEFAULT);
  34. ?>
  35. <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
  36. <html <?php echo HTML_PARAMS; ?>>
  37. <head>
  38. <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>"> 
  39. <title><?php echo TITLE; ?></title>
  40. <base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>">
  41. <link rel="stylesheet" type="text/css" href="stylesheet.css">
  42. </head>
  43. <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
  44. <!-- header //-->
  45. <?php require(DIR_WS_INCLUDES . 'header.php'); ?>
  46. <!-- header_eof //-->
  47.  
  48. <!-- body //-->
  49. <table border="0" width="100%" cellspacing="3" cellpadding="3">
  50.   <tr>
  51.     <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
  52. <!-- left_navigation //-->
  53. <?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
  54. <!-- left_navigation_eof //-->
  55.     </table></td>
  56. <!-- body_text //-->
  57. <?php
  58.   if ($category_depth == 'nested') {
  59.     $category_query = tep_db_query("select cd.categories_name, c.categories_image from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . (int)$current_category_id . "' and cd.categories_id = '" . (int)$current_category_id . "' and cd.language_id = '" . (int)$languages_id . "'");
  60.     $category = tep_db_fetch_array($category_query);
  61. ?>
  62.     <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="0">
  63.       <tr>
  64.         <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
  65.           <tr>
  66.             <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
  67.             <td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . $category['categories_image'], $category['categories_name'], HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
  68.           </tr>
  69.         </table></td>
  70.       </tr>
  71.       <tr>
  72.         <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  73.       </tr>
  74.       <tr>
  75.         <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
  76.           <tr>
  77.             <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
  78.               <tr>
  79. <?php
  80.     if (isset($cPath) && strpos('_', $cPath)) {
  81. // check to see if there are deeper categories within the current category
  82.       $category_links = array_reverse($cPath_array);
  83.       for($i=0, $n=sizeof($category_links); $i<$n; $i++) {
  84.         $categories_query = tep_db_query("select count(*) as total from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$category_links[$i] . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "'");
  85.         $categories = tep_db_fetch_array($categories_query);
  86.         if ($categories['total'] < 1) {
  87.           // do nothing, go through the loop
  88.         } else {
  89.           $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$category_links[$i] . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' order by sort_order, cd.categories_name");
  90.           break; // we've found the deepest category the customer is in
  91.         }
  92.       }
  93.     } else {
  94.       $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$current_category_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' order by sort_order, cd.categories_name");
  95.     }
  96.  
  97.     $number_of_categories = tep_db_num_rows($categories_query);
  98.  
  99.     $rows = 0;
  100.     while ($categories = tep_db_fetch_array($categories_query)) {
  101.       $rows++;
  102.       $cPath_new = tep_get_path($categories['categories_id']);
  103.       $width = (int)(100 / MAX_DISPLAY_CATEGORIES_PER_ROW) . '%';
  104.       echo '                <td align="center" class="smallText" width="' . $width . '" valign="top"><a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new) . '">' . tep_image(DIR_WS_IMAGES . $categories['categories_image'], $categories['categories_name'], SUBCATEGORY_IMAGE_WIDTH, SUBCATEGORY_IMAGE_HEIGHT) . '<br>' . $categories['categories_name'] . '</a></td>' . "\n";
  105.       if ((($rows / MAX_DISPLAY_CATEGORIES_PER_ROW) == floor($rows / MAX_DISPLAY_CATEGORIES_PER_ROW)) && ($rows != $number_of_categories)) {
  106.         echo '              </tr>' . "\n";
  107.         echo '              <tr>' . "\n";
  108.       }
  109.     }
  110.  
  111. // needed for the new products module shown below
  112.     $new_products_category_id = $current_category_id;
  113. ?>
  114.               </tr>
  115.             </table></td>
  116.           </tr>
  117.           <tr>
  118.             <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  119.           </tr>
  120.           <tr>
  121.             <td><?php include(DIR_WS_MODULES . FILENAME_NEW_PRODUCTS); ?></td>
  122.           </tr>
  123.         </table></td>
  124.       </tr>
  125.     </table></td>
  126. <?php
  127.   } elseif ($category_depth == 'products' || isset($HTTP_GET_VARS['manufacturers_id'])) {
  128. // create column list
  129.     $define_list = array('PRODUCT_LIST_MODEL' => PRODUCT_LIST_MODEL,
  130.                          'PRODUCT_LIST_NAME' => PRODUCT_LIST_NAME,
  131.                          'PRODUCT_LIST_MANUFACTURER' => PRODUCT_LIST_MANUFACTURER,
  132.                          'PRODUCT_LIST_PRICE' => PRODUCT_LIST_PRICE,
  133.                          'PRODUCT_LIST_QUANTITY' => PRODUCT_LIST_QUANTITY,
  134.                          'PRODUCT_LIST_WEIGHT' => PRODUCT_LIST_WEIGHT,
  135.                          'PRODUCT_LIST_IMAGE' => PRODUCT_LIST_IMAGE,
  136.                          'PRODUCT_LIST_BUY_NOW' => PRODUCT_LIST_BUY_NOW);
  137.  
  138.     asort($define_list);
  139.  
  140.     $column_list = array();
  141.     reset($define_list);
  142.     while (list($key, $value) = each($define_list)) {
  143.       if ($value > 0) $column_list[] = $key;
  144.     }
  145.  
  146.     $select_column_list = '';
  147.  
  148.     for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
  149.       switch ($column_list[$i]) {
  150.         case 'PRODUCT_LIST_MODEL':
  151.           $select_column_list .= 'p.products_model, ';
  152.           break;
  153.         case 'PRODUCT_LIST_NAME':
  154.           $select_column_list .= 'pd.products_name, ';
  155.           break;
  156.         case 'PRODUCT_LIST_MANUFACTURER':
  157.           $select_column_list .= 'm.manufacturers_name, ';
  158.           break;
  159.         case 'PRODUCT_LIST_QUANTITY':
  160.           $select_column_list .= 'p.products_quantity, ';
  161.           break;
  162.         case 'PRODUCT_LIST_IMAGE':
  163.           $select_column_list .= 'p.products_image, ';
  164.           break;
  165.         case 'PRODUCT_LIST_WEIGHT':
  166.           $select_column_list .= 'p.products_weight, ';
  167.           break;
  168.       }
  169.     }
  170.  
  171. // show the products of a specified manufacturer
  172.     if (isset($HTTP_GET_VARS['manufacturers_id'])) {
  173.       if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) {
  174. // We are asked to show only a specific category
  175.         $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "'";
  176.       } else {
  177. // We show them all
  178.         $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'";
  179.       }
  180.     } else {
  181. // show the products in a given categorie
  182.       if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) {
  183. // We are asked to show only specific catgeory
  184.         $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";
  185.       } else {
  186. // We show them all
  187.         $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . 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 p.products_id = s.products_id where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";
  188.       }
  189.     }
  190.  
  191.     if ( (!isset($HTTP_GET_VARS['sort'])) || (!ereg('[1-8][ad]', $HTTP_GET_VARS['sort'])) || (substr($HTTP_GET_VARS['sort'], 0, 1) > sizeof($column_list)) ) {
  192.       for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
  193.         if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
  194.           $HTTP_GET_VARS['sort'] = $i+1 . 'a';
  195.           $listing_sql .= " order by pd.products_name";
  196.           break;
  197.         }
  198.       }
  199.     } else {
  200.       $sort_col = substr($HTTP_GET_VARS['sort'], 0 , 1);
  201.       $sort_order = substr($HTTP_GET_VARS['sort'], 1);
  202.       $listing_sql .= ' order by ';
  203.       switch ($column_list[$sort_col-1]) {
  204.         case 'PRODUCT_LIST_MODEL':
  205.           $listing_sql .= "p.products_model " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
  206.           break;
  207.         case 'PRODUCT_LIST_NAME':
  208.           $listing_sql .= "pd.products_name " . ($sort_order == 'd' ? 'desc' : '');
  209.           break;
  210.         case 'PRODUCT_LIST_MANUFACTURER':
  211.           $listing_sql .= "m.manufacturers_name " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
  212.           break;
  213.         case 'PRODUCT_LIST_QUANTITY':
  214.           $listing_sql .= "p.products_quantity " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
  215.           break;
  216.         case 'PRODUCT_LIST_IMAGE':
  217.           $listing_sql .= "pd.products_name";
  218.           break;
  219.         case 'PRODUCT_LIST_WEIGHT':
  220.           $listing_sql .= "p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
  221.           break;
  222.         case 'PRODUCT_LIST_PRICE':
  223.           $listing_sql .= "final_price " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
  224.           break;
  225.       }
  226.     }
  227. ?>
  228.     <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="0">
  229.       <tr>
  230.         <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
  231.           <tr>
  232.             <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
  233. <?php
  234. // optional Product List Filter
  235.     if (PRODUCT_LIST_FILTER > 0) {
  236.       if (isset($HTTP_GET_VARS['manufacturers_id'])) {
  237.         $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)$languages_id . "' and p.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' order by cd.categories_name";
  238.       } else {
  239.         $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";
  240.       }
  241.       $filterlist_query = tep_db_query($filterlist_sql);
  242.       if (tep_db_num_rows($filterlist_query) > 1) {
  243.         echo '            <td align="center" class="main">' . tep_draw_form('filter', FILENAME_DEFAULT, 'get') . TEXT_SHOW . ' ';
  244.         if (isset($HTTP_GET_VARS['manufacturers_id'])) {
  245.           echo tep_draw_hidden_field('manufacturers_id', $HTTP_GET_VARS['manufacturers_id']);
  246.           $options = array(array('id' => '', 'text' => TEXT_ALL_CATEGORIES));
  247.         } else {
  248.           echo tep_draw_hidden_field('cPath', $cPath);
  249.           $options = array(array('id' => '', 'text' => TEXT_ALL_MANUFACTURERS));
  250.         }
  251.         echo tep_draw_hidden_field('sort', $HTTP_GET_VARS['sort']);
  252.         while ($filterlist = tep_db_fetch_array($filterlist_query)) {
  253.           $options[] = array('id' => $filterlist['id'], 'text' => $filterlist['name']);
  254.         }
  255.         echo tep_draw_pull_down_menu('filter_id', $options, (isset($HTTP_GET_VARS['filter_id']) ? $HTTP_GET_VARS['filter_id'] : ''), 'onchange="this.form.submit()"');
  256.         echo '</form></td>' . "\n";
  257.       }
  258.     }
  259.  
  260. // Get the right image for the top-right
  261.     $image = DIR_WS_IMAGES . 'table_background_list.gif';
  262.     if (isset($HTTP_GET_VARS['manufacturers_id'])) {
  263.       $image = tep_db_query("select manufacturers_image from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'");
  264.       $image = tep_db_fetch_array($image);
  265.       $image = $image['manufacturers_image'];
  266.     } elseif ($current_category_id) {
  267.       $image = tep_db_query("select categories_image from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'");
  268.       $image = tep_db_fetch_array($image);
  269.       $image = $image['categories_image'];
  270.     }
  271. ?>
  272.             <td align="right"><?php echo tep_image(DIR_WS_IMAGES . $image, HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
  273.           </tr>
  274.         </table></td>
  275.       </tr>
  276.       <tr>
  277.         <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  278.       </tr>
  279.       <tr>
  280.         <td><?php include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING); ?></td>
  281.       </tr>
  282.     </table></td>
  283. <?php
  284.   } else { // default page
  285. ?>
  286.     <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="0">
  287.       <tr>
  288.         <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
  289.           <tr>
  290.             <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
  291.             <td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_default.gif', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
  292.           </tr>
  293.         </table></td>
  294.       </tr>
  295.       <tr>
  296.         <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  297.       </tr>
  298.       <tr>
  299.         <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
  300.           <tr>
  301.             <td class="main"><?php echo tep_customer_greeting(); ?></td>
  302.           </tr>
  303.           <tr>
  304.             <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  305.           </tr>
  306.           <tr>
  307.             <td class="main"><?php echo TEXT_MAIN; ?></td>
  308.           </tr>
  309.           <tr>
  310.             <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  311.           </tr>
  312.           <tr>
  313.             <td><?php include(DIR_WS_MODULES . FILENAME_NEW_PRODUCTS); ?></td>
  314.           </tr>
  315. <?php
  316.     include(DIR_WS_MODULES . FILENAME_UPCOMING_PRODUCTS);
  317. ?>
  318.         </table></td>
  319.       </tr>
  320.     </table></td>
  321. <?php
  322.   }
  323. ?>
  324. <!-- body_text_eof //-->
  325.     <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
  326. <!-- right_navigation //-->
  327. <?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>
  328. <!-- right_navigation_eof //-->
  329.     </table></td>
  330.   </tr>
  331. </table>
  332. <!-- body_eof //-->
  333.  
  334. <!-- footer //-->
  335. <?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
  336. <!-- footer_eof //-->
  337. <br>
  338. </body>
  339. </html>
  340. <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
  341.