| 1 |
<?php |
| 2 |
/** |
| 3 |
* Role Manager. |
| 4 |
* |
| 5 |
* Create, Edit & Delete roles. |
| 6 |
* |
| 7 |
* @since 1.0.0 |
| 8 |
*/ |
| 9 |
|
| 10 |
namespace Whols\Admin; |
| 11 |
|
| 12 |
/** |
| 13 |
* Role_Manager class. |
| 14 |
*/ |
| 15 |
class Role_Manager{ |
| 16 |
/** |
| 17 |
* Role mannager constructor. |
| 18 |
* |
| 19 |
* @since 1.0.0 |
| 20 |
*/ |
| 21 |
public function __construct() { |
| 22 |
add_action( 'created_whols_role_cat', array( $this, 'create_role' ), 10, 2 ); |
| 23 |
add_action( 'delete_whols_role_cat', array( $this, 'delete_role' ), 10, 4 ); |
| 24 |
add_action( 'post_updated', array( $this, 'update_user_role' ), 10, 3 ); |
| 25 |
} |
| 26 |
|
| 27 |
/** |
| 28 |
* Create a new role |
| 29 |
* |
| 30 |
* @since 1.0.0 |
| 31 |
*/ |
| 32 |
public function create_role( $term_id, $tt_id ){ |
| 33 |
$term_obj = get_term( $term_id, 'whols_role_cat' ); |
| 34 |
add_role( $term_obj->slug, $term_obj->name . esc_html__( ' - Whols Role', 'whols' ), array( 'read' => true, 'level_0' => true ) ); |
| 35 |
} |
| 36 |
|
| 37 |
/** |
| 38 |
* Update user role |
| 39 |
* |
| 40 |
* @since 1.0.0 |
| 41 |
*/ |
| 42 |
public function update_user_role( $post_ID ){ |
| 43 |
if( get_post_type( $post_ID ) == 'whols_user_request' ){ |
| 44 |
$meta_prev = get_post_meta( $post_ID, 'whols_user_request_meta', true ); |
| 45 |
$meta_new = isset( $_POST['whols_user_request_meta'] ) ? array_map( 'sanitize_text_field', $_POST['whols_user_request_meta'] ) : array(); |
| 46 |
|
| 47 |
$user_id = $meta_prev['user_id']; |
| 48 |
$assign_role_new = array_key_exists( $meta_new['assign_role'], whols_get_taxonomy_terms( 'whols_role_cat' )) ? $meta_new['assign_role'] : 'subscriber'; |
| 49 |
$status_new = isset( $meta_new['status'] ) ? $meta_new['status'] : ''; |
| 50 |
|
| 51 |
// update role when previous role & new role is not same |
| 52 |
if( $assign_role_new && $status_new == 'approve' ){ |
| 53 |
|
| 54 |
$user = new \WP_User( $user_id ); |
| 55 |
|
| 56 |
// remove all roles |
| 57 |
$user->set_role(''); |
| 58 |
|
| 59 |
// add new role |
| 60 |
$user->set_role( $assign_role_new ); |
| 61 |
|
| 62 |
|
| 63 |
} else if( $status_new == 'reject' || empty( $assign_role_new ) ){ |
| 64 |
$user = new \WP_User( $user_id ); |
| 65 |
|
| 66 |
// remove all roles |
| 67 |
$user->set_role(''); |
| 68 |
|
| 69 |
// add subscriber role |
| 70 |
$user->set_role('subscriber'); |
| 71 |
} |
| 72 |
} |
| 73 |
} |
| 74 |
|
| 75 |
/** |
| 76 |
* Delete role |
| 77 |
* |
| 78 |
* @since 1.0.0 |
| 79 |
*/ |
| 80 |
public function delete_role( $term_id, $tt_id, $deleted_term_id, $object_ids ){ |
| 81 |
$term_obj = get_term( $deleted_term_id, 'whols_role_cat' ); |
| 82 |
remove_role( $term_obj->slug ); |
| 83 |
} |
| 84 |
} |