コード例 #1
0
 /**
  * _displayAccount() method displays fancybox if customer do not use a social connector to link his PS account
  *
  * @category hook collection
  * @uses
  *
  * @param array $aParams
  * @return array
  */
 private function _displayAccount()
 {
     $aAssign = array('iCustomerId' => $this->iCustomerLogged, 'bUseJqueryUI' => true);
     $aAssign['bDisplay'] = false;
     // if one of connectors is active at least
     if (self::$bConnectorsActive) {
         require_once _FPC_PATH_LIB . 'module-dao_class.php';
         // include abstract connector
         require_once _FPC_PATH_LIB_CONNECTOR . 'base-connector_class.php';
         if (FacebookPsConnect::$aConfiguration[_FPC_MODULE_NAME . '_DISPLAY_FB_POPIN'] && !empty($GLOBALS[_FPC_MODULE_NAME . '_CONNECTORS']['facebook']['data']['activeConnector'])) {
             // set
             $bSocialCustomerExist = false;
             // loop on each connector to check if social account already exists - if not, display FB popin account association
             foreach ($GLOBALS[_FPC_MODULE_NAME . '_CONNECTORS'] as $sName => $aConnector) {
                 if (!empty($GLOBALS[_FPC_MODULE_NAME . '_CONNECTORS'][$sName]['data'])) {
                     // get connector options
                     $aParams = $GLOBALS[_FPC_MODULE_NAME . '_CONNECTORS'][$sName]['data'];
                     // get connector
                     $oConnector = BT_BaseConnector::get($sName, $aParams);
                     // check if customer is already logged from FB connector
                     if ($oConnector->existSocialAccount($aAssign['iCustomerId'], 'ps')) {
                         $bSocialCustomerExist = true;
                     }
                     unset($oConnector);
                 }
             }
             if (!BT_FPCModuleDao::existCustomerAssociationStatus(FacebookPsConnect::$iShopId, $this->iCustomerLogged) && empty($bSocialCustomerExist)) {
                 $aAssign['bDisplay'] = true;
                 $aAssign['bSocialCustomerExist'] = true;
                 $aAssign['sConnectorButtonFacebook'] = BT_FPCModuleTools::getTemplatePath(_FPC_PATH_TPL_NAME . _FPC_TPL_HOOK_PATH . _FPC_TPL_BUTTON_FB);
                 $aAssign['sModuleURI'] = $this->sModuleURI;
                 $aAssign['bFriendlyPermission'] = $GLOBALS[_FPC_MODULE_NAME . '_CONNECTORS']['facebook']['data']['permissions'];
                 $aAssign['sBackUri'] = self::$sCurrentURI;
             }
         }
         // get connector options
         $aParams = $GLOBALS[_FPC_MODULE_NAME . '_CONNECTORS']['twitter']['data'];
         // test if twitter is already configured
         if (!empty($aParams)) {
             // get connector
             $oConnector = BT_BaseConnector::get('twitter', $aParams);
             // check if customer is already logged from FB connector
             if ($oConnector->existSocialAccount($aAssign['iCustomerId'], 'ps') && strstr(FacebookPsConnect::$oCookie->email, 'twitter.com')) {
                 $aAssign['iCustomerId'] = md5(_FPC_MODULE_NAME . 'twitter' . $aAssign['iCustomerId']);
                 $aAssign['sConnector'] = 'twitter';
                 $aAssign['bTwitterCustomerExist'] = true;
                 $aAssign['bDisplay'] = true;
             }
             unset($oConnector);
         }
         // use case - data sent for collecting
         $sRequestData = Tools::getValue('data');
         if (!empty($sRequestData)) {
             $aRequestData = unserialize(gzuncompress(urldecode(base64_decode($sRequestData))));
             if (!empty($aRequestData)) {
                 if (empty($aRequestData['ci'])) {
                     $aRequestData['ci'] = md5('collect' . FacebookPsConnect::$oCookie->id_customer);
                     if (!empty($aRequestData['cn']) && !empty($aRequestData['ca']) && !empty($aRequestData['ct']) && !empty($aRequestData['oi'])) {
                         // execute social collect method
                         $sReturn = FacebookPsConnect::$oModule->HookSocialCollector(base64_decode($aRequestData['cn']), $aRequestData);
                         if (!empty($sReturn)) {
                             // get collect data array
                             $oResponse = BT_FPCModuleTools::jsonDecode($sReturn);
                             if (!empty($oResponse->status)) {
                                 $aAssign['bCustomerCollect'] = true;
                             }
                         }
                     }
                 }
             }
         }
     }
     $aAssign['sModuleURI'] = _FPC_MODULE_URL . 'ws-' . _FPC_MODULE_SET_NAME . '.php';
     return array('tpl' => _FPC_TPL_HOOK_PATH . _FPC_TPL_CONNECTOR_ACCOUNT, 'assign' => $aAssign);
 }
コード例 #2
0
 /**
  * _updateEmail() method update customer email
  *
  * @param array $aParams
  * @return bool
  */
 private function _updateEmail(array $aParams)
 {
     $aAssign = array();
     if (version_compare(_PS_VERSION_, '1.4', '>')) {
         $oLink = new Link();
         $sLink = $oLink->getPageLink('my-account.php');
         unset($oLink);
     } else {
         global $smarty;
         $sLink = $smarty->_tpl_vars['base_dir_ssl'] . 'my-account.php';
     }
     $aAssign['sLink'] = $sLink;
     // get serialized connector data
     BT_FPCModuleTools::getConnectorData();
     // check if customer is the same customer connected and if the e-mail is valid
     if (!empty($aParams['connector']) && !empty($GLOBALS[_FPC_MODULE_NAME . '_CONNECTORS'][$aParams['connector']]['data']['activeConnector']) && !empty($aParams['customerId']) && $aParams['customerId'] === md5(_FPC_MODULE_NAME . $aParams['connector'] . FacebookPsConnect::$oCookie->id_customer) && !empty($aParams['customerId']) && filter_var($aParams['socialEmail'], FILTER_VALIDATE_EMAIL) !== false) {
         // include
         require_once _FPC_PATH_LIB . 'module-dao_class.php';
         require_once _FPC_PATH_LIB . 'mail-send_class.php';
         // check if exists and return id customer if exists
         $iCustomerId = BT_FPCModuleDao::existCustomerEmail($aParams['socialEmail']);
         // if customer not exists
         if (empty($iCustomerId)) {
             if (BT_FPCModuleDao::updateCustomerEmail(FacebookPsConnect::$oCookie->id_customer, $aParams['socialEmail'])) {
                 $aAssign['sMsg'] = FacebookPsConnect::$oModule->l('Your information has been updated', 'hook-action_class');
                 // set the new e-mail in cookie
                 if (version_compare(_PS_VERSION_, '1.5', '>')) {
                     Context::getContext()->cookie->email = $aParams['socialEmail'];
                 } else {
                     global $cookie;
                     $cookie->email = $aParams['socialEmail'];
                 }
             } else {
                 $aAssign['aErrors'][] = array('msg' => FacebookPsConnect::$oModule->l('Internal server error. The customer e-mail has not been updated. Please try again by clicking on reload button below', 'hook-action_class') . '.', 'code' => 590);
             }
             // manage the update firstname and name for twitter connexion
             BT_FPCModuleDao::updateCustomerFirstName(FacebookPsConnect::$oCookie->id_customer, $aParams['socialFirstName']);
             BT_FPCModuleDao::updateCustomerName(FacebookPsConnect::$oCookie->id_customer, $aParams['socialName']);
             BT_FPCModuleDao::updateCustomerPassword(FacebookPsConnect::$oCookie->id_customer, $aParams['socialPassword']);
             BT_FpcMailSend::_updateEmailTwitter($aParams['socialFirstName'], $aParams['socialName'], $aParams['socialEmail'], $aParams['socialPassword'], FacebookPsConnect::$iCurrentLang, FacebookPsConnect::$iShopId);
         } else {
             $aAssign['aErrors'][] = array('msg' => FacebookPsConnect::$oModule->l('This e-mail address is already taken by a customer account or you already have linked this e-mail address with another network. Please try again by clicking on reload button below', 'hook-action_class') . '.', 'code' => 591);
         }
     } else {
         $aAssign['aErrors'][] = array('msg' => FacebookPsConnect::$oModule->l('Internal server error. The customer could not be identified. You may be a victim of cross-site request forgery', 'hook-action_class') . '.', 'code' => 592);
     }
     if (empty($aAssign['aErrors'])) {
         $sTpl = _FPC_TPL_CONFIRM;
     } else {
         $sTpl = _FPC_TPL_ERROR;
     }
     return array('tpl' => $sTpl, 'assign' => $aAssign);
 }