Files
roi-theme/wp-content/plugins/advanced-ads/includes/class-modules.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- 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>
2025-11-03 21:04:30 -06:00

93 lines
1.5 KiB
PHP
Executable File

<?php
/**
* Modules.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*/
namespace AdvancedAds;
use AdvancedAds\Interfaces\Module_Interface;
use AdvancedAds\Framework\Interfaces\Initializer_Interface;
defined( 'ABSPATH' ) || exit;
/**
* Modules.
*/
class Modules implements Initializer_Interface {
/**
* Modules.
*
* @var array
*/
private $modules = [];
/**
* Running modules.
*
* @var array
*/
private $running = [];
/**
* Runs this initializer.
*
* @return void
*/
public function initialize(): void {
add_action( 'init', [ $this, 'load_modules' ], 0 );
}
/**
* Register a module.
*
* @param string $module Module class name.
*
* @return void
*/
public function register_module( string $module ): void {
$module = new $module();
$name = $module->get_name();
$this->modules[ $name ] = $module;
}
/**
* Load modules.
*
* @return void
*/
public function load_modules(): void {
foreach ( $this->modules as $module ) {
if ( $this->can_load( $module ) ) {
$module->load();
}
}
}
/**
* Check if a module can be loaded.
*
* @param Module_Interface $module Module object.
*
* @return bool
*/
private function can_load( Module_Interface $module ): bool {
$check = apply_filters( 'advanced-ads-can-load-module', true, $module );
if ( ! $check ) {
return false;
}
if ( in_array( $module->get_name(), $this->running, true ) ) {
return false;
}
$this->running[] = $module->get_name();
return true;
}
}