PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.33.4
GiveWP – Donation Plugin and Fundraising Platform v2.33.4
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / blocks / donor-wall / class-give-donor-wall.php
give / blocks / donor-wall Last commit date
data 4 years ago edit 2 years ago class-give-donor-wall.php 3 years ago index.js 4 years ago
class-give-donor-wall.php
296 lines
1 <?php
2 /**
3 * Give Donor Wall Block Class
4 *
5 * @package Give
6 * @subpackage Classes/Blocks
7 * @copyright Copyright (c) 2016, GiveWP
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 {
25 /**
26 * Instance.
27 *
28 * @since
29 * @access private
30 * @var Give_Donor_Wall_Block
31 */
32 private static $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 public static function get_instance() {
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', [ $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(
86 'give/donor-wall',
87 [
88 'render_callback' => [ $this, 'render_block' ],
89 'attributes' => [
90 'donorsPerPage' => [
91 'type' => 'string',
92 'default' => '12',
93 ],
94 'formID' => [
95 'type' => 'array',
96 'default' => [],
97 ],
98 'ids' => [
99 'type' => 'array',
100 'default' => [],
101 ],
102 'categories' => [
103 'type' => 'array',
104 'default' => [],
105 ],
106 'tags' => [
107 'type' => 'array',
108 'default' => [],
109 ],
110 'orderBy' => [
111 'type' => 'string',
112 'default' => 'post_date',
113 ],
114 'order' => [
115 'type' => 'string',
116 'default' => 'DESC',
117 ],
118 'paged' => [
119 'type' => 'string',
120 'default' => '1',
121 ],
122 'columns' => [
123 'type' => 'string',
124 'default' => '3',
125 ],
126 'showAvatar' => [
127 'type' => 'boolean',
128 'default' => true,
129 ],
130 'showName' => [
131 'type' => 'boolean',
132 'default' => true,
133 ],
134 'showCompanyName' => [
135 'type' => 'boolean',
136 'default' => false,
137 ],
138 'showForm' => [
139 'type' => 'boolean',
140 'default' => true,
141 ],
142 'showTotal' => [
143 'type' => 'boolean',
144 'default' => true,
145 ],
146 'showComments' => [
147 'type' => 'boolean',
148 'default' => true,
149 ],
150 'showAnonymous' => [
151 'type' => 'boolean',
152 'default' => true,
153 ],
154 'onlyComments' => [
155 'type' => 'boolean',
156 'default' => false,
157 ],
158 'commentLength' => [
159 'type' => 'string',
160 'default' => '80',
161 ],
162 'readMoreText' => [
163 'type' => 'string',
164 'default' => __( 'Read more', 'give' ),
165 ],
166 'loadMoreText' => [
167 'type' => 'string',
168 'default' => __( 'Load more', 'give' ),
169 ],
170 'avatarSize' => [
171 'type' => 'string',
172 'default' => '75',
173 ],
174 'toggleOptions' => [
175 'type' => 'string',
176 'default' => 'Donor info',
177 ],
178 'filterOptions' => [
179 'type' => 'string',
180 'default' => 'ids',
181 ],
182 'color' => [
183 'type' => 'string',
184 'default' => '#219653',
185 ],
186 'showTributes' => [
187 'type' => 'boolean',
188 'default' => false,
189 ],
190 'showTimestamp' => [
191 'type' => 'boolean',
192 'default' => true,
193 ],
194 ],
195 ]
196 );
197 }
198
199 /**
200 * Block render callback
201 *
202 * @param array $attributes Block parameters.
203 *
204 * @access public
205 * @return string;
206 */
207 public function render_block( $attributes ) {
208 $avatarSize = absint( $attributes['avatarSize'] );
209
210 $parameters = [
211 'donors_per_page' => absint( $attributes['donorsPerPage'] ),
212 'form_id' => implode(',', $this->getAsArray($attributes['formID'] ) ),
213 'ids' => implode(',', $this->getAsArray($attributes['ids'] ) ),
214 'cats' => implode(',', $this->getAsArray($attributes['categories'] ) ),
215 'tags' => implode(',', $this->getAsArray($attributes['tags'] ) ),
216 'orderby' => $attributes['orderBy'],
217 'order' => $attributes['order'],
218 'pages' => absint( $attributes['paged'] ),
219 'columns' => $attributes['columns'],
220 'show_avatar' => $attributes['showAvatar'],
221 'show_name' => $attributes['showName'],
222 'show_company_name' => $attributes['showCompanyName'],
223 'show_form' => $attributes['showForm'],
224 'show_total' => $attributes['showTotal'],
225 'show_comments' => $attributes['showComments'],
226 'show_tributes' => $attributes['showTributes'],
227 'anonymous' => $attributes['showAnonymous'],
228 'comment_length' => absint( $attributes['commentLength'] ),
229 'only_comments' => $attributes['onlyComments'],
230 'readmore_text' => $attributes['readMoreText'],
231 'loadmore_text' => $attributes['loadMoreText'],
232 'avatar_size' => $avatarSize ?: 75,
233 'color' => $attributes['color'],
234 'show_time' => $attributes['showTimestamp'],
235 ];
236
237 $html = Give_Donor_Wall::get_instance()->render_shortcode( $parameters );
238 $html = ! empty( $html ) ? $html : $this->blank_slate();
239
240 return $html;
241 }
242
243
244 /**
245 * @since 2.25.0
246 *
247 * @param string|array $value
248 * @return array
249 */
250 private function getAsArray($value) {
251 if ( is_array($value) ) {
252 return $value;
253 }
254
255 // Backward compatibility
256 if (strpos($value, ',')) {
257 return explode(',', $value);
258 }
259
260 return [$value];
261 }
262
263 /**
264 * Return formatted notice when shortcode returns an empty string
265 *
266 * @since 2.4.0
267 *
268 * @return string
269 */
270 private function blank_slate() {
271 if ( ! defined( 'REST_REQUEST' ) ) {
272 return '';
273 }
274
275 ob_start();
276
277 $content = [
278 'image_url' => GIVE_PLUGIN_URL . 'assets/dist/images/give-icon-full-circle.svg',
279 'image_alt' => __( 'GiveWP Icon', 'give' ),
280 'heading' => __( 'No donors found.', 'give' ),
281 'help' => sprintf(
282 /* translators: 1: Opening anchor tag. 2: Closing anchor tag. */
283 __( 'Need help? Learn more about %1$sDonors%2$s.', 'give' ),
284 '<a href="http://docs.givewp.com/core-donors/">',
285 '</a>'
286 ),
287 ];
288
289 include_once GIVE_PLUGIN_DIR . 'includes/admin/views/blank-slate.php';
290
291 return ob_get_clean();
292 }
293 }
294
295 Give_Donor_Wall_Block::get_instance();
296