8 (843) 528-29-88
ул. Портовая, д.19 / ул. Несмелова 7
class My_Informationsystem_Controller_Show extends Informationsystem_Controller_Show { protected function _groupCondition() { $oInformationsystem = $this->getEntity(); if ($this->group) { // если ID группы не 0, т.е. не корневая группа // получаем подгруппы $aSubGroupsID = $this->fillInformationsystemGroup($oInformationsystem->id, $this->group); // добавляем текущую группу в массив $aSubGroupsID[] = $this->group; $this->informationsystemItems() ->queryBuilder() ->where('informationsystem_items.informationsystem_group_id', 'IN', $aSubGroupsID); // получаем все товары из подгрупп } else { $this->informationsystemItems() ->queryBuilder() ->where('informationsystem_items.informationsystem_group_id', '=', 0); } return $this; } protected $_aGroupTree = array(); public function fillInformationsystemGroup($iInformationsystemId, $iInformationsystemGroupParentId = 0, $iLevel = 0) { $iInformationsystemId = intval($iInformationsystemId); $iInformationsystemGroupParentId = intval($iInformationsystemGroupParentId); $iLevel = intval($iLevel); if ($iLevel == 0) { $aTmp = Core_QueryBuilder::select('id', 'parent_id') ->from('informationsystem_groups') ->where('informationsystem_id', '=', $iInformationsystemId) ->where('deleted', '=', 0) ->execute()->asAssoc()->result(); foreach ($aTmp as $aGroup) { $this->_aGroupTree[$aGroup['parent_id']][] = $aGroup; } } $aReturn = array(); if (isset($this->_aGroupTree[$iInformationsystemGroupParentId])) { foreach ($this->_aGroupTree[$iInformationsystemGroupParentId] as $childrenGroup) { $aReturn[] = $childrenGroup['id']; $aReturn = array_merge($aReturn, $this->fillInformationsystemGroup($iInformationsystemId, $childrenGroup['id'], $iLevel + 1)); } } $iLevel == 0 && $this->_aGroupTree = array(); return $aReturn; } }