• File: class-deactivate-duplicate-plugin.php
  • Full Path: /home/matthif/www/wp-content/plugins/visual-portfolio/classes/class-deactivate-duplicate-plugin.php
  • Date Modified: 12/12/2023 4:36 AM
  • File size: 2.85 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php
/**
 * Checks if another version of Visual Portfolio/Visual Portfolio Pro is active and deactivates it.
 *
 * @package visual-portfolio/deactivate-duplicate-plugin
 */

if ( ! defined'ABSPATH' ) ) {
    exit;
}

/**
 * Class Visual_Portfolio_Deactivate_Duplicate_Plugin
 */
class Visual_Portfolio_Deactivate_Duplicate_Plugin {
    
/**
     * Visual_Portfolio_Deactivate_Duplicate_Plugin constructor.
     */
    
public function __construct() {
        
add_action'activated_plugin', array( $this'deactivate_other_instances' ) );
        
add_action'pre_current_active_plugins', array( $this'plugin_deactivated_notice' ) );
    }

    
/**
     * Checks if another version of Visual Portfolio/Visual Portfolio Pro is active and deactivates it.
     * Hooked on `activated_plugin` so other plugin is deactivated when current plugin is activated.
     *
     * @param string $plugin The plugin being activated.
     */
    
public function deactivate_other_instances$plugin ) {
        if ( ! 
in_array$plugin, array( 'visual-portfolio/class-visual-portfolio.php''visual-portfolio-pro/class-visual-portfolio-pro.php' ), true ) ) {
            return;
        }

        
$plugin_to_deactivate  'visual-portfolio/class-visual-portfolio.php';
        
$deactivated_notice_id 1;

        
// If we just activated the free version, deactivate the Pro version.
        
if ( $plugin === $plugin_to_deactivate ) {
            
$plugin_to_deactivate  'visual-portfolio-pro/class-visual-portfolio-pro.php';
            
$deactivated_notice_id 2;
        }

        if ( 
is_multisite() && is_network_admin() ) {
            
$active_plugins = (array) get_site_option'active_sitewide_plugins', array() );
            
$active_plugins array_keys$active_plugins );
        } else {
            
$active_plugins = (array) get_option'active_plugins', array() );
        }

        foreach ( 
$active_plugins as $plugin_basename ) {
            if ( 
$plugin_to_deactivate === $plugin_basename ) {
                
set_transient'vp_deactivated_notice_id'$deactivated_notice_idHOUR_IN_SECONDS );
                
deactivate_plugins$plugin_basename );
                return;
            }
        }
    }

    
/**
     * Displays a notice when either Visual Portfolio or Visual Portfolio Pro is automatically deactivated.
     */
    
public function plugin_deactivated_notice() {
        
$deactivated_notice_id = (int) get_transient'vp_deactivated_notice_id' );
        if ( ! 
in_array$deactivated_notice_id, array( 1), true ) ) {
            return;
        }

        
$message __"Visual Portfolio and Visual Portfolio Pro should not be active at the same time. We've automatically deactivated Visual Portfolio."'visual-portfolio' );
        if ( 
=== $deactivated_notice_id ) {
            
$message __"Visual Portfolio and Visual Portfolio Pro should not be active at the same time. We've automatically deactivated Visual Portfolio Pro."'visual-portfolio' );
        }

        
?>
        <div class="notice notice-warning">
            <p><?php echo esc_html$message ); ?></p>
        </div>
        <?php

        delete_transient
'vp_deactivated_notice_id' );
    }
}

new 
Visual_Portfolio_Deactivate_Duplicate_Plugin();