PluginProbe
ShiftController Employee Shift Scheduling / 2.2.4
ShiftController Employee Shift Scheduling v2.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 / controllers / admin / users.php

users.php in ShiftController Employee Shift Scheduling 2.2.4, at application/modules/wordpress/controllers/admin/users.php

241 lines 5.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
2
3 class Wordpress_Users_controller extends Backend_controller
4 {
5 function edit( $id )
6 {
7 // redirect to WP admin user edit
8 $link = get_edit_user_link( $id );
9 $this->redirect( $link );
10 exit;
11 }
12
13 function add()
14 {
15 // redirect to WP admin user add
16 $link = admin_url( 'user-new.php' );
17 $this->redirect( $link );
18 exit;
19 }
20
21 function sync()
22 {
23 $wum = new Wordpress_User_Model;
24 $wordpress_roles = $wum->wp_roles();
25 $this->data['wordpress_roles'] = $wordpress_roles;
26 $this->data['wordpress_count_users'] = count_users();
27
28 foreach( $wordpress_roles as $role_value => $role_name )
29 {
30 $field_name = 'role_' . $role_value;
31 $default = $this->app_conf->get( 'wordpress_' . $field_name );
32 $defaults[ $field_name ] = $default;
33 }
34 $this->hc_form->set_defaults( $defaults );
35
36 $this->set_include( 'sync', 'wordpress/admin/users' );
37 $this->load->view( $this->template, $this->data);
38 }
39
40 function syncrun()
41 {
42 $fields = array();
43 $validation = array();
44
45 $wum = new Wordpress_User_Model;
46 $wordpress_roles = $wum->wp_roles();
47 foreach( $wordpress_roles as $role_value => $role_name )
48 {
49 $field_name = 'role_' . $role_value;
50
51 $fields[] = $field_name;
52 $validation[] = array(
53 'field' => $field_name,
54 'label' => $role_name,
55 'rules' => 'trim|required'
56 );
57 }
58 $this->form_validation->set_rules( $validation );
59
60 if( $this->input->post() )
61 {
62 $post = array();
63 reset( $fields );
64 foreach( $fields as $f )
65 {
66 $post[$f] = $this->input->post($f);
67 }
68 $this->hc_form->set_defaults( $post );
69
70 if( $this->form_validation->run() == FALSE )
71 {
72 $errors = array();
73 reset( $fields );
74 foreach( $fields as $f )
75 {
76 $errors[$f] = form_error($f);
77 }
78 $this->hc_form->set_errors( $errors );
79 }
80 else
81 {
82 $append_role_name = $this->input->post('append_role_name');
83
84 /* save settings */
85 reset( $post );
86 foreach( $post as $k => $v )
87 {
88 $this->app_conf->set( 'wordpress_' . $k, $v );
89 }
90
91 $setup_ok = TRUE;
92
93 /* users */
94 $count_users = 0;
95 $processed_users = array();
96
97 /* this user */
98 $current_user = wp_get_current_user();
99 $user = new User_Model;
100 $user->get_by_id( $current_user->ID );
101
102 $user->email = $current_user->user_email;
103 if( $current_user->user_firstname )
104 {
105 $user->first_name = $current_user->user_firstname;
106 $user->last_name = $current_user->user_lastname;
107 }
108 else
109 {
110 $user->first_name = $current_user->display_name;
111 }
112
113 if( $append_role_name )
114 {
115 $wp_role = ( $current_user->roles && is_array($current_user->roles) && isset($current_user->roles[0]) ) ? $current_user->roles[0] : '';
116 if( strlen($wp_role) )
117 $user->first_name = '[' . $wp_role . '] ' . $user->first_name;
118 }
119 $user->level = USER_MODEL::LEVEL_ADMIN;
120
121 if( $user->save() )
122 {
123 $processed_users[] = $user->id;
124 $count_users++;
125 }
126 else
127 {
128 $setup_ok = FALSE;
129
130 $err_msg = array();
131 $err_msg[] = $current_user->user_email;
132 $err_msg = array_merge($err_msg, array_values($user->error->all) );
133 $this->session->set_flashdata( 'error', $err_msg );
134
135 ci_redirect( 'admin/users' );
136 return;
137 }
138
139 if( $setup_ok )
140 {
141 /* now by roles */
142 reset( $wordpress_roles );
143 foreach( $wordpress_roles as $role_value => $role_name )
144 {
145 $our_level = $post['role_' . $role_value];
146 if( ! $our_level )
147 continue;
148
149 $args = array(
150 'role' => $role_value,
151 'exclude' => $current_user->ID
152 );
153 $wordpress_users = get_users( $args );
154 foreach( $wordpress_users as $wuser )
155 {
156 if( (! $role_value) && $wuser->roles )
157 {
158 continue;
159 }
160
161 $user = new User_Model;
162 $user->get_by_id( $wuser->ID );
163 $is_new = $user->exists() ? FALSE : TRUE;
164
165 $user->email = $wuser->user_email;
166 $user->id = $wuser->ID;
167
168 if( $wuser->user_firstname )
169 {
170 $user->first_name = $wuser->user_firstname;
171 $user->last_name = $wuser->user_lastname;
172 }
173 else
174 {
175 $user->first_name = $wuser->display_name;
176 }
177
178 if( $append_role_name )
179 {
180 $wp_role = ( $wuser->roles && is_array($wuser->roles) && isset($wuser->roles[0]) ) ? $wuser->roles[0] : '';
181 if( strlen($wp_role) )
182 $user->first_name = '[' . $wp_role . '] ' . $user->first_name;
183 }
184
185 if( $is_new )
186 $user->password = hc_random();
187 $user->level = $our_level;
188
189 if(
190 ( $is_new && $user->save_as_new() )
191 OR
192 ( (! $is_new) && $user->save() )
193 )
194 {
195 $processed_users[] = $user->id;
196 $count_users++;
197 }
198 else
199 {
200 $setup_ok = FALSE;
201
202 $err_msg = array();
203 $err_msg[] = $wuser->user_email;
204 $err_msg = array_merge($err_msg, array_values($user->error->all) );
205 $this->session->set_flashdata( 'error', $err_msg );
206 ci_redirect( 'admin/users' );
207 return;
208 }
209 }
210 }
211
212 /* those that are deleted in WordPress make archived */
213 $um = new User_Model;
214 $um->where_not_in( 'id', $processed_users );
215 $um->update( 'active', USER_MODEL::STATUS_ARCHIVE );
216 $archived_count = $um->db->affected_rows();
217 }
218
219 if( $setup_ok )
220 {
221 $msg = 'Synchronized ' . $count_users . ' ';
222 $msg .= ($count_users > 1) ? 'users' : 'user';
223
224 if( $archived_count )
225 {
226 $msg .= '<br>Archived ' . $archived_count . ' ';
227 $msg .= ($archived_count > 1) ? 'users' : 'user';
228 }
229
230 $this->session->set_flashdata( 'message', $msg );
231 ci_redirect( 'admin/users' );
232 return;
233 }
234 }
235 }
236 return $this->sync();
237 }
238 }
239
240 /* End of file customers.php */
241 /* Location: ./application/controllers/admin/categories.php */