Оцените пожалуйста код

#
Оцените пожалуйста код
Добрый день. Делаю ТДС интернет-магазина, чтобы были и нормальные фильтры (по ярлыкам) и снижена нагрузка в моментах, когда не надо передавать некоторые параметры. Поэтому, сходя из логики работы http://www.velootpusk.ru/shop/ разделил на 4 части вывод если мы не в товаре
1) корень - выводим список групп
2) второй уровень - выводим подгруппы
3) в группе третьего уровня с подгруппами - выводим товары и не выводим подгруппы (выводим товары из всех подгрупп)
4) в группе третьего уровня, которая не имеет подгрупп - выводим только товары
Ну и так получилось, что мне сказали, что этот код полная неадекватная бредятина. Согласен, есть очень топорные места, ну да я и не программист. Но разве в целом это не правильно? Если считаете, что можно сделать иначе то же самое - буду раз совету. Выкладываю часть кода до фильтра по цене (далее все как в обычной ТДС)
<?php
$shortprice=0;
$Shop_Controller_Show = Core_Page::instance()->object;

$xslName = $Shop_Controller_Show->item
   ? Core_Array::get(Core_Page::instance()->libParams, 'shopItemXsl')
   : Core_Array::get(Core_Page::instance()->libParams, 'shopXsl');

$Shop_Controller_Show->addEntity(
   Core::factory('Core_Xml_Entity')
      ->name('ТекущаяГруппа')->value($Shop_Controller_Show->group)
)->addEntity(
   Core::factory('Core_Xml_Entity')
      ->name('show_comments')->value(Core_Array::get(Core_Page::instance()->libParams, 'showComments', 1))
)->addEntity(
   Core::factory('Core_Xml_Entity')
      ->name('show_add_comments')->value(Core_Array::get(Core_Page::instance()->libParams, 'showAddComment', 2))
);

$pages_cat=array(612,613,614,615,616,617,618,619,620,621,622,673,676,678,682,685,626); //надо как то понять, что мы в группах 3го уровня с подгруппами, которые не надо выводить
$pages_level2=array(610,611,631); //надо понять, что мы в группах второго уровня

$Shop_Controller_Show
   ->tags(TRUE)
   ->comments(TRUE)
   ->associatedItems(TRUE)
   ->modifications(TRUE);
   if ($Shop_Controller_Show->item == 0) //если мы НЕ В ТОВАРЕ
      {
      //Считаем максимальную цену для фильтра
      $max_price=1000000;

      if(in_array($Shop_Controller_Show->group,$pages_cat)){
      //Если мы в страницах, гед выводятся товары из подгрупп, а сами подгруппы не выводятся
         $oCore_QueryBuilder_Select2 = Core_QueryBuilder::select('id')->from('shop_groups')
            ->where('parent_id', '=', $Shop_Controller_Show->group);  

         $oCore_QueryBuilder_Select = Core_QueryBuilder::select('MAX(price)')->from('shop_items')
            ->where('shop_group_id', 'IN', $oCore_QueryBuilder_Select2);

            
         //Проверяем ярлыки и определяем максимлаьную цену товара (включая ярлыки, который отображается на странице)
         $oCore_QueryBuilder_Select3 = Core_QueryBuilder::select('shortcut_id')->from('shop_items')
            ->where('shop_group_id', 'IN',$oCore_QueryBuilder_Select2);
         $oCore_QueryBuilder_Select4 = Core_QueryBuilder::select('MAX(price)')->from('shop_items')
            ->where('id',  'IN', $oCore_QueryBuilder_Select3);
         $row = $oCore_QueryBuilder_Select4->execute()->asAssoc()->current();
         $shortprice=$row["MAX(`price`)"];
         }
         
      else{ //Если мы на страницах внутри группы (например аксессуары - велозамки)
         $oCore_QueryBuilder_Select = Core_QueryBuilder::select('MAX(price)')->from('shop_items')
            ->where('shop_group_id', '=', $Shop_Controller_Show->group);
         }
      $row = $oCore_QueryBuilder_Select->execute()->asAssoc()->current();
      
      
      //Смотрим цену товара и сравниваем что больше - товар или модификация
      if($row["MAX(`price`)"]!='')
         $max_price=$row["MAX(`price`)"] ;
      $max_price=substr($max_price,0,-3);
      if($shortprice>$max_price){
         $shortprice=substr($shortprice,0,-3);
         $max_price=$shortprice;
      }
      //Дописываем максимальную цену товара
      $Shop_Controller_Show->addEntity(
         Core::factory('Core_Xml_Entity')
         ->name('max_price')->value($max_price));
      
      if($Shop_Controller_Show->group == 0) //если мы не в группе, но можем быть в продавцах или корне
         {
         $Shop_Controller_Show->itemsForbiddenTags(array('text'));
         $Shop_Controller_Show
            ->tags(FALSE)
            ->comments(FALSE)
            ->associatedItems(FALSE)
            ->modifications(FALSE)
            ->itemsProperties(FALSE)
            ->itemsPropertiesList(FALSE)
            ->groupsForbiddenTags(array('description'))
            ->siteuser(FALSE)
            ->comparing(FALSE)
            ->favorite(FALSE)
            ->viewed(FALSE)
            // ->itemsProperties(true)
            ->groupsMode('all');
    
         if($_SERVER['REQUEST_URI']=='/shop/'){
            $Shop_Controller_Show->limit(0);
            }
         else{
            $Shop_Controller_Show->groupsMode('none')
               ->groupsForbiddenTags(array('description','name'));
            $Shop_Controller_Show->addEntity(
               Core::factory('Core_Xml_Entity')
                  ->name('producers_showing')->value('1'));
      
            }
         } //конец мы не в группе, но можем быть в продавцах или корне
  
      elseif(in_array($Shop_Controller_Show->group, $pages_level2)){  //если мы в группах велосипеды, аксессуары, запчати - то есть там, где не надо товары, а надо только выводить группы
            $Shop_Controller_Show->itemsForbiddenTags(array('text'));
            $Shop_Controller_Show->addEntity(
                  Core::factory('Core_Xml_Entity')
                     ->name('id_group_to_show')->value($Shop_Controller_Show->group));
  
            $Shop_Controller_Show
               ->group(0)
               ->tags(FALSE)
               ->comments(FALSE)
               ->associatedItems(FALSE)
               ->modifications(FALSE)
               ->itemsProperties(FALSE)
               ->itemsPropertiesList(FALSE)
               ->groupsForbiddenTags(array())
               ->siteuser(FALSE)
               ->comparing(FALSE)
               ->favorite(FALSE)
               ->viewed(FALSE)
               // ->itemsProperties(true)
               ->groupsMode('all')
               ->limit(0);
            }// конец где не надо товары, а надо только выводить группы
    
    
      elseif(in_array($Shop_Controller_Show->group, $pages_cat)){ //если мы в группе, у которой есть подгруппы, но надо выводить только товары без подгрупп
         $Shop_Controller_Show
            ->groupsPropertiesList(FALSE)
                      ->groupsMode('none')
            ->groupsProperties(FALSE)
            ->tags(FALSE)
            ->comments(FALSE)
            ->associatedItems(FALSE)
            ->modifications(FALSE)
            ->itemsProperties(TRUE)
            ->itemsPropertiesList(FALSE)
            ->groupsForbiddenTags(array('name'))
            ->siteuser(FALSE)
            ->comparing(FALSE)
            ->favorite(FALSE)
            ->itemsProperties(true)
            ->groupsMode('tree')
            ->viewed(FALSE); //просмотренные
         }//если мы в группе, у которой есть подгруппы, но надо выводить только товары без подгрупп
  
      else{ //если мы в группе у которой нет подгрупп и нам надо выводить товары
         $Shop_Controller_Show->itemsForbiddenTags(array('text','description'));
         $Shop_Controller_Show
            ->tags(FALSE)
            ->comments(FALSE)
            ->associatedItems(FALSE)
            ->modifications(FALSE)
            ->itemsProperties(TRUE)
            ->groupsForbiddenTags(array('description','name'))
            ->siteuser(FALSE)
            ->comparing(FALSE)
            ->favorite(FALSE)
            ->viewed(FALSE);
         }
//-------------------------------------------------------количество товаров на странице----------------------------------------
   $on_page = intval(Core_Array::getGet('on_page'));
   if ($on_page > 0 && $on_page < 150)
   {
      $Shop_Controller_Show->limit = $on_page;

      $Shop_Controller_Show->addEntity(
         Core::factory('Core_Xml_Entity')
            ->name('on_page')->value($on_page)
      );
   }

//--------------------------------------------------------если фильтр или сортировка--------------------------------------------------
   if (Core_Array::getGet('filter') || Core_Array::getGet('sorting')|| Core_Array::getGet('nalich')) //если нам надо что-то сортировать, а не просто ссылка с параметрами без значений
   {
      $Shop_Controller_Show->addEntity(
         Core::factory('Core_Xml_Entity')
            ->name('filter')->value(1)
      );

      $oShop = $Shop_Controller_Show->getEntity();

      $sorting = intval(Core_Array::getGet('sorting'));
      $Shop_Controller_Show->addEntity(
         Core::factory('Core_Xml_Entity')
            ->name('sorting')->value($sorting)
      );
      $Shop_Controller_Show->addCacheSignature('sorting=' . $sorting);
      //запоминаем значение года для фильтра
      $year= intval(Core_Array::getGet('property_114'));
      $Shop_Controller_Show->addCacheSignature('property_114=' . $year);

      //если показывать только товары в наличии или под заказ
      if(Core_Array::getGet('nalich')){
         $nalich= intval(Core_Array::getGet('nalich'));
      if($nalich==1) //тут берем значения из фильтра и топорно переделываем, чтобы потом просто подставить в фактическое наличие
         $nal_status = -1;
      if($nalich==2)
         $nal_status = 0;
      if($nalich==3)
         $nal_status = 1;
      if($nalich==1||$nalich==2||$nalich==3){
         $Shop_Controller_Show->addCacheSignature('nalich=' . $nalich);
         $Shop_Controller_Show->shopItems()
            ->queryBuilder()
            ->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id')
            ->having('SUM(shop_warehouse_items.count)', '>=', $nal_status)
            ->groupBy('shop_items.id');
         $Shop_Controller_Show->addEntity(
         Core::factory('Core_Xml_Entity')
            ->name('nalich')->value($nalich));
         }
      }//закончили показ товаров в наличии или под заказ
//---------------------------------------------------если фильтруем по производителям--------------------------------------------
   
      if (Core_Array::getGet('producer_id'))
         {
         $iProducerId = intval(Core_Array::getGet('producer_id'));
         $Shop_Controller_Show->addEntity(
         Core::factory('Core_Xml_Entity')
            ->name('producer_id')->value($iProducerId)
      );
      //пытаемся вывести ярлыки для товаров этого же производителя, показанных до применения фильтра по производителю
      $oCore_QueryBuilder_Select5 = Core_QueryBuilder::select('id')->from('shop_items')
         ->where('shop_producer_id', '=',$iProducerId);

      $Shop_Controller_Show->shopItems()
         ->queryBuilder()
         ->select('shop_items.*')
         ->open()
         ->where('shop_items.shop_producer_id', '=', $iProducerId)
         ->setOr()
         ->where('shop_items.shortcut_id', 'IN',$oCore_QueryBuilder_Select5 )
         ->close();
         $Shop_Controller_Show->addCacheSignature('producer_id=' . $iProducerId); //запоминаем производителя для сохранения в фильтре
         }
веломагазин и велотуры: http://www.velootpusk.ru
Авторизация