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; ?> XXX</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. </tr>
  68. </table></td>
  69. </tr>
  70. <tr>
  71. <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  72. </tr>
  73. <tr>
  74. <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
  75. <tr>
  76. <td><table border="0" width="100%" cellspacing="0" cellpadding="2" class="infoBoxContentsNew infoBoxContentsTable">
  77. <tr>
  78. <?php
  79. if (isset($cPath) && strpos('_', $cPath)) {
  80. // check to see if there are deeper categories within the current category
  81. $category_links = array_reverse($cPath_array);
  82. for($i=0, $n=sizeof($category_links); $i<$n; $i++) {
  83. $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 . "'");
  84. $categories = tep_db_fetch_array($categories_query);
  85. if ($categories['total'] < 1) {
  86. // do nothing, go through the loop
  87. } else {
  88. $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");
  89. break; // we've found the deepest category the customer is in
  90. }
  91. }
  92. } else {
  93. $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");
  94. }
  95.  
  96. $number_of_categories = tep_db_num_rows($categories_query);
  97.  
  98. $rows = 0;
  99. while ($categories = tep_db_fetch_array($categories_query)) {
  100. $rows++;
  101. $cPath_new = tep_get_path($categories['categories_id']);
  102. $width = (int)(100 / MAX_DISPLAY_CATEGORIES_PER_ROW) . '%';
  103. echo ' <td align="center" width="' . $width . '" valign="top"><a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new) . '"><div id="imagewrapper"><div class="imagebox">' . tep_image(DIR_WS_IMAGES . $categories['categories_image'], $categories['categories_name'], SUBCATEGORY_IMAGE_WIDTH, SUBCATEGORY_IMAGE_HEIGHT) . '</div><span class="curve1"></span><span class="curve2"></span><span class="curve3"></span><span class="curve4"></span></div><br style="clear:both;"><div id="special_left">' . $categories['categories_name'] . '</div></a></td>' . "\n";
  104. if ((($rows / MAX_DISPLAY_CATEGORIES_PER_ROW) == floor($rows / MAX_DISPLAY_CATEGORIES_PER_ROW)) && ($rows != $number_of_categories)) {
  105. echo ' </tr>' . "\n";
  106. echo ' <tr>' . "\n";
  107. }
  108. }
  109.  
  110. // needed for the new products module shown below
  111. $new_products_category_id = $current_category_id;
  112. ?>
  113. </tr>
  114. </table></td>
  115. </tr>
  116. <tr>
  117. <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  118. </tr>
  119. <tr>
  120. <td><?php include(DIR_WS_MODULES . FILENAME_NEW_PRODUCTS); ?></td>
  121. </tr>
  122. </table></td>
  123. </tr>
  124. </table></td>
  125. <?php
  126. } elseif ($category_depth == 'products' || isset($HTTP_GET_VARS['manufacturers_id'])) {
  127. // create column list
  128. $define_list = array('PRODUCT_LIST_MODEL' => PRODUCT_LIST_MODEL,
  129. 'PRODUCT_LIST_NAME' => PRODUCT_LIST_NAME,
  130. 'PRODUCT_LIST_MANUFACTURER' => PRODUCT_LIST_MANUFACTURER,
  131. 'PRODUCT_LIST_PRICE' => PRODUCT_LIST_PRICE,
  132. 'PRODUCT_LIST_QUANTITY' => PRODUCT_LIST_QUANTITY,
  133. 'PRODUCT_LIST_WEIGHT' => PRODUCT_LIST_WEIGHT,
  134. 'PRODUCT_LIST_IMAGE' => PRODUCT_LIST_IMAGE,
  135. 'PRODUCT_LIST_BUY_NOW' => PRODUCT_LIST_BUY_NOW,
  136. 'PRODUCT_SORT_ORDER' => PRODUCT_SORT_ORDER);
  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, pd.products_description, ';
  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. case 'PRODUCT_SORT_ORDER':
  169. $select_column_list .= 'p.products_sort_order, ';
  170. break;
  171. }
  172. }
  173.  
  174. // show the products of a specified manufacturer
  175. if (isset($HTTP_GET_VARS['manufacturers_id'])) {
  176. if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) {
  177. // We are asked to show only a specific category
  178. $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, p.products_sort_order, 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 left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c 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'] . "'";
  179. } else {
  180. // We show them all
  181. $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, p.products_sort_order, 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 left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m 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'] . "'";
  182. }
  183. } else {
  184. // show the products in a given categorie
  185. if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) {
  186. // We are asked to show only specific catgeory
  187. $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, p.products_sort_order, 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 left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c 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 . "'";
  188. } else {
  189. // We show them all
  190. $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, p.products_sort_order, 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 left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c 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 . "'";
  191. }
  192. }
  193.  
  194. if ( (!isset($HTTP_GET_VARS['sort'])) || (!ereg('[1-8][ad]', $HTTP_GET_VARS['sort'])) || (substr($HTTP_GET_VARS['sort'], 0, 1) > sizeof($column_list)) ) {
  195. for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
  196. if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
  197. $HTTP_GET_VARS['sort'] = 'products_sort_order';
  198. $listing_sql .= " order by p.products_sort_order asc, pd.products_name";
  199. break;
  200. }
  201. }
  202. } else {
  203. $sort_col = substr($HTTP_GET_VARS['sort'], 0 , 1);
  204. $sort_order = substr($HTTP_GET_VARS['sort'], 1);
  205. $listing_sql .= ' order by ';
  206. switch ($column_list[$sort_col-1]) {
  207. case 'PRODUCT_LIST_MODEL':
  208. $listing_sql .= "p.products_model " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
  209. break;
  210. case 'PRODUCT_LIST_NAME':
  211. $listing_sql .= "pd.products_name " . ($sort_order == 'd' ? 'desc' : '');
  212. break;
  213. case 'PRODUCT_LIST_MANUFACTURER':
  214. $listing_sql .= "m.manufacturers_name " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
  215. break;
  216. case 'PRODUCT_LIST_QUANTITY':
  217. $listing_sql .= "p.products_quantity " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
  218. break;
  219. case 'PRODUCT_LIST_IMAGE':
  220. $listing_sql .= "pd.products_name";
  221. break;
  222. case 'PRODUCT_LIST_WEIGHT':
  223. $listing_sql .= "p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
  224. break;
  225. case 'PRODUCT_LIST_PRICE':
  226. $listing_sql .= "final_price " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
  227. break;
  228. case 'PRODUCT_SORT_ORDER':
  229. $listing_sql .= "p.products_sort_order " . ($sort_order == 'd' ? "desc" : '') . ", pd.products_name";
  230. break;
  231. }
  232. }
  233. ?>
  234. <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="0">
  235. <tr>
  236. <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
  237. <tr>
  238. <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
  239. <?php
  240. // optional Product List Filter
  241. if (PRODUCT_LIST_FILTER > 0) {
  242. if (isset($HTTP_GET_VARS['manufacturers_id'])) {
  243. $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";
  244. } else {
  245. $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";
  246. }
  247. $filterlist_query = tep_db_query($filterlist_sql);
  248. if (tep_db_num_rows($filterlist_query) > 1) {
  249. echo ' <td align="center" class="main">' . tep_draw_form('filter', FILENAME_DEFAULT, 'get') . TEXT_SHOW . '&nbsp;';
  250. if (isset($HTTP_GET_VARS['manufacturers_id'])) {
  251. echo tep_draw_hidden_field('manufacturers_id', $HTTP_GET_VARS['manufacturers_id']);
  252. $options = array(array('id' => '', 'text' => TEXT_ALL_CATEGORIES));
  253. } else {
  254. echo tep_draw_hidden_field('cPath', $cPath);
  255. $options = array(array('id' => '', 'text' => TEXT_ALL_MANUFACTURERS));
  256. }
  257. echo tep_draw_hidden_field('sort', $HTTP_GET_VARS['sort']);
  258. while ($filterlist = tep_db_fetch_array($filterlist_query)) {
  259. $options[] = array('id' => $filterlist['id'], 'text' => $filterlist['name']);
  260. }
  261. echo tep_draw_pull_down_menu('filter_id', $options, (isset($HTTP_GET_VARS['filter_id']) ? $HTTP_GET_VARS['filter_id'] : ''), 'onchange="this.form.submit()"');
  262. echo '</form></td>' . "\n";
  263. }
  264. }
  265.  
  266. // Get the right image for the top-right
  267. $image = DIR_WS_IMAGES . 'table_background_list.gif';
  268. if (isset($HTTP_GET_VARS['manufacturers_id'])) {
  269. $image = tep_db_query("select manufacturers_image from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'");
  270. $image = tep_db_fetch_array($image);
  271. $image = $image['manufacturers_image'];
  272. } elseif ($current_category_id) {
  273. $image = tep_db_query("select categories_image from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'");
  274. $image = tep_db_fetch_array($image);
  275. $image = $image['categories_image'];
  276. }
  277. ?>
  278. </tr>
  279. </table></td>
  280. </tr>
  281. <tr>
  282. <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  283. </tr>
  284. <tr>
  285. <td><?php include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING); ?></td>
  286. </tr>
  287. </table></td>
  288. <?php
  289. } else { // default page
  290. ?>
  291. <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="0">
  292. <tr>
  293. <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
  294. <tr>
  295. <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
  296. </tr>
  297. </table></td>
  298. </tr>
  299. <tr>
  300. <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '1'); ?></td>
  301. </tr>
  302. <tr>
  303. <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
  304. <tr>
  305. <td class="main"><?php echo tep_customer_greeting(); ?></td>
  306. </tr>
  307. <!--
  308. <tr>
  309. <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  310. </tr>
  311. <tr>
  312. <td class="main"><?php echo TEXT_MAIN; ?></td>
  313. </tr>
  314. <tr>
  315. <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  316. </tr>
  317. -->
  318. <tr>
  319. <td><?php include(DIR_WS_MODULES . FILENAME_NEW_PRODUCTS); ?></td>
  320. </tr>
  321. <?php
  322. include(DIR_WS_MODULES . FILENAME_UPCOMING_PRODUCTS);
  323. ?>
  324. </table></td>
  325. </tr>
  326. </table></td>
  327. <?php
  328. }
  329. ?>
  330. <!-- body_text_eof //-->
  331. <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
  332. <!-- right_navigation //-->
  333. <?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>
  334. <!-- right_navigation_eof //-->
  335. </table></td>
  336. </tr>
  337. </table>
  338. <!-- body_eof //-->
  339.  
  340. <!-- footer //-->
  341. <?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
  342. <!-- footer_eof //-->
  343. <br>
  344. </body>
  345. </html>
  346. <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
  347.