PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 1.7.3
Tutor LMS – eLearning and online course solution v1.7.3
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 5 years ago Admin.php 5 years ago Ajax.php 5 years ago Assets.php 5 years ago Course.php 5 years ago Course_Filter.php 5 years ago Course_Settings_Tabs.php 5 years ago Course_Widget.php 5 years ago Custom_Validation.php 5 years ago Dashboard.php 5 years ago Delete_Enrollment_With_Order.php 5 years ago Email.php 5 years ago FormHandler.php 5 years ago Frontend.php 5 years ago Gutenberg.php 5 years ago Instructor.php 5 years ago Instructors_List.php 5 years ago Lesson.php 5 years ago Options.php 5 years ago Post_types.php 5 years ago Private_Course_Access.php 5 years ago Q_and_A.php 5 years ago Question_Answers_List.php 5 years ago Quiz.php 5 years ago Quiz_Attempts_List.php 5 years ago RestAPI.php 5 years ago Rewrite_Rules.php 5 years ago Shortcode.php 5 years ago Student.php 5 years ago Students_List.php 5 years ago Taxonomies.php 5 years ago Template.php 5 years ago Theme_Compatibility.php 5 years ago Tools.php 5 years ago Tutor.php 5 years ago TutorEDD.php 5 years ago Tutor_Base.php 5 years ago Tutor_List_Table.php 5 years ago Tutor_Setup.php 5 years ago Upgrader.php 5 years ago User.php 5 years ago Utils.php 5 years ago Video_Stream.php 5 years ago Withdraw.php 5 years ago Withdraw_Requests_List.php 5 years ago WooCommerce.php 5 years ago
Student.php
255 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 if ( ! defined( 'ABSPATH' ) )
13 exit;
14
15
16 class Student {
17
18 protected $error_msgs = '';
19 public function __construct() {
20 add_action('template_redirect', array($this, 'register_student'));
21 add_action('template_redirect', array($this, 'update_profile'));
22 add_filter('get_avatar_url', array($this, 'filter_avatar'), 10, 3);
23 add_action('tutor_action_tutor_reset_password', array($this, 'tutor_reset_password'));
24 }
25
26 /**
27 * Register new user and mark him as student
28 *
29 * @since v.1.0.0
30 */
31 public function register_student(){
32 if ( tutils()->array_get('tutor_action', $_POST) !== 'tutor_register_student' ){
33 return;
34 }
35 //Checking nonce
36 tutor_utils()->checking_nonce();
37
38 $required_fields = apply_filters('tutor_student_registration_required_fields', array(
39 'first_name' => __('First name field is required', 'tutor'),
40 'last_name' => __('Last name field is required', 'tutor'),
41 'email' => __('E-Mail field is required', 'tutor'),
42 'user_login' => __('User Name field is required', 'tutor'),
43 'password' => __('Password field is required', 'tutor'),
44 'password_confirmation' => __('Password Confirmation field is required', 'tutor'),
45 ));
46
47
48 $validation_errors = array();
49
50 /*
51 *registration_errors
52 *push into validation_errors
53 */
54 $errors = apply_filters('registration_errors',new \WP_Error,'','');
55 foreach ($errors->errors as $key => $value)
56 {
57 $validation_errors[$key] = $value[0];
58
59 }
60
61 foreach ($required_fields as $required_key => $required_value){
62 if (empty($_POST[$required_key])){
63 $validation_errors[$required_key] = $required_value;
64 }
65 }
66
67 if (!filter_var(tutor_utils()->input_old('email'), FILTER_VALIDATE_EMAIL)) {
68 $validation_errors['email'] = __('Valid E-Mail is required', 'tutor');
69 }
70 if (tutor_utils()->input_old('password') !== tutor_utils()->input_old('password_confirmation')){
71 $validation_errors['password_confirmation'] = __('Confirm password does not matched with Password field', 'tutor');
72 }
73
74 if (count($validation_errors)){
75 $this->error_msgs = $validation_errors;
76 add_filter('tutor_student_register_validation_errors', array($this, 'tutor_student_form_validation_errors'));
77 return;
78 }
79
80 $first_name = sanitize_text_field(tutor_utils()->input_old('first_name'));
81 $last_name = sanitize_text_field(tutor_utils()->input_old('last_name'));
82 $email = sanitize_text_field(tutor_utils()->input_old('email'));
83 $user_login = sanitize_text_field(tutor_utils()->input_old('user_login'));
84 $password = sanitize_text_field(tutor_utils()->input_old('password'));
85
86 $userdata = array(
87 'user_login' => $user_login,
88 'user_email' => $email,
89 'first_name' => $first_name,
90 'last_name' => $last_name,
91 //'role' => tutor()->student_role,
92 'user_pass' => $password,
93 );
94
95 $user_id = wp_insert_user( $userdata ) ;
96 if ( ! is_wp_error($user_id)){
97 $user = get_user_by( 'id', $user_id );
98 if( $user ) {
99 wp_set_current_user( $user_id, $user->user_login );
100 wp_set_auth_cookie( $user_id );
101 }
102
103 do_action('tutor_after_student_signup', $user_id);
104
105 //Redirect page
106 $redirect_page = tutils()->array_get('redirect_to', $_REQUEST);
107 if ( ! $redirect_page){
108 $redirect_page = tutor_utils()->tutor_dashboard_url();
109 }
110 wp_redirect($redirect_page);
111 die();
112 }else{
113 $this->error_msgs = $user_id->get_error_messages();
114 add_filter('tutor_student_register_validation_errors', array($this, 'tutor_student_form_validation_errors'));
115 return;
116 }
117
118 $registration_page = tutor_utils()->student_register_url();
119 wp_redirect($registration_page);
120 die();
121 }
122
123 public function tutor_student_form_validation_errors(){
124 return $this->error_msgs;
125 }
126
127 public function update_profile(){
128 if (tutils()->array_get('tutor_action', $_POST) !== 'tutor_profile_edit' ){
129 return;
130 }
131
132 $user_id = get_current_user_id();
133
134 //Checking nonce
135 tutor_utils()->checking_nonce();
136 do_action('tutor_profile_update_before', $user_id);
137
138 $first_name = sanitize_text_field(tutor_utils()->input_old('first_name'));
139 $last_name = sanitize_text_field(tutor_utils()->input_old('last_name'));
140 $phone_number = sanitize_text_field(tutor_utils()->input_old('phone_number'));
141 $tutor_profile_bio = wp_kses_post(tutor_utils()->input_old('tutor_profile_bio'));
142
143 $display_name = sanitize_text_field(tutils()->input_old('display_name'));
144
145 $userdata = array(
146 'ID' => $user_id,
147 'first_name' => $first_name,
148 'last_name' => $last_name,
149 'display_name' => $display_name,
150 );
151 $user_id = wp_update_user( $userdata );
152
153 if ( ! is_wp_error( $user_id ) ) {
154 update_user_meta($user_id, 'phone_number', $phone_number);
155 update_user_meta($user_id, '_tutor_profile_bio', $tutor_profile_bio);
156
157 $tutor_user_social = tutils()->tutor_user_social_icons();
158 foreach ($tutor_user_social as $key => $social){
159 $user_social_value = sanitize_text_field(tutor_utils()->input_old($key));
160 if($user_social_value){
161 update_user_meta($user_id, $key, $user_social_value);
162 }else{
163 delete_user_meta($user_id, $key);
164 }
165 }
166 }
167 do_action('tutor_profile_update_after', $user_id);
168 wp_redirect(wp_get_raw_referer());
169 die();
170 }
171
172 /**
173 * @param $url
174 * @param $id_or_email
175 * @param $args
176 *
177 * @return false|string
178 *
179 * Change avatar URL with Tutor User Photo
180 */
181
182 public function filter_avatar( $url, $id_or_email, $args){
183 global $wpdb;
184
185 $finder = false;
186
187 if ( is_numeric( $id_or_email ) ) {
188 $finder = absint( $id_or_email ) ;
189 } elseif ( is_string( $id_or_email ) ) {
190 $finder = $id_or_email;
191 } elseif ( $id_or_email instanceof WP_User ) {
192 // User Object
193 $finder = $id_or_email->ID;
194 } elseif ( $id_or_email instanceof WP_Post ) {
195 // Post Object
196 $finder = (int) $id_or_email->post_author;
197 } elseif ( $id_or_email instanceof WP_Comment ) {
198 return $url;
199 }
200
201 if ( ! $finder){
202 return $url;
203 }
204
205 $user_id = (int) $wpdb->get_var("SELECT ID FROM {$wpdb->users} WHERE ID = '{$finder}' OR user_email = '{$finder}' ");
206 if ($user_id){
207 $profile_photo = get_user_meta($user_id, '_tutor_profile_photo', true);
208 if ($profile_photo){
209 $url = wp_get_attachment_image_url($profile_photo, 'thumbnail');
210 }
211 }
212 return $url;
213 }
214
215 public function tutor_reset_password(){
216 //Checking nonce
217 tutor_utils()->checking_nonce();
218
219 $user = wp_get_current_user();
220
221 $previous_password = sanitize_text_field($_POST['previous_password']);
222 $new_password = sanitize_text_field($_POST['new_password']);
223 $confirm_new_password = sanitize_text_field($_POST['confirm_new_password']);
224
225 $previous_password_checked = wp_check_password( $previous_password, $user->user_pass, $user->ID);
226
227 $validation_errors = array();
228 if ( ! $previous_password_checked){
229 $validation_errors['incorrect_previous_password'] = __('Incorrect Previous Password', 'tutor');
230 }
231 if (empty($new_password)){
232 $validation_errors['new_password_required'] = __('New Password Required', 'tutor');
233 }
234 if (empty($confirm_new_password)){
235 $validation_errors['confirm_password_required'] = __('Confirm Password Required', 'tutor');
236 }
237 if ( $new_password !== $confirm_new_password){
238 $validation_errors['password_not_matched'] = __('New password and confirm password does not matched', 'tutor');
239 }
240 if (count($validation_errors)){
241 $this->error_msgs = $validation_errors;
242 add_filter('tutor_reset_password_validation_errors', array($this, 'tutor_student_form_validation_errors'));
243 return;
244 }
245
246 if ($previous_password_checked && ! empty($new_password) && $new_password === $confirm_new_password){
247 wp_set_password($new_password, $user->ID);
248 tutor_utils()->set_flash_msg( __('Password set successfully', 'tutor') );
249 }
250
251 wp_redirect(wp_get_raw_referer());
252 die();
253 }
254
255 }