PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 1.3.0
Tutor LMS – eLearning and online course solution v1.3.0
3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / classes / Student.php
tutor / classes Last commit date
Addons.php 7 years ago Admin.php 7 years ago Ajax.php 7 years ago Assets.php 7 years ago Course.php 7 years ago Gutenberg.php 7 years ago Instructor.php 7 years ago Instructors_List.php 7 years ago Lesson.php 7 years ago Options.php 7 years ago Post_types.php 7 years ago Q_and_A.php 7 years ago Question.php 7 years ago Question_Answers_List.php 7 years ago Quiz.php 7 years ago Quiz_Attempts_List.php 7 years ago Rewrite_Rules.php 7 years ago Shortcode.php 7 years ago Student.php 7 years ago Students_List.php 7 years ago Taxonomies.php 7 years ago Template.php 7 years ago Theme_Compatibility.php 7 years ago Tools.php 7 years ago Tutor.php 7 years ago TutorEDD.php 7 years ago Tutor_Base.php 7 years ago Tutor_List_Table.php 7 years ago User.php 7 years ago Utils.php 7 years ago Video_Stream.php 7 years ago Withdraw.php 7 years ago Withdraw_Requests_List.php 7 years ago WooCommerce.php 7 years ago
Student.php
224 lines
1 <?php
2
3 /**
4 * Class Instructor
5 * @package TUTOR
6 *
7 * @since v.1.0.0
8 */
9
10 namespace TUTOR;
11
12
13 class Student {
14
15 protected $error_msgs = '';
16 public function __construct() {
17 add_action('template_redirect', array($this, 'register_student'));
18 add_action('template_redirect', array($this, 'update_profile'));
19
20 add_filter('get_avatar_url', array($this, 'filter_avatar'), 10, 3);
21
22 add_action('tutor_action_tutor_reset_password', array($this, 'tutor_reset_password'));
23 }
24
25 /**
26 * Register new user and mark him as student
27 *
28 * @since v.1.0.0
29 */
30 public function register_student(){
31 if ( ! isset($_POST['tutor_action']) || $_POST['tutor_action'] !== 'tutor_register_student' ){
32 return;
33 }
34 //Checking nonce
35 tutor_utils()->checking_nonce();
36
37 $required_fields = apply_filters('tutor_student_registration_required_fields', array(
38 'first_name' => __('First name field is required', 'tutor'),
39 'last_name' => __('Last name field is required', 'tutor'),
40 'email' => __('E-Mail field is required', 'tutor'),
41 'user_login' => __('User Name field is required', 'tutor'),
42 'password' => __('Password field is required', 'tutor'),
43 'password_confirmation' => __('Password Confirmation field is required', 'tutor'),
44 ));
45
46 $validation_errors = array();
47 foreach ($required_fields as $required_key => $required_value){
48 if (empty($_POST[$required_key])){
49 $validation_errors[$required_key] = $required_value;
50 }
51 }
52
53 if (!filter_var(tutor_utils()->input_old('email'), FILTER_VALIDATE_EMAIL)) {
54 $validation_errors['email'] = __('Valid E-Mail is required', 'tutor');
55 }
56 if (tutor_utils()->input_old('password') !== tutor_utils()->input_old('password_confirmation')){
57 $validation_errors['password_confirmation'] = __('Confirm password does not matched with Password field', 'tutor');
58 }
59
60 if (count($validation_errors)){
61 $this->error_msgs = $validation_errors;
62 add_filter('tutor_student_register_validation_errors', array($this, 'tutor_student_form_validation_errors'));
63 return;
64 }
65
66 $first_name = sanitize_text_field(tutor_utils()->input_old('first_name'));
67 $last_name = sanitize_text_field(tutor_utils()->input_old('last_name'));
68 $email = sanitize_text_field(tutor_utils()->input_old('email'));
69 $user_login = sanitize_text_field(tutor_utils()->input_old('user_login'));
70 $password = sanitize_text_field(tutor_utils()->input_old('password'));
71
72 $userdata = array(
73 'user_login' => $user_login,
74 'user_email' => $email,
75 'first_name' => $first_name,
76 'last_name' => $last_name,
77 //'role' => tutor()->student_role,
78 'user_pass' => $password,
79 );
80
81 $user_id = wp_insert_user( $userdata ) ;
82 if ( ! is_wp_error($user_id)){
83 $user = get_user_by( 'id', $user_id );
84 if( $user ) {
85 wp_set_current_user( $user_id, $user->user_login );
86 wp_set_auth_cookie( $user_id );
87 }
88
89 $dashboard_url = tutor_utils()->tutor_dashboard_url();
90 wp_redirect($dashboard_url);
91 die();
92 }else{
93 $this->error_msgs = $user_id->get_error_messages();
94 add_filter('tutor_student_register_validation_errors', array($this, 'tutor_student_form_validation_errors'));
95 return;
96 }
97
98 $registration_page = tutor_utils()->student_register_url();
99 wp_redirect($registration_page);
100 die();
101 }
102
103 public function tutor_student_form_validation_errors(){
104 return $this->error_msgs;
105 }
106
107 public function update_profile(){
108 if ( ! isset($_POST['tutor_action']) || $_POST['tutor_action'] !== 'tutor_profile_edit' ){
109 return;
110 }
111
112 //Checking nonce
113 tutor_utils()->checking_nonce();
114
115 $user_id = get_current_user_id();
116 $first_name = sanitize_text_field(tutor_utils()->input_old('first_name'));
117 $last_name = sanitize_text_field(tutor_utils()->input_old('last_name'));
118 $phone_number = sanitize_text_field(tutor_utils()->input_old('phone_number'));
119 $tutor_profile_bio = wp_kses_post(tutor_utils()->input_old('tutor_profile_bio'));
120
121 $userdata = array(
122 'ID' => $user_id,
123 'first_name' => $first_name,
124 'last_name' => $last_name,
125 );
126 $user_id = wp_update_user( $userdata );
127
128 if ( ! is_wp_error( $user_id ) ) {
129 $_tutor_profile_photo = sanitize_text_field(tutor_utils()->avalue_dot('tutor_profile_photo_id', $_POST));
130
131 update_user_meta($user_id, 'phone_number', $phone_number);
132 update_user_meta($user_id, '_tutor_profile_bio', $tutor_profile_bio);
133 update_user_meta($user_id, '_tutor_profile_photo', $_tutor_profile_photo);
134 }
135
136 wp_redirect(wp_get_raw_referer());
137 die();
138 }
139
140 /**
141 * @param $url
142 * @param $id_or_email
143 * @param $args
144 *
145 * @return false|string
146 *
147 * Change avatar URL with Tutor User Photo
148 */
149
150 public function filter_avatar( $url, $id_or_email, $args){
151 global $wpdb;
152
153 $finder = false;
154
155 if ( is_numeric( $id_or_email ) ) {
156 $finder = absint( $id_or_email ) ;
157 } elseif ( is_string( $id_or_email ) ) {
158 $finder = $id_or_email;
159 } elseif ( $id_or_email instanceof WP_User ) {
160 // User Object
161 $finder = $id_or_email->ID;
162 } elseif ( $id_or_email instanceof WP_Post ) {
163 // Post Object
164 $finder = (int) $id_or_email->post_author;
165 } elseif ( $id_or_email instanceof WP_Comment ) {
166 return $url;
167 }
168
169 if ( ! $finder){
170 return $url;
171 }
172
173 $user_id = (int) $wpdb->get_var("SELECT ID FROM {$wpdb->users} WHERE ID = '{$finder}' OR user_email = '{$finder}' ");
174 if ($user_id){
175 $profile_photo = get_user_meta($user_id, '_tutor_profile_photo', true);
176 if ($profile_photo){
177 $url = wp_get_attachment_image_url($profile_photo, 'thumbnail');
178 }
179 }
180 return $url;
181 }
182
183 public function tutor_reset_password(){
184 //Checking nonce
185 tutor_utils()->checking_nonce();
186
187 $user = wp_get_current_user();
188
189 $previous_password = sanitize_text_field($_POST['previous_password']);
190 $new_password = sanitize_text_field($_POST['new_password']);
191 $confirm_new_password = sanitize_text_field($_POST['confirm_new_password']);
192
193 $previous_password_checked = wp_check_password( $previous_password, $user->user_pass, $user->ID);
194
195 $validation_errors = array();
196 if ( ! $previous_password_checked){
197 $validation_errors['incorrect_previous_password'] = __('Incorrect Previous Password', 'tutor');
198 }
199 if (empty($new_password)){
200 $validation_errors['new_password_required'] = __('New Password Required', 'tutor');
201 }
202 if (empty($confirm_new_password)){
203 $validation_errors['confirm_password_required'] = __('Confirm Password Required', 'tutor');
204 }
205 if ( $new_password !== $confirm_new_password){
206 $validation_errors['password_not_matched'] = __('New password and confirm password does not matched', 'tutor');
207 }
208 if (count($validation_errors)){
209 $this->error_msgs = $validation_errors;
210 add_filter('tutor_reset_password_validation_errors', array($this, 'tutor_student_form_validation_errors'));
211 return;
212 }
213
214 if ($previous_password_checked && ! empty($new_password) && $new_password === $confirm_new_password){
215 wp_set_password($new_password, $user->ID);
216 tutor_utils()->set_flash_msg('Password set successfully');
217 }
218
219 wp_redirect(wp_get_raw_referer());
220 die();
221 }
222
223
224 }