PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 1.9.15
Tutor LMS – eLearning and online course solution v1.9.15
3.9.15 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 / Shortcode.php
tutor / classes Last commit date
Addons.php 4 years ago Admin.php 4 years ago Ajax.php 4 years ago Assets.php 4 years ago Course.php 4 years ago Course_Filter.php 4 years ago Course_Settings_Tabs.php 4 years ago Course_Widget.php 4 years ago Custom_Validation.php 5 years ago Dashboard.php 4 years ago Email.php 5 years ago FormHandler.php 4 years ago Frontend.php 5 years ago Gutenberg.php 4 years ago Instructor.php 4 years ago Instructors_List.php 4 years ago Lesson.php 4 years ago Options.php 4 years ago Post_types.php 4 years ago Private_Course_Access.php 5 years ago Q_and_A.php 4 years ago Question_Answers_List.php 4 years ago Quiz.php 4 years ago Quiz_Attempts_List.php 4 years ago RestAPI.php 4 years ago Rewrite_Rules.php 4 years ago Shortcode.php 4 years ago Student.php 4 years ago Students_List.php 4 years ago Taxonomies.php 4 years ago Template.php 4 years ago Theme_Compatibility.php 5 years ago Tools.php 4 years ago Tutor.php 4 years ago TutorEDD.php 4 years ago Tutor_Base.php 5 years ago Tutor_List_Table.php 4 years ago Tutor_Setup.php 4 years ago Upgrader.php 4 years ago User.php 4 years ago Utils.php 4 years ago Video_Stream.php 4 years ago Withdraw.php 4 years ago Withdraw_Requests_List.php 4 years ago WooCommerce.php 4 years ago
Shortcode.php
288 lines
1 <?php
2 /**
3 * Class Shortcode
4 * @package TUTOR
5 *
6 * @since v.1.0.0
7 */
8
9 namespace TUTOR;
10
11 if (!defined('ABSPATH'))
12 exit;
13
14 class Shortcode {
15
16 private $instructor_layout = array(
17 'pp-top-full',
18 'pp-cp',
19 'pp-top-left',
20 'pp-left-middle',
21 'pp-left-full'
22 );
23
24 public function __construct() {
25 add_shortcode('tutor_student_registration_form', array($this, 'student_registration_form'));
26 add_shortcode('tutor_dashboard', array($this, 'tutor_dashboard'));
27 add_shortcode('tutor_instructor_registration_form', array($this, 'instructor_registration_form'));
28 add_shortcode('tutor_course', array($this, 'tutor_course'));
29
30 // Check if WP version is equal to or greater than 5.9.
31 global $wp_version;
32 if ( version_compare( $wp_version, '5.9', '>=' ) && function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) {
33 add_shortcode( 'tutor_dashboard_menu', array( $this, 'tutor_dashboard_menu' ) );
34 }
35
36 add_shortcode('tutor_instructor_list', array($this, 'tutor_instructor_list'));
37 add_action('tutor_options_after_instructors', array($this, 'tutor_instructor_layout'));
38 add_action( 'wp_ajax_load_filtered_instructor', array($this, 'load_filtered_instructor') );
39 add_action( 'wp_ajax_nopriv_load_filtered_instructor', array($this, 'load_filtered_instructor') );
40 }
41
42 /**
43 * @return mixed
44 *
45 * Instructor Registration Shortcode
46 *
47 * @since v.1.0.0
48 */
49 public function student_registration_form() {
50 ob_start();
51 if (is_user_logged_in()) {
52 tutor_load_template('dashboard.logged-in');
53 } else {
54 tutor_load_template('dashboard.registration');
55 }
56 return apply_filters('tutor/student/register', ob_get_clean());
57 }
58
59 /**
60 * @return mixed
61 *
62 * Tutor Dashboard for students
63 *
64 * @since v.1.0.0
65 */
66 public function tutor_dashboard() {
67 global $wp_query;
68
69 ob_start();
70 if (is_user_logged_in()) {
71 /**
72 * Added isset() Condition to avoid infinite loop since v.1.5.4
73 * This has cause error by others plugin, Such AS SEO
74 */
75
76 if (!isset($wp_query->query_vars['tutor_dashboard_page'])) {
77 tutor_load_template('dashboard', array('is_shortcode' => true));
78 }
79 } else {
80 tutor_load_template('global.login');
81 }
82 return apply_filters('tutor_dashboard/index', ob_get_clean());
83 }
84
85 /**
86 * @return mixed
87 *
88 * Instructor Registration Shortcode
89 *
90 * @since v.1.0.0
91 */
92 public function instructor_registration_form() {
93 ob_start();
94 if (is_user_logged_in()) {
95 tutor_load_template('dashboard.instructor.logged-in');
96 } else {
97 tutor_load_template('dashboard.instructor.registration');
98 }
99 return apply_filters('tutor_dashboard/student/index', ob_get_clean());
100 }
101
102 /**
103 * @return mixed
104 *
105 * Dashboard Menu Shortcode
106 *
107 * @since v.1.9.15
108 */
109 public function tutor_dashboard_menu() {
110 ob_start();
111 if ( is_user_logged_in() ) {
112 tutor_load_template( 'dashboard.dashboard-menu' );
113 }
114 return apply_filters( 'tutor_dashboard/header/menu', ob_get_clean() );
115 }
116
117 /**
118 * @param $atts
119 *
120 * @return string
121 *
122 * Shortcode for getting course
123 */
124 public function tutor_course($atts) {
125 $course_post_type = tutor()->course_post_type;
126
127 $a = shortcode_atts(array(
128 'post_type' => $course_post_type,
129 'post_status' => 'publish',
130
131 'id' => '',
132 'exclude_ids' => '',
133 'category' => '',
134
135 'orderby' => 'ID',
136 'order' => 'DESC',
137 'count' => 6,
138 'paged' => get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1,
139 ), $atts);
140
141 if (!empty($a['id'])) {
142 $ids = (array) explode(',', $a['id']);
143 $a['post__in'] = $ids;
144 }
145
146 if (!empty($a['exclude_ids'])) {
147 $exclude_ids = (array) explode(',', $a['exclude_ids']);
148 $a['post__not_in'] = $exclude_ids;
149 }
150 if (!empty($a['category'])) {
151 $category = (array) explode(',', $a['category']);
152
153 $a['tax_query'] = array(
154 array(
155 'taxonomy' => 'course-category',
156 'field' => 'term_id',
157 'terms' => $category,
158 'operator' => 'IN',
159 ),
160 );
161 }
162 $a['posts_per_page'] = (int) $a['count'];
163
164 wp_reset_query();
165 $the_query = new \WP_Query( $a );
166 ob_start();
167
168 $GLOBALS['the_custom_query'] = $the_query;
169
170 $GLOBALS['tutor_shortcode_arg'] = array(
171 'include_course_filter' => isset($atts['course_filter']) ? $atts['course_filter'] === 'on' : null,
172 'column_per_row' => isset($atts['column_per_row']) ? $atts['column_per_row'] : null,
173 'course_per_page' => $a['posts_per_page'],
174 'show_pagination' => isset( $atts['show_pagination'] ) ? $atts['show_pagination'] : 'off',
175 );
176
177 tutor_load_template('shortcode.tutor-course');
178 $output = ob_get_clean();
179 wp_reset_postdata();
180
181 return $output;
182 }
183
184 private function prepare_instructor_list($current_page, $atts, $cat_ids = array(), $keyword = '') {
185
186 $limit = (int) tutils()->array_get('count', $atts, 9);
187 $page = $current_page - 1;
188
189 $instructors = tutor_utils()->get_instructors($limit*$page, $limit, $keyword, '', '', '', 'approved', $cat_ids);
190 $next_instructors = tutor_utils()->get_instructors($limit*$current_page, $limit, $keyword, '', '', '', 'approved', $cat_ids);
191
192 $previous_page = $page>0 ? $current_page-1 : null;
193 $next_page = (is_array($next_instructors) && count($next_instructors)>0) ? $current_page+1 : null;
194
195 $layout = sanitize_text_field(tutils()->array_get('layout', $atts, ''));
196 $layout = in_array($layout, $this->instructor_layout) ? $layout : tutor_utils()->get_option('instructor_list_layout', $this->instructor_layout[0]);
197
198 $payload=array(
199 'instructors' => is_array($instructors) ? $instructors : array(),
200 'next_page' => $next_page,
201 'previous_page' => $previous_page,
202 'column_count' => sanitize_text_field(tutils()->array_get('column_per_row', $atts, 3)),
203 'layout' => $layout,
204 'limit' => $limit,
205 'current_page' => $current_page
206 );
207
208 return $payload;
209 }
210
211 /**
212 * @param $atts
213 *
214 * @return string
215 *
216 * Shortcode for getting instructors
217 */
218 public function tutor_instructor_list($atts) {
219
220 !is_array( $atts ) ? $atts = array() : 0;
221
222 $current_page = (int)tutor_utils()->array_get('instructor-page', tutor_sanitize_data($_GET), 1);
223 $current_page = $current_page>=1 ? $current_page : 1;
224
225 $show_filter = isset( $atts['filter'] ) ? $atts['filter']=='on' : tutor_utils()->get_option( 'instructor_list_show_filter', false );
226
227 // Get instructor list to sow
228 $payload = $this->prepare_instructor_list($current_page, $atts);
229 $payload['show_filter'] = $show_filter;
230
231 ob_start();
232 tutor_load_template('shortcode.tutor-instructor', $payload);
233 $content = ob_get_clean();
234
235 if($show_filter) {
236
237 $course_cats = get_terms( array(
238 'taxonomy' => 'course-category',
239 'hide_empty' => true,
240 'childless' => true
241 ) );
242
243 $attributes = $payload;
244 unset( $attributes['instructors'] );
245
246 $payload = array(
247 'show_filter' => $show_filter,
248 'content' => $content,
249 'categories' => $course_cats,
250 'attributes' => array_merge( $atts, $attributes )
251 );
252
253 ob_start();
254
255 tutor_load_template('shortcode.instructor-filter', $payload);
256
257 $content = ob_get_clean();
258 }
259
260 return $content;
261 }
262
263 public function load_filtered_instructor() {
264 tutor_utils()->checking_nonce();
265
266 $attributes = (array)tutils()->array_get('attributes', tutor_sanitize_data($_POST), array());
267 $current_page = (int) tutils()->array_get('current_page', $attributes, 1);
268 $keyword = (string)sanitize_text_field(tutils()->array_get('keyword', $_POST, ''));
269
270 $category = (array)tutils()->array_get('category', tutor_sanitize_data($_POST), array());
271 $category = array_filter($category, function($cat) {
272 return is_numeric($cat);
273 });
274
275 $payload = $this->prepare_instructor_list($current_page, $attributes, $category, $keyword);
276
277 tutor_load_template('shortcode.tutor-instructor', $payload);
278 exit;
279 }
280
281 /**
282 * Show layout selection dashboard in instructor setting
283 */
284 public function tutor_instructor_layout(){
285 tutor_load_template('instructor-setting', array('templates'=>$this->instructor_layout));
286 }
287 }
288