PluginProbe
Timetics – Appointment Booking Calendar & Scheduling / 1.0.38
Timetics – Appointment Booking Calendar & Scheduling v1.0.38
1.0.62 1.0.63 1.0.61 1.0.60 1.0.59 1.0.58 1.0.57 1.0.56 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.2 1.0.20 1.0.21 1.0.22 All 64 releases
← All changes | core/staffs/staff.php +28 -3 1.0.15 → 1.0.38 View file →
@@ -322,8 +322,23 @@
322 322 'role' => 'timetics-staff',
323 323 ];
324 324
325 325 $args = wp_parse_args( $args, $defaults );
326 +
327 + $email = ! empty( $args['user_email'] ) ? $args['user_email'] : '';
328 +
329 + if ( $email ) {
330 + $user['user_email'] = $email;
331 + }
332 +
333 + $user = get_user_by( 'email', $email );
334 +
335 + if ( $user && ! in_array( 'timetics-staff', $user->roles, true ) ) {
336 + $user->add_role( 'timetics-staff' );
337 +
338 + return $user->ID;
339 + }
340 +
326 341 $user_id = wp_insert_user( $args );
327 342
328 343 if ( ! is_wp_error( $user_id ) ) {
329 344 $this->set_id( $user_id );
@@ -339,21 +354,31 @@
339 354 *
340 355 * @return void
341 356 */
342 357 public function update( $args = [] ) {
343 - $user = get_userdata( $this->id )->to_array();
358 + $user = get_userdata( $this->id )->to_array();
359 + $email = ! empty( $args['user_email'] ) ? $args['user_email'] : '';
344 360
345 361 if ( ! empty( $args['user_pass'] ) ) {
346 362 $user['user_pass'] = $args['user_pass'];
347 363 }
348 364
349 - if ( ! empty( $args['email'] ) ) {
350 - $user['user_email'] = $args['email'];
365 + if ( $email ) {
366 + $user['user_email'] = $email;
351 367 }
352 368
369 + $user_data = get_user_by( 'email', $email );
370 +
371 + if ( $user_data && ! in_array( 'timetics-staff', $user_data->roles, true ) ) {
372 + $user_data->add_role( 'timetics-staff' );
373 +
374 + return $user_data->ID;
375 + }
376 +
353 377 $updated = wp_update_user( $user );
354 378
355 379 if ( ! is_wp_error( $updated ) ) {
380 +
356 381 $this->save_metadata( $args );
357 382 }
358 383
359 384 return $updated;