File "WPForms.php"
Full Path: /home/fresvfqn/waterdamagerestorationandrepairsmithtown.com/wp-content/plugins/extendify/app/Shared/Services/PluginDependencies/Forms/WPForms.php
File size: 4.76 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Create WPForm programmatically.
*/
namespace Extendify\Shared\Services\PluginDependencies\Forms;
defined('ABSPATH') || die('No direct access.');
use Extendify\Shared\Services\PluginDependencies\PluginInstaller;
/**
* Create WPForm programmatically.
*/
class WPForms
{
/**
* The plugin slug.
*
* @var string
*/
public static $slug = 'wpforms-lite/wpforms.php';
/**
* Replace the placeholder for WP Forms.
*
* @param mixed $code - The code data.
* @param string $template - The form template.
* @param string $newCode - The plugin pattern code.
* @return mixed
*/
public static function create($code, $template, $newCode)
{
// Currently we only support the simple template.
if ($template !== 'simple' || !preg_match('/wp:wpforms/m', $newCode)) {
return $code;
}
require_once ABSPATH . 'wp-admin/includes/plugin.php';
// If the plugin is already installed and active, we don't need to install it again.
if (!is_plugin_active(self::$slug)) {
// If the plugin isn't already active, let's set some default style options.
$wpFormSettings = get_option('wpforms_settings', []);
if (!array_key_exists('disable-css', $wpFormSettings)) {
$wpFormSettings['disable-css'] = 2;
update_option('wpforms_settings', $wpFormSettings);
}
$response = PluginInstaller::installPlugin('wpforms-lite', self::$slug);
if (is_wp_error($response)) {
return $response;
}
}
$formId = self::getOrCreateForm(
'simple-contact-form-template',
__('Simple Contact Form', 'extendify-local')
);
// If we didn't get the form, send back an error to retry.
if (!$formId) {
return new \WP_Error('form_error', 'Could not create wpforms form');
}
// Replace {"formId": "1234"} with the actual form ID.
return preg_replace('/("formId":)(\s*)"\d+"/', '${1}"' . $formId . '"', $newCode);
}
/**
* Retrieve or create a WPForms
*
* @param string $template - The form template.
* @param string $title - The form title.
* @return mixed
*/
public static function getOrCreateForm($template, $title)
{
if (!function_exists('wpforms') || !\wpforms()->get('form')) {
return false;
}
// Get all the forms, which is an array of WP_Post objects.
$forms = \wpforms()->get('form')->get();
// If we already made the same form, return the ID.
foreach ($forms as $post) {
$postMeta = get_post_meta($post->ID, 'extendify_form_type', true);
if ($postMeta === $template) {
return $post->ID;
}
}
$formId = \wpforms()->get('form')->add($title, [], ['template' => $template]);
if (!$formId) {
return false;
}
$formPost = \wpforms()->get('form')->get($formId);
// We have to manually add the form id into the form data.
$formContent = \wpforms_decode($formPost->post_content);
$fields = self::getFormFields($template);
$newFields = [
'id' => $formId,
'fields' => $fields,
];
\wpforms()->get('form')->update($formId, array_merge($formContent, $newFields));
// Keep track of the form in case we need to reuse it later.
\add_post_meta($formId, 'extendify_form_type', $template);
return $formId;
}
/**
* Retrieve or create a WPForms
*
* @param string $template - The form template.
* @return object
*/
public static function getFormFields($template)
{
if ($template !== 'simple-contact-form-template') {
return [];
}
return [
1 => [
'id' => '1',
'type' => 'name',
'format' => 'simple',
'label' => __('Name', 'extendify-local'),
'required' => '1',
'size' => 'large',
],
2 => [
'id' => '2',
'type' => 'email',
'label' => __('Email', 'extendify-local'),
'required' => '1',
'size' => 'large',
],
3 => [
'id' => '3',
'type' => 'text',
'label' => __('Subject', 'extendify-local'),
'size' => 'large',
],
4 => [
'id' => '4',
'type' => 'textarea',
'label' => __('Message', 'extendify-local'),
'required' => '1',
'size' => 'large',
],
];
}
}