PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.7.1
Tutor LMS – eLearning and online course solution v3.7.1
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 / classes / Tools_V2.php
tutor / classes Last commit date
Addons.php 11 months ago Admin.php 11 months ago Ajax.php 1 year ago Announcements.php 1 year ago Assets.php 11 months ago Backend_Page_Trait.php 1 year ago BaseController.php 1 year ago Config.php 11 months ago Container.php 11 months ago Course.php 10 months ago Course_Embed.php 3 years ago Course_Filter.php 1 year ago Course_List.php 10 months ago Course_Settings_Tabs.php 1 year ago Course_Widget.php 1 year ago Custom_Validation.php 3 years ago Dashboard.php 1 year ago Earnings.php 1 year ago FormHandler.php 2 years ago Frontend.php 1 year ago Gutenberg.php 1 year ago Icon.php 10 months ago Input.php 1 year ago Instructor.php 1 year ago Instructors_List.php 11 months ago Lesson.php 10 months ago Options_V2.php 11 months ago Permalink.php 2 years ago Post_types.php 1 year ago Private_Course_Access.php 1 year ago Q_And_A.php 10 months ago Question_Answers_List.php 11 months ago Quiz.php 10 months ago QuizBuilder.php 11 months ago Quiz_Attempts_List.php 11 months ago RestAPI.php 2 years ago Reviews.php 11 months ago Rewrite_Rules.php 2 years ago Shortcode.php 1 year ago Singleton.php 1 year ago Student.php 1 year ago Students_List.php 1 year ago Taxonomies.php 1 year ago Template.php 11 months ago Theme_Compatibility.php 3 years ago Tools.php 1 year ago Tools_V2.php 1 year ago Tutor.php 10 months ago TutorEDD.php 1 year ago Tutor_Base.php 2 years ago Tutor_Setup.php 1 year ago Upgrader.php 10 months ago User.php 1 year ago Utils.php 10 months ago Video_Stream.php 3 years ago WhatsNew.php 2 years ago Withdraw.php 1 year ago Withdraw_Requests_List.php 11 months ago WooCommerce.php 1 year ago
Tools_V2.php
601 lines
1 <?php
2 /**
3 * Options for TutorLMS
4 *
5 * @package Tutor\Tools
6 * @author Themeum <support@themeum.com>
7 * @link https://themeum.com
8 * @since 2.0.0
9 */
10
11 namespace Tutor;
12
13 use TUTOR\Admin;
14
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit;
17 }
18
19 /**
20 * Tools class
21 *
22 * @since 2.0.0
23 */
24 class Tools_V2 {
25
26 /**
27 * Environment status
28 *
29 * @since 2.0.0
30 *
31 * @var string
32 */
33 private $environment_status;
34
35 /**
36 * Tools filed
37 *
38 * @since 2.0.0
39 *
40 * @var mixed
41 */
42 private $tools_fields;
43
44 /**
45 * Apply settings
46 *
47 * @since 2.0.0
48 *
49 * @return void send wp_json response
50 */
51 public function tutor_apply_settings() {
52 $tutor_settings_log = get_option( 'tutor_settings_log' );
53 $apply_id = $this->get_request_data( 'apply_id' );
54
55 update_option( 'tutor_option', $tutor_settings_log[ $apply_id ]['dataset'] );
56
57 wp_send_json_success( $tutor_settings_log[ $apply_id ] );
58 }
59
60 /**
61 * Get request data
62 *
63 * @since 2.0.0
64 *
65 * @param mixed $var var.
66 *
67 * @return mixed
68 */
69 public function get_request_data( $var ) {
70 return Input::sanitize_request_data( $var, null );
71 }
72
73 /**
74 * Tools page
75 *
76 * @since 2.0.0
77 *
78 * @return void including template
79 */
80 public function load_tools_page() {
81 $tools_fields = $this->get_tools_fields();
82 $active_tab = Input::get( 'sub_page', 'status' );
83 include tutor()->path . '/views/options/tools.php';
84 }
85
86 /**
87 * Function options_tools
88 *
89 * @since 2.0.0
90 *
91 * @return array
92 */
93 private function get_tools_fields() {
94 global $wpdb;
95
96 if ( $this->tools_fields ) {
97 // Return fields if already prepared.
98 return $this->tools_fields;
99 }
100
101 $attr_tools = array(
102 'status' => array(
103 'label' => __( 'Status', 'tutor' ),
104 'slug' => 'status',
105 'desc' => __( 'Status Settings', 'tutor' ),
106 'template' => 'status',
107 'view_path' => tutor()->path . 'views/options/template/',
108 'icon' => 'tutor-icon-chart-pie',
109 'blocks' => array(
110 'wordpress_environment' => array(
111 'label' => __( 'WordPress environment', 'tutor' ),
112 'slug' => 'wordpress_environment',
113 'classes' => 'wordpress_environment',
114 'block_type' => 'column',
115 'fieldset' => array(
116 array(
117 array(
118 'key' => 'home_url',
119 'type' => 'info_row',
120 'label' => __( 'Home URL', 'tutor' ),
121 'status' => 'default',
122 'default' => $this->status( 'home_url' ),
123 ),
124 ),
125 array(
126 array(
127 'key' => 'wordpress_version',
128 'type' => 'info_col',
129 'label' => __( 'WordPress version', 'tutor' ),
130 'status' => 'default',
131 'default' => $this->status( 'wordpress_version' ),
132
133 ),
134 array(
135 'key' => 'wordpress_multisite',
136 'type' => 'info_col',
137 'label' => __( 'WordPress multisite', 'tutor' ),
138 'status' => 'default',
139 'default' => $this->status( 'wordpress_multisite' ),
140
141 ),
142 array(
143 'key' => 'wordpress_debug_mode',
144 'type' => 'info_col',
145 'label' => __( 'WordPress debug mode', 'tutor' ),
146 'status' => ( defined( 'WP_DEBUG' ) && true === WP_DEBUG ) ? 'success' : 'default',
147 'default' => $this->status( 'wordpress_debug_mode' ),
148
149 ),
150 array(
151 'key' => 'language',
152 'type' => 'info_col',
153 'label' => __( 'Language', 'tutor' ),
154 'status' => 'default',
155 'default' => $this->status( 'language' ),
156
157 ),
158 ),
159 array(
160 array(
161 'key' => 'site_url',
162 'type' => 'info_row',
163 'label' => __( 'Site URL', 'tutor' ),
164 'status' => 'default',
165 'default' => $this->status( 'site_url' ),
166
167 ),
168 ),
169 array(
170 array(
171 'key' => 'tutor_version',
172 'type' => 'info_col',
173 'label' => __( 'Tutor version', 'tutor' ),
174 'status' => 'success',
175 'default' => $this->status( 'tutor_version' ),
176
177 ),
178 array(
179 'key' => 'wordpress_memory_limit',
180 'type' => 'info_col',
181 'label' => __( 'WordPress memory limit', 'tutor' ),
182 'status' => 'success',
183 'default' => $this->status( 'wordpress_memory_limit' ),
184
185 ),
186 array(
187 'key' => 'wordpress_cron',
188 'type' => 'info_col',
189 'label' => __( 'WordPress Cron', 'tutor' ),
190 'status' => ! empty( _get_cron_array() ) ? 'success' : 'default',
191 'default' => $this->status( 'wordpress_cron' ),
192
193 ),
194 array(
195 'key' => 'external_object_cache',
196 'type' => 'info_col',
197 'label' => __( 'External object cache', 'tutor' ),
198 'status' => 'default',
199 'default' => $this->status( 'external_object_cache' ),
200
201 ),
202 ),
203 ),
204 ),
205 'server_environment' => array(
206 'label' => __( 'Server environment', 'tutor' ),
207 'slug' => 'server_environment',
208 'block_type' => 'column',
209 'fieldset' => array(
210 array(
211 array(
212 'key' => 'server_info',
213 'type' => 'info_col',
214 'label' => __( 'Server info', 'tutor' ),
215 'status' => 'default',
216 'default' => $this->status( 'server_info' ),
217
218 ),
219 array(
220 'key' => 'php_version',
221 'type' => 'info_col',
222 'label' => __( 'PHP version', 'tutor' ),
223 'status' => 'default',
224 'default' => $this->status( 'php_version' ),
225
226 ),
227 array(
228 'key' => 'php_post_max_size',
229 'type' => 'info_col',
230 'label' => __( 'PHP post max size', 'tutor' ),
231 'status' => 'default',
232 'default' => $this->status( 'php_post_max_size' ),
233
234 ),
235 array(
236 'key' => 'php_time_limit',
237 'type' => 'info_col',
238 'label' => __( 'PHP time limit', 'tutor' ),
239 'status' => 'default',
240 'default' => $this->status( 'php_time_limit' ),
241
242 ),
243 array(
244 'key' => 'curl_version',
245 'type' => 'info_col',
246 'label' => __( 'cURL version', 'tutor' ),
247 'status' => 'default',
248 'default' => $this->status( 'curl_version' ),
249
250 ),
251 array(
252 'key' => 'language',
253 'type' => 'info_col',
254 'label' => __( 'Language', 'tutor' ),
255 'status' => 'default',
256 'default' => $this->status( 'language' ),
257
258 ),
259 ),
260 array(
261 array(
262 'key' => 'tutor_version',
263 'type' => 'info_col',
264 'label' => __( 'MySQL version', 'tutor' ),
265 'status' => 'default',
266 'default' => sprintf( 'Server: %s, Client: %s', $wpdb->dbh->server_info, $wpdb->dbh->client_info ),
267 ),
268 array(
269 'key' => 'wordpress_memory_limit',
270 'type' => 'info_col',
271 'label' => __( 'Default timezone is UTC', 'tutor' ),
272 'status' => 'default',
273 'default' => $this->status( 'default_timezone_is_utc' ),
274 ),
275 array(
276 'key' => 'wordpress_cron',
277 'type' => 'info_col',
278 'label' => __( 'fsockopen/cURL', 'tutor' ),
279 'status' => 'default',
280 'default' => $this->status( 'fsockopen_curl' ),
281 ),
282 array(
283 'key' => 'external_object_cache',
284 'type' => 'info_col',
285 'label' => __( 'DOMDocument', 'tutor' ),
286 'status' => 'default',
287 'default' => $this->status( 'dom_document' ),
288 ),
289 array(
290 'key' => 'external_object_cache',
291 'type' => 'info_col',
292 'label' => __( 'GZip', 'tutor' ),
293 'status' => 'default',
294 'default' => $this->status( 'gzip' ),
295 ),
296 array(
297 'key' => 'external_object_cache',
298 'type' => 'info_col',
299 'label' => __( 'Multibyte string', 'tutor' ),
300 'status' => 'default',
301 'default' => $this->status( 'multibyte_string' ),
302 ),
303 ),
304 ),
305 ),
306 ),
307 ),
308 'import_export' => array(
309 'label' => __( 'Import/Export', 'tutor' ),
310 'slug' => 'import_export',
311 'desc' => __( 'Import/Export Settings', 'tutor' ),
312 'template' => 'import_export',
313 'view_path' => tutor()->path . 'views/options/template/',
314 'icon' => 'tutor-icon-import-export',
315 'blocks' => array(),
316 ),
317 'tutor_pages' => array(
318 'label' => __( 'Tutor Pages', 'tutor' ),
319 'slug' => 'tutor_pages',
320
321 'desc' => __( 'Tutor Pages Settings', 'tutor' ),
322 'template' => 'tutor_pages',
323 'view_path' => tutor()->path . 'views/options/template/',
324 'icon' => 'tutor-icon-page-review',
325 'blocks' => array(
326 'block' => array(),
327 ),
328 ),
329 'tutor_rest_api' => array(
330 'label' => __( 'Rest API', 'tutor' ),
331 'slug' => 'tutor_rest_api',
332 'desc' => __( 'Token List', 'tutor' ),
333 'template' => 'manage-tokens',
334 'view_path' => tutor()->path . 'views/pages/tools/',
335 'icon' => 'tutor-icon-api',
336 'blocks' => array(
337 'block' => array(),
338 ),
339 ),
340 'settings_log' => array(
341 'label' => __( 'Settings Log', 'tutor' ),
342 'slug' => 'settings_log',
343 'desc' => __( 'Settings Log', 'tutor' ),
344 'template' => 'settings-log',
345 'view_path' => tutor()->path . 'views/pages/tools/',
346 'icon' => 'tutor-icon-settings-log',
347 'blocks' => array(
348 'block' => array(),
349 ),
350 ),
351 );
352
353 $attr_tools = apply_filters( 'tutor/tools/extend/attr', apply_filters( 'tutor/tools/attr', apply_filters( 'tutor_tool_pages', $attr_tools ) ) );
354
355 $this->tools_fields = $attr_tools;
356
357 return $this->tools_fields;
358 }
359
360 /**
361 * Get environment info
362 *
363 * @since 2.0.0
364 *
365 * @return array
366 */
367 private function get_environment_info() {
368
369 if ( $this->environment_status ) {
370 // Use runtime cache for repetitive call.
371 return $this->environment_status;
372 }
373
374 // Figure out cURL version, if installed.
375 $curl_version = '';
376 if ( function_exists( 'curl_version' ) ) {
377 $curl_version = curl_version();
378 $curl_version = $curl_version['version'] . ', ' . $curl_version['ssl_version'];
379 }
380
381 // WP memory limit.
382 $wp_memory_limit = tutor_utils()->let_to_num( WP_MEMORY_LIMIT );
383 if ( function_exists( 'memory_get_usage' ) ) {
384 $wp_memory_limit = max( $wp_memory_limit, tutor_utils()->let_to_num( @ini_get( 'memory_limit' ) ) );
385 }
386
387 $database_version = tutor_utils()->get_db_version();
388
389 $this->environment_status = array(
390 'home_url' => get_option( 'home' ),
391 'site_url' => get_option( 'siteurl' ),
392 'version' => TUTOR_VERSION,
393 'wp_version' => get_bloginfo( 'version' ),
394 'wp_multisite' => is_multisite(),
395 'wp_memory_limit' => $wp_memory_limit,
396 'wp_debug_mode' => ( defined( 'WP_DEBUG' ) && WP_DEBUG ),
397 'wp_cron' => ! ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ),
398 'language' => get_locale(),
399 'external_object_cache' => wp_using_ext_object_cache(),
400 'server_info' => isset( $_SERVER['SERVER_SOFTWARE'] ) ? sanitize_text_field( wp_unslash( $_SERVER['SERVER_SOFTWARE'] ) ) : '',
401 'php_version' => phpversion(),
402 'php_post_max_size' => tutor_utils()->let_to_num( ini_get( 'post_max_size' ) ),
403 'php_max_execution_time' => ini_get( 'max_execution_time' ),
404 'php_max_input_vars' => ini_get( 'max_input_vars' ),
405 'curl_version' => $curl_version,
406 'suhosin_installed' => extension_loaded( 'suhosin' ),
407 'max_upload_size' => wp_max_upload_size(),
408 'mysql_version' => $database_version['number'],
409 'mysql_version_string' => $database_version['string'],
410 'default_timezone' => date_default_timezone_get(),
411 'fsockopen_or_curl_enabled' => ( function_exists( 'fsockopen' ) || function_exists( 'curl_init' ) ),
412 'soapclient_enabled' => class_exists( 'SoapClient' ),
413 'domdocument_enabled' => class_exists( 'DOMDocument' ),
414 'gzip_enabled' => is_callable( 'gzopen' ),
415 'mbstring_enabled' => extension_loaded( 'mbstring' ),
416 );
417
418 return $this->environment_status;
419 }
420
421 /**
422 * Status
423 *
424 * @since 2.0.0
425 *
426 * @param string $type type.
427 *
428 * @return mixed
429 */
430 public function status( $type = '' ) {
431
432 $data = array();
433 $data[ null ] = 'null';
434
435 $environment = $this->get_environment_info();
436
437 $data['home_url'] = $environment['home_url'] ?? null;
438 $data['site_url'] = $environment['site_url'] ?? null;
439
440 $latest_version = get_transient( 'tutor_system_status_wp_version_check' );
441
442 // WordPress already has efficient update notification mechanism.
443 // We don't need to slow down the page for no reason.
444 // phpcs:disable WordPress.WP.I18n.MissingTranslatorsComment
445 $data['wordpress_version'] = esc_html( $environment['wp_version'] );
446
447 $data['tutor_version'] = esc_html( $environment['version'] );
448
449 $data['wordpress_multisite'] = $environment['wp_multisite'] ? '' : '-';
450
451 $data['wordpress_debug_mode'] = $environment['wp_debug_mode'] ? '' : '-';
452
453 $data['language'] = esc_html( $environment['language'] );
454
455 $data['wordpress_memory_limit'] = ( $environment['wp_memory_limit'] < 67108864 )
456 ? sprintf( esc_html__( '%1$s - We recommend setting memory to at least 64MB. See: %2$s', 'tutor' ), esc_html( size_format( $environment['wp_memory_limit'] ) ), '<a href="https://codex.wordpress.org/Editing_wp-config.php#Increasing_memory_allocated_to_PHP" target="_blank">' . esc_html__( 'Increasing memory allocated to PHP', 'tutor' ) . '</a>' )
457 : esc_html( size_format( $environment['wp_memory_limit'] ) );
458
459 $data['wordpress_cron'] = $environment['wp_cron'] ? '' : '-';
460
461 $data['external_object_cache'] = $environment['external_object_cache'] ? '' : '-';
462
463 $data['server_info'] = $environment['server_info'] ?? null;
464
465 $data['php_version'] = ( version_compare( $environment['php_version'], '7.2', '>=' ) )
466 ? esc_html( $environment['php_version'] )
467 : ( ( version_compare( $environment['php_version'], '5.6', '<' ) )
468 ? __( 'Tutor will run under this version of PHP, however, it has reached end of life. We recommend using PHP version 7.2 or above for greater performance and security.', 'tutor' )
469 : __( 'We recommend using PHP version 7.2 or above for greater performance and security.', 'tutor' ) );
470
471 $data['php_post_max_size'] = esc_html( size_format( $environment['php_post_max_size'] ) ) ?? null;
472
473 $data['php_time_limit'] = esc_html( $environment['php_max_execution_time'] ) ?? null;
474
475 $data['php_max_input_vars'] = esc_html( $environment['php_max_input_vars'] ) ?? null;
476
477 $data['curl_version'] = esc_html( $environment['curl_version'] ) ?? null;
478
479 $data['suhosin_installed'] = $environment['suhosin_installed'] ? '' : '-';
480
481 $data['max_upload_size'] = esc_html( size_format( $environment['max_upload_size'] ) ) ?? null;
482
483 $data['mysql_version'] = ( version_compare( $environment['mysql_version'], '5.6', '<' ) && ! strstr( $environment['mysql_version_string'], 'MariaDB' ) )
484 ?
485 /* translators: %1$s: MySQL version number, %2$s: WordPress requirements URL */
486 sprintf( esc_html__( '%1$s - We recommend a minimum MySQL version of 5.6. See: %2$s', 'tutor' ), esc_html( $environment['mysql_version_string'] ), '<a href="https://wordpress.org/about/requirements/" target="_blank">' . esc_html__( 'WordPress requirements', 'tutor' ) . '</a>' )
487 : esc_html( $environment['mysql_version_string'] );
488
489 $data['default_timezone_is_utc'] = ( 'UTC' !== $environment['default_timezone'] )
490 ?
491 /* translators: %s: default timezone */
492 sprintf( esc_html__( 'Default timezone is %s - it should be UTC', 'tutor' ), esc_html( $environment['default_timezone'] ) )
493 : '';
494
495 $data['fsockopen_curl'] = $environment['fsockopen_or_curl_enabled']
496 ? ''
497 : esc_html__( 'Your server does not have fsockopen or cURL enabled - PayPal IPN and other scripts which communicate with other servers will not work. Contact your hosting provider.', 'tutor' );
498
499 $data['dom_document'] = $environment['domdocument_enabled']
500 ? ''
501 :
502 /* translators: %s: classname and link. */
503 sprintf( esc_html__( 'Your server does not have the %s class enabled - HTML/Multipart emails, and also some extensions, will not work without DOMDocument.', 'tutor' ), '<a href="https://php.net/manual/en/class.domdocument.php">DOMDocument</a>' );
504
505 $data['gzip'] = ( $environment['gzip_enabled'] )
506 ? ''
507 :
508 /* translators: %s: classname and link. */
509 sprintf( esc_html__( 'Your server does not support the %s function - this is required to use the GeoIP database from MaxMind.', 'tutor' ), '<a href="https://php.net/manual/en/zlib.installation.php">gzopen</a>' );
510
511 $data['multibyte_string'] = ( $environment['mbstring_enabled'] )
512 ? ''
513 :
514 /* translators: %s: classname and link. */
515 sprintf( esc_html__( 'Your server does not support the %s functions - this is required for better character encoding. Some fallbacks will be used instead for it.', 'tutor' ), '<a href="https://php.net/manual/en/mbstring.installation.php">mbstring</a>' );
516
517 if ( ! null == $type ) {
518 return $data[ $type ];
519 }
520
521 return $data[ null ];
522 }
523
524 /**
525 * Generate Option Field
526 *
527 * @since 2.0.0
528 *
529 * @param array $field fields.
530 *
531 * @return string
532 */
533 public function generate_field( $field = array() ) {
534 ob_start();
535 include tutor()->path . "views/options/field-types/{$field['type']}.php";
536
537 return ob_get_clean();
538 }
539
540 /**
541 * Get field type template
542 *
543 * @since 2.0.0
544 *
545 * @param array $field field.
546 *
547 * @return string
548 */
549 public function field_type( $field = array() ) {
550 ob_start();
551 include tutor()->path . "views/options/field-types/{$field['type']}.php";
552 return ob_get_clean();
553 }
554
555 /**
556 * Blocks template content
557 *
558 * @since 2.0.0
559 *
560 * @param array $blocks field.
561 *
562 * @return string
563 */
564 public function blocks( $blocks = array() ) {
565 ob_start();
566 include tutor()->path . 'views/options/option_blocks.php';
567 return ob_get_clean();
568 }
569
570 /**
571 * Template content
572 *
573 * @since 2.0.0
574 *
575 * @param array $section field.
576 *
577 * @return string
578 */
579 public function template( $section = array() ) {
580 ob_start();
581 include $section['view_path'] . $section['template'] . '.php';
582 return ob_get_clean();
583 }
584
585 /**
586 * Load template inside template directory
587 *
588 * @since 2.0.0
589 *
590 * @param string $template_slug template slug.
591 * @param array $section sections array.
592 *
593 * @return string
594 */
595 public function view_template( $template_slug, $section = array() ) {
596 ob_start();
597 require tutor()->path . "views/options/template/{$template_slug}";
598 return ob_get_clean();
599 }
600 }
601