function traverse_tree_down($class, $category_id, $level, $forbidcatids, $onlycatids, $virtuemart_vendor_id, $toplevel) { $db = JFactory::getDBO(); $banned_cats = explode(',', $forbidcatids); $prefered_cats = explode(',', $onlycatids); $level++; $toplevel = 0; $q = "SELECT * FROM `#__virtuemart_categories_" . VMLANG . "` AS vmcl, `#__virtuemart_category_categories` AS vmcc, `#__virtuemart_categories` AS vmc\r\r\n\t\t\t\t\tWHERE vmcc.`category_parent_id` = '" . $category_id . "' \r\r\n\t\t\t\t\tAND vmcl.`virtuemart_category_id` = `category_child_id` \r\r\n\t\t\t\t\tAND vmc.`virtuemart_category_id` = vmcl.`virtuemart_category_id` \r\r\n\t\t\t\t\tAND vmc.`published`='1' \r\r\n\t\t\t\t\tAND (vmc.`virtuemart_vendor_id`='1' OR vmc.`virtuemart_vendor_id` ='" . $virtuemart_vendor_id . "' OR vmc.`shared`='1' ) "; foreach ($banned_cats as $banned_cat) { $q .= "AND vmc.`virtuemart_category_id` !='" . $banned_cat . "' "; } if ($onlycatids != '') { $q .= " AND vmc.`virtuemart_category_id` IN (" . implode(',', $prefered_cats) . ") "; } $q .= "\tORDER BY vmc.`ordering` ASC "; $db->setQuery($q); $cats = $db->loadObjectList(); if (count($cats) > 0) { $c_js = ''; echo '<div class="form-group">'; echo ' <select id="selectid' . $category_id . '" class="form-control catrank chosen' . $level . '" required="required" aria-required="true" '; if ($level == 1) { $c_js = ''; echo ' name="formcat" '; } elseif ($level > 1) { echo ' style="display:none" '; } echo 'onchange="this.style.backgroundColor = \'\'" >'; //if(count($cats)>1) echo '<option value="0">' . JText::_('COM_VMVENDOR_VMVENADD_FORM_CHOOSECAT') . '</option>'; foreach ($cats as $cat) { echo '<option value="' . $cat->virtuemart_category_id . '" '; echo '> '; for ($iii = 1; $iii < $level; $iii++) { echo ' . '; } if ($level > 1) { echo ' |_ '; } echo JText::_($cat->category_name) . '</option>'; } echo '</select>'; echo '</div>'; } static $toplevel = 0; if ($level > $toplevel) { $toplevel = $level; } foreach ($cats as $cat) { traverse_tree_down($class, $cat->category_child_id, $level, $forbidcatids, $onlycatids, $virtuemart_vendor_id, $toplevel); } return $toplevel; }
function traverse_tree_down($class, $category_id, $level, $forbidcatids, $onlycatids, $virtuemart_category_id, $virtuemart_vendor_id, $multicat) { $db = JFactory::getDBO(); $banned_cats = explode(',', $forbidcatids); $prefered_cats = explode(',', $onlycatids); $level++; $q = "SELECT * FROM `#__virtuemart_categories_" . VMLANG . "` AS vmcl, `#__virtuemart_category_categories` AS vmcc, `#__virtuemart_categories` AS vmc\r\r\n\t\tWHERE vmcc.`category_parent_id` = '" . $category_id . "' \r\r\n\t\tAND vmcl.`virtuemart_category_id` = `category_child_id` \r\r\n\t\tAND vmc.`virtuemart_category_id` = vmcl.`virtuemart_category_id` \r\r\n\t\tAND vmc.`published`='1' \r\r\n\t\tAND (vmc.`virtuemart_vendor_id`='1' OR vmc.`virtuemart_vendor_id` ='" . $virtuemart_vendor_id . "' OR vmc.`shared`='1' ) "; foreach ($banned_cats as $banned_cat) { $q .= "AND vmc.`virtuemart_category_id` !='" . $banned_cat . "' "; } if ($onlycatids != '') { $q .= " AND vmc.`virtuemart_category_id` IN (" . implode(',', $prefered_cats) . ") "; } $q .= "\tORDER BY vmc.`ordering` ASC "; $db->setQuery($q); $cats = $db->loadObjectList(); foreach ($cats as $cat) { echo '<option value="' . $cat->virtuemart_category_id . '" '; if (!$multicat && $cat->virtuemart_category_id == $virtuemart_category_id) { echo ' selected="selected" '; } elseif ($multicat && in_array($cat->virtuemart_category_id, $virtuemart_category_id)) { echo ' selected="selected" '; } echo '>'; $parent = 0; for ($i = 1; $i < $level; $i++) { echo ' . '; } if ($level > 1) { echo ' |_ '; } echo JText::_($cat->category_name) . '</option>'; traverse_tree_down($class, $cat->category_child_id, $level, $forbidcatids, $onlycatids, $virtuemart_category_id, $virtuemart_vendor_id, $multicat); } }