/** * Define request data * Remove duplicate by quantity and membership entities * * @return array */ protected function defineRequestData() { $requestData = parent::defineRequestData(); $delete = isset($requestData['delete']) ? $requestData['delete'] : array(); $new = isset($requestData['new']) ? $requestData['new'] : array(); $data = isset($requestData['data']) ? $requestData['data'] : array(); foreach ($new as $id => $value) { $tier = $this->getTierByQuantityAndMembership($value['quantityRangeBegin'], $value['membership']); if ($tier && !isset($delete[$tier->getId()]) && 0 > $id) { $data[$tier->getId()] = array('quantityRangeBegin' => $value['quantityRangeBegin'], 'price' => $value['price'], 'membership' => $value['membership']); unset($new[$id]); } elseif (0 == $id) { unset($new[$id]); } } foreach ($data as $id => $value) { $tier = $this->getTierByQuantityAndMembership($value['quantityRangeBegin'], $value['membership']); if ($tier && $tier->getId() !== $id && !isset($delete[$tier->getId()])) { $data[$tier->getId()] = array('quantityRangeBegin' => $value['quantityRangeBegin'], 'price' => $value['price'], 'membership' => $value['membership']); $delete[$id] = true; unset($data[$id]); } } $requestData = array_merge($requestData, array('new' => $new, 'delete' => $delete, 'data' => $data)); foreach (array('data', 'new') as $idx) { foreach ($requestData[$idx] as $id => $value) { if (empty($value['membership']) && 1 == $value['quantityRangeBegin']) { unset($requestData[$idx][$id]); \XLite\Core\TopMessage::addWarning('The base price can not be changed on this page.'); } } } return $requestData; }