PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.9.0
Tutor LMS – eLearning and online course solution v3.9.0
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 9 months ago Ajax.php 10 months ago Backend.php 1 year ago Editor.php 1 year ago Frontend.php 1 year ago Helper.php 9 months ago Hooks.php 9 months ago Iframe.php 1 year ago Pages.php 9 months ago VisibilityCondition.php 8 months ago
Pages.php
261 lines
1 <?php
2
3 /**
4 * Preview script for html markup generator
5 *
6 * @package tutor-droip-elements
7 */
8
9 namespace TutorLMSDroip;
10
11 use Droip\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_action('template_include', [$this, 'may_be_change_template'], PHP_INT_MAX);
42
43 add_filter('droip_assets_should_load', [$this, 'load_droip_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' => 'droip',
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 if ($this->is_course_page() && ($action !== 'droip' || $load_for === 'droip-iframe')) {
83 $template_path = $this->generate_page_using_full_canvas_template($template_path);
84 }
85
86 if ($this->is_course_bundle_page() && ($action !== 'droip' || $load_for === 'droip-iframe')) {
87 $template_path = $this->generate_page_using_full_canvas_template($template_path);
88 }
89
90 if ($this->is_course_list_page() && ($action !== 'droip' || $load_for === 'droip-iframe')) {
91 $template_path = $this->generate_utility_page_content_with_fullcanvas_template_using_type('lms_course_list', $template_path);
92 }
93
94 // if ($this->is_cart_page() && ($action !== 'droip' || $load_for === 'droip-iframe')) {
95 // $template_path = $this->generate_utility_page_content_with_fullcanvas_template_using_type('lms_cart', $template_path);
96 // }
97
98 // if ($this->is_checkout_page() && ($action !== 'droip' || $load_for === 'droip-iframe')) {
99 // $template_path = $this->generate_utility_page_content_with_fullcanvas_template_using_type('lms_checkout', $template_path);
100 // }
101
102 if ($this->is_membership_page() && ($action !== 'droip' || $load_for === 'droip-iframe')) {
103 $template_path = $this->generate_utility_page_content_with_fullcanvas_template_using_type('lms_membership_page', $template_path);
104 }
105
106 return $template_path;
107 }
108
109 private function generate_utility_page_content_with_fullcanvas_template_using_type($type, $template_path)
110 {
111 $utility_page = HelperFunctions::find_utility_page_for_this_context($type);
112 if ($utility_page) {
113 $html = apply_filters(
114 'droip_html_generator',
115 '',
116 $utility_page['id']
117 );
118 $custom_data = [
119 'droip_template_content' => $html,
120 'droip_template_id' => $utility_page['id'],
121 ];
122 set_query_var('droip_custom_data', $custom_data);
123 $template_path = DROIP_FULL_CANVAS_TEMPLATE_PATH;
124 }
125
126 return $template_path;
127 }
128
129 /**
130 * Generate course page
131 *
132 * @since 1.0.0
133 */
134 private function generate_page_using_full_canvas_template($template_path)
135 {
136 $template = apply_filters('droip_template_finder', 'post', get_post(get_the_ID()));
137 if ($template) {
138
139 $course_template = get_post($template['id']);
140
141 if ($course_template->post_status === 'publish') {
142 $html = apply_filters(
143 'droip_html_generator',
144 '',
145 $course_template->ID
146 );
147 $custom_data = [
148 'droip_template_content' => $html, // Example: Get the current post ID
149 'droip_template_id' => $template['id'],
150 ];
151 // Set a global variable with custom data to make it available in the template
152 set_query_var('droip_custom_data', $custom_data);
153
154 $template_path = DROIP_FULL_CANVAS_TEMPLATE_PATH;
155 }
156 }
157
158 return $template_path;
159 }
160
161 /**
162 * Load assets for preview page
163 */
164 public function load_assets()
165 {
166 wp_enqueue_script(TDE_APP_PREFIX . '-tutor-droip-preview', TDE_PLUGIN_ROOT_BASE . 'build/js/preview.min.js', ['wp-i18n'], TDE_APP_VERSION, true);
167 wp_enqueue_style(TDE_APP_PREFIX . '-tutor-droip-preview', TDE_PLUGIN_ROOT_BASE . 'build/css/preview.min.css', null, TDE_APP_VERSION);
168 wp_localize_script(TDE_APP_PREFIX . '-tutor-droip-preview', TDE_APP_PREFIX, [
169 'isLoggedIn' => is_user_logged_in(),
170 ]);
171 }
172
173 /**
174 * Load droip assets
175 *
176 * @param bool $default_value default value.
177 * @return bool
178 */
179 public function load_droip_assets($default_value)
180 {
181 if ($this->is_course_page() || $this->is_course_bundle_page()) {
182 return true;
183 }
184 return $default_value;
185 }
186
187 /**
188 * Check if current page is course page
189 *
190 * @return bool
191 */
192 private function is_course_page()
193 {
194 global $wp_query;
195 $tutor = tutor();
196 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === $tutor->course_post_type) {
197 return true;
198 }
199
200 return false;
201 }
202
203 private function is_course_bundle_page()
204 {
205 global $wp_query;
206 $tutor = tutor();
207 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === $tutor->bundle_post_type) {
208 return true;
209 }
210
211 return false;
212 }
213
214 private function is_course_list_page()
215 {
216 global $wp_query;
217 if (is_array($wp_query->query_vars['post_type']) && in_array('courses', $wp_query->query_vars['post_type']) && ! $wp_query->is_single) {
218 if (isset($wp_query->query_vars['course-category']) || isset($wp_query->query_vars['course-tag'])) {
219 return false;
220 }
221 return true;
222 }
223 return false;
224 }
225
226 private function is_membership_page()
227 {
228 if (tutor()->has_pro && Subscription::is_enabled()) {
229 $page_id = Settings::get_pricing_page_id();
230 global $wp_query;
231 if ($wp_query->is_page && $wp_query->post->ID === $page_id) {
232 return true;
233 }
234 }
235 return false;
236 }
237
238 private function is_cart_page()
239 {
240 global $wp_query;
241 if (isset($wp_query->query['pagename']) && $wp_query->query['pagename'] === 'cart') {
242 return true;
243 }
244 if (isset($wp_query->query['droip_utility_page_type']) && $wp_query->query['droip_utility_page_type'] === 'lms_cart') {
245 return true;
246 }
247 return false;
248 }
249 private function is_checkout_page()
250 {
251 global $wp_query;
252 if (isset($wp_query->query['pagename']) && $wp_query->query['pagename'] === 'checkout') {
253 return true;
254 }
255 if (isset($wp_query->query['droip_utility_page_type']) && $wp_query->query['droip_utility_page_type'] === 'lms_cart') {
256 return true;
257 }
258 return false;
259 }
260 }
261