Ejemplo n.º 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;
 }
Ejemplo n.º 2
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
  *
  * @return \XLite\Model\Profile
  */
 protected function getSocialLoginProfile($login, $socialProvider, $socialId)
 {
     $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();
         }
     }
     return $profile;
 }