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