PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.12
Advanced Ads – Ad Manager & AdSense v2.0.12
2.0.23 2.0.22 2.0.21 1.38.0 1.39.0 1.39.1 1.39.2 1.39.3 1.39.4 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.40.0 1.40.1 1.40.2 1.41.0 1.42.0 1.42.1 1.42.2 1.43.0 1.44.0 1.44.1 1.45.0 1.45.1 1.46.0 1.47.0 1.47.1 1.47.2 1.47.3 1.47.4 1.47.5 1.48.0 1.48.1 1.49.0 1.5.0 1.5.0.1 1.5.1 1.5.2 1.5.2.1 1.5.4 1.5.4.1 1.5.5 1.50.0 1.51.0 1.51.1 1.51.2 1.51.3 1.52.0 1.52.1 1.52.2 1.52.3 1.52.4 1.53.0 1.53.1 1.53.2 1.54.0 1.54.1 1.55.0 1.56.0 1.56.1 1.56.2 1.56.3 1.56.4 1.6 1.6.1 1.6.10 1.6.10.1 1.6.10.2 1.6.11 1.6.11.1 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.17.1 1.6.17.2 1.6.2 1.6.2.1 1.6.3 1.6.4 1.6.4.1 1.6.5 1.6.6 1.6.6.1 1.6.7 1.6.7.1 1.6.8 1.6.8.1 1.6.8.2 1.6.8.3 1.6.9 1.6.9.1 1.6.9.2 1.6.9.3 1.6.9.4 1.7 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.1.1 1.7.1.2 1.7.1.3 1.7.1.4 1.7.1.5 1.7.10 trunk 1.7.11 1.0.1 1.7.12 1.0.2 1.7.13 1.0.3 1.7.14 1.1.0 1.7.15 1.1.1 1.7.16 1.1.2 1.7.17 1.1.3 1.7.18 1.10 1.7.19 1.10.1 1.7.2 1.10.10 1.7.2.1 1.10.11 1.7.20 1.10.12 1.7.21 1.10.2 1.7.22 1.10.3 1.7.23 1.10.4 1.7.24 1.10.5 1.7.25 1.10.6 1.7.3 1.10.7 1.7.4 1.10.8 1.7.4.1 1.10.9 1.7.4.2 1.11 1.7.4.3 1.11.1 1.7.4.4 1.11.2 1.7.4.5 1.12 1.7.5 1.13 1.7.5.1 1.13.1 1.7.6 1.13.2 1.7.7 1.13.3 1.7.8 1.13.4 1.7.9 1.13.5 1.7.9.1 1.13.6 1.7.9.2 1.13.7 1.7.9.3 1.13.8 1.8 1.14 1.8.1 1.14.1 1.8.10 1.14.10 1.8.11 1.14.11 1.8.12 1.14.2 1.8.13 1.14.3 1.8.14 1.14.4 1.8.15 1.14.5 1.8.16 1.14.6 1.8.17 1.14.7 1.8.18 1.14.8 1.8.19 1.14.9 1.8.2 1.15 1.8.20 1.16 1.8.21 1.16.1 1.8.22 1.17 1.8.23 1.17.1 1.8.24 1.17.10 1.8.25 1.17.10-rc.1 1.8.26 1.17.11 1.8.27 1.17.12 1.8.28 1.17.12-rc.1 1.8.29 1.17.2 1.8.3 1.17.3 1.8.30 1.17.4 1.8.4 1.17.5 1.8.5 1.17.6 1.8.6 1.17.7 1.8.7 1.17.8 1.8.8 1.17.9 1.8.9 1.17.9-beta.1 1.9 1.18.0 2.0.0 1.19.0 2.0.1 1.19.1 2.0.10 1.2 2.0.11 1.2.1 2.0.12 1.2.2 2.0.13 1.2.3 2.0.14 1.2.4 2.0.15 1.2.5 2.0.16 1.2.6 2.0.17 1.2.7 2.0.18 1.20.0 2.0.19 1.20.0-rc.1 2.0.2 1.20.0-rc.2 2.0.20 1.20.1 2.0.3 1.20.2 2.0.4 1.20.3 2.0.5 1.21.0 2.0.6 1.21.1 2.0.7 1.22.0 2.0.8 1.22.1 2.0.9 1.22.2 1.23.0 1.23.1 1.23.2 1.24.0 1.24.1 1.24.2 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.29.0 1.29.1 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.16 1.3.17 1.3.18 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.30.0 1.30.1 1.30.2 1.30.2-rc.1 1.30.3 1.30.4 1.30.4-rc.1 1.30.5 1.31.0 1.31.1 1.32.0 1.32.0-rc.1 1.33.0 1.33.1 1.33.2 1.34.0 1.35.0 1.35.1 1.36.0 1.36.1 1.36.2 1.36.3 1.37.0 1.37.1 1.37.2
advanced-ads / includes / class-autoloader.php
advanced-ads / includes Last commit date
abstracts 9 months ago admin 10 months ago ads 9 months ago compatibility 9 months ago crons 1 year ago frontend 11 months ago groups 1 year ago importers 1 year ago installation 1 year ago interfaces 1 year ago placements 1 year ago rest 1 year ago traits 1 year ago utilities 11 months ago array_ad_conditions.php 1 year ago cap_map.php 3 years ago class-assets-registry.php 1 year ago class-autoloader.php 1 year ago class-constants.php 1 year ago class-entities.php 1 year ago class-modal.php 1 year ago class-modules.php 1 year ago class-options.php 1 year ago class-plugin.php 1 year ago class-post-data.php 10 months ago class-shortcodes.php 1 year ago class-upgrades.php 1 year ago class-widget.php 11 months ago default-hooks.php 1 year ago functions-ad.php 1 year ago functions-conditional.php 1 year ago functions-core.php 1 year ago functions-group.php 1 year ago functions-placement.php 1 year ago functions.php 1 year ago index.php 2 years ago load_modules.php 2 years ago
class-autoloader.php
214 lines
1 <?php
2 /**
3 * The class is responsible for locating and loading the autoloader file used in the plugin.
4 *
5 * @package AdvancedAds
6 * @author Advanced Ads <info@wpadvancedads.com>
7 * @since 1.47.0
8 */
9
10 namespace AdvancedAds;
11
12 defined( 'ABSPATH' ) || exit;
13
14 /**
15 * Autoloader.
16 */
17 class Autoloader {
18
19 /**
20 * Hold autoloader.
21 *
22 * @var mixed
23 */
24 private $autoloader;
25
26 /**
27 * Main instance
28 *
29 * Ensure only one instance is loaded or can be loaded.
30 *
31 * @return Autoloader
32 */
33 public static function get(): Autoloader {
34 static $instance;
35
36 if ( null === $instance ) {
37 $instance = new Autoloader();
38 }
39
40 return $instance;
41 }
42
43 /**
44 * Get hold autoloader.
45 *
46 * @return mixed
47 */
48 public function get_autoloader() {
49 return $this->autoloader;
50 }
51
52 /**
53 * Get plugin directory.
54 *
55 * @return string
56 */
57 public function get_directory(): string {
58 return dirname( ADVADS_FILE );
59 }
60
61 /**
62 * Runs this initializer.
63 *
64 * @return void
65 */
66 public function initialize(): void {
67 $locate = $this->locate();
68
69 if ( ! $locate ) {
70 add_action( 'admin_notices', [ $this, 'missing_autoloader' ] );
71 return;
72 }
73
74 $this->autoloader = require $locate;
75 $this->register_wordpress();
76 }
77
78 /**
79 * Locate the autoload file
80 *
81 * This function searches for the autoload file in the packages directory and vendor directory.
82 *
83 * @return bool|string
84 */
85 private function locate() {
86 $directory = $this->get_directory();
87 $packages = $directory . '/packages/autoload.php';
88 $vendors = $directory . '/vendor/autoload.php';
89 $is_debug = $this->is_debug() || 'local' === $this->get_environment_type();
90
91 if ( is_readable( $packages ) && ( ! $is_debug || ! is_readable( $vendors ) ) ) {
92 return $packages;
93 }
94
95 if ( is_readable( $vendors ) ) {
96 return $vendors;
97 }
98
99 return false;
100 }
101
102 /**
103 * Add WordPress classes to map
104 *
105 * @return void
106 */
107 private function register_wordpress(): void {
108 $this->autoloader->addClassmap(
109 [
110 'WP_List_Table' => ABSPATH . 'wp-admin/includes/class-wp-list-table.php',
111 'WP_Terms_List_Table' => ABSPATH . 'wp-admin/includes/class-wp-terms-list-table.php',
112 ]
113 );
114 }
115
116 /**
117 * If the autoloader is missing, add an admin notice.
118 *
119 * @return void
120 */
121 protected function missing_autoloader(): void {
122 ?>
123 <div class="notice notice-error">
124 <p>
125 <?php
126 printf(
127 /* translators: 1: is a link to a support document. 2: closing link */
128 esc_html__( 'Your installation of Advanced Ads is incomplete. If you installed Advanced Ads from GitHub, %1$s please refer to this document%2$s to set up your development environment.', 'advanced-ads' ),
129 '<a href="' . esc_url( 'https://github.com/advanced-ads/advanced-ads/wiki/How-to-set-up-development-environment' ) . '" target="_blank" rel="noopener noreferrer">',
130 '</a>'
131 );
132 ?>
133 </p>
134 </div>
135 <?php
136 }
137
138 /**
139 * Retrieves the current environment type.
140 *
141 * @return string
142 */
143 public function get_environment_type(): string {
144 return function_exists( 'wp_get_environment_type' )
145 ? wp_get_environment_type()
146 : $this->get_environment_type_fallback();
147 }
148
149 /**
150 * Retrieves the current environment type.
151 *
152 * @return string
153 */
154 private function get_environment_type_fallback(): string {
155 static $current_env = '';
156
157 if ( ! defined( 'WP_RUN_CORE_TESTS' ) && $current_env ) {
158 return $current_env;
159 }
160
161 $wp_environments = [
162 'local',
163 'development',
164 'staging',
165 'production',
166 ];
167
168 // Add a note about the deprecated WP_ENVIRONMENT_TYPES constant.
169 if ( defined( 'WP_ENVIRONMENT_TYPES' ) && function_exists( '_deprecated_argument' ) ) {
170 if ( function_exists( '__' ) ) {
171 /* translators: %s: WP_ENVIRONMENT_TYPES */
172 $message = sprintf( __( 'The %s constant is no longer supported.', 'advanced-ads' ), 'WP_ENVIRONMENT_TYPES' );
173 } else {
174 $message = sprintf( 'The %s constant is no longer supported.', 'WP_ENVIRONMENT_TYPES' );
175 }
176
177 _deprecated_argument(
178 'define()',
179 '5.5.1',
180 $message // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
181 );
182 }
183
184 // Check if the environment variable has been set, if `getenv` is available on the system.
185 if ( function_exists( 'getenv' ) ) {
186 $has_env = getenv( 'WP_ENVIRONMENT_TYPE' );
187 if ( false !== $has_env ) {
188 $current_env = $has_env;
189 }
190 }
191
192 // Fetch the environment from a constant, this overrides the global system variable.
193 if ( defined( 'WP_ENVIRONMENT_TYPE' ) && WP_ENVIRONMENT_TYPE ) {
194 $current_env = WP_ENVIRONMENT_TYPE;
195 }
196
197 // Make sure the environment is an allowed one, and not accidentally set to an invalid value.
198 if ( ! in_array( $current_env, $wp_environments, true ) ) {
199 $current_env = 'production';
200 }
201
202 return $current_env;
203 }
204
205 /**
206 * Is WordPress debug mode enabled
207 *
208 * @return bool
209 */
210 private function is_debug(): bool {
211 return defined( 'WP_DEBUG' ) && WP_DEBUG;
212 }
213 }
214