| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- if (!function_exists('analyst_resolve_sdk')) {
- /**
- * Resolve supported sdk versions and load latest supported one
- * also bootstrap sdk with autoloader
- *
- * @since 1.1.3
- *
- * @param null $thisPluginPath
- * @return void
- * @throws Exception
- */
- function analyst_resolve_sdk($thisPluginPath = null) {
- static $loaded = false;
- // Exit if we already resolved SDK
- if ($loaded) return;
- $plugins = get_option('active_plugins');
- if ($thisPluginPath) {
- array_push($plugins, plugin_basename($thisPluginPath));
- }
- $pluginsFolder = WP_PLUGIN_DIR;
- $possibleSDKs = array_map(function ($path) use ($pluginsFolder) {
- $sdkFolder = sprintf('%s/%s/analyst/', $pluginsFolder, dirname($path));
- $sdkFolder = str_replace('\\', '/', $sdkFolder);
- $versionPath = $sdkFolder . 'version.php';
- if (file_exists($versionPath)) {
- return require $versionPath;
- }
- return false;
- }, $plugins);
- global $wp_version;
- // Filter out plugins which has no SDK
- $SDKs = array_filter($possibleSDKs, function ($s) {return is_array($s);});
- // Filter SDKs which is supported by PHP and WP
- $supported = array_values(array_filter($SDKs, function ($sdk) use($wp_version) {
- $phpSupported = version_compare(PHP_VERSION, $sdk['php']) >= 0;
- $wpSupported = version_compare($wp_version, $sdk['wp']) >= 0;
- return $phpSupported && $wpSupported;
- }));
- // Sort SDK by version in descending order
- uasort($supported, function ($x, $y) {
- return version_compare($y['sdk'], $x['sdk']);
- });
- // Reset sorted values keys
- $supported = array_values($supported);
- if (!isset($supported[0])) {
- throw new Exception('There is no SDK which is support current PHP version and WP version');
- }
- // Autoload files for supported SDK
- $autoloaderPath = str_replace(
- '\\',
- '/',
- sprintf('%s/autoload.php', $supported[0]['path'])
- );
- require_once $autoloaderPath;
- $loaded = true;
- }
- }
|