NF_AddonChecker.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. final class NF_AddonChecker
  3. {
  4. public function __construct()
  5. {
  6. add_action( 'plugins_loaded', array( $this, 'check_plugins' ) );
  7. add_action( 'admin_notices', array( $this, 'deactivation_notice' ) );
  8. }
  9. public function check_plugins()
  10. {
  11. if ( ! function_exists( 'get_plugins' ) ) {
  12. require_once ABSPATH . 'wp-admin/includes/plugin.php';
  13. }
  14. $plugins = get_plugins();
  15. foreach( $plugins as $plugin => $data ){
  16. if( 'ninja-forms/ninja-forms.php' != $plugin && 0 === strncmp( $plugin, 'ninja-forms-', 12 ) && version_compare( $data[ 'Version' ], '3', '<' ) ){
  17. if( ! is_plugin_active( $plugin ) ) continue;
  18. deactivate_plugins($plugin);
  19. wp_redirect( admin_url( 'plugins.php?nf-deactivated=' . $plugin ) ); exit;
  20. }
  21. }
  22. }
  23. public function deactivation_notice()
  24. {
  25. if( ! isset( $_GET[ 'nf-deactivated' ] ) ) return;
  26. $plugin = sanitize_text_field( $_GET[ 'nf-deactivated' ] );
  27. ?>
  28. <div class="notice notice-error is-dismissible">
  29. <p><?php echo sprintf( __( 'Oops! That addon is not yet compatible with Ninja Forms THREE. %sLearn More%s.', 'ninja-forms' ), '<a target="_blank" href="https://ninjaforms.com/ninja-forms-three-extension-development-master-list/">', '</a>' ); ?></p>
  30. <p><?php echo sprintf( __( '%s was deactivated.', 'ninja-forms' ), '<code>' . $plugin . '</code>'); ?></p>
  31. </div>
  32. <?php
  33. }
  34. }
  35. new NF_AddonChecker();