<?php
if ( !defined( 'ABSPATH' ) ) exit;
require(dirname (__FILE__).'/WP_Plugin_Base.class.php');
class BP_Disable_Activation_Reloaded extends WP_Plugin_Base
{
protected $_options;
var $_credits;
var $_defaults;
protected $sections;
private static $instance = null;
public static function get_instance() {
if ( null == self::$instance ) {
self::$instance = new self;
}
return self::$instance;
}
function __construct() {
$this->WPB_PREFIX = 'dar';
$this->WPB_SLUG = 'bp-disable-activation-reloaded';
$this->WPB_PLUGIN_NAME = 'BP Disable Activation Reloaded';
$this->WPB_VERSION = '1.2.1';
$this->PLUGIN_FILE = plugin_basename(__FILE__);
$this->options_name = 'dar_settings';
$this->sections['general'] = __( 'Main Settings', $this->WPB_PREFIX );
register_activation_hook( __FILE__, array(&$this, 'activate' ));
register_deactivation_hook( __FILE__, array(&$this, 'deactivate' ));
add_action( 'admin_menu', array(&$this, 'register_menu' ) );
add_action( 'init', array(&$this, 'load_scripts' ), 50 );
add_action( 'bp_init', array(&$this, 'my_plugin_init' ));
$this->loadOptions();
#$this->upgradePlugin();
#$this->setDefaults();
parent::__construct();
}
function my_plugin_init() {
if ( !is_multisite() ) {
add_action( 'bp_core_signup_user' , array(&$this, 'disable_validation' ));
add_filter( 'bp_registration_needs_activation' , array(&$this, 'fix_signup_form_validation_text' ));
add_filter( 'bp_core_signup_send_activation_key', array(&$this, 'disable_activation_email' ));
}
else
{
remove_filter( 'wpmu_signup_user_notification' , 'bp_core_activation_signup_user_notification', 1, 4 );
add_filter( 'wpmu_signup_user_notification' , array(&$this, 'cc_auto_activate_on_user_signup'), 1, 4 );
# add_action( 'signup_finished' , array(&$this, "cc_auto_activate_finished");
}
if( isset($_GET['page']) && 'bp-disable-activation-reloaded' == $_GET['page'] && !empty( $_GET['fix_pending_users'] ) ) {
global $wpdb;
$users = $wpdb->get_results( "SELECT activation_key, user_login FROM {$wpdb->prefix}signups WHERE active = '0' ");
foreach ($users as $user) {
bp_core_activate_signup($user->activation_key);
BP_Signup::validate($user->activation_key);
$user_id = $wpdb->get_var( "SELECT ID FROM $wpdb->users WHERE user_login = '$user->user_login'");
$u = new WP_User( $user_id );
$u->add_role( 'subscriber' );
}
}
}
function disable_validation( $user_id ) {
global $wpdb;
$options = $this->_options;
do_action('bp_disable_activation_before_activation');
$activation_key = get_user_meta($user_id, 'activation_key', true);
$activate = apply_filters('bp_core_activate_account', bp_core_activate_signup($activation_key));
BP_Signup::validate($activation_key);
$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->users SET user_status = 0 WHERE ID = %d", $user_id ) );
if ( function_exists( 'bp_activity_add' ) ) {
$userlink = bp_core_get_userlink( $user_id );
bp_activity_add( array(
'user_id' => $user_id,
'action' => apply_filters( 'bp_core_activity_registered_member', sprintf( __( '%s became a registered member', 'buddypress' ), $userlink ), $user_id ),
'component' => 'profile',
'type' => 'new_member'
) );
}
wp_new_user_notification( $user_id );
delete_user_meta( $user_id, 'activation_key' );
wp_cache_delete( 'bp_total_member_count', 'bp' );
do_action('bp_disable_activation_before_login');
if( $options['enable_login'] == 'true' )
{
$user_info = get_userdata($user_id);
wp_set_auth_cookie($user_id);
do_action('wp_signon', $user_info->user_login);
}
do_action('bp_disable_activation_after_login');
$redirection = apply_filters('dar_redirection_url', $options['redirection']);
if( $redirection != '' )
{
wp_safe_redirect($redirection);
die();
}
}
function fix_signup_form_validation_text() {
return false;
}
function disable_activation_email() {
return false;
}
function cc_auto_activate_on_user_signup($user, $user_email, $key, $meta) {
$user_id = bp_core_activate_signup($key);
$options = $this->_options;
if( $options['enable_login'] == 'true' )
{
$user_info = get_userdata($user_id);
wp_set_auth_cookie($user_id);
do_action('wp_signon', $user_info->user_login);
}
do_action('bp_disable_activation_after_login');
$redirection = apply_filters('dar_redirection_url', $options['redirection']);
if( $redirection != '' )
{
wp_safe_redirect($redirection);
die();
}
}
function activate()
{
parent::activate();
do_action( $this->WPB_PREFIX.'_activate' );
}
function deactivate()
{
do_action( $this->WPB_PREFIX.'_deactivate' );
}
function register_menu()
{
#add_options_page( 'WP Plugin Base', 'WP Plugin Base', 'manage_options', WPB_SLUG , array(&$this, 'options_page') );
add_menu_page( 'BP DAR', 'BP DAR', 'manage_options', $this->WPB_SLUG , array(&$this, 'display_page') );
}
function load_scripts()
{
if(!is_admin())
{
#wp_enqueue_script('wsi-js', plugins_url( 'assets/js/wsi.js', __FILE__ ), array('jquery'), $this->WPB_VERSION, true);
#wp_enqueue_style('wsi-css', plugins_url( 'assets/css/style.css', __FILE__ ) , '', $this->WPB_VERSION, 'all' );
#wp_localize_script( 'jquery', 'WsiMyAjax', array( 'url' => site_url( 'wp-login.php' ), 'admin_url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'wsi-ajax-nonce' ) ) );
#wp_enqueue('codemirror');
}
}
function loadOptions()
{
$this->_options = get_option($this->WPB_PREFIX.'_settings', $this->_defaults);
}
function setDefaults()
{
$this->_defaults = array( 'version' => $this->WPB_VERSION );
}
}
BP_Disable_Activation_Reloaded::get_instance();
?>