Sid Gifari File Manager
🏠 Root
/
home
/
genremedia08
/
thepassage.overlookedtracks.com
/
wp-content9
/
plugins
/
bp-better-messages
/
addons
/
Editing: users-block.php
<?php defined( 'ABSPATH' ) || exit; if ( !class_exists( 'Better_Messages_Block_Users' ) ){ class Better_Messages_Block_Users { public static function instance() { static $instance = null; if (null === $instance) { $instance = new Better_Messages_Block_Users(); } return $instance; } public function __construct(){ add_filter( 'better_messages_can_send_message', array( $this, 'disable_blocked_replies' ), 20, 3); add_action( 'better_messages_before_new_thread', array( $this, 'disable_start_thread_for_blocked_users' ), 20, 2 ); add_action( 'rest_api_init', array( $this, 'rest_api_init' ) ); add_filter( 'better_messages_rest_thread_item', array( $this, 'rest_thread_item'), 10, 4 ); add_filter( 'better_messages_rest_user_item', array( $this, 'rest_user_item'), 10, 4 ); add_filter( 'better_messages_user_config', array( $this, 'user_config_filter'), 11, 1 ); } public function user_config_filter( $settings ){ $user_id = Better_Messages()->functions->get_current_user_id(); if( $user_id > 0 ) { $settings[] = [ 'id' => 'bm_blocked_users', 'title' => _x('Blocked users', 'User settings screen', 'bp-better-messages'), 'type' => 'blocked_users', 'users' => $this->get_blocked_users(Better_Messages()->functions->get_current_user_id()) ]; } return $settings; } public function rest_api_init(){ register_rest_route( 'better-messages/v1', '/blockUser', array( 'methods' => 'POST', 'callback' => array( $this, 'block_user_ajax' ), 'permission_callback' => array( Better_Messages_Rest_Api(), 'is_user_authorized' ) ) ); register_rest_route( 'better-messages/v1', '/unblockUser', array( 'methods' => 'POST', 'callback' => array( $this, 'unblock_user_ajax' ), 'permission_callback' => array( Better_Messages_Rest_Api(), 'is_user_authorized' ) ) ); } public function rest_user_item( $item, $user_id, $include_personal ){ if( $include_personal && Better_Messages()->functions->get_current_user_id() !== $user_id ){ $item['blocked'] = (int) $this->is_user_blocked( Better_Messages()->functions->get_current_user_id(), $user_id ); $item['canBlock'] = (int) $this->can_block_user( Better_Messages()->functions->get_current_user_id(), $user_id ); } return $item; } public function rest_thread_item( $thread_item, $thread_id, $thread_type, $include_personal ){ if( $thread_type !== 'thread'){ return $thread_item; } if( $include_personal ){ if( $thread_item['participantsCount'] === 2 ) { $user_id = $thread_item['participants'][0]; $thread_item['permissions']['canBlockUser'] = $this->can_block_user( Better_Messages()->functions->get_current_user_id(), $user_id ); } } return $thread_item; } public function disable_start_thread_for_blocked_users(&$args, &$errors){ if( current_user_can('manage_options' ) ) { return null; } $recipients = $args['recipients']; if( ! is_array( $recipients ) ) $recipients = [ $recipients ]; foreach($recipients as $user_id) { if( Better_Messages()->functions->is_valid_user_id( $user_id ) ) { $is_blocked_1 = $this->is_user_blocked(Better_Messages()->functions->get_current_user_id(), $user_id ); if ($is_blocked_1) { $errors[] = sprintf(_x('%s blocked by you', 'Error when starting new thread but user blocked', 'bp-better-messages'), Better_Messages()->functions->get_name($user_id)); continue; } $is_blocked_2 = $this->is_user_blocked($user_id, Better_Messages()->functions->get_current_user_id()); if ($is_blocked_2) { $errors[] = sprintf(_x('%s blocked you', 'Error when starting new thread but user blocked', 'bp-better-messages'), Better_Messages()->functions->get_name($user_id)); continue; } } } } public function disable_blocked_replies( $allowed, $user_id, $thread_id ){ $current_user_id = Better_Messages()->functions->get_current_user_id(); if( ! Better_Messages()->functions->is_valid_user_id( $user_id ) ) { return $allowed; } $roles = Better_Messages()->functions->get_user_roles( $current_user_id ); if( in_array('administrator', $roles)){ return $allowed; } $thread_type = Better_Messages()->functions->get_thread_type( $thread_id ); if( $thread_type !== 'thread' ) return $allowed; $participants = Better_Messages()->functions->get_participants($thread_id); if( count($participants['recipients']) !== 1) return $allowed; $user_id_2 = array_pop($participants['recipients']); //var_dump( 'test' ); /** * Current user blocked other */ $is_blocked_1 = $this->is_user_blocked( Better_Messages()->functions->get_current_user_id(), $user_id_2 ); if( $is_blocked_1 ) { global $bp_better_messages_restrict_send_message; $bp_better_messages_restrict_send_message['user_blocked_messages'] = _x("You can't send message to user who was blocked by you", 'Message when user cant send message to user blocked by him' ,'bp-better-messages'); return false; } /** * Other user blocked current user */ $is_blocked_2 = $this->is_user_blocked( $user_id_2, Better_Messages()->functions->get_current_user_id() ); if( $is_blocked_2 ) { global $bp_better_messages_restrict_send_message; $bp_better_messages_restrict_send_message['user_blocked_messages'] = _x("You can't send message to user who blocked you", 'Message when user cant send message to user who blocked him' ,'bp-better-messages'); return false; } return $allowed; } public function block_user_ajax( WP_REST_Request $request ){ $blocked_user_id = intval( $request->get_param('user_id') ); wp_send_json($this->block_user( Better_Messages()->functions->get_current_user_id(), $blocked_user_id )); } public function unblock_user_ajax( WP_REST_Request $request ){ $blocked_user_id = intval( $request->get_param('user_id') ); wp_send_json($this->unblock_user( Better_Messages()->functions->get_current_user_id(), $blocked_user_id )); } public function get_blocked_users( $user_id ){ $blocked_users = Better_Messages()->functions->get_user_meta($user_id, 'bm_blocked_users', true); if( ! is_array( $blocked_users ) || empty( $blocked_users ) ) { $blocked_users = []; } return $blocked_users; } public function is_user_blocked( $user_id, $blocked_id ){ $blocked_users = $this->get_blocked_users( $user_id ); if( isset( $blocked_users[$blocked_id] ) ){ return true; } else { return false; } } public function block_user( $user_id, $blocked_id ){ $blocked_users = $this->get_blocked_users( $user_id ); $can_block = $this->can_block_user( $user_id, $blocked_id ); if( $can_block ) { $blocked_users[ $blocked_id ] = time(); Better_Messages()->functions->update_user_meta( $user_id, 'bm_blocked_users', $blocked_users ); return true; } else { return false; } } public function unblock_user( $user_id, $blocked_id ){ $blocked_users = $this->get_blocked_users( $user_id ); $can_unblock = $this->can_unblock_user( $user_id, $blocked_id ); if( $can_unblock ) { if( isset( $blocked_users[ $blocked_id ] ) ) { unset( $blocked_users[ $blocked_id ] ); } Better_Messages()->functions->update_user_meta( $user_id, 'bm_blocked_users', $blocked_users ); return true; } else { return false; } } public function can_block_user( $user_id, $blocked_id ){ $blocker_user_roles = Better_Messages()->functions->get_user_roles( $user_id ); $blocked_user_roles = Better_Messages()->functions->get_user_roles( $blocked_id ); $can_block = true; if( (int) $user_id === (int) $blocked_id ){ $can_block = false; } else if( count($blocked_user_roles) === 0 || (count($blocker_user_roles)) === 0 ) { $can_block = false; } else { /** * Administrator can't be blocked */ if ( in_array('administrator', $blocked_user_roles) || user_can( $blocked_id, 'bm_can_administrate' ) ) { $can_block = false; } if( count(Better_Messages()->settings['restrictBlockUsers']) > 0 ){ foreach( Better_Messages()->settings['restrictBlockUsers'] as $blockedRole ){ if( in_array( $blockedRole, $blocker_user_roles ) ){ $can_block = false; } } } if( count(Better_Messages()->settings['restrictBlockUsersImmun']) > 0 ){ foreach( Better_Messages()->settings['restrictBlockUsersImmun'] as $blockedRole ){ if( in_array( $blockedRole, $blocked_user_roles ) ){ $can_block = false; } } } /** * Administrator always can block */ if (in_array('administrator', $blocker_user_roles)) { $can_block = true; } } return apply_filters( 'bp_better_messages_can_block_user', $can_block, $user_id, $blocked_id ); } public function can_unblock_user( $user_id, $blocked_id ){ return apply_filters( 'bp_better_messages_can_unblock_user', true, $user_id, $blocked_id ); } } }
Save
Cancel