PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 1.3.6
Tutor LMS – eLearning and online course solution v1.3.6
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
227 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
118 $user_id = get_current_user_id();
119 $first_name = sanitize_text_field(tutor_utils()->input_old('first_name'));
120 $last_name = sanitize_text_field(tutor_utils()->input_old('last_name'));
121 $phone_number = sanitize_text_field(tutor_utils()->input_old('phone_number'));
122 $tutor_profile_bio = wp_kses_post(tutor_utils()->input_old('tutor_profile_bio'));
123
124 $userdata = array(
125 'ID' => $user_id,
126 'first_name' => $first_name,
127 'last_name' => $last_name,
128 );
129 $user_id = wp_update_user( $userdata );
130
131 if ( ! is_wp_error( $user_id ) ) {
132 $_tutor_profile_photo = sanitize_text_field(tutor_utils()->avalue_dot('tutor_profile_photo_id', $_POST));
133
134 update_user_meta($user_id, 'phone_number', $phone_number);
135 update_user_meta($user_id, '_tutor_profile_bio', $tutor_profile_bio);
136 update_user_meta($user_id, '_tutor_profile_photo', $_tutor_profile_photo);
137 }
138
139 wp_redirect(wp_get_raw_referer());
140 die();
141 }
142
143 /**
144 * @param $url
145 * @param $id_or_email
146 * @param $args
147 *
148 * @return false|string
149 *
150 * Change avatar URL with Tutor User Photo
151 */
152
153 public function filter_avatar( $url, $id_or_email, $args){
154 global $wpdb;
155
156 $finder = false;
157
158 if ( is_numeric( $id_or_email ) ) {
159 $finder = absint( $id_or_email ) ;
160 } elseif ( is_string( $id_or_email ) ) {
161 $finder = $id_or_email;
162 } elseif ( $id_or_email instanceof WP_User ) {
163 // User Object
164 $finder = $id_or_email->ID;
165 } elseif ( $id_or_email instanceof WP_Post ) {
166 // Post Object
167 $finder = (int) $id_or_email->post_author;
168 } elseif ( $id_or_email instanceof WP_Comment ) {
169 return $url;
170 }
171
172 if ( ! $finder){
173 return $url;
174 }
175
176 $user_id = (int) $wpdb->get_var("SELECT ID FROM {$wpdb->users} WHERE ID = '{$finder}' OR user_email = '{$finder}' ");
177 if ($user_id){
178 $profile_photo = get_user_meta($user_id, '_tutor_profile_photo', true);
179 if ($profile_photo){
180 $url = wp_get_attachment_image_url($profile_photo, 'thumbnail');
181 }
182 }
183 return $url;
184 }
185
186 public function tutor_reset_password(){
187 //Checking nonce
188 tutor_utils()->checking_nonce();
189
190 $user = wp_get_current_user();
191
192 $previous_password = sanitize_text_field($_POST['previous_password']);
193 $new_password = sanitize_text_field($_POST['new_password']);
194 $confirm_new_password = sanitize_text_field($_POST['confirm_new_password']);
195
196 $previous_password_checked = wp_check_password( $previous_password, $user->user_pass, $user->ID);
197
198 $validation_errors = array();
199 if ( ! $previous_password_checked){
200 $validation_errors['incorrect_previous_password'] = __('Incorrect Previous Password', 'tutor');
201 }
202 if (empty($new_password)){
203 $validation_errors['new_password_required'] = __('New Password Required', 'tutor');
204 }
205 if (empty($confirm_new_password)){
206 $validation_errors['confirm_password_required'] = __('Confirm Password Required', 'tutor');
207 }
208 if ( $new_password !== $confirm_new_password){
209 $validation_errors['password_not_matched'] = __('New password and confirm password does not matched', 'tutor');
210 }
211 if (count($validation_errors)){
212 $this->error_msgs = $validation_errors;
213 add_filter('tutor_reset_password_validation_errors', array($this, 'tutor_student_form_validation_errors'));
214 return;
215 }
216
217 if ($previous_password_checked && ! empty($new_password) && $new_password === $confirm_new_password){
218 wp_set_password($new_password, $user->ID);
219 tutor_utils()->set_flash_msg('Password set successfully');
220 }
221
222 wp_redirect(wp_get_raw_referer());
223 die();
224 }
225
226
227 }