File "class-import-fluent.php"
Full Path: /home/romayxjt/public_html/wp-content/plugins/kadence-starter-templates/inc/class-import-fluent.php
File size: 6.36 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Class for importing fluent data.
*
* @package Kadence Starter Templates
*/
namespace KadenceWP\KadenceStarterTemplates;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! defined( 'FLUENTFORM_VERSION' ) ) {
return;
}
use FluentForm\Framework\Helpers\ArrayHelper;
use FluentForm\App\Modules\Form\wpFluent;
/**
* Class for importing fluent forms.
*/
class Kadence_Starter_Templates_Fluent_Import {
/**
* Import forms from JSON file.
*
* @param string $form_import_file_path path to the widget import file.
*/
public static function import( $form_import_file_path ) {
$results = array();
$kadence_starter_templates = Starter_Templates::get_instance();
$log_file_path = $kadence_starter_templates->get_log_file_path();
// Import widgets and return result.
if ( ! empty( $form_import_file_path ) ) {
$results = self::import_forms( $form_import_file_path );
}
// Check for errors, else write the results to the log file.
if ( is_wp_error( $results ) ) {
$error_message = $results->get_error_message();
// Add any error messages to the frontend_error_messages variable in OCDI main class.
$kadence_starter_templates->append_to_frontend_error_messages( $error_message );
if ( apply_filters( 'kadence_starter_templates_save_log_files', false ) ) {
// Write error to log file.
Helpers::append_to_file(
$error_message,
$log_file_path,
esc_html__( 'Importing forms', 'kadence-starter-templates' )
);
}
} else {
ob_start();
self::format_results_for_log( $results );
$message = ob_get_clean();
if ( apply_filters( 'kadence_starter_templates_save_log_files', false ) ) {
// Add this message to log file.
$log_added = Helpers::append_to_file(
$message,
$log_file_path,
esc_html__( 'Importing forms' , 'kadence-starter-templates' )
);
}
}
}
/**
* Imports widgets from a json file.
*
* @param string $data_file path to json file with WordPress widget export data.
*/
private static function import_forms( $data_file ) {
// Get widgets data from file.
$data = self::process_import_file( $data_file );
// Return from this function if there was an error.
if ( is_wp_error( $data ) ) {
return $data;
}
// Import the widget data and save the results.
return self::import_data( $data );
}
/**
* Process import file - this parses the widget data and returns it.
*
* @param string $file path to json file.
* @return object $data decoded JSON string
*/
private static function process_import_file( $file ) {
// File exists?
if ( ! file_exists( $file ) ) {
return new \WP_Error(
'form_import_file_not_found',
__( 'Error: Form import file could not be found.', 'kadence-starter-templates' )
);
}
// Get file contents and decode.
$data = Helpers::data_from_file( $file );
// Return from this function if there was an error.
if ( is_wp_error( $data ) ) {
return $data;
}
return \json_decode( $data, true );
}
/**
* Import fluent forms.
*
* @param string $forms the data for the forms.
*/
public static function import_data( $forms ) {
// Have valid data? If no data or could not decode.
if ( empty( $forms ) ) {
return new \WP_Error(
'corrupted_form_import_data',
__( 'Error: Form import data could not be read. Please try a different file.', 'kadence-starter-templates' )
);
}
$insertedForms = [];
if ( $forms && is_array( $forms ) ) {
foreach ( $forms as $formItem ) {
// First of all make the form object.
$formFields = json_encode([]);
if ( $fields = ArrayHelper::get( $formItem, 'form', '' ) ) {
$formFields = json_encode( $fields );
} else if( $fields = ArrayHelper::get( $formItem, 'form_fields', '' ) ) {
$formFields = json_encode( $fields );
} else {
return new \WP_Error(
'corrupted_form_import_data',
__( 'Error: Form import data could not be read. Please try a different file.', 'kadence-starter-templates' )
);
}
$form = [
'title' => ArrayHelper::get($formItem, 'title'),
'form_fields' => $formFields,
'status' => ArrayHelper::get($formItem, 'status', 'published'),
'has_payment' => ArrayHelper::get($formItem, 'has_payment', 0),
'type' => ArrayHelper::get($formItem, 'type', 'form'),
'created_by' => get_current_user_id()
];
if( ArrayHelper::get($formItem, 'conditions')) {
$form['conditions'] = ArrayHelper::get($formItem, 'conditions');
}
if(isset($formItem['appearance_settings'])) {
$form['appearance_settings'] = $formItem['appearance_settings'];
}
// Insert the form to the DB.
$formId = wpFluent()->table('fluentform_forms')->insert($form);
$insertedForms[$formId] = [
'title' => $form['title'],
'edit_url' => admin_url('admin.php?page=fluent_forms&route=editor&form_id='.$formId)
];
if(isset($formItem['metas'])) {
foreach ($formItem['metas'] as $metaData) {
$settings = [
'form_id' => $formId,
'meta_key' => $metaData['meta_key'],
'value' => $metaData['value']
];
wpFluent()->table('fluentform_form_meta')->insert($settings);
}
} else {
$oldKeys = [
'formSettings',
'notifications',
'mailchimp_feeds',
'slack'
];
foreach ($oldKeys as $key) {
if(isset($formItem[$key])) {
$settings = [
'form_id' => $formId,
'meta_key' => $key,
'value' => json_encode($formItem[$key])
];
wpFluent()->table('fluentform_form_meta')->insert($settings);
}
}
}
do_action( 'fluentform_form_imported', $formId );
}
$results = array(
'message' => __('You form has been successfully imported.', 'fluentform'),
'inserted_forms' => $insertedForms,
);
// Return results.
return apply_filters( 'kadence-starter-templates/form_import_results', $results );
}
}
/**
* Format results for log file
*
* @param array $results widget import results.
*/
private static function format_results_for_log( $results ) {
if ( empty( $results ) ) {
esc_html_e( 'No results for form import!', 'kadence-starter-templates' );
}
if ( isset( $results['inserted_forms'] ) && is_array( $results['inserted_forms'] ) ) {
// Loop forms.
foreach ( $results['inserted_forms'] as $form_id => $form ) {
echo esc_html( $form['title'] ) . ' : ' . esc_html__( 'Imported' ) . PHP_EOL . PHP_EOL;
echo PHP_EOL;
}
}
}
}