예제 #1
0
 /**
  * Fetches an existing social login profile or creates new
  *
  * @param string $login          E-mail address
  * @param string $socialProvider SocialLogin auth provider
  * @param string $socialId       SocialLogin provider-unique id
  * @param array  $profileInfo    Profile info OPTIONAL
  *
  * @return \XLite\Model\Profile
  */
 protected function getSocialLoginProfile($login, $socialProvider, $socialId, $profileInfo = array())
 {
     $profile = \XLite\Core\Database::getRepo('XLite\\Model\\Profile')->findOneBy(array('socialLoginProvider' => $socialProvider, 'socialLoginId' => $socialId, 'order' => null));
     if (!$profile) {
         $profile = new \XLite\Model\Profile();
         $profile->setLogin($login);
         $profile->setSocialLoginProvider($socialProvider);
         $profile->setSocialLoginId($socialId);
         $existingProfile = \XLite\Core\Database::getRepo('XLite\\Model\\Profile')->findOneBy(array('login' => $login, 'order' => null));
         if ($existingProfile) {
             $profile = null;
         } else {
             $profile->create();
             if ($profileInfo && isset($profileInfo['given_name']) && isset($profileInfo['family_name']) && isset($profileInfo['address'])) {
                 $address = new \XLite\Model\Address();
                 $address->setProfile($profile);
                 $address->setFirstname($profileInfo['given_name']);
                 $address->setLastname($profileInfo['family_name']);
                 if (isset($profileInfo['address']['country']) && isset($profileInfo['address']['region'])) {
                     $address->setCountryCode($profileInfo['address']['country']);
                     $state = \XLite\Core\Database::getRepo('XLite\\Model\\State')->findOneByCountryAndCode($profileInfo['address']['country'], $profileInfo['address']['region']);
                     if ($state) {
                         $address->setState($state);
                     }
                 }
                 if (isset($profileInfo['address']['locality'])) {
                     $address->setCity($profileInfo['address']['locality']);
                 }
                 if (isset($profileInfo['address']['street_address'])) {
                     $address->setStreet($profileInfo['address']['street_address']);
                 }
                 if (isset($profileInfo['address']['postal_code'])) {
                     $address->setZipcode($profileInfo['address']['postal_code']);
                 }
                 if (isset($profileInfo['phone_number'])) {
                     $address->setPhone($profileInfo['phone_number']);
                 }
                 $address->setIsShipping(true);
                 $address->setIsBilling(true);
                 $profile->addAddresses($address);
                 $address->create();
             }
         }
     }
     return $profile;
 }
예제 #2
0
파일: Order.php 프로젝트: kirkbauer2/kirkxc
 /**
  * Returns delivery source address
  *
  * @return \XLite\Model\Address
  */
 public function getSourceAddress()
 {
     if (null === $this->sourceAddress) {
         $address = new \XLite\Model\Address();
         $config = $this->getCompanyConfiguration();
         $address->setStreet($config->location_address);
         $address->setCity($config->location_city);
         $address->setCountryCode($config->location_country);
         if ($config->location_state) {
             $address->setStateId($config->location_state);
         }
         if ($config->location_custom_state) {
             $address->setCustomState($config->location_custom_state);
         }
         $address->setZipcode($config->location_zipcode);
         $this->sourceAddress = $address;
     }
     return $this->sourceAddress;
 }