コード例 #1
0
ファイル: Address.php プロジェクト: kirkbauer2/kirkxc
 /**
  * Get required fields by address type
  *
  * @param string $atype Address type code
  *
  * @return array
  */
 public function getRequiredFieldsByType($atype)
 {
     $list = parent::getRequiredFieldsByType($atype);
     if ('express_checkout_return' === \XLite::getController()->getAction()) {
         $list = array_diff($list, array('phone'));
     }
     return $list;
 }
コード例 #2
0
ファイル: Address.php プロジェクト: kirkbauer2/kirkxc
 /**
  * This object will be used if another one is not passed
  *
  * @return \XLite\Model\Address
  */
 protected function getDefaultModelObject()
 {
     if (!isset($this->address)) {
         $addressId = $this->getAddressId();
         if (isset($addressId)) {
             $this->address = \XLite\Core\Database::getRepo('XLite\\Model\\Address')->find($this->getAddressId());
         } else {
             $this->address = new \XLite\Model\Address();
             $profileId = $this->getProfileId();
             if (0 < intval($profileId)) {
                 $profile = \XLite\Core\Database::getRepo('XLite\\Model\\Profile')->find($profileId);
                 if (isset($profile)) {
                     $this->address->setProfile($profile);
                 }
             }
         }
     }
     return $this->address;
 }
コード例 #3
0
ファイル: AmazonCheckout.php プロジェクト: kewaunited/xcart
 protected function prepareAddressData(array $data)
 {
     unset($data['save_in_book']);
     $requiredFields = \XLite\Core\Database::getRepo('XLite\\Model\\AddressField')->getShippingRequiredFields();
     foreach ($requiredFields as $fieldName) {
         if (!isset($data[$fieldName]) && \XLite\Model\Address::getDefaultFieldValue($fieldName)) {
             $data[$fieldName] = \XLite\Model\Address::getDefaultFieldValue($fieldName);
         }
     }
     return $data;
 }
コード例 #4
0
ファイル: TwoCheckout.php プロジェクト: kirkbauer2/kirkxc
 /**
  * Return Country field value. if no country defined we should use '' value
  *
  * @param \XLite\Model\Address $address Address model (could be shipping or billing address)
  *
  * @return string
  */
 protected function getCountryField($address)
 {
     return $address->getCountry() ? $address->getCountry()->getCode() : '';
 }
コード例 #5
0
ファイル: Country.php プロジェクト: kirkbauer2/kirkxc
 /**
  * getDefaultValue
  *
  * @return string
  */
 protected function getDefaultValue()
 {
     $country = \XLite\Model\Address::getDefaultFieldValue('country');
     return $country ? $country->getCode() : '';
 }
コード例 #6
0
ファイル: CountrySelect.php プロジェクト: kirkbauer2/kirkxc
 /**
  * Check - if country code is selected option in "SELECT" tag.
  *
  * @param string $countryCode Code of country to check.
  *
  * @return boolean
  */
 protected function isSelectedCountry($countryCode)
 {
     $country = $this->getParam(static::PARAM_COUNTRY);
     if ('' == $country) {
         $countryObj = \XLite\Model\Address::getDefaultFieldValue('country');
         $country = $countryObj ? $countryObj->getCode() : '';
     }
     return $country === $countryCode;
 }
コード例 #7
0
ファイル: OgoneEcommerce.php プロジェクト: kirkbauer2/kirkxc
 /**
  * Format name for request. (firstname + lastname from shipping/billing address)
  *
  * @param \XLite\Model\Address $address Address model (could be shipping or billing address)
  *
  * @return string
  */
 protected function getFormattedName($address)
 {
     return $address->getFirstname() . ' ' . $address->getLastname();
 }
コード例 #8
0
ファイル: AAddressBlock.php プロジェクト: kirkbauer2/kirkxc
 /**
  * Get field value
  *
  * @param string  $fieldName    Field name
  * @param boolean $processValue Process value flag OPTIONAL
  *
  * @return string
  */
 public function getFieldValue($fieldName, $processValue = false)
 {
     $result = '';
     $address = $this->getAddressInfo();
     if ($this->getCart() && $this->getCart()->getProfile() && 'email' == $fieldName) {
         $result = $this->getCart()->getProfile()->getLogin();
     } elseif ($this->getCart() && $this->getCart()->getProfile() && 'password' == $fieldName) {
         $result = \XLite\Core\Session::getInstance()->createProfilePassword;
     } elseif (isset($address)) {
         $methodName = 'get' . \XLite\Core\Converter::getInstance()->convertToCamelCase($fieldName);
         // $methodName assembled from 'get' + camelized $fieldName
         $result = $address->{$methodName}();
         if ($result && false !== $processValue) {
             switch ($fieldName) {
                 case 'state_id':
                     $result = $address->getCountry()->hasStates() ? $address->getState()->getState() : null;
                     break;
                 case 'custom_state':
                     $result = $address->getCountry()->hasStates() ? null : $result;
                     break;
                 case 'country_code':
                     $result = $address->getCountry()->getCountry();
                     break;
                 case 'type':
                     $result = $address->getTypeName();
                     break;
                 default:
             }
         }
     } elseif (in_array($fieldName, array('country_code', 'state_id', 'custom_state', 'zipcode'))) {
         $result = \XLite\Model\Address::getDefaultFieldPlainValue($fieldName);
     }
     return $result;
 }
コード例 #9
0
ファイル: Shipping.php プロジェクト: kirkbauer2/kirkxc
 /**
  * Get default customer address
  *
  * @return array
  */
 public static function getDefaultAddress()
 {
     $config = \XLite\Core\Config::getInstance()->Shipping;
     $state = \XLite\Model\Address::getDefaultFieldValue('state');
     $country = \XLite\Model\Address::getDefaultFieldValue('country');
     return array('address' => $config->anonymous_address, 'city' => \XLite\Model\Address::getDefaultFieldValue('city'), 'state' => $state ? $state->getCode() : '', 'custom_state' => \XLite\Model\Address::getDefaultFieldValue('custom_state'), 'zipcode' => \XLite\Model\Address::getDefaultFieldValue('zipcode'), 'country' => $country ? $country->getCode() : '', 'type' => $config->anonymous_address_type);
 }
コード例 #10
0
ファイル: Address.php プロジェクト: kirkbauer2/kirkxc
 /**
  * Get country
  *
  * @return XLite\Model\Country
  */
 public function getCountry()
 {
     $result = $this->country;
     if (!$result) {
         $countryField = \XLite\Core\Database::getRepo('XLite\\Model\\AddressField')->findOneBy(array('serviceName' => 'country_code', 'enabled' => false));
         if ($countryField) {
             $result = \XLite\Model\Address::getDefaultFieldValue('country');
         }
     }
     return $result;
 }
コード例 #11
0
 /**
  * Check - address is billing address or not
  *
  * @param \XLite\Model\Address $address Address
  *
  * @return boolean
  */
 protected function isBilling(\XLite\Model\Address $address)
 {
     return $this->getOrder()->getProfile()->getBillingAddress() && $address->getAddressId() == $this->getOrder()->getProfile()->getBillingAddress()->getAddressId();
 }
コード例 #12
0
 /**
  * Get state
  *
  * @return \XLite\Model\State
  */
 protected function getState()
 {
     $address = $this->getAddress();
     $state = null;
     // From getDestinationAddress()
     if ($address && isset($address['state']) && $address['state']) {
         $state = \XLite\Core\Database::getRepo('XLite\\Model\\State')->find($address['state']);
     } elseif ($this->getCart()->getProfile() && $this->getCart()->getProfile()->getShippingAddress() && $this->getCart()->getProfile()->getShippingAddress()->getState()) {
         // From shipping address
         $state = $this->getCart()->getProfile()->getShippingAddress()->getState();
     } elseif (!$address && \XLite\Model\Address::getDefaultFieldValue('custom_state')) {
         // From config
         $state = new \XLite\Model\State();
         $state->setState(\XLite\Model\Address::getDefaultFieldValue('custom_state'));
     }
     return $state;
 }
コード例 #13
0
ファイル: Shipping.php プロジェクト: kewaunited/xcart
 /**
  * Prepare the specific data format for address
  *
  * @param \XLite\Model\Address $address Address
  *
  * @return array
  */
 public static function prepareAddressData($address)
 {
     return $address ? array('address' => $address->getStreet(), 'city' => $address->getCity(), 'state' => $address->getState()->getStateId(), 'custom_state' => $address->getCustomState(), 'zipcode' => $address->getZipcode(), 'country' => $address->getCountry() ? $address->getCountry()->getCode() : '', 'type' => $address->getType() ?: \XLite\Core\Config::getInstance()->Shipping->anonymous_address_type) : null;
 }
コード例 #14
0
ファイル: AView.php プロジェクト: kirkbauer2/kirkxc
 /**
  * Return specific data for address entry. Helper.
  *
  * @param \XLite\Model\Address $address   Address
  * @param boolean              $showEmpty Show empty fields OPTIONAL
  *
  * @return array
  */
 protected function getAddressSectionData(\XLite\Model\Address $address, $showEmpty = false)
 {
     $result = array();
     $hasStates = $address->getCountry() ? $address->getCountry()->hasStates() : false;
     foreach (\XLite\Core\Database::getRepo('XLite\\Model\\AddressField')->findAllEnabled() as $field) {
         $method = 'get' . \Includes\Utils\Converter::convertToCamelCase($field->getViewGetterName() ?: $field->getServiceName());
         $addressFieldValue = $address->{$method}();
         $cssFieldName = $field->getCSSFieldName();
         switch ($field->getServiceName()) {
             case 'state_id':
                 $addressFieldValue = $hasStates ? $addressFieldValue : null;
                 if (null === $addressFieldValue && $hasStates) {
                     $addressFieldValue = $address->getCustomState();
                 }
                 break;
             case 'custom_state':
                 $addressFieldValue = $hasStates ? null : $address->getCustomState();
                 $cssFieldName = $hasStates ? $cssFieldName : 'address-state';
                 break;
             default:
         }
         if ($addressFieldValue || $showEmpty) {
             $result[$field->getServiceName()] = array('css_class' => $cssFieldName, 'title' => $field->getName(), 'value' => $addressFieldValue);
         }
     }
     return $result;
 }
コード例 #15
0
ファイル: SelectAddress.php プロジェクト: kingsj/core
 /**
  * Get list item class name
  *
  * @param \XLite\Model\Address $address Address
  * @param integer              $i       Address position in addresses list
  *
  * @return string
  */
 public function getItemClassName(\XLite\Model\Address $address, $i)
 {
     $class = 'address-' . $address->getAddressId();
     if ($this->isSelectedAddress($address)) {
         $class .= ' selected';
     }
     if (0 == $i % $this->columnsNumber) {
         $class .= ' last';
     }
     return $class;
 }
コード例 #16
0
ファイル: CountryState.php プロジェクト: kirkbauer2/kirkxc
 /**
  * Sanitize
  *
  * @param mixed $data Daa
  *
  * @return mixed
  */
 public function sanitize($data)
 {
     // Check country
     if (!isset($data[static::FIELD_COUNTRY]) && !$this->isFieldAvailable(static::FIELD_COUNTRY)) {
         $data[static::FIELD_COUNTRY] = \XLite\Model\Address::getDefaultFieldValue('country')->getCode();
     }
     // Get country
     $countryCodeValidator = new \XLite\Core\Validator\Pair\Simple();
     $countryCodeValidator->setName(static::FIELD_COUNTRY);
     $countryCodeValidator->setValidator(new \XLite\Core\Validator\String\ObjectId\Country(true));
     $country = $countryCodeValidator->getValidator()->sanitize($data[static::FIELD_COUNTRY]);
     // Get state
     if ($country->hasStates()) {
         $stateValidator = new \XLite\Core\Validator\String\ObjectId\State(true);
         $state = $stateValidator->sanitize($data[static::FIELD_STATE]);
     } elseif (!empty($data[static::FIELD_CUSTOM_STATE])) {
         $state = new \XLite\Model\State();
         $state->setState($data[static::FIELD_CUSTOM_STATE]);
         $state->setCountry($country);
         $data[static::FIELD_STATE] = $data[static::FIELD_CUSTOM_STATE];
     } else {
         $state = null;
     }
     return array('country' => $country, 'state' => $state, static::FIELD_COUNTRY => $data[static::FIELD_COUNTRY], static::FIELD_STATE => $state ? $data[static::FIELD_STATE] : null);
 }
コード例 #17
0
ファイル: ACustomer.php プロジェクト: kirkbauer2/kirkxc
 /**
  * Get field value
  *
  * @param string               $fieldName    Field name
  * @param \XLite\Model\Address $address      Field name
  * @param boolean              $processValue Process value flag OPTIONAL
  *
  * @return string
  */
 public function getFieldValue($fieldName, \XLite\Model\Address $address, $processValue = false)
 {
     $result = '';
     if (null !== $address) {
         $methodName = 'get' . \XLite\Core\Converter::getInstance()->convertToCamelCase($fieldName);
         // $methodName assembled from 'get' + camelized $fieldName
         $result = $address->{$methodName}();
         if ($result && false !== $processValue) {
             switch ($fieldName) {
                 case 'state_id':
                     $result = $address->getCountry()->hasStates() ? $address->getState()->getState() : null;
                     break;
                 case 'custom_state':
                     $result = $address->getCountry()->hasStates() ? null : $result;
                     break;
                 case 'country_code':
                     $result = $address->getCountry()->getCountry();
                     break;
                 case 'type':
                     $result = $address->getTypeName();
                     break;
                 default:
             }
         }
     }
     return $result;
 }
コード例 #18
0
ファイル: SelectAddress.php プロジェクト: kirkbauer2/kirkxc
 /**
  * Check - address is billing address or not
  *
  * @param \XLite\Model\Address $address Address
  *
  * @return boolean
  */
 protected function isBilling(\XLite\Model\Address $address)
 {
     return $address->getIsBilling();
 }
コード例 #19
0
 /**
  * {@inheritDoc}
  */
 public function prepareEntityBeforeCommit($type)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'prepareEntityBeforeCommit', array($type));
     return parent::prepareEntityBeforeCommit($type);
 }
コード例 #20
0
ファイル: Address.php プロジェクト: kingsj/core
 public function testCheckAddress()
 {
     // Prepare address and save it in database
     $origAddress = new \XLite\Model\Address();
     $origAddress->map($this->addressFields);
     $origAddress->setState(\XLite\Core\Database::getRepo('XLite\\Model\\State')->findOneByCountryAndCode('US', 'NY'));
     $origAddress->setCountry(\XLite\Core\Database::getRepo('XLite\\Model\\Country')->find('US'));
     $origAddress->setProfile(\XLite\Core\Database::getRepo('XLite\\Model\\Profile')->find(1));
     $address = $origAddress->cloneEntity();
     $origAddress->create();
     // Test: new address should not be created as it is identical
     $this->assertFalse($address->create(), "Check that address is not created (all fields are identical)");
     foreach (\XLite\Model\Address::getAddressFields() as $field) {
         $address = $origAddress->cloneEntity();
         if ('state_id' == $field) {
             $address->setState(\XLite\Core\Database::getRepo('XLite\\Model\\State')->findOneByCountryAndCode('US', 'CA'));
         } elseif ('country_code' == $field) {
             $address->setCountry(\XLite\Core\Database::getRepo('XLite\\Model\\Country')->find('GB'));
         } elseif ('custom_state' != $field) {
             $address->map($this->addressFields);
             $methodName = 'set' . \XLite\Core\Converter::getInstance()->convertToCamelCase($field);
             $this->assertTrue(method_exists($address, $methodName), "Check if method exists ({$methodName})");
             $modifiedField = $this->addressFields[$field] . '2';
             $address->{$methodName}($modifiedField);
         }
         // Test: new address must be created as one of fields is modified
         $this->assertTrue($address->create(), "Check if address is created ({$field})");
     }
 }
コード例 #21
0
 /**
  * Change shipping method
  * @todo: refactor (decompose)
  *
  * @return void
  */
 protected function doActionChangeMethod()
 {
     $methodId = \XLite\Core\Request::getInstance()->methodId;
     $cart = $this->getCart();
     if (null !== $methodId && $cart->getShippingId() != $methodId) {
         $cart->setLastShippingId($methodId);
         $cart->setShippingId($methodId);
         $address = $this->getCartProfile()->getShippingAddress();
         if (!$address) {
             // Default address
             $profile = $this->getCartProfile();
             $address = new \XLite\Model\Address();
             $addr = $this->getAddress();
             // Country
             $c = 'US';
             if ($addr && isset($addr['country'])) {
                 $c = $addr['country'];
                 $country = \XLite\Core\Database::getRepo('XLite\\Model\\Country')->find($c);
             } elseif (\XLite\Model\Address::getDefaultFieldValue('country')) {
                 $country = \XLite\Model\Address::getDefaultFieldValue('country');
             } else {
                 $country = \XLite\Core\Database::getRepo('XLite\\Model\\Country')->find($c);
             }
             if ($country) {
                 $address->setCountry($country);
             }
             // State
             $state = null;
             if ($addr && !empty($addr['state'])) {
                 $state = \XLite\Core\Database::getRepo('XLite\\Model\\State')->find($addr['state']);
             } elseif (!$addr && \XLite\Model\Address::getDefaultFieldValue('state')) {
                 $state = \XLite\Model\Address::getDefaultFieldValue('state');
             }
             if ($state) {
                 $address->setState($state);
             }
             // Zip code
             if (\XLite\Model\Address::getDefaultFieldValue('zipcode')) {
                 $address->setZipcode(\XLite\Model\Address::getDefaultFieldValue('zipcode'));
             }
             $address->setProfile($profile);
             $address->setIsShipping(true);
             $profile->addAddresses($address);
             \XLite\Core\Database::getEM()->persist($address);
         }
         $this->updateCart();
     }
     $this->valid = true;
     $this->setSilenceClose();
 }