private function updateItemFilterTypes($connection, $typeArray, $fittingRuleRow) { $itemFilterTypeDict = array(); foreach ($fittingRuleRow->getItemFilterTypes() as $itemFilterType) { $itemFilterTypeDict[$itemFilterType->getItemId()] = $itemFilterType; } foreach ($typeArray as $dataTypeId) { $itemFilterTypeExists = array_key_exists($dataTypeId, $itemFilterTypeDict); $itemFilterType = null; if ($itemFilterTypeExists) { $itemFilterType = $itemFilterTypeDict[$dataTypeId]; } else { $itemFilterType = new ECP\ItemFilterType(); $itemFilterType->setItemId($dataTypeId); } $this->prepareSubentitySave2($connection, $fittingRuleRow, 'ItemFilterType', $itemFilterType, !$itemFilterTypeExists); } foreach ($itemFilterTypeDict as $itemId => $itemFilterType) { if (!in_array($itemId, $typeArray)) { $fittingRuleRow->removeItemFilterType($itemFilterType); } } $fittingRuleRow->save($connection); }