PluginProbe
ManageWP Worker / 3.9.9
ManageWP Worker v3.9.9
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.9, at user.class.php

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