ms-user.php
3.2 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<?php
class CPAC_Storage_Model_MS_User extends CPAC_Storage_Model {
/**
* Constructor
*
* @since 2.0
*/
function __construct() {
$this->key = 'wp-ms_users';
$this->label = __( 'Network Users' );
$this->type = 'user';
$this->meta_type = 'user';
$this->page = 'users';
$this->menu_type = 'other';
// headings
add_filter( "wpmu_users_columns", array( $this, 'add_headings' ), 100 );
// values
add_filter( 'manage_users_custom_column', array( $this, 'manage_value_callback' ), 100, 3 );
parent::__construct();
}
/**
* @since 2.0
* @return string Link
*/
protected function get_screen_link() {
return network_admin_url( $this->page . '.php' );
}
/**
* Get WP default supported admin columns per post type.
*
* @see CPAC_Type::get_default_columns()
* @since 1.0
*
* @return array
*/
public function get_default_columns() {
if ( ! function_exists('_get_list_table') ) {
return array();
}
// You can use this filter to add third_party columns by hooking into this.
do_action( "cac/columns/default/storage_key={$this->key}" );
// get columns
$table = _get_list_table( 'WP_MS_Users_List_Table', array( 'screen' => 'users' ) );
$columns = (array) $table->get_columns();
if ( $this->is_settings_page() ) {
$columns = array_merge( get_column_headers( 'users' ), $columns );
}
return $columns;
}
/**
* Get original columns
*
* @since 2.4.4
*/
public function get_default_column_names() {
return array( 'cb', 'username', 'name', 'email', 'registered', 'blogs', 'posts', 'role' );
}
/**
* Manage value
*
* @since 2.0.2
*
* @param string $column_name
* @param int $user_id
* @param string $value
*/
public function manage_value( $column_name, $user_id, $value = '' ) {
// get column instance
$column = $this->get_column_by_name( $column_name );
if ( ! $column )
return $value;
// get value
$custom_value = $column->get_value( $user_id );
// make sure it absolutely empty and check for (string) 0
if ( ! empty( $custom_value ) || '0' === $custom_value ) {
$value = $custom_value;
}
// filters
$value = apply_filters( "cac/column/value", $value, $user_id, $column, $this->key );
$value = apply_filters( "cac/column/value/{$this->type}", $value, $user_id, $column, $this->key );
return $value;
}
/**
* Callback Manage value
*
* @since 2.0.2
*
* @param string $value
* @param string $column_name
* @param int $user_id
*/
public function manage_value_callback( $value, $column_name, $user_id ) {
return $this->manage_value( $column_name, $user_id, $value );
}
/**
* Get Meta
*
* @see CPAC_Columns::get_meta_keys()
* @since 2.0
*
* @return array
*/
public function get_meta() {
global $wpdb;
if ( $cache = wp_cache_get( $this->key, 'cac_columns' ) ) {
$result = $cache;
}
else {
$result = $wpdb->get_results( "SELECT DISTINCT meta_key FROM {$wpdb->usermeta} ORDER BY 1", ARRAY_N );
wp_cache_add( $this->key, $result, 'cac_columns', 10 ); // 10 sec.
}
return $result;
}
}