PluginProbe
ManageWP Worker / 3.9.12
ManageWP Worker v3.9.12
4.9.38 4.9.37 4.9.36 4.9.35 4.9.34 3.8.7 3.8.8 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.18 3.9.19 3.9.2 3.9.20 3.9.21 3.9.22 3.9.23 3.9.24 All 73 releases
worker / user.class.php

user.class.php in ManageWP Worker 3.9.12, at user.class.php

213 lines 6.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*************************************************************
3 *
4 * user.class.php
5 *
6 * Add Users
7 *
8 *
9 * Copyright (c) 2011 Prelovac Media
10 * www.prelovac.com
11 **************************************************************/
12
13 class MMB_User extends MMB_Core
14 {
15 function __construct()
16 {
17 parent::__construct();
18 }
19
20 function get_users($args){
21 global $wpdb;
22
23 //$args: $user_roles;
24 if(empty($args))
25 return false;
26
27 extract($args);
28
29 $userlevels = array();
30 $level_strings = array();
31 foreach($user_roles as $user_role){
32 switch(strtolower($user_role)){
33 case 'subscriber' : $userlevels[] = 0; $level_strings[] = $user_role; break;
34 case 'contributor' : $userlevels[] = 1; $level_strings[] = $user_role; break;
35 case 'author' : $userlevels[] = 2; $level_strings[] = $user_role; break;
36 case 'editor' : $userlevels[] = 7; $level_strings[] = $user_role; break;
37 case 'administrator' : $userlevels[] = 10; $level_strings[] = $user_role; break;
38 default: break;
39 }
40 }
41
42 $users = array();
43 $userlevel_qry = "('".implode("','",$userlevels)."')";
44 $userlevel_fallback_qry = "('%".implode("%','%",$level_strings)."%')";
45 $field = $wpdb->prefix."capabilities";
46
47 $user_metas = $wpdb->get_results("SELECT * from $wpdb->usermeta WHERE meta_key = '$field' AND meta_value IN $userlevel_fallback_qry");
48 if($user_metas == false || empty($user_metas)){
49 $user_metas = $wpdb->get_results("SELECT * from $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value IN $userlevel_qry");
50 }
51
52 $include = array();
53 if(is_array($user_metas) && !empty($user_metas)){
54 foreach($user_metas as $user_meta){
55 $include[] = $user_meta->user_id;
56 }
57 }
58
59 $args = array();
60 $args['include'] = $include;
61 $args['fields'] = 'all_with_meta';
62 $temp_users = get_users($args);
63 $user = array();
64 foreach ((array)$temp_users as $temp){
65 $user['user_id'] = $temp->ID;
66 $user['user_login'] = $temp->user_login;
67 $user['wp_capabilities'] = array_keys($temp->$field);
68 $users[] = $user;
69 }
70
71 return array('users' => $users);
72 }
73
74 function add_user($args)
75 {
76
77 if(!function_exists('username_exists') || !function_exists('email_exists'))
78 include_once(ABSPATH . WPINC . '/registration.php');
79
80 if(username_exists($args['user_login']))
81 return array('error' => 'Username already exists');
82
83 if (email_exists($args['user_email']))
84 return array('error' => 'Email already exists');
85
86 if(!function_exists('wp_insert_user'))
87 include_once (ABSPATH . 'wp-admin/includes/user.php');
88
89 $user_id = wp_insert_user($args);
90
91 if($user_id){
92
93 if($args['email_notify']){
94 //require_once ABSPATH . WPINC . '/pluggable.php';
95 wp_new_user_notification($user_id, $args['user_pass']);
96 }
97 return $user_id;
98 }else{
99 return array('error' => 'User not added. Please try again.');
100 }
101
102 }
103
104 function edit_users($args){
105
106 if(empty($args))
107 return false;
108 if(!function_exists('get_user_to_edit'))
109 include_once (ABSPATH . 'wp-admin/includes/user.php');
110 if(!function_exists('wp_update_user'))
111 include_once (ABSPATH . WPINC.'/user.php');
112
113 extract($args);
114 //$args: $users, $new_role, $new_password, $user_edit_action
115
116 $return = array();
117 if(count($users)){
118 foreach($users as $user){
119 $result = '';
120 $user_obj = $this->mmb_get_user_info( $user );
121 if($user_obj != false){
122 switch($user_edit_action){
123 case 'change-password':
124 if($new_password){
125 $user_data = array();
126 $userdata['user_pass'] = $new_password;
127 $userdata['ID'] = $user_obj->ID;
128 $result = wp_update_user($userdata);
129 } else {
130 $result = array('error' => 'No password provided.');
131 }
132 break;
133 case 'change-role':
134 if($new_role){
135 if($user != $username){
136 if(!$this->last_admin($user_obj)){
137 $user_data = array();
138 $userdata['ID'] = $user_obj->ID;
139 $userdata['role'] = strtolower($new_role);
140 $result = wp_update_user($userdata);
141 } else {
142 $result = array('error' => 'Cannot change role to the only one left admin user.');
143 }
144 } else {
145 $result = array('error' => 'Cannot change role to user assigned for ManageWP.');
146 }
147 } else {
148 $result = array('error' => 'No role provided.');
149 }
150 break;
151 case 'delete-user':
152 if($user != $username){
153 if(!$this->last_admin($user_obj)){
154 if($reassign_user){
155 $to_user = $this->mmb_get_user_info( $reassign_user );
156 if($to_user != false){
157 $result = wp_delete_user($user_obj->ID, $to_user->ID);
158 } else {
159 $result = array('error' => 'User not deleted. User to reassign posts doesn\'t exist.');
160 }
161 } else {
162 $result = wp_delete_user($user_obj->ID);
163 }
164 } else {
165 $result = array('error' => 'Cannot delete the only one left admin user.');
166 }
167 } else {
168 $result = array('error' => 'Cannot delete user assigned for ManageWP.');
169 }
170
171 break;
172 default:
173 $result = array('error' => 'Wrong action provided. Please try again.');
174 break;
175 }
176 } else {
177 $result = array('error' => 'User not found.');
178 }
179
180 if(is_wp_error($result)){
181 $result = array('error' => $result->get_error_message());
182 }
183
184 $return[$user] = $result;
185 }
186 }
187
188 return $return;
189
190 }
191
192 //Check if user is the only one admin on the site
193 function last_admin($user_obj){
194 global $wpdb;
195 $field = $wpdb->prefix."capabilities";
196 $capabilities = array_map('strtolower',array_keys($user_obj->$field));
197 $result = count_users();
198 if(in_array('administrator',$capabilities)){
199
200 if(!function_exists('count_users')){
201 include_once (ABSPATH . WPINC. '/user.php');
202 }
203
204 $result = count_users();
205 if($result['avail_roles']['administrator'] == 1){
206 return true;
207 }
208 }
209 return false;
210 }
211
212 }
213 ?>