PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.1.7.1
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.1.7.1
4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 4.1.7.3.2 4.2.0 All 139 releases
learnpress / mu-plugin / class-lp-mu-plugin.php

class-lp-mu-plugin.php in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.1.7.1, at mu-plugin/class-lp-mu-plugin.php

141 lines 3.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Class LP_MU_Plugin
5 *
6 * @since 4.1.7.1
7 * @version 1.0.0
8 */
9 class LP_MU_Plugin {
10 public static $version = 1;
11
12 public static function instance() {
13 static $instance = null;
14 if ( is_null( $instance ) ) {
15 $instance = new self();
16 }
17
18 return $instance;
19 }
20
21 private function __construct() {
22 add_filter( 'option_active_plugins', [ $this, 'load_plugins' ], -1 );
23 }
24
25 /**
26 * Handle list plugins can load in REST API LP
27 * Not handle if called from deactivate_plugins or is_plugin_active function.
28 *
29 * @param $plugins
30 *
31 * @return array|mixed
32 */
33 public function load_plugins( $plugins_activating ) {
34 try {
35 $url_load_plugins = $this->getPluginsMustLoadInUrl();
36 if ( ! $url_load_plugins ) {
37 return $plugins_activating;
38 }
39
40 // Not handle if call from deactivate_plugins or is_plugin_active function.
41 $methods_called_to = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS );
42 foreach ( $methods_called_to as $method ) {
43 if ( $method['function'] === 'deactivate_plugins' || $method['function'] === 'is_plugin_active' ) {
44 return $plugins_activating;
45 }
46 }
47
48 remove_all_actions( 'setup_theme' );
49 remove_all_actions( 'after_setup_theme' );
50
51 $plugins_load = [];
52
53 foreach ( $url_load_plugins as $plugin => $plugin_dependencies ) {
54 if ( in_array( $plugin, $plugins_activating, true ) ) {
55 $plugins_load[] = $plugin;
56
57 foreach ( $plugin_dependencies as $dependency ) {
58 if ( in_array( $dependency, $plugins_activating, true ) ) {
59 $plugins_load[] = $dependency;
60 }
61 }
62 }
63 }
64
65 //error_log( 'plugins_load: ' . print_r( $plugins_load, true ) );
66
67 return $plugins_load;
68 } catch ( Throwable $e ) {
69 error_log( $e->getMessage() );
70 }
71
72 return $plugins_activating;
73 }
74
75 /**
76 * Get the current url
77 *
78 * @return string
79 * @since 3.2.6.8
80 * @author tungnx
81 */
82 public static function getUrlCurrent(): string {
83 $schema = is_ssl() ? 'https://' : 'http://';
84 $http_host = $_SERVER['HTTP_HOST'] ?? '';
85
86 return $schema . $http_host . untrailingslashit( esc_url_raw( $_SERVER['REQUEST_URI'] ?? '' ) );
87 }
88
89 /**
90 * Check url request can apply check load plugins.
91 * Format:
92 * ['url' => ['plugin' => ['dependencies']]]
93 *
94 * @return bool|array
95 */
96 public function getPluginsMustLoadInUrl() {
97 $url_load_plugins = false;
98 $urls_apply = [
99 'wp-json/lp/v1/courses/archive-course' => [
100 'learnpress/learnpress.php' => [],
101 'learnpress-woo-payment/learnpress-woo-payment.php' => [
102 'woocommerce/woocommerce.php',
103 ],
104 ],
105 'wp-json/lp/v1/profile/course-tab' => [
106 'learnpress/learnpress.php' => [],
107 'learnpress-woo-payment/learnpress-woo-payment.php' => [
108 'woocommerce/woocommerce.php',
109 ],
110 ],
111 'wp-json/lp/v1/lazy-load/course-curriculum' => [
112 'learnpress/learnpress.php' => [],
113 'learnpress-assignments/learnpress-assignments.php' => [],
114 'learnpress-h5p/learnpress-h5p.php' => [],
115 ],
116 'wp-json/lp/v1/lazy-load/course-progress' => [
117 'learnpress/learnpress.php' => [],
118 'learnpress-assignments/learnpress-assignments.php' => [],
119 'learnpress-h5p/learnpress-h5p.php' => [],
120 ],
121 'wp-json/lp/v1/lazy-load/items-progress' => [
122 'learnpress/learnpress.php' => [],
123 ],
124 'wp-json/lp/v1/profile/statistic' => [
125 'learnpress/learnpress.php' => [],
126 ],
127 ];
128
129 foreach ( $urls_apply as $url => $plugins_load ) {
130 if ( false !== strpos( self::getUrlCurrent(), $url ) ) {
131 $url_load_plugins = $plugins_load;
132 break;
133 }
134 }
135
136 return $url_load_plugins;
137 }
138 }
139
140 LP_MU_Plugin::instance();
141