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