user_id = absint( $user_id );
$this->expire_timestamp = get_user_meta( $this->user_id, '_expire_user_date', true );
$expire_user_settings = get_user_meta( $this->user_id, '_expire_user_settings', true );
if ( isset( $expire_user_settings['default_to_role'] ) )
$this->on_expire_default_to_role = $expire_user_settings['default_to_role'];
if ( isset( $expire_user_settings['reset_password'] ) )
$this->on_expire_user_reset_password = $expire_user_settings['reset_password'];
if ( isset( $expire_user_settings['email'] ) )
$this->on_expire_user_email = $expire_user_settings['email'];
if ( isset( $expire_user_settings['email_admin'] ) )
$this->on_expire_user_email_admin = $expire_user_settings['email_admin'];
}
}
/**
* Set Expire Time In Future
*/
function set_expire_time_in_future( $amt, $unit = 'days' ) {
switch ( $unit ) {
case 'days':
$this->expire_timestamp = time() + ( 60 * 60 * 24 * $amt );
break;
case 'weeks':
$this->expire_timestamp = time() + ( 60 * 60 * 24 * 7 * $amt );
break;
case 'months':
$date = getdate();
$this->expire_timestamp = mktime( $date['hours'], $date['minutes'], $date['seconds'], $date['mon'] + $amt, $date['mday'], $date['year'] );
break;
case 'years':
$date = getdate();
$this->expire_timestamp = mktime( $date['hours'], $date['minutes'], $date['seconds'], $date['mon'], $date['mday'], $date['year'] + $amt );
break;
}
}
/**
* Set Expire Date
*/
function set_expire_date( $yyyy, $mm, $dd, $hrs = 0, $min = 0 ) {
$this->expire_timestamp = mktime( $hrs, $min, 0, $mm, $dd, $yyyy );
}
/**
* Set Expire Timestamp
*
* @todo Validate?
*/
function set_expire_timestamp( $timestamp ) {
$this->expire_timestamp = $timestamp;
}
/**
* Remove Expire Date
*/
function remove_expire_date() {
$this->expire_timestamp = null;
}
/**
* Get Expire Date Display
*
* @todo In up to 14 days, otherwise date
*/
function get_expire_date_display() {
$date = '';
$time = '';
if ( $this->expire_timestamp ) {
if ( $this->expire_timestamp > time() ) {
$format = __( 'Expires:', 'expire-users' ) . ' %1$s @ %2$s';
} else {
$format = __( 'Expired:', 'expire-users' ) . ' %1$s @ %2$s';
}
$date = date( 'M d, Y', $this->expire_timestamp );
$time = date( 'H:i', $this->expire_timestamp );
} else {
$format = __( 'Expire:', 'expire-users' ) . ' ' . __( 'never', 'expire-users' ) . '';
}
return sprintf( $format, $date, $time );
}
/**
* Set Default To Role
*
* @todo Check if valid role...
*/
function set_default_to_role( $role ) {
$this->on_expire_default_to_role = $role;
}
/**
* Maybe Expire
* If expire date is set and in past...
*/
function maybe_expire() {
if ( $this->expire_timestamp && time() > $this->expire_timestamp ) {
$this->expire();
}
}
/**
* Expire
*/
function expire() {
update_user_meta( $this->user_id, '_expire_user_expired', 'Y' );
do_action( 'expire_users_expired', $this );
}
/**
* Get User
*/
function get_user() {
//$this->user = ...
//$this->expire_timestamp = null;
//$this->on_expire_default_to_role = false;
//$this->on_expire_user_reset_password = false;
//$this->on_expire_user_email = false;
}
/**
* Save User
*/
function save_user() {
$expire_user_date = '';
if ( $this->expire_timestamp ) {
$expire_user_date = $this->expire_timestamp;
}
$expire_user_settings = array(
'default_to_role' => $this->on_expire_default_to_role,
'reset_password' => $this->true_or_false( $this->on_expire_user_reset_password ),
'email' => $this->true_or_false( $this->on_expire_user_email ),
'email_admin' => $this->true_or_false( $this->on_expire_user_email_admin )
);
$expire_user_expired = is_numeric( $expire_user_date ) ? 'N' : 'Y';
// Update User
update_user_meta( $this->user_id, '_expire_user_date', $expire_user_date );
update_user_meta( $this->user_id, '_expire_user_settings', $expire_user_settings );
if ( is_numeric( $expire_user_date ) ) {
if ( $expire_user_date < time() ) {
update_user_meta( $this->user_id, '_expire_user_expired', 'Y' );
} else {
update_user_meta( $this->user_id, '_expire_user_expired', 'N' );
}
} else {
delete_user_meta( $this->user_id, '_expire_user_expired' );
}
}
/**
* Set Expire Data
* Processes array of data and saves as class properties ready to be saved.
*
* @param array $data Post data.
*/
function set_expire_data( $data = null ) {
if ( isset( $data['expire_user_date_type'] ) ) {
switch ( $data['expire_user_date_type'] ) {
// In a specified amount of time
case 'in':
$this->set_expire_time_in_future(
absint( $data['expire_user_date_in_num'] ),
$data['expire_user_date_in_block']
);
break;
// On a specific date
case 'on':
if ( isset( $data['expire_user_date_on_timestamp'] ) ) {
$this->set_expire_timestamp( absint( $data['expire_user_date_on_timestamp'] ) );
} else {
$this->set_expire_date(
absint( $data['expire_user_date_on_yyyy'] ),
absint( $data['expire_user_date_on_mm'] ),
absint( $data['expire_user_date_on_dd'] ),
absint( $data['expire_user_date_on_hrs'] ),
absint( $data['expire_user_date_on_min'] )
);
}
break;
// Never
default:
$this->expire_timestamp = null;
break;
}
}
$this->set_default_to_role( $data['expire_user_role'] );
$this->on_expire_user_reset_password = isset( $data['expire_user_reset_password'] ) && $data['expire_user_reset_password'] == 'Y';
$this->on_expire_user_email = isset( $data['expire_user_email'] ) && $data['expire_user_email'] == 'Y';
$this->on_expire_user_email_admin = isset( $data['expire_user_email_admin'] ) && $data['expire_user_email_admin'] == 'Y';
}
/**
* True / False
* Used for saving true/false settings.
*
* @param $value True or false value. True values are 'Y', 1, or true
* @return (string) 'Y' or 'N'
*/
function true_or_false( $value ) {
if ( $value == 'Y' || $value == 1 || $value === true ) {
return true;
}
return false;
}
}
?>