PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 2.21.13
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v2.21.13
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 / includes / Core / Hooks / Hooks.php

Hooks.php in Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder 2.21.13, at includes/Core/Hooks/Hooks.php

183 lines 7.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace BitCode\BitForm\Core\Hooks;
4
5 if (!defined('ABSPATH')) {
6 exit;
7 }
8
9 use BitCode\BitForm\Admin\Admin_Bar;
10 use BitCode\BitForm\API\Route\Routes;
11 use BitCode\BitForm\BfAnalytics;
12 use BitCode\BitForm\Core\Ajax\AjaxService;
13 use BitCode\BitForm\Core\Capability\Request;
14 use BitCode\BitForm\Core\Database\FormModel;
15 use BitCode\BitForm\Core\Fallback\FormFallback;
16 use BitCode\BitForm\Core\Form\FormHandler;
17 use BitCode\BitForm\Core\Integration\Integrations;
18 use BitCode\BitForm\Core\Util\FileDownloadProvider;
19 use BitCode\BitForm\Core\Util\Utilities;
20 use BitCode\BitForm\Frontend\ConversationalFormView;
21 use BitCode\BitForm\Frontend\StandaloneFormView;
22 use BitCode\BitForm\Widgets\RegisterBitformBricksWidget;
23 use BitCode\BitForm\Widgets\RegisterGutenBlock;
24
25 class Hooks
26 {
27 public static function init_hooks()
28 {
29 add_action('init', [PostType::class, 'registerBitformsPostType']);
30 add_action('init', [PostType::class, 'registerCustomPostType']);
31 add_action('bitforms_exec_integrations', [Integrations::class, 'integrationExecutionHelper'], 1, 5);
32 // add_action('init', [Hooks::class, 'localization_setup']);
33 add_action('init', [Hooks::class, 'init_classes']);
34 add_action('init', [Hooks::class, 'versionUpdateRunFallbacks']);
35 add_action('rest_api_init', [Hooks::class, 'registerRoutes']);
36 add_filter('plugin_action_links_' . plugin_basename(BITFORMS_PLUGIN_MAIN_FILE), [Hooks::class, 'plugin_action_links']);
37 add_action('bitform_dequeue_scripts', [Hooks::class, 'dequeueScripts'], 1000, 100);
38 add_action('bitform_dequeue_styles', [Hooks::class, 'dequeueStyles'], 1000, 100);
39 add_action('init', [ConversationalFormView::class, 'conversationalFormView']);
40 add_action('init', [StandaloneFormView::class, 'standaloneFormView']);
41 add_action('wp_footer', [Hooks::class, 'updateBitFormVersion'], 9999, 0);
42
43 // Register the BitForm widget for Gutenberg, and Bricks Builder
44 add_action('init', [new RegisterGutenBlock(), 'register']);
45 add_action('init', [RegisterBitformBricksWidget::class, 'register_widgets'], 11);
46
47 // modify data for telemetry
48 add_filter(BITFORMS_PREFIX . 'telemetry_additional_data', [new BfAnalytics(), 'modifyTelemetryData'], 10, 1);
49
50 // Add Bit Form menu to admin bar by "manage_bitform" capability
51 add_filter('bitforms_form_access_capability', [Hooks::class, 'bitformMenuAccessCapability']);
52 }
53
54 public static function updateBitFormVersion()
55 {
56 $currentBitFormVersion = BITFORMS_VERSION;
57 $installedBitFormVersion = get_option('bitforms_version');
58 if ($currentBitFormVersion !== $installedBitFormVersion) {
59 (new FormFallback())->resetJsGeneratedPageIds();
60 update_option('bitforms_version', $currentBitFormVersion);
61 }
62 }
63
64 public static function registerRoutes()
65 {
66 $routes = new Routes();
67 $routes->register_routes();
68 }
69
70 public static function isGeneratedScript($postId, $oldPost, $updatedPost)
71 {
72 $oldContent = $oldPost->post_content;
73 $updatedContent = $updatedPost->post_content;
74 $oldShortCodeMatch = \preg_match_all("/\[bitform\s+id\s*=\s*('|\")\s*(\d+)\s*('|\")\]/", $oldContent, $oldShortCodes);
75 $updatedShortCodeMatch = \preg_match_all("/\[bitform\s+id\s*=\s*('|\")\s*(\d+)\s*('|\")\]/", $updatedContent, $updatedShortCodes);
76
77 if ($oldShortCodeMatch && $updatedShortCodeMatch) {
78 $oldShortCodes = $oldShortCodes[2];
79 $updatedShortCodes = $updatedShortCodes[2];
80
81 $checkEqualArray = array_diff($oldShortCodes, $updatedShortCodes);
82
83 if (!empty($checkEqualArray)) {
84 $formModel = new FormModel();
85 $value = "%$postId%";
86 $condtions = [
87 'generated_script_page_ids' => ['operator' => 'LIKE', 'value' => $value],
88 ];
89 $forms = $formModel->get('generated_script_page_ids,id', $condtions);
90 foreach ($forms as $form) {
91 $pageIds = json_decode($form->generated_script_page_ids);
92 if (property_exists($pageIds, $postId)) {
93 unset($pageIds->{$postId});
94 $formModel->update(['generated_script_page_ids' => \wp_json_encode($pageIds)], ['id' => $form->id]);
95 }
96 }
97 }
98 }
99 }
100
101 public static function localization_setup()
102 {
103 load_plugin_textdomain('bit-form', false, dirname(BITFORMS_PLUGIN_BASENAME) . '/languages'); // phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound
104 }
105
106 public static function init_classes()
107 {
108 if (Request::Check('admin')) {
109 (new Admin_Bar())->register();
110 }
111 if (Request::Check('ajax')) {
112 new AjaxService();
113 }
114 if (Request::Check('frontend')) {
115 $formHandler = new FormHandler();
116 $formHandler->frontend;
117 }
118 if (Request::isPluginPage()) {
119 (new FileDownloadProvider())->register();
120 }
121 // if (current_user_can('edit_posts')) {
122 // (new RegisterGutenBlock())->register();
123 // }
124 include BITFORMS_PLUGIN_DIR_PATH . 'includes' . DIRECTORY_SEPARATOR . 'Frontend' . DIRECTORY_SEPARATOR . 'InitRoutes.php';
125 }
126
127 public static function versionUpdateRunFallbacks()
128 {
129 $dir = BITFORMS_PLUGIN_DIR_PATH . 'includes' . DIRECTORY_SEPARATOR . 'Core' . DIRECTORY_SEPARATOR . 'Fallback';
130 if (is_dir($dir) && is_file($dir . DIRECTORY_SEPARATOR . 'Init.php')) {
131 include $dir . DIRECTORY_SEPARATOR . 'Init.php';
132 }
133 }
134
135 public static function plugin_action_links($links)
136 {
137 $links[] = '<a href="https://bit-form.com/wp-docs/" target="_blank">' . __('Docs', 'bit-form') . '</a>';
138 if (!Utilities::isPro()) {
139 $links[] = '<a href="https://bit-form.com/#pricing" target="_blank"><strong>' . __('Upgrade to Pro', 'bit-form') . '</strong></a>';
140 // $links[] = '<a href="https://bitapps.pro/christmas-wordpress-plugin-deal/#bit-form-pricing?link_type=promo&utm_source=bit-form&utm_medium=update_button&utm_campaign=christmas&utm_content=plugins_list_directory" target="_blank"><strong>' . __('Get 50% Off! Christmas Deal.', 'bit-form') . '</strong></a>';
141 }
142 return $links;
143 }
144
145 public static function dequeueScripts(...$formIds)
146 {
147 foreach ($formIds as $formId) {
148 wp_deregister_script("bitform-script-{$formId}");
149 wp_dequeue_script("bitform-script-{$formId}");
150 }
151 global $bitform_dequeued_scripts;
152 if (!is_array($bitform_dequeued_scripts)) {
153 $bitform_dequeued_scripts = [];
154 }
155 $bitform_dequeued_scripts = array_merge($bitform_dequeued_scripts, $formIds);
156 }
157
158 public static function dequeueStyles(...$formIds)
159 {
160 foreach ($formIds as $formId) {
161 wp_deregister_style("bitform-style-{$formId}");
162 wp_dequeue_style("bitform-style-{$formId}");
163 wp_deregister_style("bitform-style-{$formId}-formid");
164 wp_dequeue_style("bitform-style-{$formId}-formid");
165 }
166 global $bitform_dequeued_styles;
167 if (!is_array($bitform_dequeued_styles)) {
168 $bitform_dequeued_styles = [];
169 }
170 $bitform_dequeued_styles = array_merge($bitform_dequeued_styles, $formIds);
171 }
172
173 public static function bitformMenuAccessCapability()
174 {
175 if (current_user_can('manage_bitform')) {
176 return 'manage_bitform';
177 } elseif (current_user_can('access_bitform')) {
178 return 'access_bitform';
179 }
180 return 'manage_options';
181 }
182 }
183