options()->get( 'secure_ban_admins_accounts' ) ) {
return;
}
if ( UM()->options()->get( 'secure_notify_admins_banned_accounts' ) ) {
$notification_interval = UM()->options()->get( 'secure_notify_admins_banned_accounts__interval' );
if ( 'instant' === $notification_interval ) {
return;
}
if ( 'hourly' === $notification_interval ) {
add_action( 'um_hourly_scheduled_events', array( $this, 'notify_administrators_hourly' ) );
} elseif ( 'daily' === $notification_interval ) {
add_action( 'um_daily_scheduled_events', array( $this, 'notify_administrators_daily' ) );
}
}
}
/**
* Notify Administrators hourly - Suspicious activities in an hour
*
* @since 2.6.8
*/
public function notify_administrators_hourly() {
$user_ids = get_users(
array(
'fields' => 'ids',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'um_user_blocked__timestamp',
'value' => gmdate( 'Y-m-d H:i:s', strtotime( '-1 hour' ) ),
'compare' => '>=',
'type' => 'DATETIME',
),
),
)
);
$this->send_notification( $user_ids );
}
/**
* Notify Administrators daily - Today's suspicious activity
*
* @since 2.6.8
*/
public function notify_administrators_daily() {
$user_ids = get_users(
array(
'fields' => 'ids',
'relation' => 'AND',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'um_user_blocked__timestamp',
'value' => gmdate( 'Y-m-d H:i:s', strtotime( '-1 day' ) ),
'compare' => '>=',
'type' => 'DATE',
),
array(
'key' => 'um_user_blocked__timestamp',
'value' => gmdate( 'Y-m-d H:i:s' ),
'compare' => '<=',
'type' => 'DATE',
),
),
)
);
$this->send_notification( $user_ids );
}
public function send_notification( $user_ids ) {
$banned_profile_links = '';
foreach ( $user_ids as $uid ) {
um_fetch_user( $uid );
$banned_profile_links .= UM()->user()->get_profile_link( $uid ) . ' ' . UM()->common()->users()->get_status( $uid ) . '
';
}
um_reset_user();
$emails = um_multi_admin_email();
if ( ! empty( $emails ) ) {
foreach ( $emails as $email ) {
UM()->maybe_action_scheduler()->enqueue_async_action(
'um_dispatch_email',
array(
$email,
'suspicious-activity',
array(
'admin' => true,
'tags' => array(
'{banned_profile_links}',
),
'tags_replace' => array(
$banned_profile_links,
),
),
)
);
}
}
}
/**
* Get the banned capabilities list.
*
* @return array
*/
public function get_banned_capabilities_list() {
/**
* Filters the banned capabilities for UM Register forms.
*
* @param {array} $capabilities WordPress Administrative Capabilities.
*
* @return {array} Banned admin capabilities.
*
* @since 2.6.8
* @hook um_secure_register_form_banned_capabilities
*
* @example