Completed
Pull Request — develop (#1588)
by Zack
19:25
created

View   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 59
rs 10
c 0
b 0
f 0
wmc 4
lcom 0
cbo 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A render() 0 34 4
1
<?php
2
3
namespace GV\Gutenberg\Blocks\Block;
4
5
// Exit if accessed directly
6
if ( ! defined( 'ABSPATH' ) ) {
7
	exit;
8
}
9
10
class View extends Block {
11
	const BLOCK_NAME = 'view';
12
13
	/**
14
	 * Generate `[gravityview]` shortcode
15
	 *
16
	 * @param array $attributes
17
	 *                         array['id']                  string  The ID of the View you want to display
18
	 *                         array['page_size']           string  Number of entries to show at a time
19
	 *                         array['sort_field']          string  What form field id should be used to sort?
20
	 *                         array['sort_direction']      string  ASC / DESC
21
	 *                         array['search_field']        string  Only display entries with this text in the value
22
	 *                         array['search_value']        string  Change the type of search to be performed.
23
	 *                         array['search_operator']     string  Possible values include: 'is', 'isnot', '<>', 'not in', 'in', '>', '<', 'contains', 'starts_with', 'ends_with', 'like', '>=', '<='
24
	 *                         array['start_date']          string  Filter the results by date. This sets a limit on the earliest results shown. In YYYY-MM-DD format.
25
	 *                         array['end_date']            string  Filter the results by date. This sets a limit on the latest results shown. In YYYY-MM-DD format.
26
	 *                         array['class']               string  Add a HTML class to the view wrapper
27
	 *                         array['offset']              string  This is the start point in the current data set (Count starts with 0)
28
	 *                         array['single_title']        string  Define a custom single entry view title (default: post/page title)
29
	 *                         array['back_link_label']     string  Define a custom single entry back link label (default: ← Go back)
30
	 *                         array['post_id']             string  When using the shortcode in a widget or template, you may want to specify a page where a View is embedded as the base URL for entry links
31
	 *
32
	 * @return string $output
33
	 */
34
	static function render( $attributes = array() ) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
35
		$accepted_attributes = array(
36
			'id',
37
			'page_size',
38
			'sort_field',
39
			'sort_direction',
40
			'search_field',
41
			'search_value',
42
			'search_operator',
43
			'start_date',
44
			'end_date',
45
			'class',
46
			'offset',
47
			'single_title',
48
			'back_link_label',
49
			'post_id',
50
		);
51
52
		$shortcode_attributes = array();
53
54
		foreach ( $attributes as $attribute => $value ) {
55
			$value = esc_attr( sanitize_text_field( $value ) );
56
57
			if ( in_array( $attribute, $accepted_attributes ) && ! empty( $value ) ) {
58
				$shortcode_attributes[] = "{$attribute}={$value}";
59
			}
60
		}
61
62
		$shortcode = sprintf( '[gravityview %s]', implode( ' ', $shortcode_attributes ) );
63
64
		$output = do_shortcode( $shortcode );
65
66
		return $output;
67
	}
68
}
69