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/wp-conte.../plugins/wpforms-.../src/Admin/Builder
File: Templates.php
* @return string
[500] Fix | Delete
*/
[501] Fix | Delete
private function get_license_level( $template ) {
[502] Fix | Delete
[503] Fix | Delete
$licenses_pro = [ 'basic', 'plus', 'pro' ];
[504] Fix | Delete
$licenses_template = (array) $template['license'];
[505] Fix | Delete
[506] Fix | Delete
if (
[507] Fix | Delete
empty( $template['license'] ) ||
[508] Fix | Delete
in_array( 'lite', $licenses_template, true )
[509] Fix | Delete
) {
[510] Fix | Delete
return '';
[511] Fix | Delete
}
[512] Fix | Delete
[513] Fix | Delete
foreach ( $licenses_pro as $license ) {
[514] Fix | Delete
if ( in_array( $license, $licenses_template, true ) ) {
[515] Fix | Delete
return 'pro';
[516] Fix | Delete
}
[517] Fix | Delete
}
[518] Fix | Delete
[519] Fix | Delete
return 'elite';
[520] Fix | Delete
}
[521] Fix | Delete
[522] Fix | Delete
/**
[523] Fix | Delete
* Get categories data.
[524] Fix | Delete
*
[525] Fix | Delete
* @since 1.6.8
[526] Fix | Delete
*
[527] Fix | Delete
* @return array
[528] Fix | Delete
*/
[529] Fix | Delete
public function get_categories() {
[530] Fix | Delete
[531] Fix | Delete
return $this->categories;
[532] Fix | Delete
}
[533] Fix | Delete
[534] Fix | Delete
/**
[535] Fix | Delete
* Get subcategories data.
[536] Fix | Delete
*
[537] Fix | Delete
* @since 1.8.4
[538] Fix | Delete
*
[539] Fix | Delete
* @return array
[540] Fix | Delete
*/
[541] Fix | Delete
public function get_subcategories() {
[542] Fix | Delete
[543] Fix | Delete
return $this->subcategories;
[544] Fix | Delete
}
[545] Fix | Delete
[546] Fix | Delete
/**
[547] Fix | Delete
* Get templates data.
[548] Fix | Delete
*
[549] Fix | Delete
* @since 1.6.8
[550] Fix | Delete
*
[551] Fix | Delete
* @return array
[552] Fix | Delete
*/
[553] Fix | Delete
public function get_templates(): array {
[554] Fix | Delete
[555] Fix | Delete
static $templates = [];
[556] Fix | Delete
[557] Fix | Delete
if ( ! empty( $templates ) ) {
[558] Fix | Delete
return $templates;
[559] Fix | Delete
}
[560] Fix | Delete
[561] Fix | Delete
// phpcs:disable WPForms.PHP.ValidateHooks.InvalidHookName
[562] Fix | Delete
[563] Fix | Delete
/**
[564] Fix | Delete
* Form templates available in the WPForms core plugin.
[565] Fix | Delete
*
[566] Fix | Delete
* @since 1.4.0
[567] Fix | Delete
*
[568] Fix | Delete
* @param array $templates Core templates data.
[569] Fix | Delete
*/
[570] Fix | Delete
$core_templates = (array) apply_filters( 'wpforms_form_templates_core', [] );
[571] Fix | Delete
[572] Fix | Delete
/**
[573] Fix | Delete
* Form templates available with the WPForms addons.
[574] Fix | Delete
* Allows developers to provide additional templates with an addons.
[575] Fix | Delete
*
[576] Fix | Delete
* @since 1.4.0
[577] Fix | Delete
*
[578] Fix | Delete
* @param array $templates Addons templates data.
[579] Fix | Delete
*/
[580] Fix | Delete
$additional_templates = (array) apply_filters( 'wpforms_form_templates', [] );
[581] Fix | Delete
[582] Fix | Delete
// phpcs:enable WPForms.PHP.ValidateHooks.InvalidHookName
[583] Fix | Delete
[584] Fix | Delete
$templates = array_merge( $core_templates, $additional_templates );
[585] Fix | Delete
[586] Fix | Delete
// Generate and store the templates' hash.
[587] Fix | Delete
$this->hash = wp_hash( wp_json_encode( $templates ) );
[588] Fix | Delete
[589] Fix | Delete
return $templates;
[590] Fix | Delete
}
[591] Fix | Delete
[592] Fix | Delete
/**
[593] Fix | Delete
* Get templates' hash.
[594] Fix | Delete
*
[595] Fix | Delete
* @since 1.8.6
[596] Fix | Delete
*
[597] Fix | Delete
* @return string
[598] Fix | Delete
*/
[599] Fix | Delete
public function get_hash(): string {
[600] Fix | Delete
[601] Fix | Delete
if ( ! $this->hash ) {
[602] Fix | Delete
$this->get_templates();
[603] Fix | Delete
}
[604] Fix | Delete
[605] Fix | Delete
return $this->hash;
[606] Fix | Delete
}
[607] Fix | Delete
[608] Fix | Delete
/**
[609] Fix | Delete
* Get single template data.
[610] Fix | Delete
*
[611] Fix | Delete
* @since 1.6.8
[612] Fix | Delete
*
[613] Fix | Delete
* @param string $slug Template slug OR Id.
[614] Fix | Delete
*
[615] Fix | Delete
* @return array
[616] Fix | Delete
*/
[617] Fix | Delete
public function get_template( $slug ) {
[618] Fix | Delete
[619] Fix | Delete
$template = $this->get_template_by_slug( $slug );
[620] Fix | Delete
[621] Fix | Delete
if ( ! $template ) {
[622] Fix | Delete
$template = $this->get_template_by_id( $slug );
[623] Fix | Delete
}
[624] Fix | Delete
[625] Fix | Delete
if ( empty( $template ) ) {
[626] Fix | Delete
return [];
[627] Fix | Delete
}
[628] Fix | Delete
[629] Fix | Delete
if ( empty( $template['id'] ) ) {
[630] Fix | Delete
return $template;
[631] Fix | Delete
}
[632] Fix | Delete
[633] Fix | Delete
// Attempt to get template with form data (if available).
[634] Fix | Delete
$full_template = wpforms()
[635] Fix | Delete
->get( 'builder_template_single' )
[636] Fix | Delete
->instance( $template['id'], $this->license )
[637] Fix | Delete
->get();
[638] Fix | Delete
[639] Fix | Delete
if ( ! empty( $full_template['data'] ) ) {
[640] Fix | Delete
return $full_template;
[641] Fix | Delete
}
[642] Fix | Delete
[643] Fix | Delete
return $template;
[644] Fix | Delete
}
[645] Fix | Delete
[646] Fix | Delete
/**
[647] Fix | Delete
* Get template data by slug.
[648] Fix | Delete
*
[649] Fix | Delete
* @since 1.7.5.3
[650] Fix | Delete
*
[651] Fix | Delete
* @param string $slug Template slug.
[652] Fix | Delete
*
[653] Fix | Delete
* @return array
[654] Fix | Delete
*/
[655] Fix | Delete
private function get_template_by_slug( $slug ) {
[656] Fix | Delete
[657] Fix | Delete
foreach ( $this->get_templates() as $template ) {
[658] Fix | Delete
if ( ! empty( $template['slug'] ) && $template['slug'] === $slug ) {
[659] Fix | Delete
return $template;
[660] Fix | Delete
}
[661] Fix | Delete
}
[662] Fix | Delete
[663] Fix | Delete
return [];
[664] Fix | Delete
}
[665] Fix | Delete
[666] Fix | Delete
/**
[667] Fix | Delete
* Get template data by Id.
[668] Fix | Delete
*
[669] Fix | Delete
* @since 1.6.8
[670] Fix | Delete
*
[671] Fix | Delete
* @param string $id Template id.
[672] Fix | Delete
*
[673] Fix | Delete
* @return array
[674] Fix | Delete
*/
[675] Fix | Delete
private function get_template_by_id( $id ) {
[676] Fix | Delete
[677] Fix | Delete
foreach ( $this->api_templates as $template ) {
[678] Fix | Delete
if ( ! empty( $template['id'] ) && $template['id'] === $id ) {
[679] Fix | Delete
return $template;
[680] Fix | Delete
}
[681] Fix | Delete
}
[682] Fix | Delete
[683] Fix | Delete
return [];
[684] Fix | Delete
}
[685] Fix | Delete
[686] Fix | Delete
/**
[687] Fix | Delete
* Add templates to the list on the Setup panel.
[688] Fix | Delete
*
[689] Fix | Delete
* @since 1.6.8
[690] Fix | Delete
*
[691] Fix | Delete
* @param array $templates Templates list.
[692] Fix | Delete
*
[693] Fix | Delete
* @return array
[694] Fix | Delete
*/
[695] Fix | Delete
public function add_templates_to_setup_panel( $templates ) {
[696] Fix | Delete
[697] Fix | Delete
return array_merge( $templates, $this->api_templates );
[698] Fix | Delete
}
[699] Fix | Delete
[700] Fix | Delete
/**
[701] Fix | Delete
* Add template data when form is created.
[702] Fix | Delete
*
[703] Fix | Delete
* @since 1.6.8
[704] Fix | Delete
*
[705] Fix | Delete
* @param array $args Create form arguments.
[706] Fix | Delete
* @param array $data Template data.
[707] Fix | Delete
*
[708] Fix | Delete
* @return array
[709] Fix | Delete
*/
[710] Fix | Delete
public function apply_to_new_form( $args, $data ) {
[711] Fix | Delete
[712] Fix | Delete
if ( empty( $data ) || empty( $data['template'] ) ) {
[713] Fix | Delete
return $args;
[714] Fix | Delete
}
[715] Fix | Delete
[716] Fix | Delete
$template = $this->get_template( $data['template'] );
[717] Fix | Delete
[718] Fix | Delete
if (
[719] Fix | Delete
empty( $template['data'] ) ||
[720] Fix | Delete
! $this->has_access( $template )
[721] Fix | Delete
) {
[722] Fix | Delete
return $args;
[723] Fix | Delete
}
[724] Fix | Delete
[725] Fix | Delete
$template['data']['meta']['template'] = $template['id'] ?? $template['slug'];
[726] Fix | Delete
$template['data']['meta']['category'] = $data['category'] ?? 'all';
[727] Fix | Delete
$template['data']['meta']['subcategory'] = $data['subcategory'] ?? 'all';
[728] Fix | Delete
[729] Fix | Delete
// Enable Notifications by default.
[730] Fix | Delete
$template['data']['settings']['notification_enable'] = isset( $template['data']['settings']['notification_enable'] )
[731] Fix | Delete
? $template['data']['settings']['notification_enable']
[732] Fix | Delete
: 1;
[733] Fix | Delete
[734] Fix | Delete
// Unset settings that should be defined locally.
[735] Fix | Delete
unset(
[736] Fix | Delete
$template['data']['settings']['form_title'],
[737] Fix | Delete
$template['data']['settings']['conversational_forms_title'],
[738] Fix | Delete
$template['data']['settings']['form_pages_title']
[739] Fix | Delete
);
[740] Fix | Delete
[741] Fix | Delete
// Unset certain values for each Notification, since:
[742] Fix | Delete
// - Email Subject Line field (subject) depends on the form name that is generated from the template name and form_id.
[743] Fix | Delete
// - From Name field (sender_name) depends on the blog name and can be replaced by WP Mail SMTP plugin.
[744] Fix | Delete
// - From Email field (sender_address) depends on the internal logic and can be replaced by WP Mail SMTP plugin.
[745] Fix | Delete
if ( ! empty( $template['data']['settings']['notifications'] ) ) {
[746] Fix | Delete
foreach ( (array) $template['data']['settings']['notifications'] as $key => $notification ) {
[747] Fix | Delete
unset(
[748] Fix | Delete
$template['data']['settings']['notifications'][ $key ]['subject'],
[749] Fix | Delete
$template['data']['settings']['notifications'][ $key ]['sender_name'],
[750] Fix | Delete
$template['data']['settings']['notifications'][ $key ]['sender_address']
[751] Fix | Delete
);
[752] Fix | Delete
}
[753] Fix | Delete
}
[754] Fix | Delete
[755] Fix | Delete
// Encode template data to post content.
[756] Fix | Delete
$args['post_content'] = wpforms_encode( $template['data'] );
[757] Fix | Delete
[758] Fix | Delete
return $args;
[759] Fix | Delete
}
[760] Fix | Delete
[761] Fix | Delete
/**
[762] Fix | Delete
* Add template data when form is updated.
[763] Fix | Delete
*
[764] Fix | Delete
* @since 1.6.8
[765] Fix | Delete
*
[766] Fix | Delete
* @param array $form Form post data.
[767] Fix | Delete
* @param array $data Form data.
[768] Fix | Delete
* @param array $args Update form arguments.
[769] Fix | Delete
*
[770] Fix | Delete
* @return array
[771] Fix | Delete
*/
[772] Fix | Delete
public function apply_to_existing_form( $form, $data, $args ) {
[773] Fix | Delete
[774] Fix | Delete
if ( empty( $args ) || empty( $args['template'] ) ) {
[775] Fix | Delete
return $form;
[776] Fix | Delete
}
[777] Fix | Delete
[778] Fix | Delete
$template = $this->get_template( $args['template'] );
[779] Fix | Delete
[780] Fix | Delete
if (
[781] Fix | Delete
empty( $template['data'] ) ||
[782] Fix | Delete
! $this->has_access( $template )
[783] Fix | Delete
) {
[784] Fix | Delete
return $form;
[785] Fix | Delete
}
[786] Fix | Delete
[787] Fix | Delete
$form_data = wpforms_decode( wp_unslash( $form['post_content'] ) );
[788] Fix | Delete
[789] Fix | Delete
// Something is wrong with the form data.
[790] Fix | Delete
if ( empty( $form_data ) ) {
[791] Fix | Delete
return $form;
[792] Fix | Delete
}
[793] Fix | Delete
[794] Fix | Delete
// Compile the new form data preserving needed data from the existing form.
[795] Fix | Delete
$new = $template['data'];
[796] Fix | Delete
$new['id'] = $form['ID'] ?? 0;
[797] Fix | Delete
$new['field_id'] = $form_data['field_id'] ?? 0;
[798] Fix | Delete
$new['settings'] = $form_data['settings'] ?? [];
[799] Fix | Delete
$new['payments'] = $form_data['payments'] ?? [];
[800] Fix | Delete
$new['meta'] = $form_data['meta'] ?? [];
[801] Fix | Delete
[802] Fix | Delete
$template_id = $template['id'] ?? '';
[803] Fix | Delete
[804] Fix | Delete
// Preserve template ID `wpforms-user-template-{$form_id}` when overwriting it with another template.
[805] Fix | Delete
if ( wpforms_is_form_template( $form['ID'] ) ) {
[806] Fix | Delete
$template_id = $form_data['meta']['template'] ?? '';
[807] Fix | Delete
}
[808] Fix | Delete
[809] Fix | Delete
$new['meta']['template'] = $template_id;
[810] Fix | Delete
$new['meta']['category'] = ! empty( $args['category'] ) ? sanitize_text_field( $args['category'] ) : 'all';
[811] Fix | Delete
$new['meta']['subcategory'] = ! empty( $args['subcategory'] ) ? sanitize_text_field( $args['subcategory'] ) : 'all';
[812] Fix | Delete
[813] Fix | Delete
/**
[814] Fix | Delete
* Allow modifying form data when a new template is applied.
[815] Fix | Delete
*
[816] Fix | Delete
* @since 1.7.9
[817] Fix | Delete
*
[818] Fix | Delete
* @param array $new Updated form data.
[819] Fix | Delete
* @param array $form_data Current form data.
[820] Fix | Delete
* @param array $template Template data.
[821] Fix | Delete
*/
[822] Fix | Delete
$new = (array) apply_filters( 'wpforms_admin_builder_templates_apply_to_existing_form_modify_data', $new, $form_data, $template );
[823] Fix | Delete
[824] Fix | Delete
// Update the form with new data.
[825] Fix | Delete
$form['post_content'] = wpforms_encode( $new );
[826] Fix | Delete
[827] Fix | Delete
return $form;
[828] Fix | Delete
}
[829] Fix | Delete
[830] Fix | Delete
/**
[831] Fix | Delete
* Create a form on request.
[832] Fix | Delete
*
[833] Fix | Delete
* @since 1.6.8
[834] Fix | Delete
*/
[835] Fix | Delete
public function create_form_on_request() {
[836] Fix | Delete
[837] Fix | Delete
$template = $this->get_template_on_request();
[838] Fix | Delete
[839] Fix | Delete
// Just return if template not found OR user doesn't have access.
[840] Fix | Delete
if ( empty( $template['has_access'] ) ) {
[841] Fix | Delete
return;
[842] Fix | Delete
}
[843] Fix | Delete
[844] Fix | Delete
// Check if the template requires some addons.
[845] Fix | Delete
if ( $this->check_template_required_addons( $template ) ) {
[846] Fix | Delete
return;
[847] Fix | Delete
}
[848] Fix | Delete
[849] Fix | Delete
// Set form title equal to the template's name.
[850] Fix | Delete
$form_title = ! empty( $template['name'] ) ? $template['name'] : esc_html__( 'New form', 'wpforms-lite' );
[851] Fix | Delete
$title_query = new WP_Query(
[852] Fix | Delete
[
[853] Fix | Delete
'post_type' => 'wpforms',
[854] Fix | Delete
'title' => $form_title,
[855] Fix | Delete
'posts_per_page' => 1,
[856] Fix | Delete
'fields' => 'ids',
[857] Fix | Delete
'update_post_meta_cache' => false,
[858] Fix | Delete
'update_post_term_cache' => false,
[859] Fix | Delete
'no_found_rows' => true,
[860] Fix | Delete
]
[861] Fix | Delete
);
[862] Fix | Delete
$title_exists = $title_query->post_count > 0;
[863] Fix | Delete
$form_id = wpforms()->get( 'form' )->add(
[864] Fix | Delete
$form_title,
[865] Fix | Delete
[],
[866] Fix | Delete
[
[867] Fix | Delete
'template' => $template['id'],
[868] Fix | Delete
]
[869] Fix | Delete
);
[870] Fix | Delete
[871] Fix | Delete
// Return if something wrong.
[872] Fix | Delete
if ( ! $form_id ) {
[873] Fix | Delete
return;
[874] Fix | Delete
}
[875] Fix | Delete
[876] Fix | Delete
// Update form title if duplicated.
[877] Fix | Delete
if ( $title_exists ) {
[878] Fix | Delete
wpforms()->get( 'form' )->update(
[879] Fix | Delete
$form_id,
[880] Fix | Delete
[
[881] Fix | Delete
'settings' => [
[882] Fix | Delete
'form_title' => $form_title . ' (ID #' . $form_id . ')',
[883] Fix | Delete
],
[884] Fix | Delete
]
[885] Fix | Delete
);
[886] Fix | Delete
}
[887] Fix | Delete
[888] Fix | Delete
$this->create_form_on_request_redirect( $form_id );
[889] Fix | Delete
}
[890] Fix | Delete
[891] Fix | Delete
/**
[892] Fix | Delete
* Get template data before creating a new form on request.
[893] Fix | Delete
*
[894] Fix | Delete
* @since 1.6.8
[895] Fix | Delete
*
[896] Fix | Delete
* @return array|bool Template OR false.
[897] Fix | Delete
*/
[898] Fix | Delete
private function get_template_on_request() {
[899] Fix | Delete
[900] Fix | Delete
if ( ! wpforms_is_admin_page( 'builder' ) || ! wpforms_is_admin_page( 'templates' ) ) {
[901] Fix | Delete
return false;
[902] Fix | Delete
}
[903] Fix | Delete
[904] Fix | Delete
if ( ! wpforms_current_user_can( 'create_forms' ) ) {
[905] Fix | Delete
return false;
[906] Fix | Delete
}
[907] Fix | Delete
[908] Fix | Delete
$form_id = isset( $_GET['form_id'] ) ? (int) $_GET['form_id'] : false; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
[909] Fix | Delete
[910] Fix | Delete
if ( ! empty( $form_id ) ) {
[911] Fix | Delete
return false;
[912] Fix | Delete
}
[913] Fix | Delete
[914] Fix | Delete
$view = isset( $_GET['view'] ) ? sanitize_key( $_GET['view'] ) : 'setup'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
[915] Fix | Delete
[916] Fix | Delete
if ( $view !== 'setup' ) {
[917] Fix | Delete
return false;
[918] Fix | Delete
}
[919] Fix | Delete
[920] Fix | Delete
$template_id = isset( $_GET['template_id'] ) ? sanitize_key( $_GET['template_id'] ) : false; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
[921] Fix | Delete
[922] Fix | Delete
// Attempt to get the template.
[923] Fix | Delete
$template = $this->get_template( $template_id );
[924] Fix | Delete
[925] Fix | Delete
// Just return if template is not found.
[926] Fix | Delete
if ( empty( $template ) ) {
[927] Fix | Delete
return false;
[928] Fix | Delete
}
[929] Fix | Delete
[930] Fix | Delete
return $template;
[931] Fix | Delete
}
[932] Fix | Delete
[933] Fix | Delete
/**
[934] Fix | Delete
* Redirect after creating the form.
[935] Fix | Delete
*
[936] Fix | Delete
* @since 1.6.8
[937] Fix | Delete
*
[938] Fix | Delete
* @param integer $form_id Form ID.
[939] Fix | Delete
*/
[940] Fix | Delete
private function create_form_on_request_redirect( $form_id ) {
[941] Fix | Delete
[942] Fix | Delete
// Redirect to the builder if possible.
[943] Fix | Delete
if ( wpforms_current_user_can( 'edit_form_single', $form_id ) ) {
[944] Fix | Delete
wp_safe_redirect(
[945] Fix | Delete
add_query_arg(
[946] Fix | Delete
[
[947] Fix | Delete
'view' => 'fields',
[948] Fix | Delete
'form_id' => $form_id,
[949] Fix | Delete
'newform' => '1',
[950] Fix | Delete
],
[951] Fix | Delete
admin_url( 'admin.php?page=wpforms-builder' )
[952] Fix | Delete
)
[953] Fix | Delete
);
[954] Fix | Delete
exit;
[955] Fix | Delete
}
[956] Fix | Delete
[957] Fix | Delete
// Redirect to the forms overview admin page if possible.
[958] Fix | Delete
if ( wpforms_current_user_can( 'view_forms' ) ) {
[959] Fix | Delete
wp_safe_redirect(
[960] Fix | Delete
admin_url( 'admin.php?page=wpforms-overview' )
[961] Fix | Delete
);
[962] Fix | Delete
exit;
[963] Fix | Delete
}
[964] Fix | Delete
[965] Fix | Delete
// Finally, redirect to the admin dashboard.
[966] Fix | Delete
wp_safe_redirect( admin_url() );
[967] Fix | Delete
exit;
[968] Fix | Delete
}
[969] Fix | Delete
[970] Fix | Delete
/**
[971] Fix | Delete
* Check if the template requires some addons and then redirect to the builder for further interaction if needed.
[972] Fix | Delete
*
[973] Fix | Delete
* @since 1.6.8
[974] Fix | Delete
*
[975] Fix | Delete
* @param array $template Template data.
[976] Fix | Delete
*
[977] Fix | Delete
* @return bool True if template requires some addons that are not yet installed and/or activated.
[978] Fix | Delete
*/
[979] Fix | Delete
private function check_template_required_addons( $template ) {
[980] Fix | Delete
[981] Fix | Delete
// Return false if none addons required.
[982] Fix | Delete
if ( empty( $template['addons'] ) ) {
[983] Fix | Delete
return false;
[984] Fix | Delete
}
[985] Fix | Delete
[986] Fix | Delete
$required_addons = wpforms()->get( 'addons' )->get_by_slugs( $template['addons'] );
[987] Fix | Delete
[988] Fix | Delete
foreach ( $required_addons as $i => $addon ) {
[989] Fix | Delete
if ( empty( $addon['action'] ) || ! in_array( $addon['action'], [ 'install', 'activate' ], true ) ) {
[990] Fix | Delete
unset( $required_addons[ $i ] );
[991] Fix | Delete
}
[992] Fix | Delete
}
[993] Fix | Delete
[994] Fix | Delete
// Return false if not need to install or activate any addons.
[995] Fix | Delete
// We can proceed with creating the form directly in this process.
[996] Fix | Delete
if ( empty( $required_addons ) ) {
[997] Fix | Delete
return false;
[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