PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.6.2
Tutor LMS – eLearning and online course solution v3.6.2
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 / droip / backend / Pages.php
tutor / includes / droip / backend Last commit date
ElementGenerator 1 year ago Ajax.php 1 year ago Backend.php 1 year ago Editor.php 1 year ago Frontend.php 1 year ago Helper.php 1 year ago Hooks.php 1 year ago Iframe.php 1 year ago Pages.php 1 year ago VisibilityCondition.php 1 year ago
Pages.php
206 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
39 add_filter('droip_assets_should_load', [$this, 'load_droip_assets']);
40
41 add_action('wp_enqueue_scripts', [$this, 'load_assets'], 100);
42 }
43
44 /**
45 * Get all APIs
46 *
47 * @since 1.0.0
48 */
49 public function tde_get_apis()
50 {
51 $course_template = Helper::get_course_template_posts();
52
53 $pages = [];
54 foreach ($course_template as $key => $template) {
55 $pages[] = [
56 'id' => $template->ID,
57 'title' => $template->post_title,
58 'post_type' => $template->post_type,
59 'status' => $template->post_status,
60 'preview_url' => $template->guid,
61 'editor_url' => add_query_arg(
62 [
63 'action' => 'droip',
64 'post_id' => $template->ID,
65 ],
66 $template->guid
67 ),
68 ];
69 }
70
71 wp_send_json_success($pages);
72 }
73
74 /**
75 * Generate courses page
76 *
77 * @since 1.0.0
78 */
79 public function control_pages_content()
80 {
81 $action = Input::get('action');
82 $load_for = Input::get('load_for');
83 if ($this->is_course_page() && ($action !== 'droip' || $load_for === 'droip-iframe')) {
84 $this->generate_page_using_full_canvas_template();
85 }
86
87 if ($this->is_course_bundle_page() && ($action !== 'droip' || $load_for === 'droip-iframe')) {
88 $this->generate_page_using_full_canvas_template();
89 }
90
91 if ($this->is_course_list_page() && ($action !== 'droip' || $load_for === 'droip-iframe')) {
92 $utility_page = HelperFunctions::find_utility_page_for_this_context('lms_course_list');
93 if ($utility_page) {
94 $html = apply_filters(
95 'droip_html_generator',
96 '',
97 $utility_page['id']
98 );
99 $custom_data = [
100 'droip_template_content' => $html,
101 'droip_template_id' => $utility_page['id'],
102 ];
103 set_query_var('droip_custom_data', $custom_data);
104 include_once DROIP_FULL_CANVAS_TEMPLATE_PATH;
105 exit();
106 }
107 }
108 }
109
110 /**
111 * Load assets for preview page
112 */
113 public function load_assets()
114 {
115 wp_enqueue_script(TDE_APP_PREFIX . '-tutor-droip-preview', TDE_PLUGIN_ROOT_BASE . 'build/js/preview.min.js', ['wp-i18n'], TDE_APP_VERSION, true);
116 wp_enqueue_style(TDE_APP_PREFIX . '-tutor-droip-preview', TDE_PLUGIN_ROOT_BASE . 'build/css/preview.min.css', null, TDE_APP_VERSION);
117 wp_localize_script(TDE_APP_PREFIX . '-tutor-droip-preview', TDE_APP_PREFIX, [
118 'isLoggedIn' => is_user_logged_in(),
119 ]);
120 }
121
122 /**
123 * Load droip assets
124 *
125 * @param bool $default_value default value.
126 * @return bool
127 */
128 public function load_droip_assets($default_value)
129 {
130 if ($this->is_course_page() || $this->is_course_bundle_page()) {
131 return true;
132 }
133 return $default_value;
134 }
135 /**
136 * Generate course page
137 *
138 * @since 1.0.0
139 */
140 private function generate_page_using_full_canvas_template()
141 {
142 $template = apply_filters('droip_template_finder', 'post', get_post(get_the_ID()));
143 if (! $template) {
144 return;
145 }
146
147 $course_template = get_post($template['id']);
148
149 if ($course_template->post_status === 'publish') {
150 $html = apply_filters(
151 'droip_html_generator',
152 '',
153 $course_template->ID
154 );
155 $custom_data = [
156 'droip_template_content' => $html, // Example: Get the current post ID
157 'droip_template_id' => $template['id'],
158 ];
159 // Set a global variable with custom data to make it available in the template
160 set_query_var('droip_custom_data', $custom_data);
161
162 include_once DROIP_FULL_CANVAS_TEMPLATE_PATH;
163 exit();
164 }
165 }
166
167 /**
168 * Check if current page is course page
169 *
170 * @return bool
171 */
172 private function is_course_page()
173 {
174 global $wp_query;
175 $tutor = tutor();
176 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === $tutor->course_post_type) {
177 return true;
178 }
179
180 return false;
181 }
182
183 private function is_course_bundle_page()
184 {
185 global $wp_query;
186 $tutor = tutor();
187 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === $tutor->bundle_post_type) {
188 return true;
189 }
190
191 return false;
192 }
193
194 private function is_course_list_page()
195 {
196 global $wp_query;
197 if (is_array($wp_query->query_vars['post_type']) && in_array('courses', $wp_query->query_vars['post_type']) && ! $wp_query->is_single) {
198 if (isset($wp_query->query_vars['course-category']) || isset($wp_query->query_vars['course-tag'])) {
199 return false;
200 }
201 return true;
202 }
203 return false;
204 }
205 }
206