PluginProbe
ManageWP Worker / 3.9.26
ManageWP Worker v3.9.26
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.26, at user.class.php

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