Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor/includes/droip/backend/Pages.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
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 +