PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.4.0
GiveWP – Donation Plugin and Fundraising Platform v4.4.0
4.16.3 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 1 year ago index.js 4 years ago
class-give-donor-wall.php
307 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 * @since 3.1.0 Use static function on array_map callback to pass the id as reference for _give_redirect_form_id to prevent warnings on PHP 8.0.1 or plus
203 *
204 * @param array $attributes Block parameters.
205 *
206 * @access public
207 * @return string;
208 */
209 public function render_block( $attributes ) {
210 $avatarSize = absint( $attributes['avatarSize'] );
211
212 $parameters = [
213 'donors_per_page' => absint( $attributes['donorsPerPage'] ),
214 'form_id' => implode(',',
215 array_map(
216 static function ($id) {
217 _give_redirect_form_id($id);
218
219 return $id;
220 },
221 $this->getAsArray($attributes['formID'])
222 )
223 ),
224 'ids' => implode(',', $this->getAsArray($attributes['ids'] ) ),
225 'cats' => implode(',', $this->getAsArray($attributes['categories'] ) ),
226 'tags' => implode(',', $this->getAsArray($attributes['tags'] ) ),
227 'orderby' => $attributes['orderBy'],
228 'order' => $attributes['order'],
229 'pages' => absint( $attributes['paged'] ),
230 'columns' => $attributes['columns'],
231 'show_avatar' => $attributes['showAvatar'],
232 'show_name' => $attributes['showName'],
233 'show_company_name' => $attributes['showCompanyName'],
234 'show_form' => $attributes['showForm'],
235 'show_total' => $attributes['showTotal'],
236 'show_comments' => $attributes['showComments'],
237 'show_tributes' => $attributes['showTributes'],
238 'anonymous' => $attributes['showAnonymous'],
239 'comment_length' => absint( $attributes['commentLength'] ),
240 'only_comments' => $attributes['onlyComments'],
241 'readmore_text' => $attributes['readMoreText'],
242 'loadmore_text' => $attributes['loadMoreText'],
243 'avatar_size' => $avatarSize ?: 75,
244 'color' => $attributes['color'],
245 'show_time' => $attributes['showTimestamp'],
246 ];
247
248 $html = Give_Donor_Wall::get_instance()->render_shortcode( $parameters );
249 $html = ! empty( $html ) ? $html : $this->blank_slate();
250
251 return $html;
252 }
253
254
255 /**
256 * @since 2.25.0
257 *
258 * @param string|array $value
259 * @return array
260 */
261 private function getAsArray($value) {
262 if ( is_array($value) ) {
263 return $value;
264 }
265
266 // Backward compatibility
267 if (strpos($value, ',')) {
268 return explode(',', $value);
269 }
270
271 return [$value];
272 }
273
274 /**
275 * Return formatted notice when shortcode returns an empty string
276 *
277 * @since 2.4.0
278 *
279 * @return string
280 */
281 private function blank_slate() {
282 if ( ! defined( 'REST_REQUEST' ) ) {
283 return '';
284 }
285
286 ob_start();
287
288 $content = [
289 'image_url' => GIVE_PLUGIN_URL . 'build/assets/dist/images/give-icon-full-circle.svg',
290 'image_alt' => __( 'GiveWP Icon', 'give' ),
291 'heading' => __( 'No donors found.', 'give' ),
292 'help' => sprintf(
293 /* translators: 1: Opening anchor tag. 2: Closing anchor tag. */
294 __( 'Need help? Learn more about %1$sDonors%2$s.', 'give' ),
295 '<a href="http://docs.givewp.com/core-donors/">',
296 '</a>'
297 ),
298 ];
299
300 include_once GIVE_PLUGIN_DIR . 'includes/admin/views/blank-slate.php';
301
302 return ob_get_clean();
303 }
304 }
305
306 Give_Donor_Wall_Block::get_instance();
307