|
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@propertyannotation 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.