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