PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.3
GiveWP – Donation Plugin and Fundraising Platform v4.16.3
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 / class-give-donation-form-block.php
give / blocks / donation-form Last commit date
data 2 years ago class-give-donation-form-block.php 2 years ago index.js 7 months ago
class-give-donation-form-block.php
232 lines
1 <?php
2 /**
3 * Give Donation Form Block Class
4 *
5 * @since 2.0.2
6 * @subpackage Classes/Blocks
7 * @copyright Copyright (c) 2018, GiveWP
8 * @license https://opensource.org/licenses/gpl-license GNU Public License
9 * @package Give
10 */
11
12 // Exit if accessed directly.
13 if (!defined('ABSPATH')) {
14 exit;
15 }
16
17 /**
18 * Give_Donation_Form_Block Class.
19 *
20 * This class handles donation forms block.
21 *
22 * @since 2.0.2
23 */
24 class Give_Donation_Form_Block
25 {
26 /**
27 * Instance.
28 *
29 * @since
30 * @access private
31 * @var Give_Donation_Form_Block
32 */
33 private static $instance;
34
35 /**
36 * Singleton pattern.
37 *
38 * @since
39 * @access private
40 */
41 private function __construct()
42 {
43 }
44
45
46 /**
47 * Get instance.
48 *
49 * @since
50 * @access public
51 * @return Give_Donation_Form_Block
52 */
53 public static function get_instance()
54 {
55 if (null === static::$instance) {
56 self::$instance = new static();
57
58 self::$instance->init();
59 }
60
61 return self::$instance;
62 }
63
64 /**
65 * Class Constructor
66 *
67 * Set up the Give Donation Grid Block class.
68 *
69 * @since 2.0.2
70 * @access private
71 */
72 private function init()
73 {
74 add_action('init', array($this, 'register_block'), 999);
75 add_action('wp_ajax_give_block_donation_form_search_results', array($this, 'block_donation_form_search_results')
76 );
77 add_filter('rest_prepare_give_forms', array($this, 'addExtraDataToResponse'), 10, 2);
78 }
79
80 /**
81 * Add extra data to response.
82 *
83 * @since 2.7.0
84 * @param WP_REST_Response $response
85 * @param WP_Post $form
86 *
87 * @return WP_REST_Response
88 */
89 public function addExtraDataToResponse($response, $form)
90 {
91 // Return extra data only if query in edit context.
92 if (empty($_REQUEST['context']) || $_REQUEST['context'] !== 'edit') {
93 return $response;
94 }
95
96 $data = $response->get_data();
97 $data['formTemplate'] = Give()->form_meta->get_meta($form->ID, '_give_form_template', true);
98 $data['isLegacyForm'] = !Give()->form_meta->get_meta($form->ID, 'formBuilderSettings', true);
99 $response->set_data($data);
100
101 return $response;
102 }
103
104 /**
105 * Register block
106 *
107 * @since 2.1
108 * @access public
109 *
110 * @access public
111 */
112 public function register_block()
113 {
114 // Bailout.
115 if (!function_exists('register_block_type')) {
116 return;
117 }
118
119 // Register block.
120 register_block_type(
121 'give/donation-form',
122 array(
123 'render_callback' => array($this, 'render_donation_form'),
124 'attributes' => array(
125 'id' => array(
126 'type' => 'number',
127 ),
128 'prevId' => array(
129 'type' => 'number',
130 ),
131 'displayStyle' => array(
132 'type' => 'string',
133 'default' => 'onpage',
134 ),
135 'continueButtonTitle' => array(
136 'type' => 'string',
137 'default' => __('Donate now', 'give')
138 ),
139 'showTitle' => array(
140 'type' => 'boolean',
141 'default' => true,
142 ),
143 'showGoal' => array(
144 'type' => 'boolean',
145 'default' => true,
146 ),
147 'contentDisplay' => array(
148 'type' => 'boolean',
149 'default' => true,
150 ),
151 'showContent' => array(
152 'type' => 'string',
153 'default' => 'above',
154 ),
155 'blockId' => array(
156 'type' => 'string',
157 ),
158 ),
159 )
160 );
161 }
162
163 /**
164 * Block render callback
165 *
166 * @param array $attributes Block parameters.
167 *
168 * @access public
169 * @return string;
170 */
171 public function render_donation_form($attributes)
172 {
173 // Bailout.
174 if (empty($attributes['id'])) {
175 return '';
176 }
177 $parameters = array();
178
179 $parameters['id'] = absint($attributes['id']);
180 $parameters['show_title'] = $attributes['showTitle'];
181 $parameters['show_goal'] = $attributes['showGoal'];
182 $parameters['show_content'] = !empty($attributes['contentDisplay']) ? $attributes['showContent'] : 'none';
183 $parameters['display_style'] = $attributes['displayStyle'];
184 $parameters['continue_button_title'] = trim($attributes['continueButtonTitle']);
185
186 _give_redirect_form_id($parameters['id']);
187
188 return give_form_shortcode($parameters);
189 }
190
191 /**
192 * This function is used to fetch donation forms based on the chosen search in the donation form block.
193 *
194 * @since 2.5.3
195 * @access public
196 *
197 * @return void
198 */
199 public function block_donation_form_search_results()
200 {
201 // Define variables.
202 $result = array();
203 $post_data = give_clean($_POST);
204 $search_keyword = !empty($post_data['search']) ? $post_data['search'] : '';
205
206 // Setup the arguments to fetch the donation forms.
207 $forms_query = new Give_Forms_Query(
208 array(
209 's' => $search_keyword,
210 'number' => 30,
211 'post_status' => 'publish',
212 )
213 );
214
215 // Fetch the donation forms.
216 $forms = $forms_query->get_forms();
217
218 // Loop through each donation form.
219 foreach ($forms as $form) {
220 $result[] = array(
221 'id' => $form->ID,
222 'name' => $form->post_title,
223 );
224 }
225
226 echo wp_json_encode($result);
227 give_die();
228 }
229 }
230
231 Give_Donation_Form_Block::get_instance();
232