PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6
GiveWP – Donation Plugin and Fundraising Platform v4.16.6
4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 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 / donation-form-grid / class-give-donation-form-grid-block.php
give / blocks / donation-form-grid Last commit date
data 3 years ago edit 2 years ago class-give-donation-form-grid-block.php 1 year ago index.js 8 months ago
class-give-donation-form-grid-block.php
308 lines
1 <?php
2 /**
3 * Give Donation Grid Block Class
4 *
5 * @package Give
6 * @subpackage Classes/Blocks
7 * @copyright Copyright (c) 2019, GiveWP
8 * @license https://opensource.org/licenses/gpl-license GNU Public License
9 * @since 2.0.2
10 */
11
12 // Exit if accessed directly.
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit;
15 }
16
17 /**
18 * Give_Donation_Form_Grid_Block Class.
19 *
20 * This class handles donation forms block.
21 *
22 * @since 2.0.2
23 */
24 class Give_Donation_Form_Grid_Block {
25 /**
26 * Instance.
27 *
28 * @since
29 * @access private
30 * @var Give_Donation_Form_Grid_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_Donation_Form_Grid_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.0.2
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(
86 'give/donation-form-grid',
87 array(
88 'render_callback' => array( $this, 'render_block' ),
89 'attributes' => array(
90 'formsPerPage' => array(
91 'type' => 'string',
92 'default' => '12',
93 ),
94 'formIDs' => array(
95 'type' => 'array',
96 'default' => [],
97 ),
98 'excludeForms' => array(
99 'type' => 'boolean',
100 'default' => false,
101 ),
102 'excludedFormIDs' => array(
103 'type' => 'array',
104 'default' => [],
105 ),
106 'orderBy' => array(
107 'type' => 'string',
108 'default' => 'date',
109 ),
110 'order' => array(
111 'type' => 'string',
112 'default' => 'DESC',
113 ),
114 'categories' => array(
115 'type' => 'array',
116 'default' => [],
117 ),
118 'tags' => array(
119 'type' => 'array',
120 'default' => [],
121 ),
122 'columns' => array(
123 'type' => 'string',
124 'default' => '1',
125 ),
126 'imageSize' => array(
127 'type' => 'string',
128 'default' => 'medium',
129 ),
130 'imageHeight' => array(
131 'type' => 'string',
132 'default' => 'auto',
133 ),
134 'showTitle' => array(
135 'type' => 'boolean',
136 'default' => true,
137 ),
138 'showExcerpt' => array(
139 'type' => 'boolean',
140 'default' => true,
141 ),
142 'excerptLength' => array(
143 'type' => 'integer',
144 'default' => 16,
145 ),
146 'showGoal' => array(
147 'type' => 'boolean',
148 'default' => true,
149 ),
150 'showProgressBar' => array(
151 'type' => 'boolean',
152 'default' => true,
153 ),
154 'showFeaturedImage' => array(
155 'type' => 'boolean',
156 'default' => true,
157 ),
158 'showDonateButton' => array(
159 'type' => 'boolean',
160 'default' => true,
161 ),
162 'tagBackgroundColor' => array(
163 'type' => 'string',
164 'default' => '#69b86b',
165 ),
166 'tagTextColor' => array(
167 'type' => 'string',
168 'default' => '#ffffff',
169 ),
170 'donateButtonTextColor' => array(
171 'type' => 'string',
172 'default' => '#69b86b',
173 ),
174 'displayType' => array(
175 'type' => 'string',
176 'default' => 'redirect',
177 ),
178 'paged' => array(
179 'type' => 'boolean',
180 'default' => true,
181 ),
182 'filterOptions' => array(
183 'type' => 'string',
184 'default' => 'tags',
185 ),
186 'imageHeightOptions' => array(
187 'type' => 'string',
188 'default' => 'auto',
189 ),
190 'progressBarColor' => array(
191 'type' => 'string',
192 'default' => '#69b86b'
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 $parameters = array(
211 'forms_per_page' => absint( $attributes['formsPerPage'] ),
212 'ids' => implode(',',
213 array_map(
214 static function ($id) {
215 _give_redirect_form_id($id);
216
217 return $id;
218 },
219 $this->getAsArray($attributes['formIDs'])
220 )
221 ),
222 'exclude' => implode(',', $this->getAsArray($attributes['excludedFormIDs'] ) ),
223 'orderby' => $attributes['orderBy'],
224 'order' => $attributes['order'],
225 'cats' => implode(',', $this->getAsArray($attributes['categories'] ) ),
226 'tags' => implode(',', $this->getAsArray($attributes['tags'] ) ),
227 'columns' => $attributes['columns'],
228 'show_title' => $attributes['showTitle'],
229 'show_goal' => $attributes['showGoal'],
230 'show_excerpt' => $attributes['showExcerpt'],
231 'excerpt_length' => $attributes['excerptLength'],
232 'show_featured_image' => $attributes['showFeaturedImage'],
233 'show_donate_button' => $attributes['showDonateButton'],
234 'tag_background_color' => $attributes['tagBackgroundColor'],
235 'tag_text_color' => $attributes['tagTextColor'],
236 'donate_button_text_color' => $attributes['donateButtonTextColor'],
237 'display_style' => $attributes['displayType'],
238 'paged' => $attributes['paged'],
239 'image_size' => $attributes['imageSize'],
240 'image_height' => $attributes['imageHeight'],
241 'image_height_options' => $attributes['imageHeightOptions'],
242 'progress_bar_color' => $attributes['progressBarColor']
243 );
244
245 $html = give_form_grid_shortcode( $parameters );
246 $html = ! empty( $html ) ? $html : $this->blank_slate();
247
248 return $html;
249 }
250
251 /**
252 * @since 2.25.0
253 *
254 * @param string|array $value
255 * @return array
256 */
257 private function getAsArray($value) {
258 if ( is_array($value) ) {
259 return $value;
260 }
261
262 // Backward compatibility
263 if (strpos($value, ',')) {
264 return explode(',', $value);
265 }
266
267 return [$value];
268 }
269
270 /**
271 * Return formatted notice when shortcode return empty string
272 *
273 * @since 4.0.0 Replace "new form" with "new campaign form" link
274 * @since 2.4.0
275 *
276 * @return string
277 */
278 private function blank_slate() {
279 if ( ! defined( 'REST_REQUEST' ) ) {
280 return '';
281 }
282
283 ob_start();
284
285 $content = array(
286 'image_url' => GIVE_PLUGIN_URL . 'build/assets/dist/images/give-icon-full-circle.svg',
287 'image_alt' => __( 'Give Icon', 'give' ),
288 'heading' => __('No campaign forms found.', 'give'),
289 'message' => __('The first step towards accepting online donations is to create a campaign.',
290 'give'),
291 'cta_text' => __('Create Campaign Form', 'give'),
292 'cta_link' => admin_url('edit.php?post_type=give_forms&page=give-campaigns&new=campaign'),
293 'help' => sprintf(
294 /* translators: 1: Opening anchor tag. 2: Closing anchor tag. */
295 __( 'Need help? Get started with %1$sGive 101%2$s.', 'give' ),
296 '<a href="http://docs.givewp.com/give101/" target="_blank">',
297 '</a>'
298 ),
299 );
300
301 include_once GIVE_PLUGIN_DIR . 'includes/admin/views/blank-slate.php';
302
303 return ob_get_clean();
304 }
305 }
306
307 Give_Donation_Form_Grid_Block::get_instance();
308