HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/nudepix.eu/public_html/wp-content/plugins/wangguard/wangguard-core.php
<?php
$wangguard_db_version = 1.6;
/********************************************************************/
/*** INIT & INSTALL BEGINS ***/
/********************************************************************/
//Plugin init
function wangguard_init() {
	// global $wangguard_api_key , $wangguard_api_port , $wangguard_api_host , $wangguard_rest_path;
	global $wangguard_api_key;
	$wangguard_api_key = get_site_option('wangguard_api_key');
	//$wangguard_api_host = 'rest.wangguard.com';
	//$wangguard_rest_path = '/';
	//$wangguard_api_port = 80;
	if (function_exists('load_plugin_textdomain')) {
		$plugin_dir = basename(dirname(__FILE__));
		load_plugin_textdomain('wangguard', false, $plugin_dir . "/languages/" );
	}
	if ( ( ( (get_site_option ("wangguard-enable-bp-report-btn")==1) ) && ( defined('BP_VERSION') ) ) || (get_site_option ("wangguard-enable-bp-report-blog")==1) )
		wp_enqueue_script("jquery");
	if (get_site_option('wangguard_disable-meta-header') == 1)
		remove_action('wp_head', 'wp_generator');
	if ((get_site_option ("wangguard-do-not-show-adminbar")==1) && defined( 'BP_VERSION' ) ) {
		remove_action('bp_adminbar_menus', 'wangguard_add_bp_admin_bar_menus' , 10 );
		remove_action('admin_bar_menu', 'wangguard_add_wp_admin_bar_menus', 100 );
	}
	if  ((get_site_option ("wangguard-do-not-show-adminbar")==1) && ! defined( 'BP_VERSION' ) ) {
		remove_action('admin_bar_menu', 'wangguard_add_wp_admin_bar_menus', 100 );
		wangguard_admin_warnings();
	}
}
add_action('init', 'wangguard_init');
function wangguard_welcome_splash(){
	global $wuangguard_parent, $wangguard_version;
	if ( ! defined('WANGGUARD_VERSION') ) define('WANGGUARD_VERSION', $wangguard_version );
	if ( defined('WANGGUARD_VERSION') ) $wangguard_act_version = WANGGUARD_VERSION;
	if ( get_site_option( 'wangguard-option-version' ) == $wangguard_act_version ) {
		return;
	}
	elseif ( $wuangguard_parent == 'update.php' ) {
		return;
	}
	elseif ( $wuangguard_parent == 'update-core.php' ) {
		return;
	}
	else {
		update_site_option('wangguard-option-version', $wangguard_act_version );
		if ( !is_multisite() ) { $wangguardredirect = esc_url( admin_url( add_query_arg( array( 'page' => 'wangguard_about' ), 'admin.php' ) ) ); }
		else { $wangguardredirect =  esc_url( network_admin_url( add_query_arg( array( 'page' => 'wangguard_about' ), 'admin.php' ) ) );}
		wp_redirect( $wangguardredirect ); exit;
	}
}
add_action( 'admin_init', 'wangguard_welcome_splash', 1 );

function wangguard_activate() {
	wangguard_admin_init();
	if (!get_site_option('wangguard-option-version') ) {
		add_site_option('wangguard_db_version', '');
		add_site_option('wangguard_stats');
		add_site_option('wangguard-expertmode', '');
		add_site_option('wangguard-report-posts', '');
		add_site_option('wangguard-delete-users-on-report', '');
		add_site_option('wangguard-enable-bp-report-btn', '');
		add_site_option('wangguard-enable-bp-report-blog', '');
		add_site_option('wangguard-verify-gmail', '');
		add_site_option('wangguard_disable-meta-header', '');
		add_site_option('wangguard-verify-dns-mx', '');
		add_site_option('wangguard-do-not-check-client-ip', '');
		add_site_option('wangguard-do-not-show-adminbar', '');
		add_site_option('wangguard-add-honeypot', '');
		add_site_option('blocked-list-domains', '');
		add_site_option('wangguard_api_key', '');
	}
}
register_activation_hook( 'wangguard/wangguard-admin.php', 'wangguard_activate' );
//Admin init function
function wangguard_admin_init() {
	global $wangguard_db_version , $wpdb;
	$version = get_site_option("wangguard_db_version");
	if (false === $version)
		$version = get_site_option("wangguard_db_version");
	if (false === $version)
		$version = 0;
	//Upgrade DB
	if ($version < $wangguard_db_version)
		wangguard_install ($version);
}
add_action('admin_init', 'wangguard_admin_init');
//WangGuard Styles
add_action( 'admin_enqueue_scripts', 'wangguard_styles_css' );
function wangguard_styles_css($hook){
	global $users_Info, $WGDevelopmentPage;
	wp_register_style(  'wangguardCSS', plugins_url('css/wangguard.css', __FILE__),array(), WANGGUARD_VERSION );
	wp_enqueue_style( 'wangguardCSS' );
	if( $users_Info != $hook ) {
		return;} else {
		wp_register_style( 'custom_wp_admin_css_for_wangguard_users_info', plugins_url('css/wangguardcssforusersinfo.css', __FILE__),array(), WANGGUARD_VERSION );
		wp_enqueue_style( 'custom_wp_admin_css_for_wangguard_users_info');
	}
}
add_action( 'admin_enqueue_scripts', 'wangguard_develpment_styles_css' );
function wangguard_develpment_styles_css($hook){
	global $WGDevelopmentPage;
	if( $WGDevelopmentPage != $hook ) {
		return;} else {
		wp_register_style( 'custom_wp_admin_css_for_wangguard_development', plugins_url('css/wangguardcssfordevelopment.css', __FILE__),array(), WANGGUARD_VERSION );
		wp_enqueue_style( 'custom_wp_admin_css_for_wangguard_development');
	}
}
add_action( 'admin_enqueue_scripts', 'wangguard_contact_styles_css' );
function wangguard_contact_styles_css($hook){
	global $WGContactPage;
	if( $WGContactPage != $hook ) {
		return;} else {
		wp_register_style( 'custom_wp_admin_css_for_wangguard_contact', plugins_url('css/wangguardcssforcontact.css', __FILE__),array(), WANGGUARD_VERSION );
		wp_enqueue_style( 'custom_wp_admin_css_for_wangguard_contact');
	}
}
add_action( 'admin_enqueue_scripts', 'wangguard_about_styles_css' );
function wangguard_about_styles_css($hook){
	global $WGAboutPage, $WGPluginPage, $WGHelpPage, $WGHelpUsPage, $WGCreditsPage, $users_Info, $WGAddonPage;
	if( ( $WGAboutPage == $hook ) || ( $WGPluginPage == $hook ) || ( $WGHelpPage == $hook ) || ( $WGHelpUsPage == $hook ) || ( $WGCreditsPage == $hook ) || (  $users_Info == $hook ) || ( $WGAddonPage == $hook ) ) {
		wp_register_style( 'custom_wp_admin_css_for_about_screen', plugins_url('css/wangguardabout.css', __FILE__),array(),WANGGUARD_VERSION  );
		wp_enqueue_style( 'custom_wp_admin_css_for_about_screen');
	} else { return; }
}
function wangguard_install($current_version) {
	global $wpdb;
	global $wangguard_db_version;
	require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
	$charset_collate = '';
	$charset_collate = $wpdb->get_charset_collate();
	$table_name = $wpdb->base_prefix . "wangguardquestions";
	if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
		$sql = "CREATE TABLE " . $table_name . " (
			id mediumint(9) NOT NULL AUTO_INCREMENT,
			Question VARCHAR(255) NOT NULL,
			Answer VARCHAR(50) NOT NULL,
			RepliedOK INT(11) DEFAULT 0 NOT NULL,
			RepliedWRONG INT(11) DEFAULT 0 NOT NULL,
			UNIQUE KEY id (id)
		) $charset_collate;";
		dbDelta($sql);
	}
	$table_name = $wpdb->base_prefix . "wangguarduserstatus";
	if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
		$sql = "CREATE TABLE " . $table_name . " (
			ID BIGINT(20) NOT NULL,
			user_status VARCHAR(20) NOT NULL,
			user_ip VARCHAR(15) NOT NULL,
			user_proxy_ip VARCHAR(15) NOT NULL,
			UNIQUE KEY ID (ID)
		) $charset_collate;";
		dbDelta($sql);
	}
	$table_name = $wpdb->base_prefix . "wangguardreportqueue";
	if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
		$sql = "CREATE TABLE " . $table_name . " (
			ID BIGINT(20) NULL,
			blog_id BIGINT(20) NULL,
			reported_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
			reported_by_ID BIGINT(20) NOT NULL,
			KEY reported_by_ID (reported_by_ID),
			KEY ID (ID),
			KEY blog_id (blog_id),
			UNIQUE KEY ID_blog (ID , blog_id)
		) $charset_collate;";
		dbDelta($sql);
	}
	$table_name = $wpdb->base_prefix . "wangguardsignupsstatus";
	if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
		$sql = "CREATE TABLE " . $table_name . " (
			signup_username VARCHAR(60) NOT NULL,
			user_status VARCHAR(20) NOT NULL,
			user_ip VARCHAR(15) NOT NULL,
			user_proxy_ip VARCHAR(15) NOT NULL,
			UNIQUE KEY signup_username (signup_username)
		) $charset_collate;";
		dbDelta($sql);
	}
	if ($current_version < 1.2) {
		//move old options to the new wangguard options table and delete them
		wangguard_update_option("wangguard_stats", get_option("wangguard_stats") );
		wangguard_update_option("wangguard-enable-bp-report-btn", get_option("wangguard-enable-bp-report-btn") );
		//wangguard_update_option("wangguard_api_key", get_option("wangguard_api_key") );
		wangguard_update_option("wangguard-report-posts", get_option("wangguard-report-posts") );
		wangguard_update_option("wangguard-expertmode", get_option("wangguard-expertmode") );
		wangguard_update_option("wangguard-enable-bp-report-btn", get_option("wangguard-enable-bp-report-btn") );
		wangguard_update_option("wangguard-enable-bp-report-blog", get_option("wangguard-enable-bp-report-blog") );
		//delete_option("wangguard_db_version");
		//delete_option("wangguard_stats");
		//delete_option("wangguard_connectivity_time");
		//delete_option("wangguard_available_servers");
		//delete_option("wangguard_api_key");
		//delete_option("wangguard-report-posts");
		//delete_option("wangguard-expertmode");
		//delete_option("wangguard-enable-bp-report-btn");
		//delete_option("wangguard-enable-bp-report-blog");
	}
	if ( ( get_site_option('wangguard-option-version') == '' ) || ( get_site_option('wangguard-option-version') < '1.6' ) ) {
		update_site_option("wangguard_db_version", $wangguard_db_version);
		update_site_option("wangguard-expertmode", wangguard_get_option("wangguard-report-posts"));
		update_site_option("wangguard_stats", wangguard_get_option("wangguard_stats") );
		update_site_option("wangguard-report-posts", wangguard_get_option("wangguard-report-posts"));
		update_site_option("wangguard-delete-users-on-report", wangguard_get_option("wangguard-delete-users-on-report"));
		update_site_option("wangguard-enable-bp-report-btn", wangguard_get_option("wangguard-enable-bp-report-blog"));
		update_site_option("wangguard-enable-bp-report-blog", wangguard_get_option("wangguard-enable-bp-report-blog"));
		update_site_option("wangguard-verify-gmail", wangguard_get_option("wangguard-verify-gmail"));
		update_site_option("wangguard_disable-meta-header", wangguard_get_option("wangguard_disable-meta-header"));
		update_site_option("wangguard-verify-dns-mx", wangguard_get_option("wangguard-verify-dns-mx"));
		update_site_option("wangguard-do-not-check-client-ip", wangguard_get_option("wangguard-do-not-check-client-ip"));
		update_site_option("wangguard-do-not-show-adminbar", wangguard_get_option("wangguard-do-not-show-adminbar"));
		update_site_option("wangguard-add-honeypot", wangguard_get_option("wangguard-add-honeypot"));
		update_site_option("blocked-list-domains", wangguard_get_option("blocked-list-domains"));
		update_site_option("wangguard_api_key", wangguard_get_option("wangguard_api_key"));
		update_site_option("wangguard-option-version", "1.6");
	}
	if ($current_version && ($current_version < 1.4)) {
		$table_name = $wpdb->base_prefix . "wangguarduserstatus";
		$sql = "ALTER TABLE " . $table_name . " ADD user_proxy_ip VARCHAR(15) NOT NULL;";
		@$wpdb->query($sql);
		$table_name = $wpdb->base_prefix . "wangguardsignupsstatus";
		$sql = "ALTER TABLE " . $table_name . " ADD user_proxy_ip VARCHAR(15) NOT NULL;";
		@$wpdb->query($sql);
	}
	if ($current_version < 1.6) {
		$table_name = $wpdb->base_prefix . "wangguardcronjobs";
		if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
			$sql = "CREATE TABLE " . $table_name . " (
				id mediumint(9) NOT NULL AUTO_INCREMENT,
				RunOn VARCHAR(20) NOT NULL,
				RunAt VARCHAR(5) NOT NULL,
				Action VARCHAR(1) NOT NULL,
				UsersTF VARCHAR(1) NOT NULL,
				LastRun TIMESTAMP NULL,
				UNIQUE KEY id (id)
			) $charset_collate;";
			dbDelta($sql);
		}
	}
	//stats array
	$stats = get_site_option("wangguard_stats");
	if (!is_array($stats)) {
		$stats = array("check"=>0 , "detected"=>0);
		update_site_option("wangguard_stats", $stats);
	}
	//Enable BP report button by default
	$tmp = get_site_option("wangguard-enable-bp-report-btn");
	if (empty ($tmp))
		update_site_option ("wangguard-enable-bp-report-btn", 1);
	//Don't delete users when reporting by default
	$tmp = get_site_option("wangguard-delete-users-on-report");
	if (empty ($tmp))
		update_site_option ("wangguard-delete-users-on-report", -1);
	//Verify gmail
	$tmp = get_site_option("wangguard-verify-gmail");
	if ($tmp === false)
		update_site_option ("wangguard-verify-gmail", 1);
	//Do not check client IP addr
	$tmp = get_site_option("wangguard-do-not-check-client-ip");
	if ($tmp === false)
		update_site_option ("wangguard-do-not-check-client-ip", 0);
	//db version
	update_site_option("wangguard_db_version", $wangguard_db_version);
	$tmp = get_site_option("wangguard-add-honeypot");
	if ($tmp === false)
		update_site_option ("wangguard-add-honeypot", 1);
}

//Add the Settings link on the plugins page
function wangguard_action_links( $links, $file ) {
	global $wangguard_is_network_admin;
	$urlFunc = "admin_url";
	if ($wangguard_is_network_admin && function_exists("network_admin_url"))
		$urlFunc = "network_admin_url";
	if ( $file == plugin_basename(__FILE__) )
		$newlink = array('<a href="' . $urlFunc( 'admin.php?page=wangguard_conf' ) . '">'.esc_html(__('Settings', 'wangguard')).'</a>');
	else
		$newlink = array();
	return array_merge($newlink , $links);
}
add_filter('plugin_action_links', 'wangguard_action_links', 10, 2);
/********************************************************************/
/*** INIT & INSTALL ENDS ***/
/********************************************************************/
/********************************************************************/
/*** HELPER FUNCS BEGINS ***/
/********************************************************************/
/** * Returns the client IP*/
function wangguard_getRemoteIP() {
	if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
		return $_SERVER['HTTP_CF_CONNECTING_IP'];}
	else {
		return $_SERVER['REMOTE_ADDR'];
	}
}
/**
 * Returns the HTTP_X_FORWARDED_FOR header if present
 */
function wangguard_getRemoteProxyIP() {
	$ipAddress = '';
	if (!isset($_SERVER['HTTP_X_FORWARDED_FOR']))
		return $ipAddress;
	if ($_SERVER['HTTP_X_FORWARDED_FOR'] != "" ) {
		$ipAddress = $_SERVER["HTTP_X_FORWARDED_FOR"];
		if (strpos($ipAddress, ',') !== false) {
			$ipAddress = explode(',', $ipAddress);
			$ipAddress = $ipAddress[0];
		}
		$test = ip2long($ipAddress);
		if (($test === FALSE) || ($test === -1))
			$ipAddress = '';
	}
	return $ipAddress;
}
//Is multisite?
function wangguard_is_multisite() {
	if (function_exists('is_multisite')) {
		return is_multisite();
	}
	else {
		global $wpmu;
		if ($wpmu == 1)
			return true;
		else
			return false;
	}
}
if ( !function_exists('wp_nonce_field') ) {
	function wangguard_nonce_field($action = -1) { return; }
	$wangguard_nonce = -1;
} else {
	function wangguard_nonce_field($action = -1) { return wp_nonce_field($action); }
	$wangguard_nonce = 'wangguard-update-key';
}
//Extracts the domain part from an email address
function wangguard_extract_domain($email) {
	$emailArr = explode("@" , $email);
	if (!is_array($emailArr)) {
		return "";
	}
	else {
		return $emailArr[1];
	}
}
//update the stats
function wangguard_stats_update($action) {
	$stats = get_site_option("wangguard_stats");
	if (!is_array($stats)) {
		$stats = array("check"=>0 , "detected"=>0);
	}
	$stats[$action] = $stats[$action] + 1;
	update_site_option("wangguard_stats", $stats);
}
/**
 * Reports a single email, the function doesn't look into the accounts, do not delete users nor blogs
 * Used in functions which detect (for sure) sploggers that are attempting to create an account
 * @param string $email
 * @param string $clientIP
 * @param boolean $isSplogger - send true if the email is a confirmed splogger
 */
function wangguard_report_email($email , $clientIP , $ProxyIP , $isSplogger = false) {
	global $wangguard_api_key;
	//update local stats disregarding the key
	wangguard_stats_update("detected");
	$valid = wangguard_verify_key($wangguard_api_key);
	if ($valid == 'failed') {
		echo "-2";
		return;
	}
	else if ($valid == 'invalid') {
			echo "-1";
			return;
		}
	$isSploggerParam = $isSplogger ? "1" : "0";
	wangguard_http_post("wg=<in><apikey>$wangguard_api_key</apikey><email>".$email."</email><ip>".$clientIP."</ip><proxyip>".$ProxyIP."</proxyip><issplogger>".$isSploggerParam."</issplogger></in>", 'add-email.php');
}
function wangguard_report_users($wpusersRs , $scope="email" , $deleteUser = true) {
	global $wangguard_api_key;
	global $wpdb;
	$valid = wangguard_verify_key($wangguard_api_key);
	if ($valid == 'failed') {
		echo "-2";
		die();
	}
	else if ($valid == 'invalid') {
			echo "-1";
			die();
		}

	if (!$wpusersRs) {
		return "0";
	}
	$deleteUser = get_site_option ("wangguard-delete-users-on-report")=='1';
	$usersFlagged = array();
	foreach ($wpusersRs as $spuserID) {
		$user_object = new WP_User($spuserID);
		if ( !wangguard_is_admin($user_object) ) {
			if (!empty ($user_object->user_email)) {
				//Get the user's client IP from which he signed up
				$table_name = $wpdb->base_prefix . "wangguarduserstatus";
				$clientIP = $wpdb->get_var( $wpdb->prepare("select user_ip from $table_name where ID = %d" , $user_object->ID) );
				$ProxyIP = $wpdb->get_var( $wpdb->prepare("select user_proxy_ip from $table_name where ID = %d" , $user_object->ID) );
				if ($scope == 'domain')
					$response = wangguard_http_post("wg=<in><apikey>$wangguard_api_key</apikey><domain>".wangguard_extract_domain($user_object->user_email)."</domain><ip>".$clientIP."</ip><proxyip>".$ProxyIP."</proxyip></in>", 'add-domain.php');
				elseif ($scope == 'email')
					$response = wangguard_http_post("wg=<in><apikey>$wangguard_api_key</apikey><email>".$user_object->user_email."</email><ip>".$clientIP."</ip><proxyip>".$ProxyIP."</proxyip></in>", 'add-email.php');
			}
			if ($deleteUser && current_user_can( 'delete_users' )) {
				wangguard_delete_user_and_blogs($spuserID);
			}
			else {
				global $wpdb;
				$table_name = $wpdb->base_prefix . "wangguarduserstatus";
				$recordExists = $wpdb->get_var( $wpdb->prepare("select ID from $table_name where ID = %d" , $spuserID) );
				if ($recordExists) {
					//Update the new status
					$table_name = $wpdb->base_prefix . "wangguarduserstatus";
					$wpdb->query( $wpdb->prepare("update $table_name set user_status = 'reported' where ID = '%d'" , $spuserID ) );
				}
				else {
					//if for some reason user status record doesn't exists, create it
					//Try to get the user's client IP from which he signed up
					$table_name = $wpdb->base_prefix . "wangguardsignupsstatus";
					$clientIP = $wpdb->get_var( $wpdb->prepare("select user_ip from $table_name where signup_username = %s" , $user_object->user_login) );
					$clientIP = (is_null($clientIP) ? '' : $clientIP);
					$ProxyIP = $wpdb->get_var( $wpdb->prepare("select user_proxy_ip from $table_name where signup_username = %s" , $user_object->user_login) );
					$ProxyIP = (is_null($ProxyIP) ? '' : $ProxyIP);
					//create the record
					$table_name = $wpdb->base_prefix . "wangguarduserstatus";
					$wpdb->query( $wpdb->prepare("insert into $table_name(ID , user_status , user_ip , user_proxy_ip) values (%d , 'reported' , '%s' , '%s')" , $spuserID , $clientIP , $ProxyIP ) );
				}
			}
			$usersFlagged[] = $spuserID;
		}
		else {
			//-Admin user-
			//do nothing
		}
	}
	if (count($usersFlagged))
		return implode(",", $usersFlagged);
	else
		return "0";
}
function wangguard_whitelist_report($wpusersRs) {
	global $wangguard_api_key;
	global $wpdb;
	$valid = wangguard_verify_key($wangguard_api_key);
	if ($valid == 'failed') {
		echo "-2";
		die();
	}
	else if ($valid == 'invalid') {
			echo "-1";
			die();
		}
	if (!$wpusersRs) {
		return "0";
	}
	$usersWhitelist = array();
	foreach ($wpusersRs as $spuserID) {
		$user_object = new WP_User($spuserID);
		if ( !wangguard_is_admin($user_object) ) {
			global $wpdb;
			//Update the new status
			$table_name = $wpdb->base_prefix . "wangguarduserstatus";
			$wpdb->query( $wpdb->prepare("update $table_name set user_status = 'whitelisted' where ID = '%d'" , $spuserID ) );
			$usersWhitelist[] = $spuserID;
		}
	}
	if (count($usersWhitelist))
		return implode(",", $usersWhitelist);
	else
		return "0";
}
function wangguard_rollback_report($wpusersRs) {
	global $wangguard_api_key;
	global $wpdb;
	$valid = wangguard_verify_key($wangguard_api_key);
	if ($valid == 'failed') {
		echo "-2";
		die();
	}
	else if ($valid == 'invalid') {
			echo "-1";
			die();
		}

	if (!$wpusersRs) {
		return "0";
	}
	$usersRolledBack = array();
	foreach ($wpusersRs as $spuserID) {
		$user_object = new WP_User($spuserID);
		if ( !wangguard_is_admin($user_object) ) {
			if (!empty ($user_object->user_email)) {
				//Get the user's client IP from which he signed up
				$response = wangguard_http_post("wg=<in><apikey>$wangguard_api_key</apikey><email>".$user_object->user_email."</email></in>", 'remove-email.php');
			}
			global $wpdb;
			//Update the new status
			$table_name = $wpdb->base_prefix . "wangguarduserstatus";
			$wpdb->query( $wpdb->prepare("update $table_name set user_status = 'force-checked' where ID = '%d'" , $spuserID ) );
			$usersRolledBack[] = $spuserID;
		}
	}
	if (count($usersRolledBack))
		return implode(",", $usersRolledBack);
	else
		return "0";
}
function wangguard_is_admin($user_object) {
	return $user_object->has_cap('administrator');
}
/*
 * wangguard_verify_user: takes a WP_User object and checks its status against WangGuard service, possible responses are:
 *
 * not-checked : user was not checked, admins aren't checked, also replied when a WangGuard server error occurs
 * reported : user is reported on WangGuard
 * checked : user isn't reported on WangGuard
 * error:XXX : WangGuard server replied with an error code (mostly protocol issues)
 *
 */
function wangguard_verify_user($user_object) {
	global $wpdb;
	global $wangguard_api_key;
	$user_check_status = "not-checked";
	//admins doesn't gets checked
	if (wangguard_is_admin($user_object)) return $user_check_status;
	wangguard_stats_update("check");
	//Get the user's client IP from which he signed up
	$table_name = $wpdb->base_prefix . "wangguarduserstatus";
	if ( get_site_option("wangguard-do-not-check-client-ip")=='1') {
		$clientIP = '';
		$ProxyIP = '';
	}
	else {
		$clientIP = $wpdb->get_var( $wpdb->prepare("select user_ip from $table_name where ID = %d" , $user_object->ID) );
		$ProxyIP = $wpdb->get_var( $wpdb->prepare("select user_proxy_ip from $table_name where ID = %d" , $user_object->ID) );
	}
	//Rechecks the user agains WangGuard service
	$response = wangguard_http_post("wg=<in><apikey>$wangguard_api_key</apikey><email>".$user_object->user_email."</email><ip>".$clientIP."</ip><proxyip>".$ProxyIP."</proxyip></in>", 'query-email.php');
	$responseArr = WGG_XML_unserialize($response);
	if ( is_array($responseArr)) {
		if (($responseArr['out']['cod'] == '10') || ($responseArr['out']['cod'] == '11')) {
			$user_check_status = 'reported';
			wangguard_stats_update("detected");
		}
		else {
			if ($responseArr['out']['cod'] == '20') {
				$user_check_status = 'checked';
			}
			elseif ($responseArr['out']['cod'] == '30') {
				$user_check_status = 'not-checked';
			}
			else {
				$user_check_status = 'error:'.$responseArr['out']['cod'];
			}
		}
	}
	$table_name = $wpdb->base_prefix . "wangguarduserstatus";
	$tmpIP = $wpdb->get_var( $wpdb->prepare("select user_ip from $table_name where ID = %d" , $user_object->ID) );
	$tmpProxyIP = $wpdb->get_var( $wpdb->prepare("select user_proxy_ip from $table_name where ID = %d" , $user_object->ID) );
	//There may be cases where OUR record for the user isn't there (DB migrations for example or manual inserts) so we just delete and re-insert the user
	$wpdb->query( $wpdb->prepare("delete from $table_name where ID = %d" , $user_object->ID ) );
	$wpdb->query( $wpdb->prepare("insert into $table_name(ID , user_status , user_ip , user_proxy_ip) values (%d , '%s' , '%s' , '%s')" , $user_object->ID , $user_check_status , $tmpIP , $tmpProxyIP ) );
	return $user_check_status;
}
/**
 * wangguard_verify_email: takes a WP_User object and checks its status against WangGuard service, possible responses are:
 *
 * @param string $email: e-mail address to check
 * @param string $clientIP: client IP
 * @param string $proxyIP: client proxy ip if available - use the wangguard_getRemoteProxyIP() function to get the client proxy ip
 * @return string:
 * not-checked : user was not checked, admins aren't checked, also replied when a WangGuard server error occurs
 * reported : user is reported on WangGuard
 * checked : user isn't reported on WangGuard
 * error:XXX : WangGuard server replied with an error code (mostly protocol issues)
 */
function wangguard_verify_email($email , $clientIP , $proxyIP = '') {
	global $wangguard_api_key;
	$user_check_status = "not-checked";
	wangguard_stats_update("check");
	if ( get_site_option("wangguard-do-not-check-client-ip")=='1') {
		$clientIP = '';
		$proxyIP = '';
	}
	//Rechecks the user agains WangGuard service
	$response = wangguard_http_post("wg=<in><apikey>$wangguard_api_key</apikey><email>".$email."</email><ip>".$clientIP."</ip><proxyip>".$proxyIP."</proxyip></in>", 'query-email.php');
	$responseArr = WGG_XML_unserialize($response);
	if ( is_array($responseArr)) {
		if (($responseArr['out']['cod'] == '10') || ($responseArr['out']['cod'] == '11')) {
			$user_check_status = 'reported';
			wangguard_stats_update("detected");
		}
		else {
			if ($responseArr['out']['cod'] == '20') {
				$user_check_status = 'checked';
			}
			elseif ($responseArr['out']['cod'] == '30') {
				$user_check_status = 'not-checked';
			}
			else {
				$user_check_status = 'error:'.$responseArr['out']['cod'];
			}
		}
	}
	return $user_check_status;
}
//get option from the main blog's options table
function wangguard_get_option($option) {
	global $wpdb , $wangguard_api_key;
	$table_name = $wpdb->base_prefix . "wangguardoptions";
	if (empty($wangguard_api_key) && ($wpdb->get_var("show tables like '$table_name'") != $table_name))
		return false;
	$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM {$table_name} WHERE option_name = %s LIMIT 1", $option ) );
	if ( is_object( $row ) )
		return maybe_unserialize($row->option_value);
	else
		return false;
}
//update option from the main blog's options table
function wangguard_update_option($option , $newvalue) {
	global $wpdb;
	$table_name = $wpdb->base_prefix . "wangguardoptions";
	$oldvalue = wangguard_get_option( $option );
	$newvalue = sanitize_option( $option, $newvalue );
	$newvalue = maybe_serialize( $newvalue );
	if ( false === $oldvalue ) {
		//option wasn't present on the options table, add it
		$result = $wpdb->query( $wpdb->prepare( "INSERT INTO `{$table_name}` (`option_name`, `option_value`) VALUES ( %s  ,  %s )", $option, $newvalue ) );
	}
	else {
		$result = $wpdb->update( $table_name, array( 'option_value' => $newvalue ), array( 'option_name' => $option ) );
	}
	if ( $result )
		return true;
	else
		return false;
}
// getmxrr() support for Windows by HM2K <php [spat] hm2k.org>
function win_getmxrr($hostname, &$mxhosts, &$mxweight=false) {
	//clean the array
	$mxhosts = array();
	if (empty($hostname)) return;
	$exec='nslookup -type=MX '.escapeshellarg($hostname);
	@exec($exec, $output);
	if (empty($output)) return;
	$i=-1;
	foreach ($output as $line) {
		$i++;
		if (preg_match("/^$hostname\tMX preference = ([0-9]+), mail exchanger = (.+)$/i", $line, $parts)) {
			$mxweight[$i] = trim($parts[1]);
			$mxhosts[$i] = trim($parts[2]);
		}
		if (preg_match('/responsible mail addr = (.+)$/i', $line, $parts)) {
			$mxweight[$i] = $i;
			$mxhosts[$i] = trim($parts[1]);
		}
	}
	return ($i!=-1);
}
if (  (!function_exists('getmxrr')) && (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')  ) {
	//define alt getmxrr on windows server
	function getmxrr($hostname, &$mxhosts, &$mxweight=false) {
		return win_getmxrr($hostname, $mxhosts, $mxweight);
	}
}
/********************************************************************/
/*** HELPER FUNCS ENDS ***/
/********************************************************************/
/********************************************************************/
/*** KEY FUNCS BEGINS ***/
/********************************************************************/
//Return WangGuard stored API KEY
function wangguard_get_key() {
	global $wangguard_api_key;
	if ( !empty($wangguard_api_key) )
		return $wangguard_api_key;
	return get_site_option('wangguard_api_key');
}
//Checks the API KEY against wangguard service
function wangguard_verify_key( $key, $ip = null ) {
	global $wangguard_api_key;
	if ( empty($key) && $wangguard_api_key )
		$key = $wangguard_api_key;
	$response = wangguard_http_post("wg=<in><apikey>$key</apikey></in>", 'verify-key.php' , $ip);
	$responseArr = WGG_XML_unserialize($response);
	if ( !is_array($responseArr))
		return 'failed';
	elseif (@$responseArr['out']['cod'] != '0')
		return 'invalid';
	else
		return "valid";
}
/********************************************************************/
/*** KEY FUNCS ENDS ***/
/********************************************************************/
/********************************************************************/
/*** NETWORKING FUNCTIONS BEGINS ***/
/********************************************************************/
// Check connectivity between the WordPress blog and wangguard's servers.
// Returns an associative array of server IP addresses, where the key is the IP address, and value is true (available) or false (unable to connect).
function wangguard_check_server_connectivity() {
	if ( defined('WANGGUARD_API_HOST') ) {$wangguard_api_host = WANGGUARD_API_HOST;}
	// Some web hosts may disable one or both functions
	if ( !function_exists('fsockopen') || !function_exists('gethostbynamel') )
		return array();
	$ips = gethostbynamel($wangguard_api_host);
	if ( !$ips || !is_array($ips) || !count($ips) )
		return array();
	$servers = array();
	foreach ( $ips as $ip ) {
		$response = wangguard_verify_key( wangguard_get_key(), $ip );
		// even if the key is invalid, at least we know we have connectivity
		if ( $response == 'valid' || $response == 'invalid' )
			$servers[$ip] = true;
		else
			$servers[$ip] = false;
	}
	return $servers;
}
// Check the server connectivity and store the results in an option.
// Cached results will be used if not older than the specified timeout in seconds; use $cache_timeout = 0 to force an update.
// Returns the same associative array as wangguard_check_server_connectivity()
function wangguard_get_server_connectivity( $cache_timeout = 86400 ) {
	$servers = get_site_option('wangguard_available_servers');
	if (empty ($servers))
		$servers = false;
	if ( (time() - get_site_option('wangguard_connectivity_time') < $cache_timeout) && $servers !== false )
		return $servers;
	// There's a race condition here but the effect is harmless.
	$servers = wangguard_check_server_connectivity();
	update_site_option('wangguard_available_servers', $servers);
	update_site_option('wangguard_connectivity_time', time());
	return $servers;
}
// Returns true if server connectivity was OK at the last check, false if there was a problem that needs to be fixed.
function wangguard_server_connectivity_ok() {
	// skip the check on WPMU because the status page is hidden
	global $wangguard_api_key;
	if ( $wangguard_api_key )
		return true;
	$servers = wangguard_get_server_connectivity();
	return !( empty($servers) || !count($servers) || count( array_filter($servers) ) < count($servers) );
}
function wangguard_get_host($host) {
	// if all servers are accessible, just return the host name.
	// if not, return an IP that was known to be accessible at the last check.
	if ( wangguard_server_connectivity_ok() ) {
		return $host;
	} else {
		$ips = wangguard_get_server_connectivity();
		// a firewall may be blocking access to some wangguard IPs
		if ( count($ips) > 0 && count(array_filter($ips)) < count($ips) ) {
			// use DNS to get current IPs, but exclude any known to be unreachable
			$dns = (array)gethostbynamel( rtrim($host, '.') . '.' );
			$dns = array_filter($dns);
			foreach ( $dns as $ip ) {
				if ( array_key_exists( $ip, $ips ) && empty( $ips[$ip] ) )
					unset($dns[$ip]);
			}
			// return a random IP from those available
			if ( count($dns) )
				return $dns[ array_rand($dns) ];
		}
	}
	// if all else fails try the host name
	return $host;
}
// Returns the server's response body
function wangguard_http_post($request, $op , $ip=null) {
	global $wp_version;
	if ( defined('WANGGUARD_API_HOST') ) {$wangguard_api_host = WANGGUARD_API_HOST;}
	if ( defined('WANGGUARD_REST_PATH') ) {$wangguard_rest_path = WANGGUARD_REST_PATH;}
	if ( defined('WANGGUARD_API_PORT') ) {$wangguard_api_port = WANGGUARD_API_PORT;}
	$wangguard_version = constant('WANGGUARD_VERSION');
	$http_request  = "POST {$wangguard_rest_path}{$op} HTTP/1.0\r\n";
	$http_request .= "Host: $wangguard_api_host\r\n";
	$http_request .= "Content-Type: application/x-www-form-urlencoded; charset=" . get_option('blog_charset') . "\r\n";
	$http_request .= "Content-Length: " . strlen($request) . "\r\n";
	$http_request .= "User-Agent: WordPress/$wp_version | WangGuard/$wangguard_version\r\n";
	$http_request .= "\r\n";
	$http_request .= $request;
	if (!empty ($ip))
		$http_host = $ip;
	else
		$http_host = wangguard_get_host($wangguard_api_host);
	//Init response buffer
	$response = '';
	/*fsock connection*/

	if ( ! get_site_option("wangguard-use-ssl") == 1 ) {
		if( false != ( $fs = @fsockopen($http_host, $wangguard_api_port, $errno, $errstr, 5) ) ) {
			fwrite($fs, $http_request);
			while ( !feof($fs) )
				$response .= fgets($fs, 1100);
			fclose($fs);
		}
	} else {
		if( false != ( $fs = @fsockopen('ssl://'. $http_host, $wangguard_api_port, $errno, $errstr, 5) ) ) {
			fwrite($fs, $http_request);
			while ( !feof($fs) )
				$response .= fgets($fs, 1100);
			fclose($fs);
		}
	}
	/*fsock connection*/
	$response = str_replace("\r", "", $response);
	$response = substr($response, strpos($response, "\n\n")+2);
	return $response;
}
/********************************************************************/
/*** NETWORKING FUNCTIONS END ***/
/********************************************************************/
/********************************************************************/
/*** NOTICES & RIGHT NOW BEGINS ***/
/********************************************************************/
//Shows admin warnings if any
function wangguard_admin_warnings() {
	global $wangguard_api_key , $wangguard_is_network_admin;
	if ( !$wangguard_api_key && !isset($_POST['submit']) ) {
		function wangguard_warning() {
			global $wangguard_is_network_admin;
			$urlFunc = "admin_url";
			if ($wangguard_is_network_admin && function_exists("network_admin_url"))
				$urlFunc = "network_admin_url";
			$confURL = $urlFunc("admin.php?page=wangguard_conf");
			echo "
			<div id='wangguard-warning' class='updated fade'><p><strong>".__('WangGuard is almost ready.', 'wangguard')."</strong> ".sprintf(__('You must <a href="%1$s">enter your WangGuard API key</a> for it to work.', 'wangguard'), $confURL)."</p></div>";
		}
		add_action('admin_notices', 'wangguard_warning');
		return;
	} elseif ( get_site_option('wangguard_connectivity_time') && empty($_POST) && is_admin() && !wangguard_server_connectivity_ok() ) {
		function wangguard_warning() {
			global $wangguard_is_network_admin;
			$urlFunc = "admin_url";
			if ($wangguard_is_network_admin && function_exists("network_admin_url"))
				$urlFunc = "network_admin_url";
			$confURL = $urlFunc("admin.php?page=wangguard_conf");
			echo "
			<div id='wangguard-warning' class='updated fade'><p><strong>".__('WangGuard has detected a problem.', 'wangguard')."</strong> ".sprintf(__('A server or network problem is preventing WangGuard from working correctly.  <a href="%1$s">Click here for more information</a> about how to fix the problem.', 'wangguard'), $confURL)."</p></div>
			";
		}
		add_action('admin_notices', 'wangguard_warning');
		return;
	}
}
/**
 * Show plugin changes
 *
 * @return void
 */
function wangguard_plugin_update_message() {
	$args = array(
		'method' => 'GET'
	);
	$response = wp_remote_request(WANGGUARD_README_URL, $args);;
	if (!is_wp_error($response) && $response['response']['code'] == 200) {
		$matches = null;
		$regexp = '~==\s*Changelog\s*==\s*=\s*[^\n]+\s*=(.*)(=\s*' . preg_quote(WANGGUARD_VERSION) . ')~Uis';
		if (preg_match($regexp, $response['body'], $matches)) {
			$changelog = (array) preg_split('~[\r\n]+~', trim($matches[1]));
			$path = dirname( __FILE__ );
			$path = ltrim( str_replace( '\\', '/', str_replace( rtrim( ABSPATH, '\\\/' ), '', $path ) ), '\\\/' );
			$path = site_url() . '/' . $path;
			echo '<div style="margin-top:5px">';
			echo '<span style="color: #a00000; font-weight:bold;"><img src="'.$path.'/img/newver.jpg" style="vertical-align:middle;margin-right:3px"/> '.__('These are the improvements of the new version', 'wangguard').':</span>';
			$ul = false;
			foreach ($changelog as $index => $line) {
				if (preg_match('~^\s*\*\s*~', $line)) {
					if (!$ul) {
						echo '<ul style="list-style: disc; margin-left: 20px; font-weight:normal; margin-top:5px">';
						$ul = true;
					}
					$line = preg_replace('~^\s*\*\s*~', '', htmlspecialchars($line));
					echo '<li>' . $line . '</li>';
				} else {
					if ($ul) {
						echo '</ul><div style="clear: left;"></div>';
						$ul = false;
					}
					echo '<p style="margin: 5px 0;">' . htmlspecialchars($line) . '</p>';
				}
			}
			if ($ul) {
				echo '</ul>';
			}
			echo '</div>';
		}
	}
}
add_action('in_plugin_update_message-' . WANGGUARD_PLUGIN_FILE, 'wangguard_plugin_update_message');
//dashboard right now activity
function wangguard_rightnow() {
	if (function_exists('is_multisite')) {
		if ((is_multisite() && !is_super_admin()) || (!current_user_can('level_10')))
			return;
	}
	else {
		if (!current_user_can('level_10'))
			return;
	}
	$stats = get_site_option("wangguard_stats");
	if (!is_array($stats)) {
		$stats = array("check"=>0 , "detected"=>0);
	}
	$rightnow = sprintf(__('WangGuard has checked %d users, and detected %d Sploggers.' , 'wangguard') , $stats['check'] , $stats['detected']);
	echo "<p class='wangguard-right-now'>$rightnow</p>\n";
}
add_action('rightnow_end', 'wangguard_rightnow');
/********************************************************************/
/*** NOTICES & RIGHT NOW ENDS ***/
/********************************************************************/
/********************************************************************/
/*** QUEUE COLUMNS DEF BEGINS ***/
/********************************************************************/
function wangguard_page_wangguard_queue_headers($v) {
	return array(
		'cb'   => '<input type="checkbox" />',
		'username'  => __( 'Username' ),
		'wgtype'  => __( 'Type' , "wangguard" ),
		'email'   => __( 'E-mail' ),
		'wgreported_by' => __( 'Reported by' , 'wangguard' ),
		'wgreported_on' => __( 'Reported on' , 'wangguard' ),
		'wgstatus' => __( 'WangGuard Status' , 'wangguard' )
	);
}
add_filter("manage_wangguard_page_wangguard_queue_columns", "wangguard_page_wangguard_queue_headers" );
add_filter("manage_wangguard_page_wangguard_queue-network_columns", "wangguard_page_wangguard_queue_headers" );
/********************************************************************/
/*** QUEUE COLUMNS DEF ENDS ***/
/********************************************************************/
/********************************************************************/
/*** USERS COLUMNS DEF BEGINS ***/
/********************************************************************/
function wangguard_page_wangguard_users_headers($v) {
	$cols = array(
		'cb'   => '<input type="checkbox" />',
		'info'   => __( 'Info' , 'wangguard' ),
		'username'  => __( 'Username' , 'wangguard' ),
		'name'   => __( 'Name' , 'wangguard' ),
		'email'   => __( 'E-mail' , 'wangguard' ),
		'user_registered'=> __( 'Signed up on' , 'wangguard' ),
		'from_ip'=>  __( 'User IP' , 'wangguard' ),
		'posts'   => __( 'Posts' , 'wangguard' ),
		'blogs'   => __( 'Sites' , 'wangguard' ),
		'groups'        => __( 'Admin Group' , 'wangguard' ),
		'wgstatus'  => __( 'WangGuard Status' , 'wangguard' )
	);
	if ( ! wangguard_is_multisite() ) {
		unset($cols['blogs']);
	}
	if ( ! class_exists('BP_Groups_member') ){
		unset($cols['groups']);
	}
	return $cols;
}
add_filter("manage_wangguard_page_wangguard_users_columns", "wangguard_page_wangguard_users_headers" );
add_filter("manage_wangguard_page_wangguard_users-network_columns", "wangguard_page_wangguard_users_headers" );
/********************************************************************/
/*** USERS COLUMNS DEF ENDS ***/
/********************************************************************/
/********************************************************************/
/*** USER SCREEN ACTION & COLS BEGINS ***/
/********************************************************************/
//Add the WangGuard status column
function wangguard_add_status_column($columns) {
	$columns['wangguardstatus'] = __("WangGuard Status", 'wangguard');
	return $columns;
}
function wangguard_wpmu_custom_columns($column_name , $userid) {
	wangguard_user_custom_columns('' , $column_name , $userid , true);
}
function wangguard_user_custom_columns($dummy , $column_name , $userid , $echo = false ) {
	global $wpdb;
	$html = "";
	if ($column_name == 'wangguardstatus' ) {
		$table_name = $wpdb->base_prefix . "wangguarduserstatus";
		$status = $wpdb->get_var( $wpdb->prepare("select user_status from $table_name where ID = %d" , $userid) );
		if (empty ($status)) {
			$html = '<span class="wangguard-status-no-status wangguardstatus-'.$userid.'">'. __('No status', 'wangguard') .'</span>';
		}
		elseif ($status == 'not-checked') {
			$html = '<span class="wangguard-status-not-checked wangguardstatus-'.$userid.'">'. __('Not checked', 'wangguard') .'</span>';
		}
		elseif ($status == 'reported') {
			$html = '<span class="wangguard-status-splogguer wangguardstatus-'.$userid.'">'. __('Reported as Splogger', 'wangguard') .'</span>';
		}
		elseif ($status == 'autorep') {
			$html = '<span class="wangguard-status-splogguer wangguardstatus-'.$userid.'">'. __('Automatically reported as Splogger', 'wangguard') .'</span>';
		}
		elseif ($status == 'checked') {
			$html = '<span class="wangguard-status-checked wangguardstatus-'.$userid.'">'. __('Checked', 'wangguard') .'</span>';
		}
		elseif ($status == 'force-checked') {
			$html = '<span class="wangguard-status-checked wangguardstatus-'.$userid.'">'. __('Checked (forced)', 'wangguard') .'</span>';
		}
		elseif ($status == 'buyer') {
			$html = '<span class="wangguard-status-buyer wangguardstatus-'.$userid.'">'. __('Buyer', 'wangguard') .'</span>';
		}
		elseif ($status == 'whitelisted') {
			$html = '<span class="wangguard-status-whitelisted wangguardstatus-'.$userid.'">'. __('Whitelisted', 'wangguard') .'</span>';
		}
		elseif (substr($status , 0 , 5) == 'error') {
			$html = '<span class="wangguard-status-error wangguardstatus-'.$userid.'">'. __('Error', 'wangguard') . " - " . substr($status , 6) . '</span>';
		}
		else {
			$html = '<span class="wangguardstatus-'.$userid.'">'. $status . '</span>';
		}
		$user_object = new WP_User($userid);
		$Domain = explode("@",$user_object->user_email);
		$Domain = isset( $Domain[1] ) ? $Domain[1] : '';
		$deleteUser = get_site_option ("wangguard-delete-users-on-report")=='1';
		$html .= "<br/><div class=\"row-actions\">";
		if ( !wangguard_is_admin($user_object) ) {
			$rollbackStyle = (($status == 'reported') || ($status == 'autorep')) ? "" : "style='display:none'";
			$reportStyle = (($status == 'reported') || ($status == 'autorep')) ? "style='display:none'" : "";
			$html .= '<a href="javascript:void(0)" '.$rollbackStyle.' rel="'.$user_object->ID.'" class="wangguard-rollback">'.esc_html(__('Not a Splogger', 'wangguard')).'</a>';
			if (($deleteUser && current_user_can( 'delete_users' )) || !$deleteUser)
				$html .= '<a href="javascript:void(0)" '.$reportStyle.' rel="'.$user_object->ID.'" class="wangguard-splogger">'.esc_html(__('Splogger', 'wangguard')).'</a>';
			$html .= " | ";
			//$html .= '<a href="javascript:void(0)" rel="'.$user_object->ID.'" class="wangguard-domain">'.esc_html(__('Report Domain', 'wangguard')).'</a> | ';
			$html .= '<a href="javascript:void(0)" rel="'.$user_object->ID.'" class="wangguard-recheck">'.esc_html(__('Recheck', 'wangguard')).'</a> | ';
			$html .= '<a href="http://'.$Domain.'" class="wangguard-open-web" id="wangguard-open-web-'.$userid.'" title="'.htmlentities($Domain).'" target="_new">'.esc_html(__('Open Web', 'wangguard')).'</a>';
		}
		$html .= "</div>";
		if ($echo)
			echo $html;
		else
			return $html;
	}
	else {
		return $dummy;
	}
}
add_filter('manage_users_columns', 'wangguard_add_status_column');
add_filter('wpmu_users_columns', 'wangguard_add_status_column');
//If called from ms-admin, call wpmu handler (2 params), else the 3 params func
if (($wuangguard_parent == 'ms-users.php') || ($wuangguard_parent == 'wpmu-users.php'))
	add_action('manage_users_custom_column', 'wangguard_wpmu_custom_columns', 10, 2);
else
	add_action('manage_users_custom_column', 'wangguard_user_custom_columns', 10, 3);
/********************************************************************/
/*** USER SCREEN ACTION & COLS ENDS ***/
/********************************************************************/
/********************************************************************/
/*** POSTS SCREEN ACTION & COLS BEGINS ***/
/********************************************************************/
if (get_site_option ("wangguard-report-posts")==1)
	add_filter('post_row_actions','wangguard_post_row_actions',10,2);
function wangguard_post_row_actions($actions , $post) {
	$user_object = new WP_User($post->post_author);
	$deleteUser = get_site_option ("wangguard-delete-users-on-report")=='1';
	if ( ((current_user_can( 'delete_users' ) && $deleteUser) || !$deleteUser) && !wangguard_is_admin($user_object) )
		$actions[] = '<a href="javascript:void(0)" rel="'.$post->post_author.'" class="wangguard-splogger">'.esc_html(__('Splogger', 'wangguard')).'</a>';
	return $actions;
}
/********************************************************************/
/*** POSTS SCREEN ACTION & COLS ENDS ***/
/********************************************************************/
function func_wangguard_reg() {
	// Code
	if ( ! is_user_logged_in() && ! wangguard_is_multisite() ) {
		echo "<div>";
		wp_login_form();
		$websiteURL = get_site_url();
		echo "</div>";
		echo "<div><form name='registerform' action='" . $websiteURL . "/wp-login.php?action=register' method='post'>
	<fieldset>
		<label>Username
		<input type='text' name='user_login' value='' /></label>
		<label>E-mail
		<input type='text' name='user_email' value='' /></label>
		<input type='hidden' name='redirect_to' value='' />
		<input type='submit' name='wp-submit' />
	</fieldset>
</form></div>";
	} else if ( ! is_user_logged_in() && wangguard_is_multisite() ) {
			echo "<div>";
			wp_login_form();
			echo "</div>";
		} else {
		echo "Ya estás identificado";
	}
}
add_shortcode( 'wangguard_reg', 'func_wangguard_reg' );
?>