Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/wpforms-.../includes
File: class-form.php
[500] Fix | Delete
// phpcs:disable WPForms.PHP.ValidateHooks.InvalidHookName
[501] Fix | Delete
[502] Fix | Delete
/**
[503] Fix | Delete
* Filters form creation arguments.
[504] Fix | Delete
*
[505] Fix | Delete
* @since 1.0.0
[506] Fix | Delete
*
[507] Fix | Delete
* @param array $args Form creation arguments.
[508] Fix | Delete
* @param array $data Additional data.
[509] Fix | Delete
*/
[510] Fix | Delete
$args = apply_filters( 'wpforms_create_form_args', $args, $data );
[511] Fix | Delete
[512] Fix | Delete
// phpcs:enable WPForms.PHP.ValidateHooks.InvalidHookName
[513] Fix | Delete
[514] Fix | Delete
$form_content = [
[515] Fix | Delete
'field_id' => '0',
[516] Fix | Delete
'settings' => [
[517] Fix | Delete
'form_title' => sanitize_text_field( $title ),
[518] Fix | Delete
'form_desc' => '',
[519] Fix | Delete
],
[520] Fix | Delete
];
[521] Fix | Delete
[522] Fix | Delete
$args_form_data = isset( $args['post_content'] ) ? json_decode( wp_unslash( $args['post_content'] ), true ) : null;
[523] Fix | Delete
[524] Fix | Delete
// Prevent $args['post_content'] from overwriting predefined $form_content.
[525] Fix | Delete
// Typically, it happens if the form was created with a form template and a user was not redirected to a form editing screen afterwards.
[526] Fix | Delete
// This is only possible if a user has 'wpforms_create_forms' and no 'wpforms_edit_own_forms' capability.
[527] Fix | Delete
if ( is_array( $args_form_data ) ) {
[528] Fix | Delete
$args['post_content'] = wpforms_encode( array_replace_recursive( $form_content, $args_form_data ) );
[529] Fix | Delete
}
[530] Fix | Delete
[531] Fix | Delete
// Merge args and create the form.
[532] Fix | Delete
$form = wp_parse_args(
[533] Fix | Delete
$args,
[534] Fix | Delete
[
[535] Fix | Delete
'post_title' => esc_html( $title ),
[536] Fix | Delete
'post_status' => 'publish',
[537] Fix | Delete
'post_type' => 'wpforms',
[538] Fix | Delete
'post_content' => wpforms_encode( $form_content ),
[539] Fix | Delete
]
[540] Fix | Delete
);
[541] Fix | Delete
[542] Fix | Delete
$form_id = wp_insert_post( $form );
[543] Fix | Delete
[544] Fix | Delete
// Set form tags.
[545] Fix | Delete
if ( ! empty( $form_id ) && ! empty( $args_form_data['settings']['form_tags'] ) ) {
[546] Fix | Delete
wp_set_post_terms(
[547] Fix | Delete
$form_id,
[548] Fix | Delete
implode( ',', $args_form_data['settings']['form_tags'] ),
[549] Fix | Delete
self::TAGS_TAXONOMY
[550] Fix | Delete
);
[551] Fix | Delete
}
[552] Fix | Delete
[553] Fix | Delete
// If user has no editing permissions the form considered to be created out of the WPForms form builder's context.
[554] Fix | Delete
if ( ! wpforms_current_user_can( 'edit_form_single', $form_id ) ) {
[555] Fix | Delete
$data['builder'] = false;
[556] Fix | Delete
}
[557] Fix | Delete
[558] Fix | Delete
// If the form is created outside the context of the WPForms form
[559] Fix | Delete
// builder, then we define some additional default values.
[560] Fix | Delete
if ( ! empty( $form_id ) && isset( $data['builder'] ) && $data['builder'] === false ) {
[561] Fix | Delete
$form_data = json_decode( wp_unslash( $form['post_content'] ), true );
[562] Fix | Delete
$form_data['id'] = $form_id;
[563] Fix | Delete
$form_data['settings']['submit_text'] = esc_html__( 'Submit', 'wpforms-lite' );
[564] Fix | Delete
$form_data['settings']['submit_text_processing'] = esc_html__( 'Sending...', 'wpforms-lite' );
[565] Fix | Delete
$form_data['settings']['notification_enable'] = '1';
[566] Fix | Delete
$form_data['settings']['notifications'] = [
[567] Fix | Delete
'1' => [
[568] Fix | Delete
'email' => '{admin_email}',
[569] Fix | Delete
'subject' => sprintf( /* translators: %s - form name. */
[570] Fix | Delete
esc_html__( 'New Entry: %s', 'wpforms-lite' ),
[571] Fix | Delete
esc_html( $title )
[572] Fix | Delete
),
[573] Fix | Delete
'sender_name' => get_bloginfo( 'name' ),
[574] Fix | Delete
'sender_address' => '{admin_email}',
[575] Fix | Delete
'replyto' => '{field_id="1"}',
[576] Fix | Delete
'message' => '{all_fields}',
[577] Fix | Delete
],
[578] Fix | Delete
];
[579] Fix | Delete
$form_data['settings']['confirmations'] = [
[580] Fix | Delete
'1' => [
[581] Fix | Delete
'type' => 'message',
[582] Fix | Delete
'message' => esc_html__( 'Thanks for contacting us! We will be in touch with you shortly.', 'wpforms-lite' ),
[583] Fix | Delete
'message_scroll' => '1',
[584] Fix | Delete
],
[585] Fix | Delete
];
[586] Fix | Delete
[587] Fix | Delete
$this->update( $form_id, $form_data, [ 'cap' => 'create_forms' ] );
[588] Fix | Delete
}
[589] Fix | Delete
[590] Fix | Delete
// phpcs:disable WPForms.PHP.ValidateHooks.InvalidHookName
[591] Fix | Delete
[592] Fix | Delete
/**
[593] Fix | Delete
* Fires after the form was created.
[594] Fix | Delete
*
[595] Fix | Delete
* @since 1.0.0
[596] Fix | Delete
*
[597] Fix | Delete
* @param int $form_id Form ID.
[598] Fix | Delete
* @param array $form Form data.
[599] Fix | Delete
* @param array $data Additional data.
[600] Fix | Delete
*/
[601] Fix | Delete
do_action( 'wpforms_create_form', $form_id, $form, $data );
[602] Fix | Delete
[603] Fix | Delete
// phpcs:enable WPForms.PHP.ValidateHooks.InvalidHookName
[604] Fix | Delete
[605] Fix | Delete
return $form_id;
[606] Fix | Delete
}
[607] Fix | Delete
[608] Fix | Delete
/**
[609] Fix | Delete
* Update form.
[610] Fix | Delete
*
[611] Fix | Delete
* @since 1.0.0
[612] Fix | Delete
*
[613] Fix | Delete
* @param string|int $form_id Form ID.
[614] Fix | Delete
* @param array $data Data retrieved from $_POST and processed.
[615] Fix | Delete
* @param array $args Empty by default, may have custom data not intended to be saved.
[616] Fix | Delete
*
[617] Fix | Delete
* @return mixed
[618] Fix | Delete
* @internal param string $title
[619] Fix | Delete
*/
[620] Fix | Delete
public function update( $form_id = '', $data = [], $args = [] ) {
[621] Fix | Delete
[622] Fix | Delete
if ( empty( $data ) ) {
[623] Fix | Delete
return false;
[624] Fix | Delete
}
[625] Fix | Delete
[626] Fix | Delete
if ( empty( $form_id ) && isset( $data['id'] ) ) {
[627] Fix | Delete
$form_id = $data['id'];
[628] Fix | Delete
}
[629] Fix | Delete
[630] Fix | Delete
if ( ! isset( $args['cap'] ) ) {
[631] Fix | Delete
$args['cap'] = 'edit_form_single';
[632] Fix | Delete
}
[633] Fix | Delete
[634] Fix | Delete
if ( ! empty( $args['cap'] ) && ! wpforms_current_user_can( $args['cap'], $form_id ) ) {
[635] Fix | Delete
return false;
[636] Fix | Delete
}
[637] Fix | Delete
[638] Fix | Delete
// This filter breaks forms if they contain HTML.
[639] Fix | Delete
remove_filter( 'content_save_pre', 'balanceTags', 50 );
[640] Fix | Delete
[641] Fix | Delete
// Add filter of the link rel attr to avoid JSON damage.
[642] Fix | Delete
add_filter( 'wp_targeted_link_rel', '__return_empty_string', 50, 1 );
[643] Fix | Delete
[644] Fix | Delete
$data = wp_unslash( $data );
[645] Fix | Delete
[646] Fix | Delete
$title = empty( $data['settings']['form_title'] ) ? get_the_title( $form_id ) : $data['settings']['form_title'];
[647] Fix | Delete
$desc = empty( $data['settings']['form_desc'] ) ? '' : $data['settings']['form_desc'];
[648] Fix | Delete
[649] Fix | Delete
$data['field_id'] = ! empty( $data['field_id'] ) ? wpforms_validate_field_id( $data['field_id'] ) : '0';
[650] Fix | Delete
[651] Fix | Delete
// Preserve explicit "Do not store spam entries" state.
[652] Fix | Delete
$data['settings']['store_spam_entries'] = $data['settings']['store_spam_entries'] ?? '0';
[653] Fix | Delete
[654] Fix | Delete
// Preserve form meta.
[655] Fix | Delete
$meta = $this->get_meta( $form_id );
[656] Fix | Delete
[657] Fix | Delete
if ( $meta ) {
[658] Fix | Delete
$data['meta'] = $meta;
[659] Fix | Delete
}
[660] Fix | Delete
[661] Fix | Delete
// Update category and subcategory only if available.
[662] Fix | Delete
if ( ! empty( $args['category'] ) ) {
[663] Fix | Delete
$data['meta']['category'] = $args['category'];
[664] Fix | Delete
}
[665] Fix | Delete
[666] Fix | Delete
if ( ! empty( $args['subcategory'] ) ) {
[667] Fix | Delete
$data['meta']['subcategory'] = $args['subcategory'];
[668] Fix | Delete
}
[669] Fix | Delete
[670] Fix | Delete
// Preserve fields meta.
[671] Fix | Delete
if ( isset( $data['fields'] ) ) {
[672] Fix | Delete
$data['fields'] = $this->update__preserve_fields_meta( $data['fields'], $form_id );
[673] Fix | Delete
}
[674] Fix | Delete
[675] Fix | Delete
// Sanitize - don't allow tags for users who do not have appropriate cap.
[676] Fix | Delete
// If we don't do this, forms for these users can get corrupt due to
[677] Fix | Delete
// conflicts with wp_kses().
[678] Fix | Delete
if ( ! current_user_can( 'unfiltered_html' ) ) {
[679] Fix | Delete
$data = map_deep( $data, 'wp_strip_all_tags' );
[680] Fix | Delete
}
[681] Fix | Delete
[682] Fix | Delete
// Sanitize notifications names.
[683] Fix | Delete
if ( isset( $data['settings']['notifications'] ) ) {
[684] Fix | Delete
$data['settings']['notifications'] = $this->update__sanitize_notifications_names( $data['settings']['notifications'] );
[685] Fix | Delete
}
[686] Fix | Delete
unset( $notification );
[687] Fix | Delete
[688] Fix | Delete
if ( wpforms_is_form_template( $form_id ) ) {
[689] Fix | Delete
$form_title = $data['settings']['form_title'];
[690] Fix | Delete
[691] Fix | Delete
// Set form slugs.
[692] Fix | Delete
// We need setup slugs for the form template because these fields are hidden in the form builder.
[693] Fix | Delete
$data['settings']['form_pages_page_slug'] = sanitize_title( $form_title );
[694] Fix | Delete
$data['settings']['conversational_forms_page_slug'] = sanitize_title( $form_title );
[695] Fix | Delete
}
[696] Fix | Delete
[697] Fix | Delete
$form = apply_filters(
[698] Fix | Delete
'wpforms_save_form_args',
[699] Fix | Delete
[
[700] Fix | Delete
'ID' => $form_id,
[701] Fix | Delete
'post_title' => esc_html( $title ),
[702] Fix | Delete
'post_excerpt' => $desc,
[703] Fix | Delete
'post_content' => wpforms_encode( $data ),
[704] Fix | Delete
],
[705] Fix | Delete
$data,
[706] Fix | Delete
$args
[707] Fix | Delete
);
[708] Fix | Delete
[709] Fix | Delete
$_form_id = wp_update_post( $form );
[710] Fix | Delete
[711] Fix | Delete
do_action( 'wpforms_save_form', $_form_id, $form );
[712] Fix | Delete
[713] Fix | Delete
return $_form_id;
[714] Fix | Delete
}
[715] Fix | Delete
[716] Fix | Delete
/**
[717] Fix | Delete
* Preserve fields meta in 'update' method.
[718] Fix | Delete
*
[719] Fix | Delete
* @since 1.5.8
[720] Fix | Delete
*
[721] Fix | Delete
* @param array $fields Form fields.
[722] Fix | Delete
* @param string|int $form_id Form ID.
[723] Fix | Delete
*
[724] Fix | Delete
* @return array
[725] Fix | Delete
*/
[726] Fix | Delete
protected function update__preserve_fields_meta( $fields, $form_id ) {
[727] Fix | Delete
[728] Fix | Delete
foreach ( $fields as $i => $field_data ) {
[729] Fix | Delete
if ( isset( $field_data['id'] ) ) {
[730] Fix | Delete
$field_meta = $this->get_field_meta( $form_id, $field_data['id'] );
[731] Fix | Delete
[732] Fix | Delete
if ( $field_meta ) {
[733] Fix | Delete
$fields[ $i ]['meta'] = $field_meta;
[734] Fix | Delete
}
[735] Fix | Delete
}
[736] Fix | Delete
}
[737] Fix | Delete
[738] Fix | Delete
return $fields;
[739] Fix | Delete
}
[740] Fix | Delete
[741] Fix | Delete
/**
[742] Fix | Delete
* Sanitize notifications names meta in 'update' method.
[743] Fix | Delete
*
[744] Fix | Delete
* @since 1.5.8
[745] Fix | Delete
*
[746] Fix | Delete
* @param array $notifications Form notifications.
[747] Fix | Delete
*
[748] Fix | Delete
* @return array
[749] Fix | Delete
*/
[750] Fix | Delete
protected function update__sanitize_notifications_names( $notifications ) {
[751] Fix | Delete
[752] Fix | Delete
foreach ( $notifications as $id => &$notification ) {
[753] Fix | Delete
if ( ! empty( $notification['notification_name'] ) ) {
[754] Fix | Delete
$notification['notification_name'] = sanitize_text_field( $notification['notification_name'] );
[755] Fix | Delete
}
[756] Fix | Delete
}
[757] Fix | Delete
[758] Fix | Delete
return $notifications;
[759] Fix | Delete
}
[760] Fix | Delete
[761] Fix | Delete
/**
[762] Fix | Delete
* Duplicate forms.
[763] Fix | Delete
*
[764] Fix | Delete
* @since 1.1.4
[765] Fix | Delete
* @since 1.8.8 Return array of new form IDs instead of true.
[766] Fix | Delete
*
[767] Fix | Delete
* @param array|string $ids Form IDs to duplicate.
[768] Fix | Delete
*
[769] Fix | Delete
* @return bool|array Array of new form IDs or false.
[770] Fix | Delete
*/
[771] Fix | Delete
public function duplicate( $ids ) { // phpcs:disable WPForms.PHP.HooksMethod.InvalidPlaceForAddingHooks, Generic.Metrics.CyclomaticComplexity.TooHigh
[772] Fix | Delete
[773] Fix | Delete
// Check for permissions.
[774] Fix | Delete
if ( ! wpforms_current_user_can( 'create_forms' ) ) {
[775] Fix | Delete
return false;
[776] Fix | Delete
}
[777] Fix | Delete
[778] Fix | Delete
// Add filter of the link rel attr to avoid JSON damage.
[779] Fix | Delete
add_filter( 'wp_targeted_link_rel', '__return_empty_string', 50, 1 );
[780] Fix | Delete
[781] Fix | Delete
// This filter breaks forms if they contain HTML.
[782] Fix | Delete
remove_filter( 'content_save_pre', 'balanceTags', 50 );
[783] Fix | Delete
[784] Fix | Delete
if ( ! is_array( $ids ) ) {
[785] Fix | Delete
$ids = [ $ids ];
[786] Fix | Delete
}
[787] Fix | Delete
[788] Fix | Delete
$ids = array_map( 'absint', $ids );
[789] Fix | Delete
[790] Fix | Delete
$duplicate_ids = [];
[791] Fix | Delete
[792] Fix | Delete
foreach ( $ids as $id ) {
[793] Fix | Delete
[794] Fix | Delete
// Get original entry.
[795] Fix | Delete
$form = get_post( $id );
[796] Fix | Delete
[797] Fix | Delete
if ( ! wpforms_current_user_can( 'view_form_single', $id ) ) {
[798] Fix | Delete
return false;
[799] Fix | Delete
}
[800] Fix | Delete
[801] Fix | Delete
// Confirm form exists.
[802] Fix | Delete
if ( empty( $form ) ) {
[803] Fix | Delete
return false;
[804] Fix | Delete
}
[805] Fix | Delete
[806] Fix | Delete
// Get the form data.
[807] Fix | Delete
$new_form_data = wpforms_decode( $form->post_content );
[808] Fix | Delete
[809] Fix | Delete
// Remove form ID from title if present.
[810] Fix | Delete
$new_form_data['settings']['form_title'] = str_replace( '(ID #' . absint( $id ) . ')', '', $new_form_data['settings']['form_title'] );
[811] Fix | Delete
[812] Fix | Delete
// Remove '(copy)' from the form template title if present.
[813] Fix | Delete
$new_form_data['settings']['form_title'] = str_replace( __( '(copy)', 'wpforms-lite' ), '', $new_form_data['settings']['form_title'] );
[814] Fix | Delete
[815] Fix | Delete
// Remove trailing spaces.
[816] Fix | Delete
$new_form_data['settings']['form_title'] = rtrim( $new_form_data['settings']['form_title'] );
[817] Fix | Delete
[818] Fix | Delete
// Remove `-template` suffix and all after it from the post name.
[819] Fix | Delete
$post_name = preg_replace( '/-template(-\d+)?/', '', $form->post_name );
[820] Fix | Delete
[821] Fix | Delete
// Add some notice messages before form preview area.
[822] Fix | Delete
$new_form_data = $this->add_notices( $new_form_data, (int) $id );
[823] Fix | Delete
[824] Fix | Delete
// Create the duplicate form.
[825] Fix | Delete
$new_form = [
[826] Fix | Delete
'post_content' => wpforms_encode( $new_form_data ),
[827] Fix | Delete
'post_excerpt' => $form->post_excerpt,
[828] Fix | Delete
'post_status' => $form->post_status,
[829] Fix | Delete
'post_title' => $new_form_data['settings']['form_title'],
[830] Fix | Delete
'post_type' => $form->post_type,
[831] Fix | Delete
'post_name' => wpforms_is_form_template( $id ) ? $post_name . '-template' : $post_name,
[832] Fix | Delete
];
[833] Fix | Delete
$new_form_id = wp_insert_post( $new_form );
[834] Fix | Delete
[835] Fix | Delete
if ( ! $new_form_id || is_wp_error( $new_form_id ) ) {
[836] Fix | Delete
return false;
[837] Fix | Delete
}
[838] Fix | Delete
[839] Fix | Delete
// Set new form name.
[840] Fix | Delete
$new_form_data['settings']['form_title'] .= $form->post_type === 'wpforms-template' ?
[841] Fix | Delete
' ' . __( '(copy)', 'wpforms-lite' ) :
[842] Fix | Delete
' (ID #' . absint( $new_form_id ) . ')';
[843] Fix | Delete
[844] Fix | Delete
// Set new form ID.
[845] Fix | Delete
$new_form_data['id'] = absint( $new_form_id );
[846] Fix | Delete
[847] Fix | Delete
// Update new duplicate form.
[848] Fix | Delete
$new_form_id = $this->update( $new_form_id, $new_form_data, [ 'cap' => 'create_forms' ] );
[849] Fix | Delete
[850] Fix | Delete
if ( ! $new_form_id || is_wp_error( $new_form_id ) ) {
[851] Fix | Delete
return false;
[852] Fix | Delete
}
[853] Fix | Delete
[854] Fix | Delete
// Add tags to the new form.
[855] Fix | Delete
if ( ! empty( $new_form_data['settings']['form_tags'] ) ) {
[856] Fix | Delete
wp_set_post_terms(
[857] Fix | Delete
$new_form_id,
[858] Fix | Delete
implode( ',', (array) $new_form_data['settings']['form_tags'] ),
[859] Fix | Delete
self::TAGS_TAXONOMY
[860] Fix | Delete
);
[861] Fix | Delete
}
[862] Fix | Delete
[863] Fix | Delete
/**
[864] Fix | Delete
* Fires after the form was duplicated.
[865] Fix | Delete
*
[866] Fix | Delete
* @since 1.8.2.2
[867] Fix | Delete
*
[868] Fix | Delete
* @param int $id Original form ID.
[869] Fix | Delete
* @param int $new_form_id New form ID.
[870] Fix | Delete
* @param array $new_form_data New form data.
[871] Fix | Delete
*/
[872] Fix | Delete
do_action( 'wpforms_form_handler_duplicate_form', $id, $new_form_id, $new_form_data );
[873] Fix | Delete
[874] Fix | Delete
$duplicate_ids[] = $new_form_id;
[875] Fix | Delete
}
[876] Fix | Delete
[877] Fix | Delete
return $duplicate_ids;
[878] Fix | Delete
}
[879] Fix | Delete
[880] Fix | Delete
/**
[881] Fix | Delete
* Convert form to a template and vice versa.
[882] Fix | Delete
*
[883] Fix | Delete
* @since 1.8.8
[884] Fix | Delete
*
[885] Fix | Delete
* @param string|int $form_id Form ID.
[886] Fix | Delete
* @param string $convert_to Convert to, `form` or `template`.
[887] Fix | Delete
*
[888] Fix | Delete
* @return false|int New object ID or false on failure.
[889] Fix | Delete
*/
[890] Fix | Delete
public function convert( $form_id, string $convert_to ) {
[891] Fix | Delete
[892] Fix | Delete
if ( ! in_array( $convert_to, [ 'form', 'template' ], true ) ) {
[893] Fix | Delete
return false;
[894] Fix | Delete
}
[895] Fix | Delete
[896] Fix | Delete
// Duplicate the form.
[897] Fix | Delete
$ids = $this->duplicate( $form_id );
[898] Fix | Delete
[899] Fix | Delete
if ( empty( $ids ) ) {
[900] Fix | Delete
return false;
[901] Fix | Delete
}
[902] Fix | Delete
[903] Fix | Delete
$new_form_id = current( $ids );
[904] Fix | Delete
$form = get_post( $new_form_id );
[905] Fix | Delete
$form_data = wpforms_decode( $form->post_content );
[906] Fix | Delete
[907] Fix | Delete
/**
[908] Fix | Delete
* Filters the form data before converting it to a template or vice versa.
[909] Fix | Delete
*
[910] Fix | Delete
* @since 1.8.8
[911] Fix | Delete
*
[912] Fix | Delete
* @param array $form_data Form data.
[913] Fix | Delete
* @param string|int $form_id Form ID.
[914] Fix | Delete
* @param string $convert_to Convert to, `form` or `template`.
[915] Fix | Delete
*/
[916] Fix | Delete
$form_data = apply_filters( 'wpforms_form_handler_convert_form_data', $form_data, $form_id, $convert_to );
[917] Fix | Delete
[918] Fix | Delete
// Set default post type.
[919] Fix | Delete
$post_type = 'wpforms';
[920] Fix | Delete
[921] Fix | Delete
// Remove numeric suffix from the post name.
[922] Fix | Delete
// Duplication always adds `-{numeric}` suffix.
[923] Fix | Delete
$post_name = preg_replace( '/-\d+$/', '', $form->post_name );
[924] Fix | Delete
[925] Fix | Delete
// Remove `-template` suffix and all after it from the post name.
[926] Fix | Delete
$post_name = preg_replace( '/-template(-\d+)?/', '', $post_name );
[927] Fix | Delete
[928] Fix | Delete
// Remove (copy) from the form title, if present.
[929] Fix | Delete
$form_data['settings']['form_title'] = str_replace( __( '(copy)', 'wpforms-lite' ), '', $form_data['settings']['form_title'] );
[930] Fix | Delete
[931] Fix | Delete
// Remove trailing spaces.
[932] Fix | Delete
$form_data['settings']['form_title'] = rtrim( $form_data['settings']['form_title'] );
[933] Fix | Delete
[934] Fix | Delete
// Remove template description.
[935] Fix | Delete
unset( $form_data['settings']['template_description'] );
[936] Fix | Delete
[937] Fix | Delete
if ( $convert_to === 'template' ) {
[938] Fix | Delete
$post_type = 'wpforms-template';
[939] Fix | Delete
[940] Fix | Delete
// Remove (ID #<Form ID>) from the form title, if present.
[941] Fix | Delete
$form_data['settings']['form_title'] = preg_replace( '/\(ID #\d+\)/', '', $form_data['settings']['form_title'] );
[942] Fix | Delete
[943] Fix | Delete
// Set empty template description.
[944] Fix | Delete
$form_data['settings']['template_description'] = '';
[945] Fix | Delete
[946] Fix | Delete
// Remove traces of any other template that may have been used to create the original form by setting itself as a template.
[947] Fix | Delete
$form_data['meta']['template'] = 'wpforms-user-template-' . $new_form_id;
[948] Fix | Delete
[949] Fix | Delete
// Add `-template` suffix to the post name.
[950] Fix | Delete
$post_name .= '-template';
[951] Fix | Delete
}
[952] Fix | Delete
[953] Fix | Delete
wp_update_post(
[954] Fix | Delete
[
[955] Fix | Delete
'ID' => $new_form_id,
[956] Fix | Delete
'post_title' => $form_data['settings']['form_title'],
[957] Fix | Delete
'post_type' => $post_type,
[958] Fix | Delete
'post_content' => wpforms_encode( $form_data ),
[959] Fix | Delete
'post_name' => $post_name,
[960] Fix | Delete
]
[961] Fix | Delete
);
[962] Fix | Delete
[963] Fix | Delete
return $new_form_id;
[964] Fix | Delete
}
[965] Fix | Delete
[966] Fix | Delete
/**
[967] Fix | Delete
* Append notice(s) before form preview, if needed.
[968] Fix | Delete
*
[969] Fix | Delete
* @since 1.8.8
[970] Fix | Delete
*
[971] Fix | Delete
* @param array $new_form_data New form data.
[972] Fix | Delete
* @param int $form_id Original form ID.
[973] Fix | Delete
*
[974] Fix | Delete
* @return array
[975] Fix | Delete
*/
[976] Fix | Delete
private function add_notices( array $new_form_data, int $form_id ): array {
[977] Fix | Delete
[978] Fix | Delete
/**
[979] Fix | Delete
* Add custom notices to be displayed in the preview area of the Form Builder
[980] Fix | Delete
* after a form or a form template has been duplicated or converted.
[981] Fix | Delete
*
[982] Fix | Delete
* @since 1.8.8
[983] Fix | Delete
*
[984] Fix | Delete
* @param array $notices Array of notices.
[985] Fix | Delete
* @param array $new_form_data Form data of the newly duplicated form or form template.
[986] Fix | Delete
* @param int $form_id Original form ID.
[987] Fix | Delete
*/
[988] Fix | Delete
$notices = apply_filters( 'wpforms_form_handler_add_notices', [], $new_form_data, $form_id );
[989] Fix | Delete
[990] Fix | Delete
if ( empty( $notices ) ) {
[991] Fix | Delete
return $new_form_data;
[992] Fix | Delete
}
[993] Fix | Delete
[994] Fix | Delete
$current_field_id = ! empty( $new_form_data['fields'] ) ? max( array_keys( $new_form_data['fields'] ) ) : 0;
[995] Fix | Delete
$code_fields = array_column( $new_form_data['fields'], 'code' );
[996] Fix | Delete
$next_field_id = $current_field_id;
[997] Fix | Delete
$warning = [];
[998] Fix | Delete
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function