activity_types = include plugin_dir_path( ATKAI_PLUGIN_FILE ) . '/activities/types.php';
$this->logger = $logger;
add_action( 'wp_login', array( &$this, 'atk_user_login' ) );
//add_action( 'init', array( &$this, 'setup_user_actions' ) );
add_filter( 'wp_login_failed', array( &$this, 'atk_user_wrong' ), 10, 3 );
// add_filter('logout_redirect', array( &$this, 'atk_logout_redirect' ), 10, 3);
add_action('profile_update', array( &$this, 'atk_profile_update'), 10, 2);
add_action('set_user_role', array( &$this, 'atk_role_change'), 10, 3);
add_action('delete_user', array( &$this, 'atk_after_user_delete'), 10, 2);
add_action('remove_user_from_blog', array( &$this, 'atk_after_user_removed'), 10, 2);
}
public function setup_user_actions() {
add_action( 'clear_auth_cookie', array( &$this, 'atk_user_logout') );
}
public function atk_user_login( $user_login ) {
$activity_type = $this->activity_types['user']['login'];
$user = get_user_by('login', $user_login);
if ($user) {
$description = 'User login: Successful';
$user_id = $user->ID; // Get the user ID
$this->logger->insert_log(
$user_id,
'User',
$activity_type,
$description,
'login'
);
}
}
public function atk_user_logout(){
$current_user = wp_get_current_user();
$user_id = $current_user->ID;
$username = $current_user->user_login;
$username = !empty($username) ? $username : 'N/A';
$utils = new AtkUtils();
$current_url = $utils::get_current_url();
// skip on prompted to reauthenticate
if( empty($username) && strpos($current_url, 'reauth=1') !== false ) {
return;
}
$description = 'User logout: with username ' . $username . '';
$activity_type = $this->activity_types['user']['logout'];
$this->logger->insert_log(
$user_id,
'User',
$activity_type,
$description,
'logout'
);
}
public function atk_user_wrong( $user_login ) {
$username = esc_html( ( !empty($user_login) ) ? $user_login : 'unknown' );
$description = "User login: failed using username: $username ";
$activity_type = $this->activity_types['user']['failedin'];
$user_id = get_current_user_id(); // Get the current user ID
$this->logger->insert_log(
$user_id,
'User',
$activity_type,
$description,
'failedin'
);
}
public function atk_logout_redirect( $requested_redirect_to ) {
$redirect_url = (!empty($requested_redirect_to)) ? $requested_redirect_to : home_url();
// Get current user info
$current_user = wp_get_current_user();
$user_id = $current_user->ID;
$description = 'User Redirecting to Link ';
$activity_type = $this->activity_types['user']['logout'];
$this->logger->insert_log(
$user_id,
'User',
$activity_type,
$description,
'logout'
);
return $requested_redirect_to;
}
public function atk_profile_update($user_id, $old_user_data) {
$user = get_userdata($user_id);
$old_login = $old_user_data->user_login;
$new_login = $user->user_login;
$old_pass = $old_user_data->user_pass;
$new_pass = $user->user_pass;
$activity_type = $this->activity_types['user']['profile_edit'];
if ($old_pass !== $new_pass) {
$activity_type = $this->activity_types['user']['password_reset'];
$description = 'User profile updated: User password changed for username ' . $new_login . '';
} else if ($old_login !== $new_login) {
$description = 'User profile updated: User login changed from ' . $old_login . ' to ' . $new_login . '';
} else {
$description = 'User profile updated: for username ' . $new_login . '';
}
$user_id = get_current_user_id(); // Get the current user ID
$this->logger->insert_log(
$user_id,
'User',
$activity_type,
$description,
'profile_edit'
);
}
public function atk_role_change( $user_id, $role, $old_roles ) {
$user = get_userdata($user_id);
$user_login = $user->user_login;
$activity_type = $this->activity_types['user']['role_change'];
$description = "User profile updated: Role for user {$user_login} changed from " . implode(', ', $old_roles) . " to {$role}";
$user_id = get_current_user_id(); // Get the current user ID
$this->logger->insert_log(
$user_id,
'User',
$activity_type,
$description,
'role_change'
);
}
public function atk_after_user_delete ($user_id, $reassign) {
$user = get_userdata($user_id);
$user_login = $user->user_login;
$activity_type = $this->activity_types['user']['deletion'];
$description = "User profile updated: the user {$user_login} has been deleted";
$user_id = get_current_user_id(); // Get the current user ID
$this->logger->insert_log(
$user_id,
'User',
$activity_type,
$description,
'deletion'
);
}
public function atk_after_user_removed ($user_id, $blog_id) {
$user = get_userdata($user_id);
$user_login = $user->user_login;
$blog_details = get_blog_details(array('blog_id' => $blog_id));
$activity_type = $this->activity_types['user']['user_removed'];
$description = "User profile updated: the user {$user_login} removed from site {$blog_details->blogname} ";
$user_id = get_current_user_id(); // Get the current user ID
$this->logger->insert_log(
$user_id,
'User',
$activity_type,
$description,
'user_removed'
);
}
}