Просмотр исходного кода

#251 Facebook Connect module - don't allow empty email, move facebook related setting to base class, settings reordering

Alex Trofimov 11 лет назад
Родитель
Сommit
67e90c08ff

+ 3 - 0
modules/base/connect/classes/BxBaseModConnectConfig.php

@@ -13,6 +13,9 @@ class BxBaseModConnectConfig extends BxBaseModGeneralConfig
 {
     public $sDefaultRedirectUrl;
     public $sRedirectPage;
+    public $sProfilesModule = 'system';
+    public $isAlwaysConfirmEmail = false;
+    public $isAlwaysAutoApprove = false;
 
     public $sSessionKey;
     public $sSessionUid;

+ 9 - 10
modules/base/connect/classes/BxBaseModConnectModule.php

@@ -62,7 +62,7 @@ class BxBaseModConnectModule extends BxDolModule
 
         // display error
         if (is_string($mixed)) {
-            $this->_oTemplate->getPage(_t($this->_oConfig->sDefaultTitleLangKey), MsgBox($mixed));
+            $this->_oTemplate->getPage(_t($this->_oConfig->sDefaultTitleLangKey), DesignBoxContent(_t($this->_oConfig->sDefaultTitleLangKey), MsgBox($mixed)));
             exit;
         } 
 
@@ -104,19 +104,18 @@ class BxBaseModConnectModule extends BxDolModule
      */
     function _createProfileRaw($aProfileInfo, $sAlternativeName = '', $isAutoFriends = true, $isSetLoggedIn = true)
     {
-        $sCountry = '';
-        $sCity = '';
-
         // join by invite only
         if (BxDolRequest::serviceExists('bx_invites', 'account_add_form_check') && $sCode = BxDolService::call('bx_invites', 'account_add_form_check'))
             return $sCode;
 
         // convert fields to unique format
         $aFieldsProfile = $aFieldsAccount = $this->_convertRemoteFields($aProfileInfo, $sAlternativeName);
+        if (empty($aFieldsProfile['email']))
+            return _t('_Incorrect Email');
 
         // prepare fields for particular module
         $aFieldsAccount = BxDolService::call('system', 'prepare_fields', array($aFieldsAccount));
-        $aFieldsProfile = BxDolService::call(getParam('bx_facebook_connect_module'), 'prepare_fields', array($aFieldsProfile));
+        $aFieldsProfile = BxDolService::call($this->_oConfig->sProfilesModule, 'prepare_fields', array($aFieldsProfile));
 
         // check fields existence in Account
         $oFormHelperAccount = BxDolService::call('system', 'forms_helper');
@@ -127,7 +126,7 @@ class BxBaseModConnectModule extends BxDolModule
         }
 
         // check fields existence in Profile
-        if ('system' != getParam('bx_facebook_connect_module') && $oFormHelperProfile = BxDolService::call(getParam('bx_facebook_connect_module'), 'forms_helper')) {
+        if ('system' != $this->_oConfig->sProfilesModule && $oFormHelperProfile = BxDolService::call($this->_oConfig->sProfilesModule, 'forms_helper')) {
             $oFormProfile = $oFormHelperProfile->getObjectFormAdd();
             foreach ($aFieldsProfile as $sKey => $mValue) {
                 if (!$oFormProfile->isFieldExist($sKey))
@@ -163,11 +162,11 @@ class BxBaseModConnectModule extends BxDolModule
 
             // create account
             $aFieldsAccount['password'] = genRndPwd();
-            $aFieldsAccount['email_confirmed'] = (bool)getParam('bx_facebook_connect_confirm_email'); 
+            $aFieldsAccount['email_confirmed'] = $this->_oConfig->isAlwaysConfirmEmail; 
             if (!($iAccountId = $oFormAccount->insert($aFieldsAccount)))
                 return _t('_sys_txt_error_account_creation');
 
-            $isSetPendingApproval = getParam('bx_facebook_connect_approve') ? false : !(bool)getParam('sys_account_autoapproval');
+            $isSetPendingApproval = $this->_oConfig->isAlwaysAutoApprove ? false : !(bool)getParam('sys_account_autoapproval');
             $iAccountProfileId = $oFormHelperAccount->onAccountCreated ($iAccountId, $isSetPendingApproval, BX_PROFILE_ACTION_EXTERNAL);
 
             // create profile
@@ -178,7 +177,7 @@ class BxBaseModConnectModule extends BxDolModule
                 if (!($iContentId = $oFormProfile->insert($aFieldsProfile)))
                     return _t('_sys_txt_error_account_creation');
 
-                $oFormHelperProfile->setAutoApproval($oFormHelperProfile->isAutoApproval() ? true : (bool)getParam('bx_facebook_connect_approve'));
+                $oFormHelperProfile->setAutoApproval($oFormHelperProfile->isAutoApproval() ? true : $this->_oConfig->isAlwaysAutoApprove);
                 if ($sErrorMsg = $oFormHelperProfile->onDataAddAfter ($iAccountId, $iContentId))
                     return $sErrorMsg;
                 
@@ -234,7 +233,7 @@ class BxBaseModConnectModule extends BxDolModule
 
         BxBaseAccountForms::$PROFILE_FIELDS = $aProfileFields;
 
-        $this->_oTemplate->getPage($oPage->getCode());
+        $this->_oTemplate->getPage(false, $oPage->getCode());
     }
 
     /**

+ 1 - 1
modules/base/connect/classes/BxBaseModConnectTemplate.php

@@ -18,7 +18,7 @@ class BxBaseModConnectTemplate extends BxDolModuleTemplate
         parent::__construct($oConfig, $oDb);
     }
 
-    function getPage($sPageContent, $sPageCaption = false)
+    function getPage($sPageCaption, $sPageContent)
     {
         $oTemplate = BxDolTemplate::getInstance();
 

+ 3 - 0
modules/boonex/facebook_connect/classes/BxFaceBookConnectConfig.php

@@ -37,6 +37,9 @@ class BxFaceBookConnectConfig extends BxBaseModConnectConfig
         $this -> sDefaultTitleLangKey = '_bx_facebook';
 
         $this -> sRedirectPage = getParam('bx_facebook_connect_redirect_page');
+        $this -> sProfilesModule = getParam('bx_facebook_connect_module');
+        $this -> isAlwaysConfirmEmail = (bool)getParam('bx_facebook_connect_confirm_email'); 
+        $this -> isAlwaysAutoApprove = (bool)getParam('bx_facebook_connect_approve');
 
         $this -> bAutoFriends = 'on' == getParam('bx_facebook_connect_auto_friends')
             ? true

+ 1 - 6
modules/boonex/facebook_connect/classes/BxFaceBookConnectModule.php

@@ -224,15 +224,10 @@ class BxFaceBookConnectModule extends BxBaseModConnectModule
            }
         }
 
-        // try define the user's email
-        $sEmail = !empty($aProfileInfo['email'])
-            ? $aProfileInfo['email']
-            : $aProfileInfo['proxied_email'];
-
         // fill array with all needed values
         $aProfileFields = array(
             'name'      	=> $aProfileInfo['nick_name'] . $sAlternativeName,
-            'email'         => $sEmail,
+            'email'         => isset($aProfileInfo['email']) ? $aProfileInfo['email'] : '',
             'gender'        => isset($aProfileInfo['gender']) ? $aProfileInfo['gender'] : '',
             'birthday'      => isset($aProfileInfo['birthday']) ? $aProfileInfo['birthday'] : '',
             'fullname'		=> (isset($aProfileInfo['first_name']) ? $aProfileInfo['first_name'] : '') . (isset($aProfileInfo['last_name']) ? ' ' . $aProfileInfo['last_name'] : ''),

+ 1 - 1
modules/boonex/facebook_connect/classes/BxFaceBookConnectTemplate.php

@@ -24,7 +24,7 @@ class BxFaceBookConnectTemplate extends BxBaseModConnectTemplate
         if (!$oPage)
             $oTemplate->displayPageNotFound();
         else
-            parent::getPage($oPage->getCode());
+            parent::getPage(false, $oPage->getCode());
     }
 }
 

+ 3 - 3
modules/boonex/facebook_connect/install/sql/enable.sql

@@ -35,9 +35,9 @@ INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `c
 ('bx_facebook_connect_api_key', '', @iCategId, '_bx_facebook_option_app_id', 'digit', '', '', 10, ''),
 ('bx_facebook_connect_secret', '', @iCategId, '_bx_facebook_option_app_secret', 'digit', '', '', 20, ''),
 ('bx_facebook_connect_redirect_page', 'dashboard', @iCategId, '_bx_facebook_option_redirect', 'select', '', '', 30, 'join,settings,dashboard,index'),
-('bx_facebook_connect_auto_friends', 'on', @iCategId, '_bx_facebook_option_auto_friends', 'checkbox', '', '', 40, ''),
-('bx_facebook_connect_extended_info', '', @iCategId, '_bx_facebook_option_fetch_extended_info', 'checkbox', '', '', 50, ''),
-('bx_facebook_connect_module', 'bx_persons', @iCategId, '_bx_facebook_option_module', 'select', '', '', 60, 'a:2:{s:6:"module";s:11:"bx_facebook";s:6:"method";s:20:"get_profiles_modules";}'),
+('bx_facebook_connect_module', 'bx_persons', @iCategId, '_bx_facebook_option_module', 'select', '', '', 40, 'a:2:{s:6:"module";s:11:"bx_facebook";s:6:"method";s:20:"get_profiles_modules";}'),
+('bx_facebook_connect_auto_friends', 'on', @iCategId, '_bx_facebook_option_auto_friends', 'checkbox', '', '', 50, ''),
+('bx_facebook_connect_extended_info', '', @iCategId, '_bx_facebook_option_fetch_extended_info', 'checkbox', '', '', 60, ''),
 ('bx_facebook_connect_confirm_email', 'on', @iCategId, '_bx_facebook_option_confirm_email', 'checkbox', '', '', 70, ''),
 ('bx_facebook_connect_approve', '', @iCategId, '_bx_facebook_option_approve', 'checkbox', '', '', 80, '');