PluginProbe
ShiftController Employee Shift Scheduling / 3.2.4
ShiftController Employee Shift Scheduling v3.2.4
4.9.97 4.9.96 4.9.95 4.9.74 4.9.75 4.9.76 4.9.77 4.9.78 4.9.84 4.9.85 4.9.87 4.9.91 4.9.92 trunk 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 3.2.4 All 38 releases
shiftcontroller / application / modules / wordpress / models / wordpress_user.php

wordpress_user.php in ShiftController Employee Shift Scheduling 3.2.4, at application/modules/wordpress/models/wordpress_user.php

223 lines 4.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 class Wordpress_User_HC_Model
3 {
4 private $count = array(
5 'success' => 0,
6 'archived' => 0,
7 );
8
9 public function get_last_count( $what = 'success' )
10 {
11 $return = 0;
12 if( isset($this->count[$what]) ){
13 $return = $this->count[$what];
14 }
15 return $return;
16 }
17
18 public function wp_roles()
19 {
20 global $wp_roles;
21 if( ! isset($wp_roles) ){
22 $wp_roles = new WP_Roles();
23 }
24 $return = $wp_roles->get_names();
25
26 $final_return = array();
27 foreach( $return as $k => $v ){
28 $k = str_replace(' ', '_', $k);
29 $final_return[ $k ] = $v;
30 }
31 return $final_return;
32 }
33
34 public function roles_convertion()
35 {
36 $return = array();
37 $wum = HC_App::model('wordpress_user');
38 $wordpress_roles = $wum->wp_roles();
39
40 $app_conf = HC_App::app_conf();
41
42 reset( $wordpress_roles );
43 foreach( $wordpress_roles as $role_value => $role_name ){
44
45 $k = 'wordpress_' . 'role_' . $role_value;
46 $user_level = $app_conf->get( $k );
47 $return[ $role_value ] = $user_level;
48 }
49 return $return;
50 }
51
52 public function sync_all( $config_roles = array() )
53 {
54 $this->count = array(
55 'success' => 0,
56 'archived' => 0,
57 );
58
59 $result = TRUE;
60 $processed_users = array();
61
62 $wum = HC_App::model('wordpress_user');
63 $wordpress_roles = $wum->wp_roles();
64
65 reset( $wordpress_roles );
66 foreach( $wordpress_roles as $role_value => $role_name ){
67 if( ! isset($config_roles['role_' . $role_value]) ){
68 continue;
69 }
70 $our_level = $config_roles['role_' . $role_value];
71 if( ! $our_level ){
72 continue;
73 }
74
75 $args = array(
76 'role' => $role_value,
77 );
78 $wordpress_users = get_users( $args );
79 foreach( $wordpress_users as $wuser ){
80 if( (! $role_value) && $wuser->roles ){
81 continue;
82 }
83 $this_result = $this->sync( $wuser->ID, $our_level );
84 if( $this_result === TRUE ){
85 $processed_users[] = $wuser->ID;
86 $this->count['success']++;
87 }
88 else {
89 if( ! is_array($result) ){
90 $result = array();
91 }
92 $result[$wuser->ID] = $this_result;
93 }
94 }
95 }
96
97 /* those that are deleted in WordPress make archived */
98 $um = HC_App::model('user');
99 if( ! $processed_users ){
100 $processed_users = array(0);
101 }
102 $um->where_not_in( 'id', $processed_users );
103 $um->update( 'active', $um->_const('STATUS_ARCHIVE') );
104 $archived_count = $um->db->affected_rows();
105 $this->count['archived'] = $archived_count;
106
107 return $result;
108 }
109
110 public function sync( $id, $force_level = NULL )
111 {
112 $roles_convertion = $this->roles_convertion();
113 $wuser = get_user_by( 'id', $id );
114
115 $user = HC_App::model('user');
116 $user
117 ->where('id', $id)
118 ->get()
119 ;
120 $is_new = $user->exists() ? FALSE : TRUE;
121
122 /* wuser deleted */
123 if( $wuser === FALSE ){
124 if( ! $is_new ){
125 $user->active = $user->_const('STATUS_ARCHIVE');
126 $user->save();
127 }
128 else {
129 // nothing
130 }
131 return TRUE;
132 }
133
134 /* wuser added or updated */
135 $user_level = '';
136 $wp_role = ( $wuser->roles && is_array($wuser->roles) && isset($wuser->roles[0]) ) ? $wuser->roles[0] : '';
137 if( $force_level ){
138 $user_level = $force_level;
139 }
140 else {
141 if( isset($roles_convertion[$wp_role]) ){
142 $user_level = $roles_convertion[$wp_role];
143 }
144 }
145 if( $wp_role == 'administrator' ){
146 $user_level = $user->_const('LEVEL_ADMIN');
147 }
148
149 $user->active = $user->_const('STATUS_ACTIVE');
150 if( $is_new ){
151 $user->active = $user->_const('STATUS_ACTIVE');
152 $user->id = $id;
153 if( ! $user_level )
154 return;
155
156 $user->level = $user_level;
157 $password = hc_random();
158 $user->password = $password;
159 $user->confirm_password = $password;
160 }
161 else {
162 if( $user_level ){
163 $user->level = $user_level;
164 }
165 else {
166 // $user->active = $user->_const('STATUS_ARCHIVE');
167 }
168 }
169
170 if( $wuser->user_firstname ){
171 $user->first_name = $wuser->user_firstname;
172 $user->last_name = $wuser->user_lastname;
173 }
174 else {
175 $user->first_name = $wuser->display_name;
176 }
177
178 /* just display name */
179 $user->first_name = $wuser->display_name;
180 $user->last_name = '';
181
182 if( $wuser->user_email ){
183 if( $is_new OR ($wuser->user_email != $user->email) ){
184 // check if this email already exists
185 $um = HC_App::model('user');
186 $um
187 ->where( 'email', $wuser->user_email )
188 ->get()
189 ;
190
191 if( $um->exists() ) {
192 if( $is_new ){
193 // update id in our table
194 $um->where('id', $um->id)->update('id', $id);
195 $user->id = $id;
196 }
197 else {
198 $user->id = $um->id;
199 }
200 $is_new = FALSE;
201 }
202 $user->email = $wuser->user_email;
203 }
204 }
205
206 $user->remove_validation( 'email' );
207 $user->remove_validation( 'username' );
208 $user->remove_validation( 'confirm_password' );
209
210 if(
211 ( $is_new && $user->save_as_new() )
212 OR
213 ( (! $is_new) && $user->save() )
214 ){
215 $return = TRUE;
216 }
217 else {
218 $return = $user->errors();
219 }
220 return $return;
221 }
222 }
223