PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.7
Tutor LMS – eLearning and online course solution v4.0.7
4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 4.0.2 4.0.1 4.0.0 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 / includes / kirki / backend / Pages.php
tutor / includes / kirki / backend Last commit date
ElementGenerator 4 months ago Ajax.php 2 months ago Backend.php 4 months ago Editor.php 4 months ago Frontend.php 4 months ago Helper.php 4 months ago Hooks.php 4 months ago Iframe.php 4 months ago Pages.php 2 weeks ago VisibilityCondition.php 3 months ago
Pages.php
267 lines
1 <?php
2
3 /**
4 * Preview script for html markup generator
5 *
6 * @package tutor-kirki-elements
7 */
8
9 namespace TutorLMSKirki;
10
11 use Kirki\HelperFunctions;
12 use TUTOR\Input;
13 use TutorPro\Subscription\Settings;
14 use TutorPro\Subscription\Subscription;
15
16 if (! defined('ABSPATH')) {
17 exit; // Exit if accessed directly.
18 }
19
20 /**
21 * Class Pages
22 * This class is used to define all helper functions.
23 */
24 class Pages
25 {
26
27 /**
28 * Class constructor
29 *
30 * @since 1.0.0
31 */
32 public function __construct()
33 {
34 /**
35 * Manage Post API call's
36 */
37 add_action('wp_ajax_nopriv_tde_get_apis', [$this, 'tde_get_apis']);
38 add_action('wp_ajax_tde_get_apis', [$this, 'tde_get_apis']);
39
40 // add_action('template_redirect', [$this, 'control_pages_content']);
41 add_filter('template_include', [$this, 'may_be_change_template'], 99999);
42
43 add_filter('kirki_assets_should_load', [$this, 'load_kirki_assets']);
44
45 add_action('wp_enqueue_scripts', [$this, 'load_assets'], 100);
46 }
47
48 /**
49 * Get all APIs
50 *
51 * @since 1.0.0
52 */
53 public function tde_get_apis()
54 {
55 $course_template = Helper::get_course_template_posts();
56
57 $pages = [];
58 foreach ($course_template as $key => $template) {
59 $pages[] = [
60 'id' => $template->ID,
61 'title' => $template->post_title,
62 'post_type' => $template->post_type,
63 'status' => $template->post_status,
64 'preview_url' => $template->guid,
65 'editor_url' => add_query_arg(
66 [
67 'action' => 'kirki',
68 'post_id' => $template->ID,
69 ],
70 $template->guid
71 ),
72 ];
73 }
74
75 wp_send_json_success($pages);
76 }
77
78 public function may_be_change_template($template_path)
79 {
80 $action = Input::get('action');
81 $load_for = Input::get('load_for');
82 $is_learning_area = tutor_utils()->is_learning_area();
83
84 if ($is_learning_area) {
85 return tutor_get_template_path('learning-area.index');
86 }
87
88 if ($this->is_course_page() && ($action !== 'kirki' || $load_for === 'kirki-iframe')) {
89 $template_path = $this->generate_page_using_full_canvas_template($template_path);
90 }
91
92 if ($this->is_course_bundle_page() && ($action !== 'kirki' || $load_for === 'kirki-iframe')) {
93 $template_path = $this->generate_page_using_full_canvas_template($template_path);
94 }
95
96 if ($this->is_course_list_page() && ($action !== 'kirki' || $load_for === 'kirki-iframe')) {
97 $template_path = $this->generate_utility_page_content_with_fullcanvas_template_using_type('lms_course_list', $template_path);
98 }
99
100 // if ($this->is_cart_page() && ($action !== 'kirki' || $load_for === 'kirki-iframe')) {
101 // $template_path = $this->generate_utility_page_content_with_fullcanvas_template_using_type('lms_cart', $template_path);
102 // }
103
104 // if ($this->is_checkout_page() && ($action !== 'kirki' || $load_for === 'kirki-iframe')) {
105 // $template_path = $this->generate_utility_page_content_with_fullcanvas_template_using_type('lms_checkout', $template_path);
106 // }
107
108 if ($this->is_membership_page() && ($action !== 'kirki' || $load_for === 'kirki-iframe')) {
109 $template_path = $this->generate_utility_page_content_with_fullcanvas_template_using_type('lms_membership_page', $template_path);
110 }
111
112 return $template_path;
113 }
114
115 private function generate_utility_page_content_with_fullcanvas_template_using_type($type, $template_path)
116 {
117 $utility_page = HelperFunctions::find_utility_page_for_this_context($type);
118 if ($utility_page) {
119 $html = apply_filters(
120 'kirki_html_generator',
121 '',
122 $utility_page['id']
123 );
124 $custom_data = [
125 'kirki_template_content' => $html,
126 'kirki_template_id' => $utility_page['id'],
127 ];
128 set_query_var('kirki_custom_data', $custom_data);
129 $template_path = KIRKI_FULL_CANVAS_TEMPLATE_PATH;
130 }
131
132 return $template_path;
133 }
134
135 /**
136 * Generate course page
137 *
138 * @since 1.0.0
139 */
140 private function generate_page_using_full_canvas_template($template_path)
141 {
142 $template = apply_filters('kirki_template_finder', 'post', get_post(get_the_ID()));
143 if ($template) {
144
145 $course_template = get_post($template['id']);
146
147 if ($course_template->post_status === 'publish') {
148 $html = apply_filters(
149 'kirki_html_generator',
150 '',
151 $course_template->ID
152 );
153 $custom_data = [
154 'kirki_template_content' => $html, // Example: Get the current post ID
155 'kirki_template_id' => $template['id'],
156 ];
157 // Set a global variable with custom data to make it available in the template
158 set_query_var('kirki_custom_data', $custom_data);
159
160 $template_path = KIRKI_FULL_CANVAS_TEMPLATE_PATH;
161 }
162 }
163
164 return $template_path;
165 }
166
167 /**
168 * Load assets for preview page
169 */
170 public function load_assets()
171 {
172 wp_enqueue_script(TDE_APP_PREFIX . '-tutor-kirki-preview', TDE_PLUGIN_ROOT_BASE . 'build/js/preview.min.js', ['wp-i18n'], TDE_APP_VERSION, true);
173 wp_enqueue_style(TDE_APP_PREFIX . '-tutor-kirki-preview', TDE_PLUGIN_ROOT_BASE . 'build/css/preview.min.css', null, TDE_APP_VERSION);
174 wp_localize_script(TDE_APP_PREFIX . '-tutor-kirki-preview', TDE_APP_PREFIX, [
175 'isLoggedIn' => is_user_logged_in(),
176 ]);
177 }
178
179 /**
180 * Load kirki assets
181 *
182 * @param bool $default_value default value.
183 * @return bool
184 */
185 public function load_kirki_assets($default_value)
186 {
187 if ($this->is_course_page() || $this->is_course_bundle_page()) {
188 return true;
189 }
190 return $default_value;
191 }
192
193 /**
194 * Check if current page is course page
195 *
196 * @return bool
197 */
198 private function is_course_page()
199 {
200 global $wp_query;
201 $tutor = tutor();
202 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === $tutor->course_post_type) {
203 return true;
204 }
205
206 return false;
207 }
208
209 private function is_course_bundle_page()
210 {
211 global $wp_query;
212 $tutor = tutor();
213 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === $tutor->bundle_post_type) {
214 return true;
215 }
216
217 return false;
218 }
219
220 private function is_course_list_page()
221 {
222 global $wp_query;
223 if (is_array($wp_query->query_vars['post_type']) && in_array('courses', $wp_query->query_vars['post_type']) && ! $wp_query->is_single) {
224 if (isset($wp_query->query_vars['course-category']) || isset($wp_query->query_vars['course-tag'])) {
225 return false;
226 }
227 return true;
228 }
229 return false;
230 }
231
232 private function is_membership_page()
233 {
234 if (tutor()->has_pro && Subscription::is_enabled()) {
235 $page_id = Settings::get_pricing_page_id();
236 global $wp_query;
237 if ($wp_query->is_page && $wp_query->post->ID === $page_id) {
238 return true;
239 }
240 }
241 return false;
242 }
243
244 private function is_cart_page()
245 {
246 global $wp_query;
247 if (isset($wp_query->query['pagename']) && $wp_query->query['pagename'] === 'cart') {
248 return true;
249 }
250 if (isset($wp_query->query['kirki_utility_page_type']) && $wp_query->query['kirki_utility_page_type'] === 'lms_cart') {
251 return true;
252 }
253 return false;
254 }
255 private function is_checkout_page()
256 {
257 global $wp_query;
258 if (isset($wp_query->query['pagename']) && $wp_query->query['pagename'] === 'checkout') {
259 return true;
260 }
261 if (isset($wp_query->query['kirki_utility_page_type']) && $wp_query->query['kirki_utility_page_type'] === 'lms_cart') {
262 return true;
263 }
264 return false;
265 }
266 }
267