wp-access-area.php
1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
if( !is_plugin_active( 'wp-access-areas/wp-access-areas.php' ) ){
return;
}
class ACUI_WP_Access_Area{
function __construct(){
}
function hooks(){
add_filter( 'acui_restricted_fields', array( $this, 'restricted_fields' ), 10, 1 );
add_action( 'post_acui_import_single_user', array( $this, 'import' ), 10, 3 );
}
function restricted_fields( $acui_restricted_fields ){
return array_merge( $acui_restricted_fields, array( 'wp-access-areas' ) );
}
function import( $headers, $row, $user_id ){
$pos = array_search( 'wp-access-areas', $headers );
if( $pos === FALSE )
return;
$wpaa_labels = WPAA_AccessArea::get_available_userlabels();
$active_labels = array_map( 'trim', explode( "#", $row[ $pos ] ) );
foreach( $wpaa_labels as $wpa_label ){
if( in_array( $wpa_label->cap_title , $active_labels )){
$this->set_cap_for_user( $wpa_label->capability , $user_object , true );
}
else{
$this->set_cap_for_user( $wpa_label->capability , $user_object , false );
}
}
}
function set_cap_for_user( $capability , &$user , $add ) {
$has_cap = $user->has_cap( $capability );
$is_change = ($add && ! $has_cap) || (!$add && $has_cap);
if ( $is_change ) {
if ( $add ) {
$user->add_cap( $capability , true );
do_action( 'wpaa_grant_access' , $user , $capability );
do_action( "wpaa_grant_{$capability}" , $user );
} else if ( ! $add ) {
$user->remove_cap( $capability );
do_action( 'wpaa_revoke_access' , $user , $capability );
do_action( "wpaa_revoke_{$capability}" , $user );
}
}
}
}
$acui_wp_access_area = new ACUI_WP_Access_Area();
$acui_wp_access_area->hooks();