HEX
Server: nginx/1.18.0
System: Linux vcwordpress 5.15.0-174-generic #184-Ubuntu SMP Fri Mar 13 18:41:50 UTC 2026 x86_64
User: root (0)
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: /var/www/info.viitorcloud.in/wp-content/plugins/expire-users/includes/expire-users.php
<?php

class Expire_Users {

	var $admin;
	var $cron;
	var $settings;
	var $user;

	public function __construct() {
		$this->cron = new Expire_Users_Cron();
		$this->admin = new Expire_User_Admin();
		add_filter( 'authenticate', array( $this, 'authenticate' ), 100, 3 );
		add_filter( 'allow_password_reset', array( $this, 'allow_password_reset' ), 10, 2 );
		add_filter( 'shake_error_codes', array( $this, 'shake_error_codes' ) );
		add_action( 'init', array( $this, 'logout_expired_logged_in_user' ) );
		add_action( 'register_form', array( $this, 'register_form' ) );
		add_action( 'user_register', array( $this, 'user_register' ) );
		add_action( 'expire_users_expired', array( $this, 'handle_on_expire_default_to_role' ) );
		add_action( 'expire_users_expired', array( $this, 'handle_on_expire_user_reset_password' ) );
		add_action( 'expire_users_expired', array( $this, 'handle_on_expire_user_email' ) );
		add_action( 'expire_users_expired', array( $this, 'handle_on_expire_user_email_admin' ) );
		add_action( 'expire_users_expired', array( $this, 'handle_on_expire_user_remove_expiry' ) );
		add_filter( 'expire_users_email_notification_message', array( $this, 'email_notification_filter' ), 20, 2 );
		add_filter( 'expire_users_email_admin_notification_message', array( $this, 'email_notification_filter' ), 20, 2 );
		add_filter( 'expire_users_email_notification_subject', array( $this, 'email_notification_filter' ), 20, 2 );
		add_filter( 'expire_users_email_admin_notification_subject', array( $this, 'email_notification_filter' ), 20, 2 );
		add_filter( 'option_expire_users_notification_message', array( $this, 'default_expire_users_notification_message' ) );
		add_filter( 'option_expire_users_notification_admin_message', array( $this, 'default_expire_users_notification_admin_message' ) );
	}

	/**
	 * Logout Expired Logged In User
	 */
	public function logout_expired_logged_in_user() {

		if ( is_user_logged_in() ) {

			// Expire user if past expire date
			$user = new Expire_User( absint( get_current_user_id() ) );
			$expire = $user->maybe_expire();

			// Note expired date and logout
			if ( $expire ) {
				if ( $user->on_expire_user_remove_expiry ) {
					$user->remove_expire_date();
					$user->save_user();
				} else {
					$user->set_expire_timestamp( current_time( 'timestamp' ) );
					$user->save_user();
					wp_clear_auth_cookie();
				}
			}

		}

	}

	/**
	 * Register Form
	 * Adds a hidden field to the register form to flag that a new user should use
	 * the auto-expire settings.
	 */
	function register_form() {
		echo '<input type="hidden" name="expire_users" value="auto" />';
	}

	/**
	 * User Register
	 * Runs on user registration.
	 */
	function user_register( $user_id ) {
		if ( isset( $_POST['expire_users'] ) && 'auto' == $_POST['expire_users'] ) {

			$expire_settings = $this->admin->settings->get_default_expire_settings();

			$expire_data = array(
				'expire_user_date_type'         => $expire_settings['expire_user_date_type'],
				'expire_user_date_in_num'       => $expire_settings['expire_user_date_in_num'],
				'expire_user_date_in_block'     => $expire_settings['expire_user_date_in_block'],
				'expire_user_date_on_timestamp' => $expire_settings['expire_timestamp'],
				'expire_user_role'              => $expire_settings['expire_user_role'],
				'expire_user_reset_password'    => $expire_settings['expire_user_reset_password'],
				'expire_user_email'             => $expire_settings['expire_user_email'],
				'expire_user_email_admin'       => $expire_settings['expire_user_email_admin'],
				'expire_user_remove_expiry'     => $expire_settings['expire_user_remove_expiry']
			);

			$user = new Expire_User( $user_id );
			$user->set_expire_data( $expire_data );
			$user->save_user();
		}
	}

	/**
	 * Change role when user expires?
	 */
	function handle_on_expire_default_to_role( $expired_user ) {
		if ( $expired_user->on_expire_default_to_role ) {
			if ( get_role( $expired_user->on_expire_default_to_role ) ) {
				$u = new WP_User( $expired_user->user_id );
				$u->set_role( $expired_user->on_expire_default_to_role );
			}
		}
	}

	/**
	 * Generate random password when user expires?
	 */
	function handle_on_expire_user_reset_password( $expired_user ) {
		if ( $expired_user->on_expire_user_reset_password ) {
			$password = wp_generate_password( 12, false );
			wp_set_password( $password, $expired_user->user_id );
		}
	}

	/**
	 * Send notification email when user expires?
	 */
	function handle_on_expire_user_email( $expired_user ) {
		if ( $expired_user->on_expire_user_email ) {
			$u = new WP_User( $expired_user->user_id );
			$message = apply_filters( 'expire_users_email_notification_message', get_option( 'expire_users_notification_message' ), $expired_user );
			$subject = apply_filters( 'expire_users_email_notification_subject', __( 'Your login details to %%sitename%% have expired', 'expire-users' ), $expired_user );
			if ( ! empty( $subject ) && ! empty( $message ) ) {
				wp_mail( $u->user_email, $subject, $message );
			}
		}
	}

	/**
	 * Send admin notification email when user expires?
	 */
	function handle_on_expire_user_email_admin( $expired_user ) {
		if ( $expired_user->on_expire_user_email_admin ) {
			$message = apply_filters( 'expire_users_email_admin_notification_message', get_option( 'expire_users_notification_admin_message' ), $expired_user );
			$subject = apply_filters( 'expire_users_email_admin_notification_subject', __( 'Login details to %%sitename%% have expired (%%username%%)', 'expire-users' ), $expired_user );
			if ( ! empty( $subject ) && ! empty( $message ) ) {
				wp_mail( $this->get_admin_email(), $subject, $message );
			}
		}
	}

	/**
	 * Remove expiry details and continue to allow login when user expires?
	 */
	function handle_on_expire_user_remove_expiry( $expired_user ) {
		if ( $expired_user->on_expire_user_remove_expiry ) {
			$expired_user->remove_expire_date();
			$expired_user->save_user();
		}
	}

	/**
	 * Email notification filter
	 */
	function email_notification_filter( $message, $expired_user ) {
		$u = new WP_User( $expired_user->user_id );
		$message = str_replace( '%%name%%', $this->get_user_display_name( $u ), $message );
		$message = str_replace( '%%username%%', $u->user_login, $message );
		$message = str_replace( '%%expirydate%%', date_i18n( get_option( 'date_format' ) . ' @ ' . get_option( 'time_format' ), $expired_user->expire_timestamp ), $message );
		$message = str_replace( '%%sitename%%', get_bloginfo( 'name' ), $message );
		return $message;
	}

	/**
	 * Get Admin Email
	 *
	 * @since  1.0
	 *
	 * @return  string  Email address.
	 */
	function get_admin_email() {
		return apply_filters( 'expire_users_admin_email', get_bloginfo( 'admin_email' ) );
	}

	/**
	 * Get User Display Name
	 *
	 * Tries to retrieve user's real name, otherwise their display name.
	 * Defaults to username if neither exist.
	 *
	 * @since  0.7
	 *
	 * @param   object  $user  WP_User object.
	 * @return  string         Display name.
	 */
	function get_user_display_name( $user ) {
		if ( ! empty( $user->first_name ) ) {
			return trim( $user->first_name . ' ' . $user->last_name );
		} elseif ( ! empty( $user->user_nicename ) ) {
			return $user->user_nicename;
		}
		return $user->user_login;
	}

	function default_expire_users_notification_message( $value ) {
		if ( empty( $value ) ) {
			$value = __( 'Your access to %%sitename%% has expired.', 'expire-users' );
		}
		return $value;
	}

	function default_expire_users_notification_admin_message( $value ) {
		if ( empty( $value ) ) {
			$value = __( 'Access to %%sitename%% has expired for %%name%% (%%username%%) on %%expirydate%%', 'expire-users' );
		}
		return $value;
	}

	/**
	 * Authenticate
	 */
	function authenticate( $user, $username, $password ) {
		$checkuser = get_user_by( 'login', $username );
		if ( $checkuser ) {
			$u = new Expire_User( $checkuser->ID );
			$expired = $u->is_expired();
			if ( ! $expired ) {
				$expired = $u->maybe_expire();
			}
			if ( $expired ) {
				return new WP_Error( 'expire_users_expired', sprintf( '<strong>%s</strong> %s', __( 'ERROR:', 'expire-users' ), __( 'Your user details have expired.', 'expire-users' ) ) );
			}
		}
		return $user;
	}

	/**
	 * Allow Password Reset
	 */
	function allow_password_reset( $allow, $user_ID ) {
		$checkuser = get_user_by( 'ID', $user_ID );
		if ( $checkuser ) {
			$u = new Expire_User( $checkuser->ID );
			if ( $u->is_expired() ) {
				$allow = new WP_Error( 'expire_users_expired_password_reset', sprintf( '<strong>%s</strong> %s', __( 'ERROR:', 'expire-users' ), __( 'Your user details have expired so you are no longer able to reset your password.', 'expire-users' ) ) );
			}
		}
		return $allow;
	}

	/**
	 * Shake Error Codes
	 */
	function shake_error_codes( $shake_codes ){
		 $shake_codes[] = 'expire_users_expired';
		 $shake_codes[] = 'expire_users_expired_password_reset';
		 return $shake_codes;
	}

}