1
|
|
|
<?php |
2
|
|
|
namespace GV; |
3
|
|
|
|
4
|
|
|
/** If this file is called directly, abort. */ |
5
|
|
|
if ( ! defined( 'GRAVITYVIEW_DIR' ) ) { |
6
|
|
|
die(); |
7
|
|
|
} |
8
|
|
|
|
9
|
|
|
/** |
10
|
|
|
* The Entry Table Template class . |
11
|
|
|
* |
12
|
|
|
* Renders a \GV\Entry using a \GV\Entry_Renderer. |
13
|
|
|
*/ |
14
|
|
|
class Entry_Table_Template extends Entry_Template { |
15
|
|
|
/** |
16
|
|
|
* @var string The template slug to be loaded (like "table", "list") |
17
|
|
|
*/ |
18
|
|
|
public static $slug = 'table'; |
19
|
|
|
|
20
|
|
|
/** |
21
|
|
|
* Output a field cell. |
22
|
|
|
* |
23
|
|
|
* @param \GV\Field $field The field to be ouput. |
24
|
|
|
* |
25
|
|
|
* @return string|false The field output or false if "hide_empty" is set. |
26
|
|
|
*/ |
27
|
12 |
|
public function the_field( \GV\Field $field ) { |
28
|
12 |
|
$renderer = new Field_Renderer(); |
29
|
12 |
|
$source = is_numeric( $field->ID ) ? ( GF_Form::by_id( $field->form_id ) ? : $this->view->form ) : new Internal_Source(); |
|
|
|
|
30
|
|
|
|
31
|
12 |
|
return $renderer->render( $field, $this->view, $source, $this->entry->from_field( $field ), $this->request ); |
32
|
|
|
} |
33
|
|
|
|
34
|
|
|
/** |
35
|
|
|
* Out the single entry table body. |
36
|
|
|
* |
37
|
|
|
* @return void |
38
|
|
|
*/ |
39
|
12 |
|
public function the_entry() { |
40
|
|
|
|
41
|
|
|
/** @var \GV\Field_Collection $fields */ |
42
|
12 |
|
$fields = $this->view->fields->by_position( 'single_table-columns' )->by_visible( $this->view ); |
43
|
|
|
|
44
|
12 |
|
$context = Template_Context::from_template( $this, compact( 'fields' ) ); |
45
|
|
|
|
46
|
|
|
/** |
47
|
|
|
* @filter `gravityview_table_cells` Modify the fields displayed in a table |
48
|
|
|
* @param array $fields |
49
|
|
|
* @param \GravityView_View $this |
50
|
|
|
* @deprecated Use `gravityview/template/table/fields` |
51
|
|
|
*/ |
52
|
12 |
|
$fields = apply_filters( 'gravityview_table_cells', $fields->as_configuration(), \GravityView_View::getInstance() ); |
53
|
12 |
|
$fields = Field_Collection::from_configuration( $fields ); |
54
|
|
|
|
55
|
|
|
/** |
56
|
|
|
* @filter `gravityview/template/table/fields` Modify the fields displayed in this tables. |
57
|
|
|
* @param \GV\Field_Collection $fields The fields. |
58
|
|
|
* @param \GV\Template_Context $context The context. |
59
|
|
|
* @since 2.0 |
60
|
|
|
*/ |
61
|
12 |
|
$fields = apply_filters( 'gravityview/template/table/fields', $fields, $context ); |
62
|
|
|
|
63
|
12 |
|
foreach ( $fields->all() as $field ) { |
64
|
12 |
|
$context = Template_Context::from_template( $this, compact( 'field' ) ); |
65
|
|
|
|
66
|
12 |
|
$form = \GV\GF_Form::by_id( $field->form_id ) ? : $this->view->form; |
67
|
12 |
|
$entry = $this->entry->from_field( $field ); |
|
|
|
|
68
|
|
|
|
69
|
12 |
|
if ( ! $entry ) { |
70
|
|
|
continue; |
71
|
|
|
} |
72
|
|
|
|
73
|
|
|
/** |
74
|
|
|
* @deprecated Here for back-compatibility. |
75
|
|
|
*/ |
76
|
12 |
|
$column_label = apply_filters( 'gravityview_render_after_label', $field->get_label( $this->view, $form, $entry ), $field->as_configuration() ); |
77
|
12 |
|
$column_label = apply_filters( 'gravityview/template/field_label', $column_label, $field->as_configuration(), $form->form ? $form->form : null, $entry->as_entry() ); |
|
|
|
|
78
|
|
|
|
79
|
|
|
/** |
80
|
|
|
* @filter `gravityview/template/field/label` Override the field label. |
81
|
|
|
* @since 2.0 |
82
|
|
|
* @param[in,out] string $column_label The label to override. |
83
|
|
|
* @param \GV\Template_Context $context The context. |
84
|
|
|
*/ |
85
|
12 |
|
$column_label = apply_filters( 'gravityview/template/field/label', $column_label, $context ); |
86
|
|
|
|
87
|
|
|
/** |
88
|
|
|
* @filter `gravityview/template/table/entry/hide_empty` |
89
|
|
|
* @param boolean $hide_empty Should the row be hidden if the value is empty? Default: don't hide. |
90
|
|
|
* @param \GV\Template_Context $context The context ;) Love it, cherish it. And don't you dare modify it! |
91
|
|
|
*/ |
92
|
12 |
|
$hide_empty = apply_filters( 'gravityview/render/hide-empty-zone', $this->view->settings->get( 'hide_empty', false ), $context ); |
93
|
|
|
|
94
|
12 |
|
echo \gravityview_field_output( array( |
95
|
12 |
|
'entry' => $this->entry->as_entry(), |
96
|
12 |
|
'field' => is_numeric( $field->ID ) ? $field->as_configuration() : null, |
97
|
12 |
|
'label' => $column_label, |
98
|
12 |
|
'value' => $this->the_field( $field ), |
99
|
12 |
|
'markup' => '<tr id="{{ field_id }}" class="{{ class }}"><th scope="row">{{ label }}</th><td>{{ value }}</td></tr>', |
100
|
12 |
|
'hide_empty' => $hide_empty, |
101
|
12 |
|
'zone_id' => 'single_table-columns', |
102
|
12 |
|
), $context ); |
103
|
|
|
} |
104
|
12 |
|
} |
105
|
|
|
} |
106
|
|
|
|
Since your code implements the magic getter
_get
, this function will be called for any read access on an undefined variable. You can add the@property
annotation to your class or interface to document the existence of this variable.If the property has read access only, you can use the @property-read annotation instead.
Of course, you may also just have mistyped another name, in which case you should fix the error.
See also the PhpDoc documentation for @property.