/** * Create shipping method * * @param array $data Shipping method data * * @return \XLite\Model\Shipping\Method */ public function createShippingMethod($data) { // Array of allowed fields and flag required/optional $fields = $this->getAllowedFields(); $errorFields = array(); foreach ($fields as $field => $required) { if (isset($data[$field])) { $fields[$field] = $data[$field]; } elseif ($required) { $errorFields[] = $field; } } if (!empty($errorFields)) { throw new \Exception('createShippingMethod() failed: The following required fields are missed: ' . implode(', ', $errorFields)); } $method = $this->findMethodToUpdate($fields); if ($method) { $this->update($method, $fields); } else { $method = new \XLite\Model\Shipping\Method(); $method->map($fields); $method = $this->insert($method); } return $method; }
/** * Create shipping method * * @param array $data Shipping method data * * @return \XLite\Model\Shipping\Method */ public function createShippingMethod($data) { // Array of allowed fields and flag required/optional $fields = array('processor' => 1, 'carrier' => 1, 'code' => 1, 'enabled' => 0, 'position' => 0, 'name' => 1); $errorFields = array(); foreach ($fields as $field => $required) { if (isset($data[$field])) { $fields[$field] = $data[$field]; } elseif ($required) { $errorFields[] = $field; } } if (!empty($errorFields)) { throw new \Exception('createShippingMethod() failed: The following required fields are missed: ' . implode(', ', $errorFields)); } $method = $this->findOneBy(array('processor' => $fields['processor'], 'code' => $fields['code'])); if ($method) { $this->update($method, $fields); } else { $method = new \XLite\Model\Shipping\Method(); $method->map($fields); $method = $this->insert($method); } return $method; }