Advertisement
Guest User

Instructor.php

a guest
Jun 27th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.35 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4.  * Class Instructor
  5.  * @package TUTOR
  6.  *
  7.  * @since v.1.0.0
  8.  */
  9.  
  10. namespace TUTOR;
  11.  
  12. if ( ! defined( 'ABSPATH' ) )
  13.     exit;
  14.  
  15.  
  16. class Instructor {
  17.  
  18.     protected $error_msgs = '';
  19.     public function __construct() {
  20.         add_action('template_redirect', array($this, 'register_instructor'));
  21.         add_action('template_redirect', array($this, 'apply_instructor'));
  22.  
  23.         //Add instructor from admin panel.
  24.         add_action('wp_ajax_tutor_add_instructor', array($this, 'add_new_instructor'));
  25.     }
  26.  
  27.     /**
  28.      * Register new user and mark him as instructor
  29.      *
  30.      * @since v.1.0.0
  31.      */
  32.     public function register_instructor(){
  33.         if ( ! isset($_POST['tutor_action'])  ||  $_POST['tutor_action'] !== 'tutor_register_instructor' ){
  34.             return;
  35.         }
  36.         //Checking nonce
  37.         tutor_utils()->checking_nonce();
  38.  
  39.         $required_fields = apply_filters('tutor_instructor_registration_required_fields', array(
  40.             'first_name'                => __('First name field is required', 'tutor'),
  41.             'last_name'                 =>  __('Last name field is required', 'tutor'),
  42.             'email'                     => __('E-Mail field is required', 'tutor'),
  43.             'user_login'                => __('User Name field is required', 'tutor'),
  44.             'password'                  => __('Password field is required', 'tutor'),
  45.             'password_confirmation'     => __('Password Confirmation field is required', 'tutor'),
  46.         ));
  47.  
  48.         $validation_errors = array();
  49.         foreach ($required_fields as $required_key => $required_value){
  50.             if (empty($_POST[$required_key])){
  51.                 $validation_errors[$required_key] = $required_value;
  52.             }
  53.         }
  54.  
  55.         if (!filter_var(tutor_utils()->input_old('email'), FILTER_VALIDATE_EMAIL)) {
  56.             $validation_errors['email'] = __('Valid E-Mail is required', 'tutor');
  57.         }
  58.         if (tutor_utils()->input_old('password') !== tutor_utils()->input_old('password_confirmation')){
  59.             $validation_errors['password_confirmation'] = __('Confirm password does not matched with Password field', 'tutor');
  60.         }
  61.  
  62.         if (count($validation_errors)){
  63.             $this->error_msgs = $validation_errors;
  64.             add_filter('tutor_instructor_register_validation_errors', array($this, 'tutor_instructor_form_validation_errors'));
  65.             return;
  66.         }
  67.  
  68.         $first_name     = sanitize_text_field(tutor_utils()->input_old('first_name'));
  69.         $last_name      = sanitize_text_field(tutor_utils()->input_old('last_name'));
  70.         $email          = sanitize_text_field(tutor_utils()->input_old('email'));
  71.         $user_login     = sanitize_text_field(tutor_utils()->input_old('user_login'));
  72.         $password       = sanitize_text_field(tutor_utils()->input_old('password'));
  73.  
  74.         $userdata = array(
  75.             'user_login'    =>  $user_login,
  76.             'user_email'    =>  $email,
  77.             'first_name'    =>  $first_name,
  78.             'last_name'     =>  $last_name,
  79.             //'role'          =>  tutor()->instructor_role,
  80.             'user_pass'     =>  $password,
  81.         );
  82.  
  83.         $user_id = wp_insert_user( $userdata ) ;
  84.         if ( ! is_wp_error($user_id)){
  85.             update_user_meta($user_id, '_is_tutor_instructor', time());
  86.             update_user_meta($user_id, '_tutor_instructor_status', apply_filters('tutor_initial_instructor_status', 'pending'));
  87.  
  88.             $user = get_user_by( 'id', $user_id );
  89.             if( $user ) {
  90.                 wp_set_current_user( $user_id, $user->user_login );
  91.                 wp_set_auth_cookie( $user_id );
  92.             }
  93.         }else{
  94.             $this->error_msgs = $user_id->get_error_messages();
  95.             add_filter('tutor_instructor_register_validation_errors', array($this, 'tutor_instructor_form_validation_errors'));
  96.             return;
  97.         }
  98.  
  99.         wp_redirect(tutor_utils()->input_old('_wp_http_referer'));
  100.         die();
  101.     }
  102.  
  103.     public function tutor_instructor_form_validation_errors(){
  104.         return $this->error_msgs;
  105.     }
  106.  
  107.     /**
  108.      *
  109.      * Usage for instructor applying when a user already logged in
  110.      *
  111.      * @since v.1.0.0
  112.      */
  113.     public function apply_instructor(){
  114.         if ( ! isset($_POST['tutor_action'])  ||  $_POST['tutor_action'] !== 'tutor_apply_instructor' ){
  115.             return;
  116.         }
  117.         //Checking nonce
  118.         tutor_utils()->checking_nonce();
  119.  
  120.         $user_id = get_current_user_id();
  121.         if ($user_id){
  122.             if (tutor_utils()->is_instructor()){
  123.                 die(__('Already applied for instructor', 'tutor'));
  124.             }else{
  125.                 update_user_meta($user_id, '_is_tutor_instructor', time());
  126.                 update_user_meta($user_id, '_tutor_instructor_status', apply_filters('tutor_initial_instructor_status', 'pending'));
  127.             }
  128.         }else{
  129.             die(__('Permission denied', 'tutor'));
  130.         }
  131.  
  132.         wp_redirect(tutor_utils()->input_old('_wp_http_referer'));
  133.         die();
  134.     }
  135.  
  136.  
  137.     public function add_new_instructor(){
  138.         $required_fields = apply_filters('tutor_instructor_registration_required_fields', array(
  139.             'first_name'                => __('First name field is required', 'tutor'),
  140.             'last_name'                 =>  __('Last name field is required', 'tutor'),
  141.             'email'                     => __('E-Mail field is required', 'tutor'),
  142.             'user_login'                => __('User Name field is required', 'tutor'),
  143.             'phone_number'              => __('Phone Number field is required', 'tutor'),
  144.             'password'                  => __('Password field is required', 'tutor'),
  145.             'password_confirmation'     => __('Password Confirmation field is required', 'tutor'),
  146.         ));
  147.  
  148.         $validation_errors = array();
  149.         foreach ($required_fields as $required_key => $required_value){
  150.             if (empty($_POST[$required_key])){
  151.                 $validation_errors[$required_key] = $required_value;
  152.             }
  153.         }
  154.  
  155.         if (!filter_var(tutor_utils()->input_old('email'), FILTER_VALIDATE_EMAIL)) {
  156.             $validation_errors['email'] = __('Valid E-Mail is required', 'tutor');
  157.         }
  158.         if (tutor_utils()->input_old('password') !== tutor_utils()->input_old('password_confirmation')){
  159.             $validation_errors['password_confirmation'] = __('Confirm password does not matched with Password field', 'tutor');
  160.         }
  161.  
  162.         if (count($validation_errors)){
  163.             wp_send_json_error(array('errors' => $validation_errors));
  164.         }
  165.  
  166.         $first_name     = sanitize_text_field(tutor_utils()->input_old('first_name'));
  167.         $last_name      = sanitize_text_field(tutor_utils()->input_old('last_name'));
  168.         $email          = sanitize_text_field(tutor_utils()->input_old('email'));
  169.         $user_login     = sanitize_text_field(tutor_utils()->input_old('user_login'));
  170.         $phone_number   = sanitize_text_field(tutor_utils()->input_old('phone_number'));
  171.         $password       = sanitize_text_field(tutor_utils()->input_old('password'));
  172.         $tutor_profile_bio = wp_kses_post(tutor_utils()->input_old('tutor_profile_bio'));
  173.  
  174.         $userdata = apply_filters('add_new_instructor_data', array(
  175.             'user_login'    =>  $user_login,
  176.             'user_email'    =>  $email,
  177.             'first_name'    =>  $first_name,
  178.             'last_name'     =>  $last_name,
  179.             'role'          =>  tutor()->instructor_role,
  180.             'user_pass'     =>  $password,
  181.         ));
  182.  
  183.         do_action('tutor_add_new_instructor_before');
  184.  
  185.         $user_id = wp_insert_user( $userdata ) ;
  186.         if ( ! is_wp_error($user_id)) {
  187.             update_user_meta($user_id, 'phone_number', $phone_number);
  188.             update_user_meta($user_id, 'description', $tutor_profile_bio);
  189.             update_user_meta($user_id, '_tutor_profile_bio', $tutor_profile_bio);
  190.             update_user_meta($user_id, '_is_tutor_instructor', time());
  191.             update_user_meta($user_id, '_tutor_instructor_status', apply_filters('tutor_initial_instructor_status', 'approved'));
  192.  
  193.             do_action('tutor_add_new_instructor_after', $user_id);
  194.  
  195.             wp_send_json_success(array('msg' => __('Instructor has been added successfully', 'tutor') ));
  196.         }
  197.  
  198.         wp_send_json_error(array('errors' => $user_id));
  199.     }
  200.  
  201. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement