PageRenderTime 50ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/includes/inc_mainmenu_dev.php

https://bitbucket.org/iconography/north-west-tools
PHP | 199 lines | 168 code | 13 blank | 18 comment | 46 complexity | f8b992200ef30a3b76b2f553e970339c MD5 | raw file
  1. <?php if ($config['enable_offcanvasmenu']) { echo '<a href="#" class="closeoffcanvas visible-xs"><img src="/images/icon_close.png" alt="Close"></a>'; } ?>
  2. <ul id="tabwrap" class="<?php echo ($config['enable_offcanvasmenu']) ? 'offcanvasnavwrap' : 'standardtabwrap'; ?>">
  3. <?php /*<li class="visible-xs <?php if (basename($_SERVER['PHP_SELF']) == 'index.php') { echo 'current'; } ?>"><a class="toplevelcat" href="/">HOME</a></li>*/?>
  4. <?php
  5. // top level categories
  6. $sql = "SELECT * FROM categories WHERE parent = '0' AND live = 'yes' ORDER BY sorder, name";
  7. $res2 = cache::query($sql, $db, 60);
  8. // ######################## SEPARATE CATEGORY MENUS ##############################
  9. $maxchars = 65; // number of menu characters before "more" menu
  10. $x = 0;
  11. foreach ($res2 as $rs) {
  12. // sub cats
  13. $sql = "SELECT catid, name, urlstring FROM categories WHERE parent = '" . $rs['catid'] . "' AND live = 'yes' ORDER BY sorder, name";
  14. $ressub = cache::query($sql, $db, 60);
  15. $tempcatidlist = getChildren($rs['catid'], 0);
  16. $sql = "
  17. SELECT brandid, name FROM (
  18. SELECT b.brandid, b.name, COUNT(p.prodid) AS qty
  19. FROM brands AS b
  20. LEFT JOIN products AS p ON p.brand = b.brandid
  21. LEFT JOIN productcategory AS pc ON p.prodid = pc.prodid
  22. WHERE pc.catid IN (".$tempcatidlist.")
  23. AND b.live = 'yes'
  24. AND (p.live = 'yes' OR p.live = '".$db->escape_string($_SESSION["accounttype"])."')
  25. GROUP BY b.brandid
  26. ORDER BY qty DESC, b.name ASC
  27. LIMIT 10
  28. ) AS temp
  29. ORDER BY name ASC
  30. ";
  31. $ressub2 = cache::query($sql, $db, 60);
  32. echo '<li class="toplevelcat ';
  33. if (isset($thiscatarray) && is_array($thiscatarray) && in_array($rs["catid"], $thiscatarray)) {
  34. echo 'current"';
  35. }
  36. echo '"><a href="/'.$rs["urlstring"].'/c'.$rs["catid"].'" class="toplevelcatlink'.(($config['enable_offcanvasmenu'] && count($ressub) > 0) ? ' offcanvassubitems' : '').'">'.strtoupper($rs["name"]).'</a>';
  37. $widemenu = true;
  38. if ($widemenu) {
  39. $maxcolumns = 6;
  40. } else {
  41. // if not using a "widemenu" work out the appropriate number of columns based on position in menu
  42. $temp = $x / $maxchars;
  43. $maxcolumns = floor(6 - (3 * $temp));
  44. }
  45. if (count($ressub) > 0 || count($ressub2) > 0){
  46. $columnsused = 0;
  47. echo '<ul class="' . ($widemenu ? 'widemenu ' : '') . 'offcanvasmenusection">';
  48. // show cat iamge if available
  49. if (file_exists($_SERVER["DOCUMENT_ROOT"].'/images/categories/'.$rs["catid"].'.jpg')) {
  50. $columnsused++;
  51. echo '<li class="col-sm-3 col-md-2 hidden-xs menucategoryimage"><img title="'.$rs["name"].'" alt="'.$rs["name"].'" src="/images/categories/'.$rs["catid"].'.jpg" /></li>';
  52. }
  53. // show sub cats
  54. if (count($ressub) > 0){
  55. $columnsrequired = $maxcolumns-$columnsused;
  56. $columnsused++;
  57. echo '<li class="col-sm-3 col-md-2"><em class="hidden-xs">View by category:</em> <br class="hidden-xs"/>';
  58. $i = 0;
  59. // get total number of cats
  60. $temp = array();
  61. foreach($ressub as $rowsub){
  62. $temp[] = $rowsub["catid"];
  63. }
  64. $sql = "SELECT catid FROM categories WHERE parent IN (".implode(",", $temp).") AND live = 'yes'";
  65. $tempsub = cache::query($sql, $db, 60);
  66. $totalcats = count($tempsub) + count($ressub);
  67. if ($totalcats > ($widemenu ? 5 : 15)) { $break = ceil(($totalcats/$columnsrequired)+1); } else { $break = 0; }
  68. // display them
  69. foreach($ressub as $rowsub){
  70. // sub sub cats
  71. $sqlsubsub = "SELECT catid, name, urlstring FROM categories WHERE parent = '" . $rowsub['catid'] . "' AND live = 'yes' ORDER BY sorder, name";
  72. $ressubsub = cache::query($sqlsubsub, $db, 60);
  73. // if we are close to the end of the column, start a new one
  74. if (count($ressubsub) > 0) {
  75. if ($i > ($break * 0.8)) {
  76. echo '</li><li class="col-sm-3 col-md-2"><span class="hidden-xs">&nbsp;<br/></span>';
  77. $columnsused++;
  78. $i = 0;
  79. }
  80. }
  81. // output main cat
  82. echo '<a href="/'.$rowsub['urlstring'].'/c'.$rowsub['catid'].'" class="mainoption">'.htmlspecialchars($rowsub['name']).'</a>';
  83. $i++;
  84. // output sub cats
  85. if(count($ressubsub) > 0){
  86. foreach($ressubsub as $rowsubsub){
  87. echo '<a href="/'.$rowsubsub['urlstring'].'/c'.$rowsubsub['catid'].'" class="suboption">'.htmlspecialchars($rowsubsub['name']).'</a>';
  88. $i++;
  89. if ($i > $break && $break > 0) {
  90. echo '<a class="suboption" href="/' . sef($rowsub["name"]) . '/c' . $rowsub["catid"] . '-all">More ' . $rowsub["name"] . '</a>';
  91. break;
  92. }
  93. };
  94. }
  95. // column too long? start a new one
  96. if ($i > $break && $break > 0) {
  97. $columnsused++;
  98. echo '</li><li class="col-sm-3 col-md-2"><span class="hidden-xs">&nbsp;<br/></span>';
  99. $i = 0;
  100. }
  101. }
  102. echo '<a class="all mainoption" href="/'.$rs["urlstring"].'/c'.$rs["catid"].'-all">All '.$rs["name"].'</a>';
  103. echo '</li>';
  104. }
  105. // show brands in this cat
  106. if ($columnsused < $maxcolumns) {
  107. $columnsrequired = 1;
  108. if (count($ressub2) > 8) { $break = ceil((count($ressub2)/$columnsrequired)+1); } else { $break = 0; }
  109. if (count($ressub2) > 0){
  110. $columnsused++;
  111. echo '<li class="col-sm-3 col-md-2"><em class="hidden-xs">View by brand:</em> <br class="hidden-xs"/>';
  112. $i = 0;
  113. foreach($ressub2 as $rowsub){
  114. $bname = sef($rowsub['name']);
  115. echo '<a href="/'.$rs["urlstring"].'/c'.$rs["catid"].'-'.$bname.'-b'.$rowsub['brandid'].'" class="suboption">'.htmlspecialchars($rowsub['name']).'</a>';
  116. $i++;
  117. if ($i == $break) { $columnsused++; $i = 0; echo '</li><li class="col-sm-3 col-md-2"><span class="hidden-xs">&nbsp;<br/></span>'; }
  118. }
  119. echo '<a class="all suboption" href="/brands">All Brands</a>';
  120. echo '</li>';
  121. }
  122. }
  123. // show cat menu banner if available
  124. if ($columnsused < $maxcolumns && !$browser->isMobile()) {
  125. if (file_exists($_SERVER["DOCUMENT_ROOT"].'/images/categories/'.$rs["catid"].'_menu.jpg')) {
  126. $size = getimagesize($_SERVER["DOCUMENT_ROOT"].'/images/categories/'.$rs["catid"].'_menu.jpg');
  127. $bannerColumnsNeeded = min(6 - $columnsused, ceil($size[0] / 170));
  128. $columnsused = $columnsused + $bannerColumnsNeeded;
  129. echo '<li class="hidden-xs hidden-sm col-sm-'.(2*$bannerColumnsNeeded).' menubannerimage">';
  130. if (trim($rs["menuimagelink"]) != '') { echo '<a href="'.$rs["menuimagelink"].'">'; }
  131. echo '<img title="'.$rs["name"].'" alt="'.$rs["name"].'" src="/images/categories/'.$rs["catid"].'_menu.jpg" />';
  132. if (trim($rs["menuimagelink"]) != '') { echo '</a>'; }
  133. echo '</li>';
  134. }
  135. }
  136. if ($columnsused < $maxcolumns && $widemenu == true) {
  137. // get sub category id list
  138. $tempcatidlist = getChildren($rs["catid"], 0);
  139. // display featured products
  140. $sql = "SELECT p.* FROM products AS p LEFT JOIN productcategory AS pc ON p.prodid = pc.prodid WHERE p.featured = 'yes' AND (p.live = 'yes' OR p.live = '".$db->escape_string($_SESSION["accounttype"])."') AND pc.catid IN (".$tempcatidlist.") GROUP BY p.prodid ORDER BY RAND() ASC LIMIT ".($maxcolumns-$columnsused);
  141. $featresult = cache::query($sql, $db, 60);
  142. if (count($featresult) > 0) {
  143. foreach($featresult as $featrow) {
  144. ?>
  145. <li class="col-sm-3 col-md-2 hidden-xs hidden-sm">
  146. <div class="productframe">
  147. <div class="featimage">
  148. <?php shopping::showProductThumb($featrow['prodid'], $featrow['name'], 'small', 120, $featrow['overlayid']); ?>
  149. </div>
  150. <div class="name">
  151. <a href="/<?php echo sef($featrow['name']); ?>/p<?php echo sef($featrow['prodid']); ?>"><?php echo htmlspecialchars($featrow['name']); ?></a>
  152. <span class="price"><?php echo shopping::getPrice($featrow['prodid']); ?></span>
  153. </div>
  154. </div>
  155. </li>
  156. <?php
  157. }
  158. }
  159. }
  160. echo '</ul>';
  161. }
  162. echo '</li>';
  163. $x = $x + strlen($rs['name']) + 5; // extra 5 for padding
  164. if ($x > $maxchars) {
  165. $moremenu = $rs['catid']; // last category displayed in main menu
  166. break;
  167. }
  168. }
  169. ?>
  170. <?php
  171. // Display special offers link ONLY if any are listed
  172. $sql = "SELECT products.prodid
  173. FROM products
  174. INNER JOIN variants ON products.prodid = variants.prodid
  175. WHERE products.live = 'yes'
  176. AND variants.specialprice != '0'
  177. AND variants.vlive = 'yes'
  178. LIMIT 1
  179. ";
  180. $specialsresult = cache::query($sql, $db, 60);
  181. if (count($specialsresult) != 0) {
  182. echo '<li class="toplevelcat menu-special '.((basename($_SERVER['PHP_SELF']) == 'offers_products.php') ? 'current' : '').'"><a class="toplevelcatlink orange" href="/offer-products">SPECIAL OFFER</a></li>';
  183. }
  184. echo '<li class="menu-login hidden-sm right"><a class="menu-loginlink" href="/'.((isset($_SESSION['customerid']) && $_SESSION['active'] == 2) ? 'my-account' : 'login').'">'.((isset($_SESSION['customerid']) && $_SESSION['active'] == 2) ? 'MY ACCOUNT' : 'LOGIN').'</a></li>';
  185. ?>
  186. </ul>