PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 3.2.2
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v3.2.2
V-3.3.0 3.2.2 3.2.1 3.2.0 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 V3.0.3 V3.0.2 -3.0.1 V_3.0.0 1.1.1 1.1.8 1.2 1.3 1.4 1.4.18 1.5.2 1.9 2.0 2.10.0 2.10.1 2.10.2 All 137 releases
bit-form / bitforms.php

bitforms.php in Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder 3.2.2, at bitforms.php

212 lines 6.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Plugin Name: Bit Form
5 * Plugin URI: https://www.bitapps.pro/bit-form
6 * Description: Contact Form Builder Plugin: Multi Step Contact Form, Payment Form, Custom Contact Form Plugin by Bit Form
7 * Version: 3.2.2
8 * Author: Contact Form Builder - Bit Form
9 * Author URI: https://www.bitapps.pro
10 * Text Domain: bit-form
11 * Requires at least: 6.4
12 * Requires PHP: 7.4
13 * Domain Path: /languages
14 * License: GPLv2 or later
15 */
16
17 /***
18 * If try to direct access plugin folder it will Exit
19 **/
20 if (!defined('ABSPATH')) {
21 exit;
22 }
23
24 // Define most essential constants.
25 define('BITFORMS_VERSION', '3.2.2');
26 define('BITFORMS_PLUGIN_MAIN_FILE', __FILE__);
27 define('BITFORMS_REQUIRED_BITFORMPRO_VERSION', '3.2.1');
28
29 global $bitforms_db_version;
30 $bitforms_db_version = '3.2';
31 define('BITFORMS_DB_VERSION', $bitforms_db_version);
32 define('BITFORMS_REQUIRED_WP_VERSION', '5.1');
33 define('BITFORMS_REQUIRED_PHP_VERSION', '7.4');
34 define('BITFORMS_API_VERSION', '1.0');
35
36 if (version_compare(PHP_VERSION, '5.6.0', '>=')) {
37 require_once plugin_dir_path(__FILE__) . 'includes/loader.php';
38 }
39
40 /**
41 * Handles plugin activation.
42 *
43 * Throws an error if the plugin is activated on an older version than PHP 5.6.
44 */
45 function bitforms_activate_plugin($network_wide)
46 {
47 if (version_compare(PHP_VERSION, '5.6.0', '<')) {
48 wp_die(
49 'Bit Form requires PHP version 5.6 or higher.',
50 'Error Activating'
51 );
52 }
53
54 do_action('bitforms_activation', $network_wide);
55 }
56
57 register_activation_hook(__FILE__, 'bitforms_activate_plugin');
58
59 /**
60 * Handles plugin deactivation.
61 */
62 function bitforms_deactivate_plugin($network_wide)
63 {
64 if (version_compare(PHP_VERSION, '5.6.0', '<')) {
65 return;
66 }
67
68 do_action('bitforms_deactivation', $network_wide);
69 }
70
71 register_deactivation_hook(__FILE__, 'bitforms_deactivate_plugin');
72
73 /**
74 * Handles plugin uninstall.
75 *
76 * @access private
77 */
78 function bitforms_uninstall_plugin()
79 {
80 if (version_compare(PHP_VERSION, '5.6.0', '<')) {
81 return;
82 }
83
84 do_action('bitforms_uninstall');
85 }
86 register_uninstall_hook(__FILE__, 'bitforms_uninstall_plugin');
87
88 add_action('plugins_loaded', 'bitforms_check_pro_version');
89
90 function bitforms_check_pro_version()
91 {
92 if (!defined('BITFORMPRO_VERSION')) {
93 return;
94 }
95 if (!version_compare(BITFORMPRO_VERSION, BITFORMS_REQUIRED_BITFORMPRO_VERSION, '>=')) {
96 add_action('admin_notices', 'bitformsProUpgradeNotice');
97 }
98 }
99
100 function bitformsProUpgradeNotice()
101 {
102 // user meta calls safe here — admin_notices fires well after user initialisation
103 $dismissed_for = get_user_meta(get_current_user_id(), 'bitforms_dismiss_pro_upgrade_notice', true);
104 if (BITFORMS_REQUIRED_BITFORMPRO_VERSION === $dismissed_for) {
105 return;
106 }
107
108 // "Update now" routes through bitforms_force_pro_update_check(), which busts the cached
109 // update data before handing off to WordPress core's native plugin-update flow
110 // (Plugin_Upgrader: maintenance mode, filesystem creds, rollback UI). Going straight to
111 if (current_user_can('update_plugins')) {
112 $update_url = wp_nonce_url(
113 admin_url('admin-post.php?action=bitforms_force_pro_update_check'),
114 'bitforms_force_pro_update_check'
115 );
116 } else {
117 // Users who cannot update plugins: send them to the Updates screen with a forced
118 // refresh so Bit Form Pro's Updater re-checks and stages the update for detection.
119 $update_url = self_admin_url('update-core.php?force-check=1');
120 }
121 $required = esc_html(BITFORMS_REQUIRED_BITFORMPRO_VERSION);
122
123 // Keep HTML out of translatable strings to prevent translator HTML injection
124 $message = '<strong>' . esc_html__('Bit Form Pro', 'bit-form') . '</strong> '
125 . sprintf(
126 /* translators: %s: minimum required version number */
127 esc_html__('requires an update to version %s or higher for full compatibility.', 'bit-form'),
128 '<strong>' . $required . '</strong>'
129 )
130 . ' <a href="' . esc_url($update_url) . '">' . esc_html__('Update now', 'bit-form') . '</a>';
131
132 wp_admin_notice(
133 $message,
134 [
135 'type' => 'error',
136 'dismissible' => true,
137 'additional_classes' => ['bitforms-pro-upgrade-notice'],
138 'attributes' => [
139 'data-nonce' => wp_create_nonce('bitforms_dismiss_pro_notice'),
140 'data-ajax-url' => esc_url(admin_url('admin-ajax.php')),
141 ],
142 'paragraph_wrap' => true,
143 ]
144 );
145
146 // Script at footer — avoids mid-page inline script
147 add_action('admin_footer', 'bitformsProUpgradeNoticeScript');
148 }
149
150 add_action('admin_post_bitforms_force_pro_update_check', 'bitforms_force_pro_update_check');
151
152 /**
153 * Force a fresh Bit Form Pro update check, then hand off to core's plugin upgrader.
154 */
155 function bitforms_force_pro_update_check()
156 {
157 if (!current_user_can('update_plugins')) {
158 wp_die(
159 esc_html__('You are not allowed to update plugins on this site.', 'bit-form'),
160 esc_html__('Bit Form', 'bit-form'),
161 ['response' => 403]
162 );
163 }
164 check_admin_referer('bitforms_force_pro_update_check');
165
166 $pro_plugin_file = 'bitformpro/bitformpro.php';
167
168 // Drop Bit Form Pro's cached version lookup.
169 delete_option(md5(sanitize_key('bitformpro') . '_plugin_info'));
170 delete_site_transient('bitformpro_api_request_' . md5(serialize('bitformpro')));
171 delete_site_transient('update_plugins');
172
173 // Let Pro (or any add-on) flush additional update caches without another Free release.
174 do_action('bitforms_force_pro_update_check');
175
176 if (function_exists('wp_update_plugins')) {
177 wp_update_plugins();
178 }
179
180 // Build the URL with add_query_arg()
181 $upgrade_url = add_query_arg(
182 [
183 'action' => 'upgrade-plugin',
184 'plugin' => $pro_plugin_file,
185 '_wpnonce' => wp_create_nonce('upgrade-plugin_' . $pro_plugin_file),
186 ],
187 self_admin_url('update.php')
188 );
189
190 wp_safe_redirect($upgrade_url);
191 exit;
192 }
193
194 function bitformsProUpgradeNoticeScript()
195 {
196 ?>
197 <script>
198 (function () {
199 var notice = document.querySelector('.bitforms-pro-upgrade-notice');
200 if (!notice) return;
201 notice.addEventListener('click', function (e) {
202 if (!e.target.classList.contains('notice-dismiss')) return;
203 var fd = new FormData();
204 fd.append('action', 'bitforms_dismiss_pro_notice');
205 fd.append('nonce', notice.dataset.nonce);
206 fetch(notice.dataset.ajaxUrl, { method: 'POST', credentials: 'same-origin', body: fd });
207 });
208 }());
209 </script>
210 <?php
211 }
212