Example #1
0
 /**
  * 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;
 }