=')) {
require_once plugin_dir_path(__FILE__) . 'includes/loader.php';
}
/**
* Handles plugin activation.
*
* Throws an error if the plugin is activated on an older version than PHP 5.6.
*/
function bitforms_activate_plugin($network_wide)
{
if (version_compare(PHP_VERSION, '5.6.0', '<')) {
wp_die(
'Bit Form requires PHP version 5.6 or higher.',
'Error Activating'
);
}
do_action('bitforms_activation', $network_wide);
}
register_activation_hook(__FILE__, 'bitforms_activate_plugin');
/**
* Handles plugin deactivation.
*/
function bitforms_deactivate_plugin($network_wide)
{
if (version_compare(PHP_VERSION, '5.6.0', '<')) {
return;
}
do_action('bitforms_deactivation', $network_wide);
}
register_deactivation_hook(__FILE__, 'bitforms_deactivate_plugin');
/**
* Handles plugin uninstall.
*
* @access private
*/
function bitforms_uninstall_plugin()
{
if (version_compare(PHP_VERSION, '5.6.0', '<')) {
return;
}
do_action('bitforms_uninstall');
}
register_uninstall_hook(__FILE__, 'bitforms_uninstall_plugin');
add_action('plugins_loaded', 'bitforms_check_pro_version');
function bitforms_check_pro_version()
{
if (!defined('BITFORMPRO_VERSION')) {
return;
}
if (!version_compare(BITFORMPRO_VERSION, BITFORMS_REQUIRED_BITFORMPRO_VERSION, '>=')) {
add_action('admin_notices', 'bitformsProUpgradeNotice');
}
}
function bitformsProUpgradeNotice()
{
// user meta calls safe here — admin_notices fires well after user initialisation
$dismissed_for = get_user_meta(get_current_user_id(), 'bitforms_dismiss_pro_upgrade_notice', true);
if (BITFORMS_REQUIRED_BITFORMPRO_VERSION === $dismissed_for) {
return;
}
// "Update now" routes through bitforms_force_pro_update_check(), which busts the cached
// update data before handing off to WordPress core's native plugin-update flow
// (Plugin_Upgrader: maintenance mode, filesystem creds, rollback UI). Going straight to
if (current_user_can('update_plugins')) {
$update_url = wp_nonce_url(
admin_url('admin-post.php?action=bitforms_force_pro_update_check'),
'bitforms_force_pro_update_check'
);
} else {
// Users who cannot update plugins: send them to the Updates screen with a forced
// refresh so Bit Form Pro's Updater re-checks and stages the update for detection.
$update_url = self_admin_url('update-core.php?force-check=1');
}
$required = esc_html(BITFORMS_REQUIRED_BITFORMPRO_VERSION);
// Keep HTML out of translatable strings to prevent translator HTML injection
$message = '' . esc_html__('Bit Form Pro', 'bit-form') . ' '
. sprintf(
/* translators: %s: minimum required version number */
esc_html__('requires an update to version %s or higher for full compatibility.', 'bit-form'),
'' . $required . ''
)
. ' ' . esc_html__('Update now', 'bit-form') . '';
wp_admin_notice(
$message,
[
'type' => 'error',
'dismissible' => true,
'additional_classes' => ['bitforms-pro-upgrade-notice'],
'attributes' => [
'data-nonce' => wp_create_nonce('bitforms_dismiss_pro_notice'),
'data-ajax-url' => esc_url(admin_url('admin-ajax.php')),
],
'paragraph_wrap' => true,
]
);
// Script at footer — avoids mid-page inline script
add_action('admin_footer', 'bitformsProUpgradeNoticeScript');
}
add_action('admin_post_bitforms_force_pro_update_check', 'bitforms_force_pro_update_check');
/**
* Force a fresh Bit Form Pro update check, then hand off to core's plugin upgrader.
*/
function bitforms_force_pro_update_check()
{
if (!current_user_can('update_plugins')) {
wp_die(
esc_html__('You are not allowed to update plugins on this site.', 'bit-form'),
esc_html__('Bit Form', 'bit-form'),
['response' => 403]
);
}
check_admin_referer('bitforms_force_pro_update_check');
$pro_plugin_file = 'bitformpro/bitformpro.php';
// Drop Bit Form Pro's cached version lookup.
delete_option(md5(sanitize_key('bitformpro') . '_plugin_info'));
delete_site_transient('bitformpro_api_request_' . md5(serialize('bitformpro')));
delete_site_transient('update_plugins');
// Let Pro (or any add-on) flush additional update caches without another Free release.
do_action('bitforms_force_pro_update_check');
if (function_exists('wp_update_plugins')) {
wp_update_plugins();
}
// Build the URL with add_query_arg()
$upgrade_url = add_query_arg(
[
'action' => 'upgrade-plugin',
'plugin' => $pro_plugin_file,
'_wpnonce' => wp_create_nonce('upgrade-plugin_' . $pro_plugin_file),
],
self_admin_url('update.php')
);
wp_safe_redirect($upgrade_url);
exit;
}
function bitformsProUpgradeNoticeScript()
{
?>