PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 1.8.5
Tutor LMS – eLearning and online course solution v1.8.5
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 / Admin.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 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
Admin.php
497 lines
1 <?php
2 namespace TUTOR;
3
4 /**
5 * Class Admin
6 * @package TUTOR
7 *
8 * @since v.1.0.0
9 */
10
11 if ( ! defined( 'ABSPATH' ) )
12 exit;
13
14 class Admin{
15 public function __construct() {
16 add_action('admin_menu', array($this, 'register_menu'));
17 //Force activate menu for necessary
18 add_filter('parent_file', array($this, 'parent_menu_active'));
19 add_filter('submenu_file', array($this, 'submenu_file_active'), 10, 2);
20
21 add_action('admin_init', array($this, 'filter_posts_for_instructors'));
22 add_action('load-post.php', array($this, 'check_if_current_users_post') );
23
24 add_action('admin_action_uninstall_tutor_and_erase', array($this, 'erase_tutor_data'));
25 add_filter('plugin_action_links_' . plugin_basename(TUTOR_FILE), array( $this, 'plugin_action_links' ) );
26
27 //Plugin Row Meta
28 add_filter('plugin_row_meta', array($this, 'plugin_row_meta'), 10, 2);
29
30 //Admin Footer Text
31 add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ), 1 );
32 //Register Course Widget
33 add_action( 'widgets_init', array($this, 'register_course_widget') );
34 }
35
36 public function register_menu(){
37 $hasPro = tutor()->has_pro;
38
39 $unanswered_questions = tutor_utils()->unanswered_question_count();
40 $unanswered_bubble = '';
41 if ($unanswered_questions){
42 $unanswered_bubble = '<span class="update-plugins count-'.$unanswered_questions.'"><span class="plugin-count">'.$unanswered_questions.'</span></span>';
43 }
44
45 $course_post_type = tutor()->course_post_type;
46
47 $pro_text = '';
48 if ($hasPro){
49 $pro_text = ' '.__('Pro', 'tutor');
50 }
51
52 $enable_course_marketplace = (bool) tutils()->get_option('enable_course_marketplace');
53
54 add_menu_page(__('Tutor LMS', 'tutor').$pro_text, __('Tutor LMS', 'tutor').$pro_text, 'manage_tutor_instructor', 'tutor', null,
55 'dashicons-welcome-learn-more', 2);
56 add_submenu_page('tutor', __('Categories', 'tutor'), __('Categories', 'tutor'), 'manage_tutor', 'edit-tags.php?taxonomy=course-category&post_type='.$course_post_type, null );
57
58 add_submenu_page('tutor', __('Tags', 'tutor'), __('Tags', 'tutor'), 'manage_tutor', 'edit-tags.php?taxonomy=course-tag&post_type='.$course_post_type, null );
59
60 add_submenu_page('tutor', __('Students', 'tutor'), __('Students', 'tutor'), 'manage_tutor', 'tutor-students', array($this, 'tutor_students') );
61
62 if ($enable_course_marketplace) {
63 add_submenu_page('tutor', __('Instructors', 'tutor'), __('Instructors', 'tutor'), 'manage_tutor', 'tutor-instructors', array($this, 'tutor_instructors'));
64 }
65
66 add_submenu_page('tutor', __('Announcements', 'tutor'), __('Announcements', 'tutor'), 'manage_tutor_instructor', 'tutor_announcements', array($this, 'tutor_announcements'));
67
68 add_submenu_page('tutor', __('Q & A', 'tutor'), __('Q & A '.$unanswered_bubble, 'tutor'), 'manage_tutor_instructor', 'question_answer', array($this, 'question_answer') );
69
70 add_submenu_page('tutor', __('Quiz Attempts', 'tutor'), __('Quiz Attempts', 'tutor'), 'manage_tutor_instructor', 'tutor_quiz_attempts',array($this, 'quiz_attempts') );
71
72 if ($enable_course_marketplace){
73 add_submenu_page('tutor', __('Withdraw Requests', 'tutor'), __('Withdraw Requests', 'tutor'), 'manage_tutor_instructor', 'tutor_withdraw_requests', array($this, 'withdraw_requests') );
74 }
75
76 add_submenu_page( 'tutor', __( 'Add-ons', 'tutor' ), __( 'Add-ons', 'tutor' ), 'manage_tutor', 'tutor-addons', array( $this, 'enable_disable_addons' ) );
77
78 do_action('tutor_admin_register');
79
80 add_submenu_page('tutor', __('Settings', 'tutor'), __('Settings', 'tutor'), 'manage_tutor', 'tutor_settings', array($this, 'tutor_page') );
81
82 add_submenu_page('tutor', __('Tools', 'tutor'), __('Tools', 'tutor'), 'manage_tutor', 'tutor-tools', array($this, 'tutor_tools') );
83
84 if ( ! $hasPro){
85 add_submenu_page( 'tutor', __( 'Get Pro', 'tutor' ), __( '<span class="dashicons dashicons-awards tutor-get-pro-text"></span> Get Pro', 'tutor' ), 'manage_options', 'tutor-get-pro', array($this, 'tutor_get_pro') );
86 }
87 }
88
89 public function tutor_page(){
90 $tutor_option = new Options();
91 echo apply_filters('tutor/options/generated-html', $tutor_option->generate());
92 }
93
94 public function tutor_students(){
95 include tutor()->path.'views/pages/students.php';
96 }
97
98 public function tutor_instructors(){
99 include tutor()->path.'views/pages/instructors.php';
100 }
101
102 public function tutor_announcements(){
103 include tutor()->path.'views/pages/announcements.php';
104 }
105
106 public function question_answer(){
107 include tutor()->path.'views/pages/question_answer.php';
108 }
109
110 public function quiz_attempts(){
111 include tutor()->path.'views/pages/quiz_attempts.php';
112 }
113
114 /**
115 * Show the withdraw requests table
116 *
117 * @since v.1.2.0
118 */
119 public function withdraw_requests(){
120 include tutor()->path.'views/pages/withdraw_requests.php';
121 }
122
123 public function enable_disable_addons(){
124
125 if (defined('TUTOR_PRO_VERSION')) {
126 include tutor()->path.'views/pages/enable_disable_addons.php';
127 }else{
128 include tutor()->path.'views/pages/tutor-pro-addons.php';
129 }
130 }
131
132 public function tutor_tools(){
133 $tutor_admin_tools_page = tutils()->array_get('tutor_admin_tools_page', $_GET);
134 if ($tutor_admin_tools_page){
135 include apply_filters('tutor_admin_tools_page', tutor()->path."views/pages/{$tutor_admin_tools_page}.php", $tutor_admin_tools_page);
136 }else{
137 $pages = apply_filters('tutor_tool_pages', array(
138 'tutor_pages' => array('title' => __('Tutor Pages', 'tutor') ),
139 'status' => __('Status', 'tutor'),
140 ));
141
142 $current_page = 'tutor_pages';
143 $requested_page = sanitize_text_field(tutils()->array_get('sub_page', $_GET));
144 if ($requested_page){
145 $current_page = $requested_page;
146 }
147
148 include tutor()->path.'views/pages/tools.php';
149 }
150 }
151
152 public function tutor_get_pro(){
153 include tutor()->path.'views/pages/get-pro.php';
154 }
155
156 public function parent_menu_active( $parent_file ){
157 $taxonomy = tutor_utils()->avalue_dot('taxonomy', $_GET);
158 if ($taxonomy === 'course-category' || $taxonomy === 'course-tag'){
159 return 'tutor';
160 }
161
162 return $parent_file;
163 }
164
165 public function submenu_file_active($submenu_file, $parent_file){
166 $taxonomy = tutor_utils()->avalue_dot('taxonomy', $_GET);
167 $course_post_type = tutor()->course_post_type;
168
169 if ($taxonomy === 'course-category'){
170 return 'edit-tags.php?taxonomy=course-category&post_type='.$course_post_type;
171 }
172 if ($taxonomy === 'course-tag'){
173 return 'edit-tags.php?taxonomy=course-tag&post_type='.$course_post_type;
174 }
175
176
177 return $submenu_file;
178 }
179
180 /**
181 * Filter posts for instructor
182 */
183 public function filter_posts_for_instructors(){
184 if ( ! current_user_can('administrator') && current_user_can(tutor()->instructor_role)){
185 @remove_menu_page( 'edit-comments.php' ); //Comments
186 add_filter( 'posts_clauses_request', array($this, 'posts_clauses_request') );
187 }
188 }
189
190 public function posts_clauses_request($clauses){
191
192 $user = wp_get_current_user();
193
194 if (in_array( 'administrator', $user->roles ) ) {
195 return $clauses;
196 }
197
198 global $wpdb;
199
200 $user_id = get_current_user_id();
201
202 $get_assigned_courses_ids = $wpdb->get_col($wpdb->prepare("SELECT meta_value from {$wpdb->usermeta} WHERE meta_key = '_tutor_instructor_course_id' AND user_id = %d", $user_id));
203 $own_courses = is_array($get_assigned_courses_ids) ? $get_assigned_courses_ids : array();
204 $in_query_pre = implode(',', $own_courses);
205
206 $custom_author_query = " AND ({$wpdb->posts}.post_type!='courses' OR {$wpdb->posts}.post_author = {$user_id} OR {$wpdb->posts}.ID IN({$in_query_pre})) ";
207
208 $clauses['where'] .= $custom_author_query;
209
210 return $clauses;
211 }
212
213 /**
214 * Prevent unauthorised course/lesson edit page by direct URL
215 *
216 * @since v.1.0.0
217 */
218 public function check_if_current_users_post(){
219 if (current_user_can('administrator') || ! current_user_can(tutor()->instructor_role)) {
220 return;
221 }
222
223 if (! empty($_GET['post']) ) {
224 $get_post_id = (int) sanitize_text_field($_GET['post']);
225 $get_post = get_post($get_post_id);
226 $tutor_post_types = array(tutor()->course_post_type, tutor()->lesson_post_type);
227
228 $current_user = get_current_user_id();
229
230 if (in_array($get_post->post_type, $tutor_post_types) && $get_post->post_author != $current_user){
231 global $wpdb;
232
233 $get_assigned_courses_ids = (int) $wpdb->get_var($wpdb->prepare(
234 "SELECT user_id
235 from {$wpdb->usermeta}
236 WHERE user_id = %d AND meta_key = '_tutor_instructor_course_id' AND meta_value = %d ", $current_user, $get_post_id));
237
238 if ( ! $get_assigned_courses_ids){
239 wp_die(__('Permission Denied', 'tutor'));
240 }
241
242 }
243 }
244 }
245
246 /**
247 * Status
248 */
249
250 public static function scan_template_files( $template_path = null ) {
251 if ( ! $template_path){
252 $template_path = tutor()->path.'templates/';
253 }
254
255 $files = @scandir( $template_path ); // @codingStandardsIgnoreLine.
256 $result = array();
257
258 if ( ! empty( $files ) ) {
259 foreach ( $files as $key => $value ) {
260 if ( ! in_array( $value, array( '.', '..', '.DS_Store' ), true ) ) {
261 if ( is_dir( $template_path . DIRECTORY_SEPARATOR . $value ) ) {
262 $sub_files = self::scan_template_files( $template_path . DIRECTORY_SEPARATOR . $value );
263 foreach ( $sub_files as $sub_file ) {
264 $result[] = $value . DIRECTORY_SEPARATOR . $sub_file;
265 }
266 } else {
267 $result[] = $value;
268 }
269 }
270 }
271 }
272 return $result;
273 }
274
275 /**
276 * @return array
277 *
278 *
279 */
280 public static function template_overridden_files(){
281 $template_files = self::scan_template_files();
282
283 $override_files = array();
284 foreach ($template_files as $file){
285 $file_path = null;
286 if (file_exists(trailingslashit(get_stylesheet_directory()).tutor()->template_path.$file)){
287 $file_path = $file;
288 }elseif (file_exists(trailingslashit(get_template_directory()).tutor()->template_path.$file)){
289 $file_path = $file;
290 }
291
292 if ($file_path){
293 $override_files[] = str_replace( WP_CONTENT_DIR.'/themes/', '', $file_path );
294 }
295 }
296
297 return $override_files;
298 }
299
300 public static function get_environment_info(){
301
302 // Figure out cURL version, if installed.
303 $curl_version = '';
304 if ( function_exists( 'curl_version' ) ) {
305 $curl_version = curl_version();
306 $curl_version = $curl_version['version'] . ', ' . $curl_version['ssl_version'];
307 }
308
309
310 // WP memory limit.
311 $wp_memory_limit = tutor_utils()->let_to_num(WP_MEMORY_LIMIT);
312 if ( function_exists( 'memory_get_usage' ) ) {
313 $wp_memory_limit = max( $wp_memory_limit, tutor_utils()->let_to_num( @ini_get( 'memory_limit' ) ) );
314 }
315
316 $database_version = tutor_utils()->get_db_version();
317
318 return array(
319 'home_url' => get_option( 'home' ),
320 'site_url' => get_option( 'siteurl' ),
321 'version' => tutor()->version,
322 'wp_version' => get_bloginfo( 'version' ),
323 'wp_multisite' => is_multisite(),
324 'wp_memory_limit' => $wp_memory_limit,
325 'wp_debug_mode' => ( defined( 'WP_DEBUG' ) && WP_DEBUG ),
326 'wp_cron' => ! ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ),
327 'language' => get_locale(),
328 'external_object_cache' => wp_using_ext_object_cache(),
329 'server_info' => isset( $_SERVER['SERVER_SOFTWARE'] ) ? wp_unslash( $_SERVER['SERVER_SOFTWARE'] ) : '',
330 'php_version' => phpversion(),
331 'php_post_max_size' => tutor_utils()->let_to_num( ini_get( 'post_max_size' ) ),
332 'php_max_execution_time' => ini_get( 'max_execution_time' ),
333 'php_max_input_vars' => ini_get( 'max_input_vars' ),
334 'curl_version' => $curl_version,
335 'suhosin_installed' => extension_loaded( 'suhosin' ),
336 'max_upload_size' => wp_max_upload_size(),
337 'mysql_version' => $database_version['number'],
338 'mysql_version_string' => $database_version['string'],
339 'default_timezone' => date_default_timezone_get(),
340 'fsockopen_or_curl_enabled' => ( function_exists( 'fsockopen' ) || function_exists( 'curl_init' ) ),
341 'soapclient_enabled' => class_exists( 'SoapClient' ),
342 'domdocument_enabled' => class_exists( 'DOMDocument' ),
343 'gzip_enabled' => is_callable( 'gzopen' ),
344 'mbstring_enabled' => extension_loaded( 'mbstring' ),
345 );
346 }
347
348
349 public function erase_tutor_data(){
350 global $wpdb;
351
352 $is_erase_data = tutor_utils()->get_option('delete_on_uninstall');
353 //=> Deleting Data
354
355 $plugin_file = tutor()->basename;
356 if ($is_erase_data && current_user_can( 'deactivate_plugin', $plugin_file )) {
357 /**
358 * Deleting Post Type, Meta Data, taxonomy
359 */
360 $course_post_type = tutor()->course_post_type;
361 $lesson_post_type = tutor()->lesson_post_type;
362
363 $post_types = array(
364 $course_post_type,
365 $lesson_post_type,
366 'tutor_quiz',
367 'tutor_enrolled',
368 'topics',
369 'tutor_enrolled',
370 'tutor_announcements',
371 );
372
373 $post_type_strings = "'".implode("','", $post_types)."'";
374 $tutor_posts = $wpdb->get_col("SELECT ID from {$wpdb->posts} WHERE post_type in({$post_type_strings}) ;");
375
376 if (is_array($tutor_posts) && count($tutor_posts)){
377 foreach ($tutor_posts as $post_id){
378 //Delete categories
379 $terms = wp_get_object_terms( $post_id, 'course-category' );
380 foreach( $terms as $term ){
381 wp_remove_object_terms( $post_id, array( $term->term_id ), 'course-category' );
382 }
383
384 //Delete tags if available
385 $terms = wp_get_object_terms( $post_id, 'course-tag' );
386 foreach( $terms as $term ){
387 wp_remove_object_terms( $post_id, array( $term->term_id ), 'course-tag' );
388 }
389
390 //Delete All Meta
391 $wpdb->delete($wpdb->postmeta, array('post_id' => $post_id) );
392 $wpdb->delete($wpdb->posts, array('ID' => $post_id) );
393 }
394 }
395
396 /**
397 * Deleting Comments (reviews, questions, quiz_answers, etc)
398 */
399 $tutor_comments = $wpdb->get_col("SELECT comment_ID from {$wpdb->comments} WHERE comment_agent = 'comment_agent' ;");
400 $comments_ids_strings = "'".implode("','", $tutor_comments)."'";
401 if (is_array($tutor_comments) && count($tutor_comments)){
402 $wpdb->query("DELETE from {$wpdb->commentmeta} WHERE comment_ID in({$comments_ids_strings}) ");
403 }
404 $wpdb->delete($wpdb->comments, array('comment_agent' => 'comment_agent'));
405
406 /**
407 * Delete Options
408 */
409
410 delete_option('tutor_option');
411 $wpdb->delete($wpdb->usermeta, array('meta_key' => '_is_tutor_student'));
412 $wpdb->delete($wpdb->usermeta, array('meta_key' => '_tutor_instructor_approved'));
413 $wpdb->delete($wpdb->usermeta, array('meta_key' => '_tutor_instructor_status'));
414 $wpdb->delete($wpdb->usermeta, array('meta_key' => '_is_tutor_instructor'));
415 $wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE '%_tutor_completed_lesson_id_%' ");
416
417 //Deleting Table
418 $prefix = $wpdb->prefix;
419 $wpdb->query("DROP TABLE IF EXISTS {$prefix}tutor_quiz_attempts, {$prefix}tutor_quiz_attempt_answers, {$prefix}tutor_quiz_questions, {$prefix}tutor_quiz_question_answers, {$prefix}tutor_earnings, {$prefix}tutor_withdraws ");
420
421 deactivate_plugins($plugin_file);
422 }
423
424 wp_redirect('plugins.php');
425 die();
426 }
427
428 public function plugin_action_links($actions){
429 $hasPro = tutor()->has_pro;
430
431 if(!$hasPro){
432 $actions['tutor_pro_link'] = '<a href="https://www.themeum.com/product/tutor-lms/#pricing?utm_source=tutor_plugin_action_link&utm_medium=wordpress_dashboard&utm_campaign=go_premium" target="_blank"><span
433 style="color: #ff7742; font-weight: bold;">' . __('Upgrade to Pro', 'wp-megamenu') . '</span></a>';
434 }
435
436 $is_erase_data = tutor_utils()->get_option('delete_on_uninstall');
437
438 if ($is_erase_data) {
439 $plugin_file = tutor()->basename;
440 if ( current_user_can( 'deactivate_plugin', $plugin_file ) ) {
441 if ( isset( $actions['deactivate'] ) ) {
442 $actions['deactivate'] = '<a href="admin.php?page=tutor-tools&tutor_admin_tools_page=uninstall">' . __('Uninstall', 'tutor') . '</a>';
443 }
444 }
445 }
446
447 $actions['settings'] = '<a href="admin.php?page=tutor_settings">' . __('Settings', 'tutor') . '</a>';
448 return $actions;
449 }
450
451 public function plugin_row_meta($plugin_meta, $plugin_file){
452
453 if ($plugin_file === tutor()->basename) {
454 $plugin_meta[] = sprintf( '<a href="%s">%s</a>',
455 esc_url( 'https://docs.themeum.com/tutor-lms/?utm_source=tutor&utm_medium=plugins_installation_list&utm_campaign=plugin_docs_link' ),
456 __( '<strong style="color: #03bd24">Documentation</strong>', 'tutor' )
457 );
458 $plugin_meta[] = sprintf( '<a href="%s">%s</a>',
459 esc_url( 'https://www.themeum.com/contact-us/?utm_source=tutor&utm_medium=plugins_installation_list&utm_campaign=plugin_support_link' ),
460 __( '<strong style="color: #03bd24">Get Support</strong>', 'tutor' )
461 );
462 }
463
464 return $plugin_meta;
465 }
466
467 /**
468 * @param $footer_text
469 *
470 * @return string
471 *
472 * Add footer text only on tutor pages
473 */
474 public function admin_footer_text( $footer_text ) {
475 $current_screen = get_current_screen();
476
477 /**
478 * We are making sure that this message will be only on Tutor Admin page
479 */
480 if ( apply_filters( 'tutor_display_admin_footer_text', (tutor_utils()->array_get('parent_base', $current_screen) === 'tutor' ) ) ) {
481 $footer_text = sprintf(
482 __( 'If you like %1$s please leave us a %2$s rating. A huge thanks in advance!', 'tutor' ),
483 sprintf( '<strong>%s</strong>', esc_html__( 'Tutor LMS', 'tutor' ) ),
484 '<a href="https://wordpress.org/support/plugin/tutor/reviews?rate=5#new-post" target="_blank" class="tutor-rating-link">&#9733;&#9733;&#9733;&#9733;&#9733;</a>'
485 );
486 }
487
488 return $footer_text;
489 }
490
491
492 public function register_course_widget(){
493 register_widget( 'Tutor\Course_Widget' );
494 }
495
496
497 }