PluginProbe
weForms – Easy Drag & Drop Contact Form Builder For WordPress / 1.0.2
weForms – Easy Drag & Drop Contact Form Builder For WordPress v1.0.2
1.6.7 1.6.8 1.6.9 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.18 1.6.19 1.6.2 1.6.20 1.6.21 1.6.22 1.6.23 1.6.24 1.6.25 1.6.26 1.6.27 1.6.28 1.6.3 1.6.4 1.6.5 1.6.6 All 74 releases
← All changes | weforms.php +282 -264 1.6.241.0.2 View file →
@@ -1,12 +1,12 @@
1 1 <?php
2 2 /**
3 3 * Plugin Name: weForms
4 4 * Description: The best contact form plugin for WordPress
5 - * Plugin URI: https://weformspro.com/
6 - * Author: weForms
7 - * Author URI: https://weformspro.com/
8 - * Version: 1.6.24
5 + * Plugin URI: https://wedevs.com/weforms/
6 + * Author: weDevs
7 + * Author URI: https://wedevs.com/
8 + * Version: 1.0.2
9 9 * License: GPL2 or later
10 10 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
11 11 * Text Domain: weforms
12 12 * Domain Path: /languages
@@ -12,9 +12,9 @@
12 12 * Domain Path: /languages
13 13 */
14 14
15 15 /**
16 - * Copyright (c) 2020 weForms LLC (email: support@weformspro.com). All rights reserved.
16 + * Copyright (c) 2017 weDevs LLC (email: info@wedevs.com). All rights reserved.
17 17 *
18 18 * Released under the GPL license
19 19 * http://www.opensource.org/licenses/gpl-license.php
20 20 *
@@ -38,11 +38,9 @@
38 38 * **********************************************************************
39 39 */
40 40
41 41 // don't call the file directly
42 -if ( !defined( 'ABSPATH' ) ) {
43 - exit;
44 -}
42 +if ( !defined( 'ABSPATH' ) ) exit;
45 43
46 44 /**
47 45 * WeForms class
48 46 *
@@ -54,78 +52,62 @@
54 52 * Plugin version
55 53 *
56 54 * @var string
57 55 */
58 - public $version = '1.6.24';
56 + public $version = '1.0.2';
59 57
60 58 /**
61 - * Form field value seperator
59 + * Emailer instance
62 60 *
63 - * @var string
61 + * @var WeForms_Emailer
64 62 */
65 - public static $field_separator = '| ';
63 + public $emailer = null;
66 64
67 65 /**
68 - * Holds various class instances
69 - *
70 - * @var array
71 - */
72 - private $container = [];
73 -
74 - /**
75 - * Minimum PHP version required
76 - *
77 - * @var string
78 - */
79 - private $min_php = '5.6.0';
80 -
81 - /**
82 66 * Constructor for the WeForms class
83 67 *
84 68 * Sets up all the appropriate hooks and actions
85 69 * within our plugin.
70 + *
71 + * @uses register_activation_hook()
72 + * @uses register_deactivation_hook()
73 + * @uses is_admin()
74 + * @uses add_action()
86 75 */
87 76 public function __construct() {
88 77 $this->define_constants();
89 78
90 - if ( !$this->is_supported_php() ) {
91 - register_activation_hook( __FILE__, [ $this, 'auto_deactivate' ] );
92 - add_action( 'admin_notices', [ $this, 'php_version_notice' ] );
79 + register_activation_hook( __FILE__, array( $this, 'activate' ) );
80 + register_deactivation_hook( __FILE__, array( $this, 'deactivate' ) );
93 81
94 - return;
95 - }
96 -
97 - register_activation_hook( __FILE__, [ $this, 'activate' ] );
98 - register_deactivation_hook( __FILE__, [ $this, 'deactivate' ] );
99 -
100 - add_action( 'admin_init', [ $this, 'plugin_upgrades' ] );
101 - add_action( 'plugins_loaded', [ $this, 'init_plugin' ] );
82 + add_action( 'init', array( $this, 'maybe_requires_core' ) );
83 + add_action( 'wpuf_loaded', array( $this, 'init_plugin' ) );
102 84 }
103 85
104 86 /**
105 - * Magic getter to bypass referencing plugin.
87 + * Define the constants
106 88 *
107 - * @param $prop
108 - *
109 - * @return mixed
89 + * @return void
110 90 */
111 - public function __get( $prop ) {
112 - if ( array_key_exists( $prop, $this->container ) ) {
113 - return $this->container[ $prop ];
114 - }
115 -
116 - return $this->{$prop};
91 + private function define_constants() {
92 + define( 'WEFORMS_VERSION', '1.0' );
93 + define( 'WEFORMS_FILE', __FILE__ );
94 + define( 'WEFORMS_ROOT', dirname( __FILE__ ) );
95 + define( 'WEFORMS_INCLUDES', WEFORMS_ROOT . '/includes' );
96 + define( 'WEFORMS_ROOT_URI', plugins_url( '', __FILE__ ) );
97 + define( 'WEFORMS_ASSET_URI', WEFORMS_ROOT_URI . '/assets' );
117 98 }
118 99
119 100 /**
120 - * Magic isset to bypass referencing plugin.
101 + * Load the plugin after WP User Frontend is loaded
121 102 *
122 - * @param $prop
123 - *
124 - * @return mixed
103 + * @return void
125 104 */
126 - public function __isset( $prop ) {
127 - return isset( $this->{$prop} ) || isset( $this->container[ $prop ] );
105 + public function init_plugin() {
106 + $this->includes();
107 + $this->init_hooks();
108 +
109 + do_action( 'weforms_loaded' );
128 110 }
129 111
130 112 /**
131 113 * Initializes the WeForms() class
@@ -135,10 +117,9 @@
135 117 */
136 118 public static function init() {
137 119 static $instance = false;
138 120
139 - if ( !$instance ) {
140 - self::log();
121 + if ( ! $instance ) {
141 122 $instance = new WeForms();
142 123 }
143 124
144 125 return $instance;
@@ -144,59 +125,62 @@
144 125 return $instance;
145 126 }
146 127
147 128 /**
148 - * Define the constants
129 + * Placeholder for activation function
149 130 *
150 - * @return void
131 + * Nothing being called here yet.
151 132 */
152 - private function define_constants() {
153 - define( 'WEFORMS_VERSION', $this->version );
154 - define( 'WEFORMS_FILE', __FILE__ );
155 - define( 'WEFORMS_ROOT', __DIR__ );
156 - define( 'WEFORMS_INCLUDES', WEFORMS_ROOT . '/includes' );
157 - define( 'WEFORMS_ROOT_URI', plugins_url( '', __FILE__ ) );
158 - define( 'WEFORMS_ASSET_URI', WEFORMS_ROOT_URI . '/assets' );
159 - }
133 + public function activate() {
134 + global $wpdb;
160 135
161 - /**
162 - * Load the plugin after WP User Frontend is loaded
163 - *
164 - * @return void
165 - */
166 - public function init_plugin() {
167 - $this->includes();
168 - $this->init_hooks();
136 + $collate = '';
169 137
170 - do_action( 'weforms_loaded' );
171 - }
138 + if ( $wpdb->has_cap( 'collation' ) ) {
139 + if ( ! empty($wpdb->charset ) ) {
140 + $collate .= "DEFAULT CHARACTER SET $wpdb->charset";
141 + }
172 142
173 - /**
174 - * Placeholder for activation function
175 - */
176 - public function activate() {
143 + if ( ! empty($wpdb->collate ) ) {
144 + $collate .= " COLLATE $wpdb->collate";
145 + }
146 + }
177 147
178 - // prepare the environment
179 - require_once WEFORMS_INCLUDES . '/functions.php';
180 - require_once WEFORMS_INCLUDES . '/class-installer.php';
181 - require_once WEFORMS_INCLUDES . '/class-field-manager.php';
182 - require_once WEFORMS_INCLUDES . '/class-form-manager.php';
183 - require_once WEFORMS_INCLUDES . '/class-template-manager.php';
148 + $table_schema = array(
149 + "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}weforms_entries` (
150 + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
151 + `form_id` bigint(20) unsigned DEFAULT NULL,
152 + `user_id` bigint(20) unsigned DEFAULT NULL,
153 + `user_ip` int(11) unsigned DEFAULT NULL,
154 + `user_device` varchar(50) DEFAULT NULL,
155 + `referer` varchar(255) DEFAULT NULL,
156 + `status` varchar(10) DEFAULT 'publish',
157 + `created_at` datetime DEFAULT NULL,
158 + PRIMARY KEY (`id`),
159 + KEY `form_id` (`form_id`)
160 + ) $collate;",
184 161
185 - if ( !array_key_exists( 'fields', $this->container ) ) {
186 - $this->container['fields'] = new WeForms_Field_Manager();
187 - }
162 + "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}weforms_entrymeta` (
163 + `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
164 + `weforms_entry_id` bigint(20) unsigned DEFAULT NULL,
165 + `meta_key` varchar(255) DEFAULT NULL,
166 + `meta_value` longtext,
167 + PRIMARY KEY (`meta_id`),
168 + KEY `meta_key` (`meta_key`),
169 + KEY `entry_id` (`weforms_entry_id`)
170 + ) $collate;",
171 + );
188 172
189 - if ( !array_key_exists( 'form', $this->container ) ) {
190 - $this->container['form'] = new WeForms_Form_Manager();
173 + require_once ABSPATH . 'wp-admin/includes/upgrade.php';
174 + foreach ( $table_schema as $table ) {
175 + dbDelta( $table );
191 176 }
192 177
193 - if ( !array_key_exists( 'templates', $this->container ) ) {
194 - $this->container['templates'] = new WeForms_Template_Manager();
195 - }
178 + $this->maybe_set_default_settings();
179 + $this->create_default_form();
196 180
197 - $installer = new WeForms_Installer();
198 - $installer->install();
181 + update_option( 'weforms_installed', time() );
182 + update_option( 'weforms_version', WEFORMS_VERSION );
199 183 }
200 184
201 185 /**
202 186 * Placeholder for deactivation function
@@ -203,8 +187,9 @@
203 187 *
204 188 * Nothing being called here yet.
205 189 */
206 190 public function deactivate() {
191 +
207 192 }
208 193
209 194 /**
210 195 * Include the required classes
@@ -211,105 +196,142 @@
211 196 *
212 197 * @return void
213 198 */
214 199 public function includes() {
215 - require_once WEFORMS_INCLUDES . '/compat/class-abstract-wpuf-integration.php';
216 200
217 - if ( $this->is_request( 'admin' ) ) {
218 - // compatibility
219 - require_once WEFORMS_INCLUDES . '/class-template-manager.php';
220 -
201 + if ( is_admin() ) {
221 202 require_once WEFORMS_INCLUDES . '/admin/class-admin.php';
222 - require_once WEFORMS_INCLUDES . '/admin/class-admin-welcome.php';
223 - require_once WEFORMS_INCLUDES . '/class-importer-manager.php';
224 -
225 - require_once WEFORMS_INCLUDES . '/admin/class-pro-upgrades.php';
226 - require_once WEFORMS_INCLUDES . '/admin/class-promotion.php';
227 - require_once WEFORMS_INCLUDES . '/admin/class-shortcode-button.php';
228 - require_once WEFORMS_INCLUDES . '/admin/class-privacy.php';
203 + require_once WEFORMS_INCLUDES . '/admin/class-cf7.php';
204 + require_once WEFORMS_INCLUDES . '/admin/class-form-template.php';
205 + require_once WEFORMS_INCLUDES . '/admin/class-pro-integrations.php';
229 206 } else {
230 -
231 - // add reCaptcha library if not found
232 - if ( !function_exists( 'recaptcha_get_html' ) ) {
233 - require_once WEFORMS_INCLUDES . '/library/reCaptcha/recaptchalib.php';
234 - require_once WEFORMS_INCLUDES . '/library/reCaptcha/recaptchalib_noCaptcha.php';
235 - }
207 + require_once WPUF_ROOT . '/class/render-form.php';
208 + require_once WEFORMS_INCLUDES . '/class-frontend-form.php';
236 209 }
237 210
238 - if ( $this->is_request( 'frontend' ) || $this->is_request( 'ajax' ) ) {
239 - require_once WEFORMS_INCLUDES . '/class-frontend-form.php';
240 - }
241 - require_once WEFORMS_INCLUDES . '/api/class-weforms-api-rest-controller.php';
242 - require_once WEFORMS_INCLUDES . '/class-weforms-api.php';
243 - require_once WEFORMS_INCLUDES . '/class-scripts-styles.php';
244 - require_once WEFORMS_INCLUDES . '/admin/class-gutenblock.php';
245 211 require_once WEFORMS_INCLUDES . '/class-emailer.php';
246 - require_once WEFORMS_INCLUDES . '/class-field-manager.php';
247 - require_once WEFORMS_INCLUDES . '/class-form-manager.php';
248 - require_once WEFORMS_INCLUDES . '/class-form-entry-manager.php';
249 - require_once WEFORMS_INCLUDES . '/class-form-entry.php';
250 - require_once WEFORMS_INCLUDES . '/class-form.php';
251 - require_once WEFORMS_INCLUDES . '/class-form-widget.php';
252 -
253 - require_once WEFORMS_INCLUDES . '/integrations/class-abstract-integration.php';
254 - require_once WEFORMS_INCLUDES . '/class-integration-manager.php';
255 -
256 212 require_once WEFORMS_INCLUDES . '/class-ajax.php';
257 - require_once WEFORMS_INCLUDES . '/class-ajax-upload.php';
258 213 require_once WEFORMS_INCLUDES . '/class-notification.php';
259 - require_once WEFORMS_INCLUDES . '/class-form-preview.php';
260 - require_once WEFORMS_INCLUDES . '/class-dokan-integration.php';
261 214 require_once WEFORMS_INCLUDES . '/functions.php';
215 + require_once WEFORMS_INCLUDES . '/functions-template-contact-form.php';
262 216 }
263 217
264 218 /**
265 - * Do plugin upgrades
219 + * Initialize the hooks
266 220 *
267 - * @since 1.1.2
268 - *
269 221 * @return void
270 222 */
271 - public function plugin_upgrades() {
272 - if ( !current_user_can( 'manage_options' ) ) {
273 - return;
274 - }
223 + public function init_hooks() {
275 224
276 - require_once WEFORMS_INCLUDES . '/class-upgrades.php';
225 + // Localize our plugin
226 + add_action( 'init', array( $this, 'localization_setup' ) );
277 227
278 - $upgrader = new WeForms_Upgrades();
228 + // initialize the classes
229 + add_action( 'init', array( $this, 'init_classes' ) );
230 + add_action( 'init', array( $this, 'wpdb_table_shortcuts' ), 0 );
279 231
280 - if ( $upgrader->needs_update() ) {
281 - $upgrader->perform_updates();
282 - }
232 + add_filter( 'wpuf_integrations', array( $this, 'register_default_integrations' ) );
233 +
234 + add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( $this, 'plugin_action_links' ) );
283 235 }
284 236
285 237 /**
286 - * Initialize the hooks
238 + * Set WPDB table shortcut names
287 239 *
288 240 * @return void
289 241 */
290 - public function init_hooks() {
242 + public function wpdb_table_shortcuts() {
243 + global $wpdb;
291 244
292 - // Localize our plugin
293 - add_action( 'init', [ $this, 'localization_setup' ] );
245 + $wpdb->weforms_entries = $wpdb->prefix . 'weforms_entries';
246 + $wpdb->weforms_entrymeta = $wpdb->prefix . 'weforms_entrymeta';
247 + }
294 248
295 - // initialize the classes
296 - add_action( 'init', [ $this, 'init_classes' ] );
297 - add_action( 'init', [ $this, 'wpdb_table_shortcuts' ], 0 );
249 + /**
250 + * Check if the core WP User Frontend is installed
251 + *
252 + * @return boolean
253 + */
254 + public function is_core_installed() {
255 + return class_exists( 'WP_User_Frontend' );
256 + }
298 257
299 - add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), [ $this, 'plugin_action_links' ] );
258 + /**
259 + * If the core isn't installed
260 + *
261 + * @return void
262 + */
263 + public function maybe_requires_core() {
264 + if ( $this->is_core_installed() ) {
265 + return;
266 + }
267 +
268 + // show the notice
269 + add_action( 'admin_notices', array( $this, 'core_activation_notice' ) );
270 +
271 + // install the core
272 + add_action( 'wp_ajax_wpuf_cf_install_wpuf', array( $this, 'install_wp_user_frontend' ) );
300 273 }
301 274
302 275 /**
303 - * Set WPDB table shortcut names
276 + * The prompt to install the core plugin
304 277 *
305 278 * @return void
306 279 */
307 - public function wpdb_table_shortcuts() {
308 - global $wpdb;
280 + public function core_activation_notice() {
281 + ?>
282 + <div class="updated" id="wpuf-contact-form-installer-notice" style="padding: 1em; position: relative;">
283 + <h2><?php _e( 'weForms is almost ready!', 'weforms' ); ?></h2>
309 284
310 - $wpdb->weforms_entries = $wpdb->prefix . 'weforms_entries';
311 - $wpdb->weforms_entrymeta = $wpdb->prefix . 'weforms_entrymeta';
285 + <?php
286 + $plugin_file = basename( dirname( __FILE__ ) ) . '/weforms.php';
287 + $core_plugin_file = 'wp-user-frontend/wpuf.php';
288 + ?>
289 + <a href="<?php echo wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $plugin_file . '&amp;plugin_status=all&amp;paged=1&amp;s=', 'deactivate-plugin_' . $plugin_file ); ?>" class="notice-dismiss" style="text-decoration: none;" title="<?php _e( 'Dismiss this notice', 'weforms' ); ?>"></a>
290 +
291 + <?php if ( file_exists( WP_PLUGIN_DIR . '/' . $core_plugin_file ) && is_plugin_inactive( 'wpuf-user-frontend' ) ): ?>
292 + <p><?php _e( 'You just need to activate the Core Plugin to make it functional.', 'weforms' ); ?></p>
293 + <p>
294 + <a class="button button-primary" href="<?php echo wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $core_plugin_file . '&amp;plugin_status=all&amp;paged=1&amp;s=', 'activate-plugin_' . $core_plugin_file ); ?>" title="<?php _e( 'Activate this plugin', 'weforms' ); ?>"><?php _e( 'Activate', 'weforms' ); ?></a>
295 + </p>
296 + <?php else: ?>
297 + <p><?php echo sprintf( __( "You just need to install the %sCore Plugin%s to make it functional.", "wpuf-contact-form" ), '<a target="_blank" href="https://wordpress.org/plugins/wp-user-frontend/">', '</a>' ); ?></p>
298 +
299 + <p>
300 + <button id="wpuf-contact-form-installer" class="button"><?php _e( 'Install Now', 'weforms' ); ?></button>
301 + </p>
302 + <?php endif; ?>
303 + </div>
304 +
305 + <script type="text/javascript">
306 + (function ($) {
307 + var wrapper = $('#wpuf-contact-form-installer-notice');
308 +
309 + wrapper.on('click', '#wpuf-contact-form-installer', function (e) {
310 + var self = $(this);
311 +
312 + e.preventDefault();
313 + self.addClass('install-now updating-message');
314 + self.text('<?php echo esc_js( 'Installing...', 'weforms' ); ?>');
315 +
316 + var data = {
317 + action: 'wpuf_cf_install_wpuf',
318 + _wpnonce: '<?php echo wp_create_nonce('wpuf-installer-nonce'); ?>'
319 + };
320 +
321 + $.post(ajaxurl, data, function (response) {
322 + if (response.success) {
323 + self.attr('disabled', 'disabled');
324 + self.removeClass('install-now updating-message');
325 + self.text('<?php echo esc_js( 'Installed', 'weforms' ); ?>');
326 +
327 + window.location.href = '<?php echo admin_url( 'admin.php?page=weforms' ); ?>';
328 + }
329 + });
330 + });
331 + })(jQuery);
332 + </script>
333 + <?php
312 334 }
313 335
314 336 /**
315 337 * Initialize plugin for localization
@@ -325,71 +347,71 @@
325 347 *
326 348 * @return void
327 349 */
328 350 public function init_classes() {
329 - if ( $this->is_request( 'admin' ) ) {
330 - $this->container['admin'] = new WeForms_Admin();
331 - // $this->container['welcome'] = new WeForms_Admin_Welcome();
332 - $this->container['templates'] = new WeForms_Template_Manager();
333 - $this->container['pro_upgrades'] = new WeForms_Pro_Upgrades();
334 - $this->container['importer'] = new WeForms_Importer_Manager();
335 - $this->container['promo_offer'] = new WeForms_Admin_Promotion();
336 - $this->container['privacy'] = new WeForms_Privacy();
337 - }
338 351
339 - if ( $this->is_request( 'frontend' ) || $this->is_request( 'ajax' ) ) {
340 - $this->container['frontend'] = new WeForms_Frontend_Form();
352 + if ( is_admin() ) {
353 + new WeForms_Admin();
354 + new WeForms_Form_Template();
355 + new WeForms_Pro_Integrations();
356 + new WeForms_CF7();
357 + } else {
358 + new WeForms_Frontend();
341 359 }
342 360
343 - $this->container['emailer'] = new WeForms_Emailer();
344 - $this->container['form'] = new WeForms_Form_Manager();
345 - $this->container['fields'] = new WeForms_Field_Manager();
346 - $this->container['integrations'] = new WeForms_Integration_Manager();
347 - $this->container['preview'] = new WeForms_Form_Preview();
348 - $this->container['scripts'] = new WeForms_Scripts_Styles();
349 - $this->container['block'] = new weForms_FormBlock();
350 - $this->container['dokan_integration'] = new weForms_Dokan_Integration();
351 - // instantiate the integrations
352 - $this->integrations->get_integrations();
361 + $this->emailer = new WeForms_Emailer();
353 362
354 - if ( $this->is_request( 'ajax' ) ) {
355 - $this->container['ajax'] = new WeForms_Ajax();
356 - $this->container['ajax_upload'] = new WeForms_Ajax_Upload();
363 + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
364 + new WeForms_Ajax();
357 365 }
358 - $this->container['weforms_api'] = new WeForms_Api();
359 366 }
360 367
361 368 /**
362 - * The main logging function
369 + * Install the WP User Frontend plugin via ajax
363 370 *
364 - * @uses error_log
365 - *
366 - * @param string $type type of the error. e.g: debug, error, info
367 - * @param string $msg
371 + * @return void
368 372 */
369 - public static function log( $type = '', $msg = '' ) {
373 + public function install_wp_user_frontend() {
370 374
371 - if(file_exists(WP_CONTENT_DIR . '/weforms.log')){
372 - unlink(WP_CONTENT_DIR . '/weforms.log');
375 + if ( ! isset( $_REQUEST['_wpnonce'] ) || ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'wpuf-installer-nonce' ) ) {
376 + wp_send_json_error( __( 'Error: Nonce verification failed', 'weforms' ) );
373 377 }
374 - return;
375 - // default we are turning the debug mood on, but can be turned off
376 - if ( defined( 'WEFORMS_DEBUG_LOG' ) && false === WEFORMS_DEBUG_LOG ) {
377 - return;
378 +
379 + include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
380 + include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
381 +
382 + $plugin = 'wp-user-frontend';
383 + $api = plugins_api( 'plugin_information', array( 'slug' => $plugin, 'fields' => array( 'sections' => false ) ) );
384 +
385 + $upgrader = new Plugin_Upgrader( new WP_Ajax_Upgrader_Skin() );
386 + $result = $upgrader->install( $api->download_link );
387 +
388 + if ( is_wp_error( $result ) ) {
389 + wp_send_json_error( $result );
378 390 }
379 - $msg = sprintf( "[%s][%s] %s\n", date( 'd.m.Y h:i:s' ), $type, $msg );
380 - @error_log( $msg, 3, weforms_log_file_path() );
391 +
392 + $result = activate_plugin( 'wp-user-frontend/wpuf.php' );
393 +
394 + if ( is_wp_error( $result ) ) {
395 + wp_send_json_error( $result );
396 + }
397 +
398 + // hide wpuf page creation notice and tracking
399 + update_option( '_wpuf_page_created', '1' );
400 + update_option( 'wp-user-frontend_tracking_notice', 'hide' );
401 +
402 + wp_send_json_success();
381 403 }
382 404
383 405 /**
384 406 * Plugin action links
385 407 *
386 - * @param array $links
408 + * @param array $links
387 409 *
388 410 * @return array
389 411 */
390 - public function plugin_action_links( $links ) {
391 - $links[] = '<a href="https://weformspro.com/?utm_source=weforms-action-link&utm_medium=textlink&utm_campaign=plugin-docs-link" target="_blank">' . __( 'Docs', 'weforms' ) . '</a>';
412 + function plugin_action_links( $links ) {
413 +
392 414 $links[] = '<a href="' . admin_url( 'admin.php?page=weforms' ) . '">' . __( 'Settings', 'weforms' ) . '</a>';
393 415
394 416 return $links;
395 417 }
@@ -394,102 +416,98 @@
394 416 return $links;
395 417 }
396 418
397 419 /**
398 - * Check if the PHP version is supported
420 + * Register default integrations
399 421 *
400 - * @return bool
422 + * @param array $integrations
423 + *
424 + * @return array
401 425 */
402 - public function is_supported_php( $min_php = null ) {
403 - $min_php = $min_php ? $min_php : $this->min_php;
426 + public function register_default_integrations( $integrations ) {
427 + require_once WEFORMS_INCLUDES . '/integrations/slack/class-integration-slack.php';
404 428
405 - if ( version_compare( PHP_VERSION, $min_php, '<=' ) ) {
406 - return false;
407 - }
429 + $integrations = array_merge( $integrations, array( 'WeForms_Integration_Slack' ) );
408 430
409 - return true;
431 + return $integrations;
410 432 }
411 433
412 434 /**
413 - * Show notice about PHP version
435 + * Set the required default settings key if not present
414 436 *
437 + * This is required for setting up the component settings data
438 + *
415 439 * @return void
416 440 */
417 - public function php_version_notice() {
418 - if ( $this->is_supported_php() || !current_user_can( 'manage_options' ) ) {
419 - return;
441 + public function maybe_set_default_settings() {
442 + $requires_update = false;
443 + $settings = get_option( 'weforms_settings', array() );
444 + $additional_keys = array(
445 + 'email_gateway' => 'wordpress',
446 + 'recaptcha' => array( 'type' => 'v2', 'key' => '', 'secret' => '' )
447 + );
448 +
449 + foreach ($additional_keys as $key => $value) {
450 + if ( ! isset( $settings[ $key ] ) ) {
451 + $settings[ $key ] = $value;
452 +
453 + $requires_update = true;
454 + }
420 455 }
421 456
422 - $error = __( 'Your installed PHP Version is: ', 'weforms' ) . PHP_VERSION . '. ';
423 - $error .= __( 'The <strong>weForms</strong> plugin requires PHP version <strong>', 'weforms' ) . $this->min_php . __( '</strong> or greater.', 'weforms' ); ?>
424 - <div class="error">
425 - <p><?php printf( wp_kses_post ( $error ) ); ?></p>
426 - </div>
427 - <?php
457 + if ( $requires_update ) {
458 + update_option( 'weforms_settings', $settings );
459 + }
428 460 }
429 461
430 462 /**
431 - * Bail out if the php version is lower than
463 + * Create a default form
432 464 *
433 465 * @return void
434 466 */
435 - public function auto_deactivate() {
436 - if ( $this->is_supported_php() ) {
467 + public function create_default_form() {
468 + $version = get_option( 'weforms_version' );
469 +
470 + // seems like it's already installed
471 + if ( $version ) {
437 472 return;
438 473 }
439 474
440 - deactivate_plugins( plugin_basename( __FILE__ ) );
475 + if ( ! function_exists( 'weforms_get_contactform_template_fields' ) ) {
476 + require_once dirname( __FILE__ ) . '/includes/functions-template-contact-form.php';
477 + }
441 478
442 - $error = __( '<h1>An Error Occured</h1>', 'weforms' );
443 - $error .= __( '<h2>Your installed PHP Version is: ', 'weforms' ) . PHP_VERSION . '</h2>';
444 - $error .= __( '<p>The <strong>weforms</strong> plugin requires PHP version <strong>', 'weforms' ) . $this->min_php . __( '</strong> or greater', 'weforms' );
445 - $error .= __( '<p>The version of your PHP is ', 'weforms' ) . '<a href="http://php.net/supported-versions.php" target="_blank"><strong>' . __( 'unsupported and old', 'weforms' ) . '</strong></a>.';
446 - $error .= __( 'You should update your PHP software or contact your host regarding this matter.</p>', 'weforms' );
479 + $form_post_data = array(
480 + 'post_title' => __( 'Contact Form', 'weforms' ),
481 + 'post_type' => 'wpuf_contact_form',
482 + 'post_status' => 'publish',
483 + 'post_author' => get_current_user_id()
484 + );
447 485
448 - wp_die( wp_kses_post( $error ), esc_html_e( 'Plugin Activation Error', 'weforms' ), [ 'back_link' => true ] );
449 - }
486 + $form_id = wp_insert_post( $form_post_data );
450 487
451 - /**
452 - * What type of request is this?
453 - *
454 - * @since 1.2.3
455 - *
456 - * @param string $type admin, ajax, cron, api or frontend
457 - *
458 - * @return bool
459 - */
460 - private function is_request( $type ) {
461 - switch ( $type ) {
462 - case 'admin':
463 - return is_admin();
488 + if ( is_wp_error( $form_id ) ) {
489 + return;
490 + }
464 491
465 - case 'ajax':
466 - return defined( 'DOING_AJAX' );
492 + update_post_meta( $form_id, 'wpuf_form_settings', weforms_get_contactform_template_settings() );
493 + update_post_meta( $form_id, 'notifications', weforms_get_contactform_template_notification() );
467 494
468 - case 'cron':
469 - return defined( 'DOING_CRON' );
495 + $form_fields = weforms_get_contactform_template_fields();
470 496
471 - case 'api':
472 - return defined( 'REST_REQUEST' );
473 -
474 - case 'frontend':
475 - return ( !is_admin() || defined( 'DOING_AJAX' ) ) && !defined( 'DOING_CRON' );
497 + if ( $form_fields ) {
498 + foreach ($form_fields as $menu_order => $field) {
499 + wp_insert_post( array(
500 + 'post_type' => 'wpuf_input',
501 + 'post_status' => 'publish',
502 + 'post_content' => maybe_serialize( $field ),
503 + 'post_parent' => $form_id,
504 + 'menu_order' => $menu_order
505 + ) );
506 + }
476 507 }
477 508 }
478 509
479 - /**
480 - * Init appsero tracker
481 - */
482 - private function init_appsero() {
483 - if ( ! class_exists( 'Appsero\Client' ) ) {
484 - require_once WEFORMS_INCLUDES . '/library/appsero/Client.php';
485 - }
486 -
487 - $client = new Appsero\Client( '213fd70e-0bf3-4710-a35e-934b5a376e13', 'weForms', __FILE__ );
488 -
489 - // Active insights
490 - $client->insights()->init();
491 - }
492 510 } // WeForms
493 511
494 512 /**
495 513 * Initialize the plugin