Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor/includes/droip/backend/Pages.php
Keine Baseline-Datei – Diff nur gegen leer.
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
+