function activateUser( &$user, $ui, $cause, $mailToAdmins = true, $mailToUser = true, $triggerBeforeActivate = true ) {
global $_CB_database, $ueConfig, $_PLUGINS;
static $notificationsSent = array();
$activate = ( $user->confirmed && ( $user->approved == 1 ) );
$showSysMessage = true;
$messagesToUser = getActivationMessage( $user, $cause );
if ( $cause == 'UserConfirmation' && $user->approved == 0) {
$activate = false;
$msg = array(
'emailAdminSubject' => array( 'sys' => _UE_REG_ADMIN_PA_SUB ),
'emailAdminMessage' => array( 'sys' => _UE_REG_ADMIN_PA_MSG ),
'emailUserSubject' => array( ),
'emailUserMessage' => array( )
);
} elseif ( $user->confirmed == 0 ) {
$msg = array(
'emailAdminSubject' => array( ),
'emailAdminMessage' => array( ),
'emailUserSubject' => array( 'sys' => getLangDefinition( stripslashes( $ueConfig['reg_pend_appr_sub'] ) ) ),
'emailUserMessage' => array( 'sys' => getLangDefinition( stripslashes( $ueConfig['reg_pend_appr_msg'] ) ) )
);
} elseif ( $cause == 'SameUserRegistrationAgain' ) {
$activate = false;
$msg = array(
'emailAdminSubject' => array( ),
'emailAdminMessage' => array( ),
'emailUserSubject' => array( ),
'emailUserMessage' => array( )
);
} elseif ( $user->confirmed && ! ( $user->approved == 1 ) ) {
$msg = array(
'emailAdminSubject' => array( 'sys' => _UE_REG_ADMIN_PA_SUB ),
'emailAdminMessage' => array( 'sys' => _UE_REG_ADMIN_PA_MSG ),
'emailUserSubject' => array( 'sys' => getLangDefinition( stripslashes( $ueConfig['reg_pend_appr_sub'] ) ) ),
'emailUserMessage' => array( 'sys' => getLangDefinition( stripslashes( $ueConfig['reg_pend_appr_msg'] ) ) )
);
} elseif ( $user->confirmed && ( $user->approved == 1 ) ) {
$msg = array(
'emailAdminSubject' => array( 'sys' => _UE_REG_ADMIN_SUB ),
'emailAdminMessage' => array( 'sys' => _UE_REG_ADMIN_MSG ),
'emailUserSubject' => array( 'sys' => getLangDefinition( stripslashes( $ueConfig['reg_welcome_sub'] ) ) ),
'emailUserMessage' => array( 'sys' => getLangDefinition( stripslashes( $ueConfig['reg_welcome_msg'] ) ) )
);
}
$msg['messagesToUser'] = $messagesToUser;
if ( $triggerBeforeActivate ) {
$results = $_PLUGINS->trigger( 'onBeforeUserActive', array( &$user, $ui, $cause, $mailToAdmins, $mailToUser ));
if( $_PLUGINS->is_errors() && ( $ui != 0 ) ) {
echo $_PLUGINS->getErrorMSG( '
' );
}
foreach ( $results as $res ) {
if ( is_array( $res ) ) {
$activate = $activate && $res['activate'];
$mailToAdmins = $mailToAdmins && $res['mailToAdmins'];
$mailToUser = $mailToUser && $res['mailToUser'];
$showSysMessage = $showSysMessage && $res['showSysMessage'];
foreach ( array_keys( $msg ) as $key ) {
if ( isset( $res[$key] ) && $res[$key] ) {
array_push( $msg[$key], $res[$key] );
}
}
}
}
if ( ! ( $mailToAdmins && ( $ueConfig['moderatorEmail'] == 1 ) ) ) {
unset( $msg['emailAdminSubject']['sys'] );
unset( $msg['emailAdminMessage']['sys'] );
}
if ( ! $mailToUser ) {
unset( $msg['emailUserSubject']['sys'] );
unset( $msg['emailUserMessage']['sys'] );
}
if ( ! $showSysMessage ) {
unset( $msg['messagesToUser']['sys'] );
}
}
if ( $activate ) {
$query = 'UPDATE #__users'
. "\n SET block = 0"
. "\n WHERE id = " . (int) $user->id;
$_CB_database->setQuery( $query );
if ( ( !$_CB_database->query() ) && ( $ui != 0 ) ) {
echo 'SQL-unblock1 error: ' . $_CB_database->stderr(true);
}
$user->block = '0';
$user->removeActivationCode();
}
if ( $activate ) {
$_PLUGINS->trigger( 'onUserActive', array( &$user, $ui, $cause, $mailToAdmins, $mailToUser ) );
if( $_PLUGINS->is_errors() && ( $ui != 0 ) ) {
$msg['messagesToUser'] = $_PLUGINS->getErrorMSG( '
' )
. $msg['messagesToUser'];
}
}
if ( ! isset( $notificationsSent[$user->id][$user->confirmed][$user->approved][$user->block] ) ) { // in case done several times (e.g. plugins), avoid resending messages.
$cbNotification = new cbNotification();
if ( $ueConfig['moderatorEmail'] && count( $msg['emailAdminMessage'] ) ) {
$pwd = $user->password;
$user->password = null;
$cbNotification->sendToModerators( implode( ', ', $msg['emailAdminSubject'] ),
$cbNotification->_replaceVariables( implode( '\n\n', $msg['emailAdminMessage'] ), $user ) );
$user->password = $pwd;
}
if ( count( $msg['emailUserMessage'] ) ) {
$cbNotification->sendFromSystem( $user, implode( ', ', $msg['emailUserSubject'] ), implode( '\n\n', $msg['emailUserMessage'] ) );
}
$notificationsSent[$user->id][$user->confirmed][$user->approved][$user->block] = true;
}
return $msg['messagesToUser'];
}