PluginProbe
ManageWP Worker / 3.9.21
ManageWP Worker v3.9.21
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.21, at user.class.php

215 lines 6.5 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 $temp_users = get_users($args);
65 $user = array();
66 foreach ((array)$temp_users as $temp){
67 $user['user_id'] = $temp->ID;
68 $user['user_login'] = $temp->user_login;
69 $user['wp_capabilities'] = array_keys($temp->$field);
70 $users[] = $user;
71 }
72
73 return array('users' => $users);
74 }
75
76 function add_user($args)
77 {
78
79 if(!function_exists('username_exists') || !function_exists('email_exists'))
80 include_once(ABSPATH . WPINC . '/registration.php');
81
82 if(username_exists($args['user_login']))
83 return array('error' => 'Username already exists');
84
85 if (email_exists($args['user_email']))
86 return array('error' => 'Email already exists');
87
88 if(!function_exists('wp_insert_user'))
89 include_once (ABSPATH . 'wp-admin/includes/user.php');
90
91 $user_id = wp_insert_user($args);
92
93 if($user_id){
94
95 if($args['email_notify']){
96 //require_once ABSPATH . WPINC . '/pluggable.php';
97 wp_new_user_notification($user_id, $args['user_pass']);
98 }
99 return $user_id;
100 }else{
101 return array('error' => 'User not added. Please try again.');
102 }
103
104 }
105
106 function edit_users($args){
107
108 if(empty($args))
109 return false;
110 if(!function_exists('get_user_to_edit'))
111 include_once (ABSPATH . 'wp-admin/includes/user.php');
112 if(!function_exists('wp_update_user'))
113 include_once (ABSPATH . WPINC.'/user.php');
114
115 extract($args);
116 //$args: $users, $new_role, $new_password, $user_edit_action
117
118 $return = array();
119 if(count($users)){
120 foreach($users as $user){
121 $result = '';
122 $user_obj = $this->mmb_get_user_info( $user );
123 if($user_obj != false){
124 switch($user_edit_action){
125 case 'change-password':
126 if($new_password){
127 $user_data = array();
128 $userdata['user_pass'] = $new_password;
129 $userdata['ID'] = $user_obj->ID;
130 $result = wp_update_user($userdata);
131 } else {
132 $result = array('error' => 'No password provided.');
133 }
134 break;
135 case 'change-role':
136 if($new_role){
137 if($user != $username){
138 if(!$this->last_admin($user_obj)){
139 $user_data = array();
140 $userdata['ID'] = $user_obj->ID;
141 $userdata['role'] = strtolower($new_role);
142 $result = wp_update_user($userdata);
143 } else {
144 $result = array('error' => 'Cannot change role to the only one left admin user.');
145 }
146 } else {
147 $result = array('error' => 'Cannot change role to user assigned for ManageWP.');
148 }
149 } else {
150 $result = array('error' => 'No role provided.');
151 }
152 break;
153 case 'delete-user':
154 if($user != $username){
155 if(!$this->last_admin($user_obj)){
156 if($reassign_user){
157 $to_user = $this->mmb_get_user_info( $reassign_user );
158 if($to_user != false){
159 $result = wp_delete_user($user_obj->ID, $to_user->ID);
160 } else {
161 $result = array('error' => 'User not deleted. User to reassign posts doesn\'t exist.');
162 }
163 } else {
164 $result = wp_delete_user($user_obj->ID);
165 }
166 } else {
167 $result = array('error' => 'Cannot delete the only one left admin user.');
168 }
169 } else {
170 $result = array('error' => 'Cannot delete user assigned for ManageWP.');
171 }
172
173 break;
174 default:
175 $result = array('error' => 'Wrong action provided. Please try again.');
176 break;
177 }
178 } else {
179 $result = array('error' => 'User not found.');
180 }
181
182 if(is_wp_error($result)){
183 $result = array('error' => $result->get_error_message());
184 }
185
186 $return[$user] = $result;
187 }
188 }
189
190 return $return;
191
192 }
193
194 //Check if user is the only one admin on the site
195 function last_admin($user_obj){
196 global $wpdb;
197 $field = $wpdb->prefix."capabilities";
198 $capabilities = array_map('strtolower',array_keys($user_obj->$field));
199 $result = count_users();
200 if(in_array('administrator',$capabilities)){
201
202 if(!function_exists('count_users')){
203 include_once (ABSPATH . WPINC. '/user.php');
204 }
205
206 $result = count_users();
207 if($result['avail_roles']['administrator'] == 1){
208 return true;
209 }
210 }
211 return false;
212 }
213
214 }
215 ?>