Test Setup Failed
Push — master ( b36308...4ef638 )
by
unknown
08:57 queued 10s
created

Give_Donor_Wall_Block::blank_slate()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 0
dl 0
loc 23
rs 9.552
c 0
b 0
f 0
1
<?php
2
/**
3
 * Give Donor Wall Block Class
4
 *
5
 * @package     Give
6
 * @subpackage  Classes/Blocks
7
 * @copyright   Copyright (c) 2016, WordImpress
8
 * @license     https://opensource.org/licenses/gpl-license GNU Public License
9
 * @since       2.3.0
10
 */
11
12
// Exit if accessed directly.
13
if ( ! defined( 'ABSPATH' ) ) {
14
	exit;
15
}
16
17
/**
18
 * Give_Donor_Wall_Block Class.
19
 *
20
 * This class handles donation forms block.
21
 *
22
 * @since 2.3.0
23
 */
24
class Give_Donor_Wall_Block {
0 ignored issues
show
Coding Style introduced by
Since you have declared the constructor as private, maybe you should also declare the class as final.
Loading history...
25
	/**
26
	 * Instance.
27
	 *
28
	 * @since
29
	 * @access private
30
	 * @var Give_Donor_Wall_Block
31
	 */
32
	static private $instance;
33
34
	/**
35
	 * Singleton pattern.
36
	 *
37
	 * @since
38
	 * @access private
39
	 */
40
	private function __construct() {
41
	}
42
43
44
	/**
45
	 * Get instance.
46
	 *
47
	 * @since
48
	 * @access public
49
	 * @return Give_Donor_Wall_Block
50
	 */
51 View Code Duplication
	public static function get_instance() {
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
52
		if ( null === static::$instance ) {
53
			self::$instance = new static();
54
55
			self::$instance->init();
56
		}
57
58
		return self::$instance;
59
	}
60
61
	/**
62
	 * Class Constructor
63
	 *
64
	 * Set up the Give Donation Grid Block class.
65
	 *
66
	 * @since  2.3.0
67
	 * @access private
68
	 */
69
	private function init() {
70
		add_action( 'init', array( $this, 'register_block' ), 999 );
71
	}
72
73
	/**
74
	 * Register block
75
	 *
76
	 * @access public
77
	 */
78
	public function register_block() {
79
		// Bailout.
80
		if ( ! function_exists( 'register_block_type' ) ) {
81
			return;
82
		}
83
84
		// Register block.
85
		register_block_type( 'give/donor-wall', array(
86
			'render_callback' => array( $this, 'render_block' ),
87
			'attributes'      => array(
88
				'donorsPerPage' => array(
89
					'type'    => 'string',
90
					'default' => '12',
91
				),
92
				'formID'        => array(
93
					'type'    => 'string',
94
					'default' => '0',
95
				),
96
				'order'         => array(
97
					'type'    => 'string',
98
					'default' => 'DESC',
99
				),
100
				'paged'         => array(
101
					'type'    => 'string',
102
					'default' => '1',
103
				),
104
				'columns'       => array(
105
					'type'    => 'string',
106
					'default' => 'best-fit',
107
				),
108
				'showAvatar'    => array(
109
					'type'    => 'boolean',
110
					'default' => true,
111
				),
112
				'showName'      => array(
113
					'type'    => 'boolean',
114
					'default' => true,
115
				),
116
				'showTotal'     => array(
117
					'type'    => 'boolean',
118
					'default' => true,
119
				),
120
				'showDate'      => array(
121
					'type'    => 'boolean',
122
					'default' => true,
123
				),
124
				'showComments'  => array(
125
					'type'    => 'boolean',
126
					'default' => true,
127
				),
128
				'commentLength' => array(
129
					'type'    => 'string',
130
					'default' => '140',
131
				),
132
				'onlyComments'  => array(
133
					'type'    => 'boolean',
134
					'default' => false,
135
				),
136
				'readMoreText'  => array(
137
					'type'    => 'string',
138
					'default' => __( 'Read more', 'give' ),
139
				),
140
				'loadMoreText'  => array(
141
					'type'    => 'string',
142
					'default' => __( 'Load more', 'give' ),
143
				),
144
				'avatarSize'    => array(
145
					'type'    => 'string',
146
					'default' => '60',
147
				),
148
			),
149
		) );
150
	}
151
152
	/**
153
	 * Block render callback
154
	 *
155
	 * @param array $attributes Block parameters.
156
	 *
157
	 * @access public
158
	 * @return string;
0 ignored issues
show
Documentation introduced by
The doc-type string; could not be parsed: Expected "|" or "end of type", but got ";" at position 6. (view supported doc-types)

This check marks PHPDoc comments that could not be parsed by our parser. To see which comment annotations we can parse, please refer to our documentation on supported doc-types.

Loading history...
159
	 */
160
	public function render_block( $attributes ) {
161
		$parameters = array(
162
			'donors_per_page' => absint( $attributes['donorsPerPage'] ),
163
			'form_id'         => absint( $attributes['formID'] ),
164
			'order'           => $attributes['order'],
165
			'pages'           => absint( $attributes['paged'] ),
166
			'columns'         => $attributes['columns'],
167
			'show_avatar'     => $attributes['showAvatar'],
168
			'show_name'       => $attributes['showName'],
169
			'show_total'      => $attributes['showTotal'],
170
			'show_time'       => $attributes['showDate'],
171
			'show_comments'   => $attributes['showComments'],
172
			'comment_length'  => absint( $attributes['commentLength'] ),
173
			'only_comments'   => $attributes['onlyComments'],
174
			'readmore_text'   => $attributes['readMoreText'],
175
			'loadmore_text'   => $attributes['loadMoreText'],
176
			'avatar_size'     => absint( $attributes['avatarSize'] ),
177
		);
178
179
		$html = Give_Donor_Wall::get_instance()->render_shortcode( $parameters );
180
		$html = ! empty( $html ) ? $html : $this->blank_slate();
181
182
		return $html;
183
	}
184
185
	/**
186
	 * Return formatted notice when shortcode return empty string
187
	 *
188
	 * @since 2.4.0
189
	 *
190
	 * @return string
191
	 */
192
	private function blank_slate(){
193
		if( ! defined( 'REST_REQUEST' ) ) {
0 ignored issues
show
introduced by
Space after opening control structure is required
Loading history...
introduced by
No space before opening parenthesis is prohibited
Loading history...
194
			return '';
195
		}
196
197
		ob_start();
198
199
		$content = array(
0 ignored issues
show
Unused Code introduced by
$content is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
200
			'image_url' => GIVE_PLUGIN_URL . 'assets/dist/images/give-icon-full-circle.svg',
201
			'image_alt' => __( 'Give Icon', 'give' ),
202
			'heading'  => __( 'No donors found.', 'give' ),
203
			'help'     => sprintf(
204
			/* translators: 1: Opening anchor tag. 2: Closing anchor tag. */
0 ignored issues
show
Coding Style introduced by
This line of the multi-line function call does not seem to be indented correctly. Expected 16 spaces, but found 12.
Loading history...
205
				__( 'Need help? Learn more about %1$sDonors%2$s.', 'give' ),
206
				'<a href="http://docs.givewp.com/core-donors/">',
207
				'</a>'
208
			),
209
		);
210
211
		include_once GIVE_PLUGIN_DIR . 'includes/admin/views/blank-slate.php';
212
213
		return ob_get_clean();
214
	}
215
}
216
217
Give_Donor_Wall_Block::get_instance();
218