Skip to content

Instantly share code, notes, and snippets.

@girafffee
Last active September 14, 2022 15:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save girafffee/cb7d9721e707a70045b96d53efed5d75 to your computer and use it in GitHub Desktop.
Save girafffee/cb7d9721e707a70045b96d53efed5d75 to your computer and use it in GitHub Desktop.
<?php
const JFB_CUSTOM_HIDDEN_SOURCE = '_generated_password';
const JFB_CUSTOM_ATTR_KEY = 'clear_on_gateway_success';
add_filter(
'jet-form-builder/editor/hidden-field/config',
function ( array $config ) {
$config['sources'][] = array(
'value' => JFB_CUSTOM_HIDDEN_SOURCE,
'label' => __( 'Generated Password', 'jet-form-builder' ),
);
return $config;
}
);
add_filter(
'jet-form-builder/fields/hidden-field/value-cb',
function ( $callback, $field_value ) {
if ( JFB_CUSTOM_HIDDEN_SOURCE !== $field_value ) {
return $callback;
}
return function () {
return \Jet_Form_Builder\Classes\Security\Csrf_Tools::generate();
};
},
10, 2
);
add_filter(
'jet-form-builder/on-save-record/field-attributes',
function ( $attrs, $field_type ) {
$field_value = $attrs['field_value'] ?? '';
if ( 'hidden-field' !== $field_type && JFB_CUSTOM_HIDDEN_SOURCE !== $field_value ) {
return $attrs;
}
$attrs[ JFB_CUSTOM_ATTR_KEY ] = true;
return $attrs;
},
10, 2
);
add_action(
'jet-form-builder/before-trigger-event',
/** @var $event \Jet_Form_Builder\Actions\Events\Base_Event */
function ( $event ) {
if ( ! is_a( $event, \Jet_Form_Builder\Actions\Events\Gateway_Success\Gateway_Success_Event::class ) ) {
return;
}
try {
$record = jet_fb_gateway_current()->query_scenario()->get_scenario_row( 'record' );
} catch ( \Jet_Form_Builder\Exceptions\Gateway_Exception $exception ) {
return;
}
try {
$field = \Jet_Form_Builder\Actions\Methods\Form_Record\Query_Views\Record_Fields_View::findOne(
array(
array(
'type' => 'like',
'values' => array( 'field_attrs', JFB_CUSTOM_ATTR_KEY ),
),
'record_id' => $record['id'] ?? 0,
)
)->query()->query_one();
} catch ( \Jet_Form_Builder\Exceptions\Query_Builder_Exception $exception ) {
return;
}
$name = $field['field_name'] ?? '';
jet_fb_action_handler()->request_data[ $name ] = \Jet_Form_Builder\Classes\Security\Csrf_Tools::generate();
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment