- WordPress core y plugins - Tema Twenty Twenty-Four configurado - Plugin allow-unfiltered-html.php simplificado - .gitignore configurado para excluir wp-config.php y uploads 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
77 lines
2.1 KiB
PHP
Executable File
77 lines
2.1 KiB
PHP
Executable File
<?php // phpcs:ignore WordPress.Files.FileName.NotHyphenatedLowercase
|
|
use AdvancedAds\Autoloader;
|
|
|
|
/**
|
|
* Class Advanced_Ads_ModuleLoader
|
|
*
|
|
* phpcs:disable WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
|
|
* phpcs:disable WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
|
|
*/
|
|
final class Advanced_Ads_ModuleLoader {
|
|
|
|
/**
|
|
* Hold modules instances.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected static $modules = [];
|
|
|
|
/**
|
|
* Get the Composer autoloader.
|
|
*
|
|
* @deprecated 1.46.1
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public static function getLoader() {
|
|
_deprecated_function( __METHOD__, '1.46.1', '\AdvancedAds\Autoloader::get()->get_autoloader()' );
|
|
return Autoloader::get()->get_autoloader();
|
|
}
|
|
|
|
/**
|
|
* Module loader options:
|
|
* - array 'disabled': Pretty name by (module) dirname
|
|
*
|
|
* @param string $path Path to modules.
|
|
* @param array $options Optional. Module loader options.
|
|
*/
|
|
public static function loadModules( $path, $options = [] ) {
|
|
$loader = Autoloader::get()->get_autoloader();
|
|
|
|
$isAdmin = is_admin();
|
|
$disabledModules = (array) ( $options['disabled'] ?? [] );
|
|
|
|
// Iterate modules.
|
|
foreach ( glob( $path . '*/main.php' ) as $module ) {
|
|
$modulePath = dirname( $module );
|
|
$moduleName = basename( $modulePath );
|
|
|
|
// Configuration is enabled by default (localisation, autoloading and other undemanding stuff).
|
|
if ( file_exists( $modulePath . '/config.php' ) ) {
|
|
$config = require $modulePath . '/config.php';
|
|
// Append autoload classmap.
|
|
if ( isset( $config['classmap'] ) && is_array( $config['classmap'] ) ) {
|
|
$loader->addClassmap( $config['classmap'] );
|
|
}
|
|
}
|
|
|
|
// Admin is enabled by default.
|
|
if ( $isAdmin && is_readable( $modulePath . '/admin.php' ) ) {
|
|
include $modulePath . '/admin.php'; // Do not care if this fails.
|
|
}
|
|
|
|
// Skip if disabled.
|
|
if ( isset( $disabledModules[ $moduleName ] ) ) {
|
|
continue;
|
|
}
|
|
|
|
self::$modules[ $moduleName ] = $modulePath;
|
|
}
|
|
|
|
// Load modules.
|
|
foreach ( self::$modules as $name => $path ) {
|
|
require_once $path . '/main.php';
|
|
}
|
|
}
|
|
}
|