Files
roi-theme/wp-content/plugins/advanced-ads/includes/installation/class-compatibility.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

79 lines
2.0 KiB
PHP
Executable File

<?php
/**
* Installation Compatibility.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.50.0
*/
namespace AdvancedAds\Installation;
use AdvancedAds\Constants;
use AdvancedAds\Utilities\WordPress;
use AdvancedAds\Framework\Interfaces\Integration_Interface;
defined( 'ABSPATH' ) || exit;
/**
* Installation Compatibility.
*/
class Compatibility implements Integration_Interface {
/**
* Hook into WordPress.
*
* @return void
*/
public function hooks(): void {
if ( is_admin() ) {
add_action( 'plugin_loaded', [ $this, 'deactivate_plugins' ], 0 );
}
add_filter( 'upgrader_post_install', [ $this, 'upgrader_post_install' ], 10, 3 );
}
/**
* Check if the plugin was updated and run compatibility checks.
*
* @param bool $response Installation response.
* @param array $hook_extra Extra arguments passed to hooked filters.
* @param array $result Installation result data.
*
* @return bool
*/
public function upgrader_post_install( $response, $hook_extra, $result ): bool {
if ( $response && isset( $result['source_files'] ) && in_array( 'advanced-ads.php', $result['source_files'], true ) ) {
$this->deactivate_plugins();
}
return $response;
}
/**
* Deactivate plugins that are not compatible with the current version of Advanced Ads.
*
* @return void
*/
public function deactivate_plugins(): void {
// Early bail!!
if ( get_option( 'advanced-ads-2-compatibility-flag' ) ) {
return;
}
$plugins = WordPress::get_wp_plugins();
foreach ( Constants::ADDONS_NON_COMPATIBLE_VERSIONS as $version => $slug ) {
$addon = $plugins[ $slug ] ?? null;
if ( ! $addon || ! is_plugin_active( $addon['file'] ) ) {
continue;
}
if ( version_compare( $addon['version'], $version, '<=' ) ) {
\deactivate_plugins( plugin_basename( $addon['file'] ), true );
}
}
// Add flag as if we upload or update the plugin using FTP this hook will not be triggered.
update_option( 'advanced-ads-2-compatibility-flag', true );
}
}