source/Application/Model/CategoryList.php
protected function _ppRemoveInactiveCategories()
    {
        // Collect all items which must be remove
        $aRemoveList = [];
        foreach ($this->_aArray as $sId => $oCat) {
            if ($oCat->oxcategories__oxppremove->value) {
                if (!isset($aRemoveList[$oCat->oxcategories__oxrootid->value])) {
                    $aRemoveList[$oCat->oxcategories__oxrootid->value] = [];
                }
                $aRemoveList[$oCat->oxcategories__oxrootid->value][$oCat->oxcategories__oxleft->value] = $oCat->oxcategories__oxright->value;
                unset($this->_aArray[$sId]);
            } else {
                unset($oCat->oxcategories__oxppremove);
            }
        }

        // Remove collected item's children from the list too (in the ranges).
        foreach ($this->_aArray as $sId => $oCat) {
            if (isset($aRemoveList[$oCat->oxcategories__oxrootid->value]) &&
                is_array($aRemoveList[$oCat->oxcategories__oxrootid->value])
            ) {
                foreach ($aRemoveList[$oCat->oxcategories__oxrootid->value] as $iLeft => $iRight) {
                    if (($iLeft <= $oCat->oxcategories__oxleft->value)
                        && ($iRight >= $oCat->oxcategories__oxleft->value)
                    ) {
                        // this is a child in an inactive range (parent already gone)
                        unset($this->_aArray[$sId]);
                        break 1;
                    }
                }
            }
        }
    }
protected function _ppRemoveInactiveCategories()
    {
        // Collect all items which must be remove
        $aRemoveList = [];
        foreach ($this->_aArray as $sId => $oCat) {
            if ($oCat->oxcategories__oxppremove->value) {
                if (!isset($aRemoveList[$oCat->oxcategories__oxrootid->value])) {
                    $aRemoveList[$oCat->oxcategories__oxrootid->value] = [];
                }
                $aRemoveList[$oCat->oxcategories__oxrootid->value][$oCat->oxcategories__oxleft->value] = $oCat->oxcategories__oxright->value;
                unset($this->_aArray[$sId]);
            } else {
                unset($oCat->oxcategories__oxppremove);
            }
        }

        // Remove collected item's children from the list too (in the ranges).
        foreach ($this->_aArray as $sId => $oCat) {
            if (isset($aRemoveList[$oCat->oxcategories__oxrootid->value]) &&
                is_array($aRemoveList[$oCat->oxcategories__oxrootid->value])
            ) {
                foreach ($aRemoveList[$oCat->oxcategories__oxrootid->value] as $iLeft => $iRight) {
                    if (($iLeft <= $oCat->oxcategories__oxleft->value)
                        && ($iRight >= $oCat->oxcategories__oxleft->value)
                    ) {
                        // this is a child in an inactive range (parent already gone)
                        unset($this->_aArray[$sId]);
                        break 1;
                    }
                }
            }
        }
    }
protected function _ppRemoveInactiveCategories ( ) { // Collect all items which must be remove $ aRemoveList = [ ] ; foreach ( $ this -> _aArray as $ sId => $ oCat ) { if ( $ oCat -> oxcategories__oxppremove -> value ) { if ( ! isset ( $ aRemoveList [ $ oCat -> oxcategories__oxrootid -> value ] ) ) { $ aRemoveList [ $ oCat -> oxcategories__oxrootid -> value ] = [ ] ; } $ aRemoveList [ $ oCat -> oxcategories__oxrootid -> value ] [ $ oCat -> oxcategories__oxleft -> value ] = $ oCat -> oxcategories__oxright -> value ; unset ( $ this -> _aArray [ $ sId ] ) ; } else { unset ( $ oCat -> oxcategories__oxppremove ) ; } } // Remove collected item's children from the list too (in the ranges). foreach ( $ this -> _aArray as $ sId => $ oCat ) { if ( isset ( $ aRemoveList [ $ oCat -> oxcategories__oxrootid -> value ] ) && is_array ( $ aRemoveList [ $ oCat -> oxcategories__oxrootid -> value ] ) ) { foreach ( $ aRemoveList [ $ oCat -> oxcategories__oxrootid -> value ] as $ iLeft => $ iRight ) { if ( ( $ iLeft <= $ oCat -> oxcategories__oxleft -> value ) && ( $ iRight >= $ oCat -> oxcategories__oxleft -> value ) ) { // this is a child in an inactive range (parent already gone) unset ( $ this -> _aArray [ $ sId ] ) ; break 1 ; } } } } }
Category list postprocessing routine, responsible for removal of inactive of forbidden categories, and subcategories.
Category list postprocessing routine responsible for removal of inactive of forbidden categories and subcategories .