Skip to content

Instantly share code, notes, and snippets.

@Idealien
Idealien / gist.php
Created January 12, 2018 02:09
Gravity Flow Timeline Manipulation
<?php
$API = new Gravity_Flow_API( '1' );
$form = GFAPI::get_form( '1' );
require_once( gravity_flow()->get_base_path() . '/includes/pages/class-entry-detail.php' );
$notes = Gravity_Flow_Entry_Detail::get_timeline_notes( $entry );
$output = "<H3>Timeline</h3><ul>";
foreach( $notes as $note):
if( $note->user_name !== 'notification' && $note->value !== 'Step expired' ):
@Idealien
Idealien / php
Created September 23, 2014 03:16
GF Entry Manipulation
<?php
add_filter("gform_after_submission", "post_form_anonymize", 10 , 2);
//Gravity Form Submission
function post_form_anonymize($entry, $form){
$cssClasses = preg_split('/[\ \n\,]+/', $form['cssClass']);
if (in_array("anonymize", $cssClasses)) {
RGFormsModel::update_lead_property($entry['id'], "created_by","1");
RGFormsModel::update_lead_property($entry['id'], "ip","XXX.YYY.XXX.YYY");
@Idealien
Idealien / functions.php
Created September 11, 2018 00:51
Core pieces to get assignee info into Gravity Flow status
<?php
add_filter( 'gravityflow_columns_status_table', 'custom_column_titles', 10, 3 );
function custom_column_titles( $columns, $args, $table ) {
$new_column = array(
'assignees' => 'Assignee(s)',
);
$pre_columns = array_slice( $columns, 0, 2 );
$post_columns = array_slice( $columns, 2 );
$columns = array_merge( $pre_columns, $new_column, $post_columns );
@Idealien
Idealien / functions.php
Created May 7, 2018 10:57
Gravity Flow - User Input Validation to prevent step completion without certain data
<?php
add_filter( 'gravityflow_validation_user_input', 'step_complete_data_check', 10, 3 );
add_filter( 'gravityflow_validation_user_input', 'step_inprogress_bypass_required', 10, 3 );
function step_complete_data_check( $validation_result, $step, $new_status ) {
if( ($validation_result['form']['id'] == "121" && rgpost( 'step_id' ) == 40 && $new_status == 'in_progress') ) {
foreach( $form['fields'] as &$field ) {
@Idealien
Idealien / functions.php
Created March 17, 2018 18:49
Gravity Flow - Custom Column for status table based on creator, assignee, etc
<?php
add_filter( 'gravityflow_columns_status_table', 'custom_column_titles', 10, 3 );
function custom_column_titles( $columns, $args, $table ) {
$new_column = array(
'user_action' => 'User Action',
);
$pre_columns = array_slice( $columns, 0, 2 );
$post_columns = array_slice( $columns, 2 );
$columns = array_merge( $pre_columns, $new_column, $post_columns );
return $columns;
@Idealien
Idealien / functions.php
Created March 2, 2018 01:20
Gravity Flow - Adjust Discussion Display Limit
<?php
add_filter( 'gravityflow_discussion_items_display_limit', 'limit_discussion_display', 10, 2 );
function limit_discussion_display( $display_limit, $discussion_field ) {
//Change to control which form / field the limit change is applied to
if ( $discussion_field['formId'] == '25' ) {
$display_limit = 2;
}
return $display_limit;
}
@Idealien
Idealien / functions.php
Created February 20, 2018 00:16
Gravity Forms - Custom Export Column
<?php
add_filter( 'gform_export_fields', 'add_step_updated', 10, 1 );
function add_step_updated( $form ) {
array_push( $form['fields'], array( 'id' => 'step_updated', 'label' => __( 'Step Last Updated', 'gravityforms' ) ) );
return $form;
}
add_filter( 'gform_export_field_value', 'set_step_updated', 10, 4 );
function set_step_updated( $value, $form_id, $field_id, $entry ) {
switch ( $field_id ) {
@Idealien
Idealien / functions.php
Last active March 28, 2020 04:48
Preliminary Business Hour Notification Example
<?php
add_filter( 'gravityflow_step_schedule_timestamp', 'schedule_business_hours', 10, 3 );
function schedule_business_hours( $schedule_timestamp, $schedule_type, $step ) {
//Ensure you are only adjusting the desired form/step
if ( $step->get_id() !== 74 ) {
return $schedule_timestamp;
}
gravity_flow()->log_debug( __METHOD__ . '(): Original Scheduled: ' . date( 'Y-m-d H:i:s', $schedule_timestamp ) );
@Idealien
Idealien / functions.php
Created February 2, 2018 20:57
Gravity Flow - Step Assignee - Bypass "re-assignment" with email change
<?php
add_filter( 'gravityflow_step_assignees', 'bypass_step_assignee_on_email_change', 10, 2 );
function bypass_step_assignee_on_email_change( $assignees, $step ) {
//Update with the ID of your specific step to apply the bypass against
if ( $step->get_id() == '76' ) {
if ( isset( $_POST['gforms_save_entry'] ) && count( $_POST ) > 0 ) {
$reset = false;
if ( $assignees ) {
foreach ( $assignees as $key => $assignee ) {
@Idealien
Idealien / functions.php
Created January 28, 2018 22:09
GFlow - Specific User Assignment
<?php
add_filter( "gravityflow_user_field", "gflow_request_manager", 10, 3 );
function gflow_request_manager( $choices, $form_id, $field ) {
if ( $form_id == 1 && $field->id == 15 ) {
$manager = get_user_by('email', get_user_meta(get_current_user_id(), "manager_email", true) );
if( false !== $manager ) {
$choices = array(
array('value' => $manager->ID, 'text' => $manager->first_name . ' ' . $manager->last_name)