Files
roi-theme/wp-content/plugins/wp-marketing-automations/woofunnels/includes/class-woofunnels-deactivate.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

202 lines
9.0 KiB
PHP
Executable File

<?php
if ( ! class_exists( 'WooFunnels_Deactivate' ) ) {
/**
* Contains the logic for deactivation popups
* @since 1.0.0
* @author woofunnels
* @package WooFunnels
*/
#[AllowDynamicProperties]
class WooFunnels_Deactivate {
public static $deactivation_str;
/**
* Initialization of hooks where we prepare the functionality to ask use for survey
*/
public static function init() {
add_action( 'admin_init', array( __CLASS__, 'load_all_str' ) );
add_action( 'admin_footer', array( __CLASS__, 'maybe_load_deactivate_options' ) );
add_action( 'wp_ajax_woofunnels_submit_uninstall_reason', array( __CLASS__, '_submit_uninstall_reason_action' ) );
}
/**
* Localizes all the string used
*/
public static function load_all_str() {
self::$deactivation_str = array(
'deactivation-share-reason' => __( 'If you have a moment, please let us know why you are deactivating', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-no-longer-needed' => __( 'No longer need the plugin', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-found-a-better-plugin' => __( 'I found an alternate plugin', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-needed-for-a-short-period' => __( 'I only needed the plugin for a short period', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'placeholder-plugin-name' => __( 'Please share which plugin', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-broke-my-site' => __( 'Encountered a fatal error', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-suddenly-stopped-working' => __( 'The plugin suddenly stopped working', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-other' => _x( 'Other', 'the text of the "other" reason for deactivating the plugin that is shown in the modal box.', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'deactivation-modal-button-submit' => __( 'Submit & Deactivate', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'deactivate' => __( 'Deactivate', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'deactivation-modal-button-deactivate' => __( 'Deactivate', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'deactivation-modal-button-confirm' => __( 'Yes - Deactivate', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'deactivation-modal-button-cancel' => _x( 'Cancel', 'the text of the cancel button of the plugin deactivation dialog box.', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-cant-pay-anymore' => __( "I can't pay for it anymore", 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'placeholder-comfortable-price' => __( 'What price would you feel comfortable paying?', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-couldnt-make-it-work' => __( "I couldn't understand how to make it work", 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-great-but-need-specific-feature' => __( "The plugin is great, but I need specific feature that you don't support", 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-not-working' => __( 'Couldn\'t get the plugin to work', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-not-what-i-was-looking-for' => __( "It's not what I was looking for", 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-didnt-work-as-expected' => __( "The plugin didn't work as expected", 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'placeholder-feature' => __( 'What feature?', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'placeholder-share-what-didnt-work' => __( "Kindly share what didn't work so we can fix it for future users...", 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'placeholder-what-youve-been-looking-for' => __( "What you've been looking for?", 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'placeholder-what-did-you-expect' => __( 'What did you expect?', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-didnt-work' => __( "The plugin didn't work", 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'reason-dont-like-to-share-my-information' => __( "I don't like to share my information with you", 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'conflicts-other-plugins' => __( "Conflicts with other plugins", 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'temporary-deactivation' => __( "It's a temporary deactivation", 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
);
}
/**
* Checking current page and pushing html, js and css for this task
* @global string $pagenow current admin page
* @global array $VARS global vars to pass to view file
*/
public static function maybe_load_deactivate_options() {
global $pagenow;
if ( $pagenow === 'plugins.php' ) {
global $VARS;
$VARS = array(
'slug' => '',
'reasons' => self::deactivate_options(),
);
include_once dirname( dirname( __FILE__ ) ) . '/views/woofunnels-deactivate-modal.phtml';
}
}
/**
* deactivation reasons in array format
* @return array reasons array
* @since 1.0.0
*/
public static function deactivate_options() {
$reasons = array( 'default' => [] );
$reasons['default'] = array(
array(
'id' => 1,
'text' => self::load_str( 'reason-not-working' ),
'input_type' => '',
'input_placeholder' => self::load_str( 'placeholder-plugin-name' ),
),
array(
'id' => 2,
'text' => self::load_str( 'reason-found-a-better-plugin' ),
'input_type' => 'textfield',
'input_placeholder' => self::load_str( 'placeholder-plugin-name' )
),
array(
'id' => 3,
'text' => self::load_str( 'reason-no-longer-needed' ),
'input_type' => '',
'input_placeholder' => '',
),
array(
'id' => 4,
'text' => self::load_str( 'temporary-deactivation' ),
'input_type' => '',
'input_placeholder' => '',
),
array(
'id' => 5,
'text' => self::load_str( 'conflicts-other-plugins' ),
'input_type' => 'textfield',
'input_placeholder' => self::load_str( 'placeholder-plugin-name' )
),
array(
'id' => 6,
'text' => self::load_str( 'reason-broke-my-site' ),
'input_type' => '',
'input_placeholder' => '',
),
array(
'id' => 7,
'text' => self::load_str( 'reason-other' ),
'input_type' => 'textfield',
'input_placeholder' => __( 'Please share the reason', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
)
);
return $reasons;
}
/**
* get exact str against the slug
*
* @param $slug
*
* @return mixed
*/
public static function load_str( $slug ) {
return self::$deactivation_str[ $slug ];
}
/**
* Called after the user has submitted his reason for deactivating the plugin.
*
* @since 1.1.2
*/
public static function _submit_uninstall_reason_action() {
try {
check_admin_referer( 'bwf_secure_key', '_nonce' );
if ( ! current_user_can( 'install_plugins' ) ) {
wp_send_json_error();
}
if ( ! isset( $_POST['reason_id'] ) ) {
wp_send_json_error();
}
$reason_info = isset( $_POST['reason_info'] ) ? sanitize_textarea_field( stripslashes( bwf_clean( $_POST['reason_info'] ) ) ) : '';
$reason = array(
'id' => sanitize_text_field( $_POST['reason_id'] ),
'info' => substr( $reason_info, 0, 128 ),
);
$licenses = WooFunnels_addons::get_installed_plugins();
$version = 'NA';
$plugin_basename = isset( $_POST['plugin_basename'] ) ? bwf_clean( $_POST['plugin_basename'] ) : '';
if ( $licenses && count( $licenses ) > 0 ) {
foreach ( $licenses as $key => $license ) {
if ( $key === $plugin_basename ) {
$version = $license['Version'];
}
}
}
$deactivations = array(
$plugin_basename . '(' . $version . ')' => $reason,
);
WooFunnels_API::post_deactivation_data( $deactivations );
} catch ( Exception $e ) {
// Log the exception if necessary
}
wp_send_json_success();
}
}
}