GravityView  2.17
The best, easiest way to display Gravity Forms entries on your website.
class-gravityview-fields.php
Go to the documentation of this file.
1 <?php
2 /**
3  * @file class-gravityview-fields.php
4  * @package GravityView
5  * @subpackage includes\fields
6  */
7 
8 /**
9  * Wanted to extend GF_Fields, but couldn't because static variables are inherited,
10  * so $_fields would always be GF results
11  *
12  * @see GF_Fields
13  */
14 final class GravityView_Fields {
15 
16  /* @var GravityView_Field[] */
17  protected static $_fields = array();
18 
19  /**
20  * @param GravityView_Field $field Field to register
21  *
22  * @throws Exception If requirements aren't met
23  *
24  * @return void
25  */
26  public static function register( $field ) {
27  if ( ! is_subclass_of( $field, 'GravityView_Field' ) ) {
28  throw new Exception( 'Must be a subclass of GravityView_Field' );
29  }
30  if ( empty( $field->name ) ) {
31  throw new Exception( 'The name must be set' );
32  }
33  if ( isset( self::$_fields[ $field->name ] ) && ! defined( 'DOING_GRAVITYVIEW_TESTS' ) ) {
34  throw new Exception( 'Field type already registered: ' . $field->name );
35  }
36  self::$_fields[ $field->name ] = $field;
37  }
38 
39  /**
40  * @param array $properties
41  *
42  * @return GravityView_Field | bool
43  */
44  public static function create( $properties ) {
45  $type = isset( $properties['type'] ) ? $properties['type'] : '';
46  $type = empty( $properties['inputType'] ) ? $type : $properties['inputType'];
47  if ( empty( $type ) || ! isset( self::$_fields[ $type ] ) ) {
48  return new GravityView_Field( $properties );
49  }
50  $class = self::$_fields[ $type ];
51  $class_name = get_class( $class );
52  $field = new $class_name( $properties );
53 
54  return $field;
55  }
56 
57  /**
58  * Does the field exist (has it been registered)?
59  *
60  * @param string $field_name
61  *
62  * @return bool True: yes, it exists; False: nope
63  */
64  public static function exists( $field_name ) {
65  return isset( self::$_fields["{$field_name}"] );
66  }
67 
68  /**
69  * @param string $field_name
70  *
71  * @return GravityView_Field|false
72  */
73  public static function get_instance( $field_name ) {
74  return isset( self::$_fields[ $field_name ] ) ? self::$_fields[ $field_name ] : false;
75  }
76 
77  /**
78  * Alias for get_instance()
79  *
80  * @param $field_name
81  *
82  * @return GravityView_Field|false
83  */
84  public static function get( $field_name ) {
85  return self::get_instance( $field_name );
86  }
87 
88  /**
89  * Alias for get_instance()
90  *
91  * @param string|GF_Field $gf_field Gravity Forms field class or the class name type
92  *
93  * @return GravityView_Field|false Returns false if no matching fields found
94  */
95  public static function get_associated_field( $gf_field ) {
96 
97  $field_type = is_a( $gf_field, 'GF_Field' ) ? get_class( $gf_field ) : $gf_field;
98 
99  foreach( self::$_fields as $field ) {
100  if( $field_type === $field->_gf_field_class_name ) {
101  return $field;
102  }
103  }
104 
105  return false;
106  }
107 
108  /**
109  * Get all fields
110  *
111  * @since 1.16 Added $group parameter
112  *
113  * @param string|array $groups Optional. If defined, fetch all fields in a group or array of groups.
114  *
115  * @return GravityView_Field[]
116  */
117  public static function get_all( $groups = '' ) {
118 
119  if( '' !== $groups ) {
120  $return_fields = self::$_fields;
121 
122  $groups = (array) $groups;
123 
124  foreach ( $return_fields as $key => $field ) {
125  if( ! in_array( $field->group, $groups, true ) ) {
126  unset( $return_fields[ $key ] );
127  }
128  }
129  return $return_fields;
130  } else {
131  return self::$_fields;
132  }
133  }
134 
135 }
Modify field settings by extending this class.
static create( $properties)
$class
Wanted to extend GF_Fields, but couldn&#39;t because static variables are inherited, so $_fields would al...
static get_associated_field( $gf_field)
Alias for get_instance()
static exists( $field_name)
Does the field exist (has it been registered)?
static get_all( $groups='')
Get all fields.
static get_instance( $field_name)