GravityView  2.17
The best, easiest way to display Gravity Forms entries on your website.
class-gravityview-plugin-hooks-gravity-forms-signature.php
Go to the documentation of this file.
1 <?php
2 /**
3  * Customization for the Gravity Forms Signature Addon
4  *
5  * @file class-gravityview-plugin-hooks-gravity-forms-signature.php
6  * @package GravityView
7  * @license GPL2+
8  * @author GravityView <[email protected]>
9  * @link http://gravityview.co
10  * @copyright Copyright 2016, Katz Web Services, Inc.
11  *
12  * @since 1.17
13  */
14 
15 /**
16  * @inheritDoc
17  * @since 1.17
18  */
20 
21  /**
22  * @type string Class that should be exist in a plugin or theme. Used to check whether plugin is active.
23  * @since 1.17
24  */
25  protected $class_name = 'GFSignature';
26 
27  protected function add_hooks() {
28 
29  // Remove $_POST values so GF doesn't change output HTML laout
30  add_action( 'gravityview/edit_entry/after_update', array( $this, 'after_edit_entry' ), 10, 2 );
31 
32  // Set the priority to 5 so it processes before the Signature field input is generated
33  // This way, we can modify the $_POST value before the Signature Addon uses it.
34  add_filter( 'gform_field_input', array( $this, 'edit_entry_field_input' ), 5, 5 );
35  }
36 
37  /**
38  * We need to remove the $value used by Gravity Forms so it instead checks for the $_POST field values
39  *
40  * In ~line 541, this code would be used if we didn't override in this method:
41  *
42  * `if (RG_CURRENT_VIEW == "entry" && $value){`
43  *
44  * We don't want that code (with the download/delete icons). So unsetting the $_POST here forces using the "sign again" code instead.
45  *
46  * @see GFSignature::signature_input
47  *
48  * @param array $form GF form array
49  * @param int $entry_id Entry ID being edited
50  */
51  function after_edit_entry( $form, $entry_id ) {
52 
53  $signature_fields = GFAPI::get_fields_by_type( $form, 'signature' );
54 
55  foreach ( $signature_fields as $field ) {
56  unset( $_POST["input_{$field->id}"] );
57  }
58  }
59 
60  /**
61  * The Signature Addon only displays the output in the editable form if it thinks it's in the Admin or a form has been submitted
62  *
63  * @since 1.17
64  *
65  * @param string $field_content Always empty. Returning not-empty overrides the input.
66  * @param GF_Field $field
67  * @param string|array $value If array, it's a field with multiple inputs. If string, single input.
68  * @param int $lead_id Lead ID. Always 0 for the `gform_field_input` filter.
69  * @param int $form_id Form ID
70  *
71  * @return string Empty string forces Gravity Forms to use the $_POST values
72  */
73  function edit_entry_field_input( $field_content = '', $field = null, $value = '', $lead_id = 0, $form_id = 0 ) {
74 
75  $context = function_exists('gravityview_get_context') ? gravityview_get_context() : '';
76 
77  if( 'signature' !== $field->type || 'edit' !== $context ) {
78  return $field_content;
79  }
80 
81  // We need to fetch a fresh version of the entry, since the saved entry hasn't refreshed in GV yet.
82  $entry = GravityView_View::getInstance()->getCurrentEntry();
83  $entry = GFAPI::get_entry( $entry['id'] );
84  $entry_value = \GV\Utils::get( $entry, $field->id );
85 
86  $_POST["input_{$field->id}"] = $entry_value; // Used when Edit Entry form *is* submitted
87  $_POST["input_{$form_id}_{$field->id}_signature_filename"] = $entry_value; // Used when Edit Entry form *is not* submitted
88 
89  return ''; // Return empty string to force using $_POST values instead
90  }
91 }
92 
static getInstance( $passed_post=NULL)
edit_entry_field_input( $field_content='', $field=null, $value='', $lead_id=0, $form_id=0)
The Signature Addon only displays the output in the editable form if it thinks it&#39;s in the Admin or a...
if(gravityview() ->plugin->is_GF_25()) $form
after_edit_entry( $form, $entry_id)
We need to remove the $value used by Gravity Forms so it instead checks for the $_POST field values...
if(empty( $created_by)) $form_id
static get( $array, $key, $default=null)
Grab a value from an array or an object or default.
gravityview_get_context()
Returns the current GravityView context, or empty string if not GravityView.
Definition: class-api.php:1330
Abstract class that makes it easy for plugins and themes to register no-conflict scripts and styles...
$entry
Definition: notes.php:27