Sfoglia il codice sorgente

Ticket #3009 - Usage in Accounts module.

AntonLV 6 anni fa
parent
commit
06c9e5bf7f

+ 28 - 14
inc/classes/BxDolAccount.php

@@ -326,28 +326,42 @@ class BxDolAccount extends BxDolFactory implements iBxDolSingleton
      */
     public function sendConfirmationEmail($iAccountId = false)
     {
-    	$sName = $this->getDisplayName($iAccountId); 
-        $sEmail = $this->getEmail($iAccountId);
+        $iAccountId = (int)$iAccountId ? (int)$iAccountId : $this->_iAccountID;
 
         $oKey = BxDolKey::getInstance();
         $sConfirmationCode = $oKey->getNewKey(array('account_id' => $iAccountId));
         $sConfirmationLink = bx_append_url_params(BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=confirm-email'), array('code' => urlencode($sConfirmationCode)));
 
-        $aPlus = array(
-        	'name' => $sName,
-        	'email' => $sEmail,
-        	'conf_code' => $sConfirmationCode,
-        	'conf_link' => $sConfirmationLink,
-        	'conf_form_link' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=confirm-email')
+        $aReplaceVars = array(
+            'name' => $this->getDisplayName($iAccountId),
+            'email' => $this->getEmail($iAccountId),
+            'conf_code' => $sConfirmationCode,
+            'conf_link' => $sConfirmationLink,
+            'conf_form_link' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=confirm-email')
         );
 
-        $aTemplate = BxDolEmailTemplates::getInstance()->parseTemplate('t_Confirmation', $aPlus);
-        $bRv = $aTemplate && sendMail($sEmail, $aTemplate['Subject'], $aTemplate['Body'], 0, array(), BX_EMAIL_SYSTEM);
-        
-        if($bRv){
+        $bResult = sendMailTemplate('t_Confirmation', $iAccountId, 0, $aReplaceVars, BX_EMAIL_SYSTEM);
+        if($bResult)
             $this->doAudit($iAccountId, '_sys_audit_action_account_resend_confirmation_email');
-        }
-        return $bRv;
+
+        return $bResult;
+    }
+    
+    public function sendResetPasswordEmail($iAccountId = false)
+    {
+        $iAccountId = (int)$iAccountId ? (int)$iAccountId : $this->_iAccountID;
+
+        $sEmail = $this->getEmail($iAccountId);
+        $sKey = bx_get_reset_password_key($sEmail);
+
+        $aReplaceVars = array(
+            'name' => $this->getDisplayName($iAccountId),
+            'email' => $sEmail,
+            'key' => $sKey,
+            'forgot_password_url' => bx_get_reset_password_link_by_key($sKey)
+        );
+
+        return sendMailTemplate('t_Forgot', $iAccountId, 0, $aReplaceVars, BX_EMAIL_SYSTEM);
     }
 
     /**

+ 78 - 52
modules/boonex/accounts/classes/BxAccntGridAdministration.php

@@ -224,27 +224,26 @@ class BxAccntGridAdministration extends BxBaseModProfileGridAdministration
         $CNF = &$this->_oModule->_oConfig->CNF;
 
     	$aIds = bx_get('ids');
-        if(!$aIds || !is_array($aIds)) {
-            echoJson(array());
-            return;
-        }
+        if(!$aIds || !is_array($aIds))
+            return echoJson(array());
 
         $oAccount = BxDolAccount::getInstance();
 
         $iAffected = 0;
         $aIdsAffected = array();
         foreach($aIds as $iId){
-            if (BxDolAccount::isNeedConfirmEmail()){
-			    if($oAccount->updateEmailConfirmed(true, true, $iId)) {
-				    $aIdsAffected[] = $iId;
-        		    $iAffected++;  
-			    }
+            if (BxDolAccount::isNeedConfirmEmail()) {
+                if($oAccount->updateEmailConfirmed(true, true, $iId)) {
+                    $aIdsAffected[] = $iId;
+                    $iAffected++;  
+                }
             }
+
             if (BxDolAccount::isNeedConfirmPhone()){
-			    if($oAccount->updatePhoneConfirmed(true, $iId)) {
-				    $aIdsAffected[] = $iId;
-        		    $iAffected++;  
-			    }
+                if($oAccount->updatePhoneConfirmed(true, $iId)) {
+                    $aIdsAffected[] = $iId;
+                    $iAffected++;  
+                }
             }
         }
 		echoJson($iAffected ? array('grid' => $this->getCode(false), 'blink' => $aIdsAffected) : array('msg' => _t($CNF['T']['grid_action_err_perform'])));
@@ -252,34 +251,30 @@ class BxAccntGridAdministration extends BxBaseModProfileGridAdministration
     
     public function performActionResendCemail()
     {
-    	$CNF = &$this->_oModule->_oConfig->CNF;
+        $CNF = &$this->_oModule->_oConfig->CNF;
 
-    	$aIds = bx_get('ids');
-        if(!$aIds || !is_array($aIds)) {
-            echoJson(array());
-            return;
-        }
+        $aIds = bx_get('ids');
+        if(!$aIds || !is_array($aIds))
+            return echoJson(array());
 
         $oAccount = BxDolAccount::getInstance();
 
         $iAffected = 0;
         $aIdsAffected = array();
         foreach($aIds as $iId)
-			if($oAccount->sendConfirmationEmail($iId)) {
-				$aIdsAffected[] = $iId;
-        		$iAffected++;  
-			}
+            if($oAccount->sendConfirmationEmail($iId)) {
+                $aIdsAffected[] = $iId;
+                $iAffected++;  
+            }
 
-		echoJson($iAffected ? array('grid' => $this->getCode(false), 'blink' => $aIdsAffected) : array('msg' => _t($CNF['T']['grid_action_err_perform'])));
+        echoJson($iAffected ? array('grid' => $this->getCode(false), 'blink' => $aIdsAffected) : array('msg' => _t($CNF['T']['grid_action_err_perform'])));
     }
 
     public function performActionResetPassword()
     {
     	$aIds = bx_get('ids');
-        if(!$aIds || !is_array($aIds)) {
-            echoJson(array());
-            return;
-        }
+        if(!$aIds || !is_array($aIds))
+            return echoJson(array());
 
         $iId = $aIds[0];
         $oAccount = BxDolAccount::getInstance($iId);
@@ -305,7 +300,28 @@ class BxAccntGridAdministration extends BxBaseModProfileGridAdministration
 
         return echoJson($aRes);
     }
-    
+
+    public function performActionResendRemail()
+    {
+        $CNF = &$this->_oModule->_oConfig->CNF;
+
+        $aIds = bx_get('ids');
+        if(!$aIds || !is_array($aIds))
+            return echoJson(array());
+
+        $oAccount = BxDolAccount::getInstance();
+
+        $iAffected = 0;
+        $aIdsAffected = array();
+        foreach($aIds as $iId)
+            if($oAccount->sendResetPasswordEmail($iId)) {
+                $aIdsAffected[] = $iId;
+                $iAffected++;  
+            }
+
+        echoJson($iAffected ? array('grid' => $this->getCode(false), 'blink' => $aIdsAffected) : array('msg' => _t($CNF['T']['grid_action_err_perform'])));
+    }
+
     public function performActionUnlockAccount()
     {
     	$aIds = bx_get('ids');
@@ -313,36 +329,38 @@ class BxAccntGridAdministration extends BxBaseModProfileGridAdministration
             echoJson(array());
             return;
         }
-		$oAccountQuery = BxDolAccountQuery::getInstance();
-		foreach($aIds as $iId){
-			$oAccount = BxDolAccount::getInstance($iId);
-			if(!$oAccount)
-				continue;
-			if ($oAccount->isLocked()){
-				$oAccountQuery->unlockAccount($iId);
-			}
+
+        $oAccountQuery = BxDolAccountQuery::getInstance();
+        foreach($aIds as $iId) {
+            $oAccount = BxDolAccount::getInstance($iId);
+            if(!$oAccount)
+                continue;
+
+            if ($oAccount->isLocked()){
+                $oAccountQuery->unlockAccount($iId);
+            }
             
             $oAccount->doAudit($iId, '_sys_audit_action_account_unlock');
-		}
-		$aRes = array('grid' => $this->getCode(false), 'blink' => $aIds);
-        return echoJson($aRes);
+        }
+
+        return echoJson(array('grid' => $this->getCode(false), 'blink' => $aIds));
     }
 
-	public function performActionMakeOperator()
+    public function performActionMakeOperator()
     {
     	$this->_performActionChangeRole(3);
     }
 
-	public function performActionUnmakeOperator()
+    public function performActionUnmakeOperator()
     {
     	$this->_performActionChangeRole(1);
     }
 
-	protected function _performActionChangeRole($iRole)
+    protected function _performActionChangeRole($iRole)
     {
-    	$CNF = &$this->_oModule->_oConfig->CNF;
+        $CNF = &$this->_oModule->_oConfig->CNF;
 
-    	$aIds = bx_get('ids');
+        $aIds = bx_get('ids');
         if(!$aIds || !is_array($aIds)) {
             echoJson(array());
             return;
@@ -351,15 +369,15 @@ class BxAccntGridAdministration extends BxBaseModProfileGridAdministration
         $iAffected = 0;
         $aIdsAffected = array();
         foreach($aIds as $iId)
-			if($this->_oModule->_oDb->updateAccount(array('role' => $iRole), array('id' => $iId))) {
-				$aIdsAffected[] = $iId;
-        		$iAffected++;
-                
+            if($this->_oModule->_oDb->updateAccount(array('role' => $iRole), array('id' => $iId))) {
+                $aIdsAffected[] = $iId;
+                $iAffected++;
+
                 $oAccount = BxDolAccount::getInstance($iId);
                 $oAccount->doAudit($iId, '_sys_audit_action_account_change_role_to_' . $iRole);
-			}
+            }
 
-		echoJson($iAffected ? array('grid' => $this->getCode(false), 'blink' => $aIdsAffected) : array('msg' => _t($CNF['T']['grid_action_err_perform'])));
+        echoJson($iAffected ? array('grid' => $this->getCode(false), 'blink' => $aIdsAffected) : array('msg' => _t($CNF['T']['grid_action_err_perform'])));
     }
 
 	protected function _performActionEnable($isChecked)
@@ -422,7 +440,15 @@ class BxAccntGridAdministration extends BxBaseModProfileGridAdministration
     {
         return '';
     }
-    
+
+    protected function _getActionResendRemail($sType, $sKey, $a, $isSmall = false, $isDisabled = false, $aRow = array())
+    {
+        if($sType == 'single')
+            return '';
+
+        return parent::_getActionDefault ($sType, $sKey, $a, $isSmall, $isDisabled, $aRow);
+    }
+
     protected function _getActionUnlockAccount($sType, $sKey, $a, $isSmall = false, $isDisabled = false, $aRow = array())
     {
         return '';

+ 4 - 2
modules/boonex/accounts/install/langs/en.xml

@@ -20,11 +20,12 @@
     <string name="_bx_accnt_menu_item_title_resend_cemail"><![CDATA[Resend Confirmation]]></string>
     <string name="_bx_accnt_menu_item_title_system_confirm"><![CDATA[Confirm]]></string>
     <string name="_bx_accnt_menu_item_title_confirm"><![CDATA[Confirm]]></string>
-
-  <string name="_bx_accnt_menu_item_title_system_edit_email"><![CDATA[Edit Email]]></string>
+    <string name="_bx_accnt_menu_item_title_system_edit_email"><![CDATA[Edit Email]]></string>
     <string name="_bx_accnt_menu_item_title_edit_email"><![CDATA[Edit Email]]></string>
     <string name="_bx_accnt_menu_item_title_system_reset_password"><![CDATA[Reset Password]]></string>
     <string name="_bx_accnt_menu_item_title_reset_password"><![CDATA[Reset Password]]></string>
+    <string name="_bx_accnt_menu_item_title_system_resend_remail"><![CDATA[Resend Reset Password]]></string>
+    <string name="_bx_accnt_menu_item_title_resend_remail"><![CDATA[Resend Reset Password]]></string>
     <string name="_bx_accnt_menu_item_title_system_unlock_account"><![CDATA[Unlock]]></string>
     <string name="_bx_accnt_menu_item_title_unlock_account"><![CDATA[Unlock]]></string>
     <string name="_bx_accnt_menu_item_title_system_delete"><![CDATA[Delete]]></string>
@@ -64,6 +65,7 @@
     <string name="_bx_accnt_grid_action_title_adm_confirm"><![CDATA[Confirm]]></string>
     <string name="_bx_accnt_grid_action_title_adm_edit_email"><![CDATA[Edit Email]]></string>
     <string name="_bx_accnt_grid_action_title_adm_resend_cemail"><![CDATA[Resend Confirmation]]></string>
+    <string name="_bx_accnt_grid_action_title_adm_resend_remail"><![CDATA[Resend Reset Password]]></string>
     <string name="_bx_accnt_grid_action_title_adm_reset_password"><![CDATA[Reset Password]]></string>
     <string name="_bx_accnt_grid_action_title_adm_unlock_account"><![CDATA[Unlock]]></string>
     <string name="_bx_accnt_grid_action_title_adm_delete"><![CDATA[Delete]]></string>

+ 11 - 8
modules/boonex/accounts/install/sql/enable.sql

@@ -21,11 +21,12 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 ('bx_accounts_menu_manage_tools', @sName, 'resend-cemail', '_bx_accnt_menu_item_title_system_resend_cemail', '_bx_accnt_menu_item_title_resend_cemail', 'javascript:void(0)', 'javascript:{js_object}.onClickResendCemail({content_id}, this);', '_self', 'far envelope', '', 192, 1, 0, 2),
 ('bx_accounts_menu_manage_tools', @sName, 'confirm', '_bx_accnt_menu_item_title_system_confirm', '_bx_accnt_menu_item_title_confirm', 'javascript:void(0)', 'javascript:{js_object}.onClickConfirm({content_id}, this);', '_self', 'fas check', '', 192, 1, 0, 3),
 ('bx_accounts_menu_manage_tools', @sName, 'reset-password', '_bx_accnt_menu_item_title_system_reset_password', '_bx_accnt_menu_item_title_reset_password', 'javascript:void(0)', 'javascript:{js_object}.onClickResetPassword({content_id}, this);', '_self', 'eraser', '', 192, 1, 0, 4),
-('bx_accounts_menu_manage_tools', @sName, 'unlock-account', '_bx_accnt_menu_item_title_system_unlock_account', '_bx_accnt_menu_item_title_unlock_account', 'javascript:void(0)', 'javascript:{js_object}.onClickUnlockAccount({content_id}, this);', '_self', 'unlock', '', 192, 1, 0, 5),
-('bx_accounts_menu_manage_tools', @sName, 'delete', '_bx_accnt_menu_item_title_system_delete', '_bx_accnt_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id}, this);', '_self', 'far trash-alt', '', 192, 1, 0, 6),
-('bx_accounts_menu_manage_tools', @sName, 'delete-with-content', '_bx_accnt_menu_item_title_system_delete_with_content', '_bx_accnt_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id}, this);', '_self', 'far trash-alt', '', 192, 1, 0, 7),
-('bx_accounts_menu_manage_tools', @sName, 'make-operator', '_bx_accnt_menu_item_title_system_make_operator', '_bx_accnt_menu_item_title_make_operator', 'javascript:void(0)', 'javascript:{js_object}.onClickMakeOperator({content_id}, this);', '_self', 'wrench', '', 192, 1, 0, 8),
-('bx_accounts_menu_manage_tools', @sName, 'unmake-operator', '_bx_accnt_menu_item_title_system_unmake_operator', '_bx_accnt_menu_item_title_unmake_operator', 'javascript:void(0)', 'javascript:{js_object}.onClickUnmakeOperator({content_id}, this);', '_self', 'wrench', '', 192, 1, 0, 9);
+('bx_accounts_menu_manage_tools', @sName, 'resend-remail', '_bx_accnt_menu_item_title_system_resend_remail', '_bx_accnt_menu_item_title_resend_remail', 'javascript:void(0)', 'javascript:{js_object}.onClickResendRemail({content_id}, this);', '_self', 'eraser', '', 192, 1, 0, 5),
+('bx_accounts_menu_manage_tools', @sName, 'unlock-account', '_bx_accnt_menu_item_title_system_unlock_account', '_bx_accnt_menu_item_title_unlock_account', 'javascript:void(0)', 'javascript:{js_object}.onClickUnlockAccount({content_id}, this);', '_self', 'unlock', '', 192, 1, 0, 6),
+('bx_accounts_menu_manage_tools', @sName, 'delete', '_bx_accnt_menu_item_title_system_delete', '_bx_accnt_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id}, this);', '_self', 'far trash-alt', '', 192, 1, 0, 7),
+('bx_accounts_menu_manage_tools', @sName, 'delete-with-content', '_bx_accnt_menu_item_title_system_delete_with_content', '_bx_accnt_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id}, this);', '_self', 'far trash-alt', '', 192, 1, 0, 8),
+('bx_accounts_menu_manage_tools', @sName, 'make-operator', '_bx_accnt_menu_item_title_system_make_operator', '_bx_accnt_menu_item_title_make_operator', 'javascript:void(0)', 'javascript:{js_object}.onClickMakeOperator({content_id}, this);', '_self', 'wrench', '', 192, 1, 0, 9),
+('bx_accounts_menu_manage_tools', @sName, 'unmake-operator', '_bx_accnt_menu_item_title_system_unmake_operator', '_bx_accnt_menu_item_title_unmake_operator', 'javascript:void(0)', 'javascript:{js_object}.onClickUnmakeOperator({content_id}, this);', '_self', 'wrench', '', 192, 1, 0, 10);
 
 -- MENU: dashboard manage tools
 SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);
@@ -74,11 +75,13 @@ INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon
 ('bx_accounts_administration', 'bulk', 'activate', '_bx_accnt_grid_action_title_adm_activate', '', 0, 0, 1),
 ('bx_accounts_administration', 'bulk', 'suspend', '_bx_accnt_grid_action_title_adm_suspend', '', 0, 0, 2),
 ('bx_accounts_administration', 'bulk', 'resend_cemail', '_bx_accnt_grid_action_title_adm_resend_cemail', '', 0, 0, 3),
-('bx_accounts_administration', 'bulk', 'confirm', '_bx_accnt_grid_action_title_adm_confirm', '', 0, 0, 4),
-('bx_accounts_administration', 'bulk', 'delete', '_bx_accnt_grid_action_title_adm_delete', '', 0, 1, 5),
-('bx_accounts_administration', 'bulk', 'delete_with_content', '_bx_accnt_grid_action_title_adm_delete_with_content', '', 0, 1, 6),
+('bx_accounts_administration', 'bulk', 'resend_remail', '_bx_accnt_grid_action_title_adm_resend_remail', '', 0, 0, 4),
+('bx_accounts_administration', 'bulk', 'confirm', '_bx_accnt_grid_action_title_adm_confirm', '', 0, 0, 5),
+('bx_accounts_administration', 'bulk', 'delete', '_bx_accnt_grid_action_title_adm_delete', '', 0, 1, 6),
+('bx_accounts_administration', 'bulk', 'delete_with_content', '_bx_accnt_grid_action_title_adm_delete_with_content', '', 0, 1, 7),
 ('bx_accounts_administration', 'single', 'edit_email', '_bx_accnt_grid_action_title_adm_edit_email', '', 0, 0, 0),
 ('bx_accounts_administration', 'single', 'reset_password', '_bx_accnt_grid_action_title_adm_reset_password', '', 0, 0, 0),
+('bx_accounts_administration', 'single', 'resend_remail', '_bx_accnt_grid_action_title_adm_resend_remail', '', 0, 0, 0),
 ('bx_accounts_administration', 'single', 'unlock_account', '_bx_accnt_grid_action_title_adm_unlock_account', '', 0, 0, 0),
 ('bx_accounts_administration', 'single', 'settings', '_bx_accnt_grid_action_title_adm_more_actions', 'cog', 1, 0, 2),
 ('bx_accounts_administration', 'independent', 'add', '_bx_accnt_grid_action_title_adm_more_add', 'plus', 0, 0, 0);

+ 8 - 0
modules/boonex/accounts/js/manage_tools.js

@@ -82,6 +82,14 @@ BxAccntManageTools.prototype.onClickResetPassword = function(iContentId, oLink)
 	oGrid.actionWithId(iContentId, 'reset_password', oData, '', false, 0);
 };
 
+BxAccntManageTools.prototype.onClickResendRemail = function(iContentId, oLink) {
+	$('.bx-popup-applied:visible').dolPopupHide();
+
+	var oGrid = glGrids[this._sObjNameGrid];
+	var oData = oGrid._checkAppend(oLink, oGrid._getActionDataForReload());
+	oGrid.actionWithId(iContentId, 'resend_remail', oData, '', false, 0);
+};
+
 BxAccntManageTools.prototype.onClickUnlockAccount = function (iContentId, oLink) {
     $('.bx-popup-applied:visible').dolPopupHide();
 

+ 3 - 0
modules/boonex/russian/data/langs/bx_accounts/ru.xml

@@ -24,6 +24,8 @@
     <string name="_bx_accnt_menu_item_title_confirm"><![CDATA[Подтвердить]]></string>
     <string name="_bx_accnt_menu_item_title_system_reset_password"><![CDATA[Сбросить пароль]]></string>
     <string name="_bx_accnt_menu_item_title_reset_password"><![CDATA[Сбросить пароль]]></string>
+    <string name="_bx_accnt_menu_item_title_system_resend_remail"><![CDATA[Переслать сброс пароля]]></string>
+    <string name="_bx_accnt_menu_item_title_resend_remail"><![CDATA[Переслать сброс пароля]]></string>
     <string name="_bx_accnt_menu_item_title_system_unlock_account"><![CDATA[Разблокировать]]></string>
     <string name="_bx_accnt_menu_item_title_unlock_account"><![CDATA[Разблокировать]]></string>
     <string name="_bx_accnt_menu_item_title_system_delete"><![CDATA[Удалить]]></string>
@@ -63,6 +65,7 @@
     <string name="_bx_accnt_grid_action_title_adm_confirm"><![CDATA[Подтвердить]]></string>
     <string name="_bx_accnt_grid_action_title_adm_edit_email"><![CDATA[Изменить email]]></string>
     <string name="_bx_accnt_grid_action_title_adm_resend_cemail"><![CDATA[Переслать подтверждение]]></string>
+    <string name="_bx_accnt_grid_action_title_adm_resend_remail"><![CDATA[Переслать сброс пароля]]></string>
     <string name="_bx_accnt_grid_action_title_adm_reset_password"><![CDATA[Сбросить пароль]]></string>
     <string name="_bx_accnt_grid_action_title_adm_unlock_account"><![CDATA[Разблокировать]]></string>
     <string name="_bx_accnt_grid_action_title_adm_delete"><![CDATA[Удалить]]></string>

+ 5 - 9
template/scripts/BxBaseServiceAccount.php

@@ -406,13 +406,9 @@ class BxBaseServiceAccount extends BxDol
             $sPhone = $oForm->getCleanValue('phone');
 
             if (isset($oForm->aInputs['email']) &&  $sEmail != '') {
-                $iAccountId = $this->_oAccountQuery->getIdByEmail($sEmail);
+                $oAccount = BxDolAccount::getInstance($this->_oAccountQuery->getIdByEmail($sEmail));
 
-                $aPlus['key'] = bx_get_reset_password_key($sEmail);
-                $aPlus['forgot_password_url'] = bx_get_reset_password_link_by_key($aPlus['key']);
-                $aTemplate = BxDolEmailTemplates::getInstance()->parseTemplate('t_Forgot', $aPlus, $iAccountId);
-
-                if(!empty($aTemplate) && is_array($aTemplate) && sendMail($sEmail, $aTemplate['Subject'], $aTemplate['Body'], 0, $aPlus, BX_EMAIL_SYSTEM))
+                if($oAccount && $oAccount->sendResetPasswordEmail())
                     $sResultMsg = MsgBox(_t("_sys_txt_forgot_pasword_check_email"));
                 else
                     $sResultMsg = MsgBox(_t("_sys_txt_forgot_pasword_email_send_failed"));
@@ -424,10 +420,10 @@ class BxBaseServiceAccount extends BxDol
                 $iAccountId = $this->_oAccountQuery->getIdByPhone($sPhone);
                 $aAccountInfo = $this->_oAccountQuery->getInfoById($iAccountId);
 
-                $aPlus['key'] = bx_get_reset_password_key($aAccountInfo['email']);
-                $aPlus['forgot_password_url'] = bx_get_reset_password_link_by_key($aPlus['key']); 
+                $sKey = bx_get_reset_password_key($aAccountInfo['email']);
+                $sForgotPasswordUrl = bx_get_reset_password_link_by_key($sKey); 
 
-                $sSmsText = _t('_sys_txt_forgot_pasword_sms_text', $aPlus['forgot_password_url']);
+                $sSmsText = _t('_sys_txt_forgot_pasword_sms_text', $sForgotPasswordUrl);
 
                 $mixedOverrideResult = null;
                 bx_alert('account', 'before_forgot_password_send_sms', $aAccountInfo['id'], false, array('phone_number' => $sPhone, 'sms_text' => $sSmsText, 'override_result' => &$mixedOverrideResult));