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']; }