PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.10.0
GiveWP – Donation Plugin and Fundraising Platform v2.10.0
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 / donor-wall / class-give-donor-wall.php
give / blocks / donor-wall Last commit date
data 5 years ago edit 5 years ago class-give-donor-wall.php 5 years ago index.js 6 years ago
class-give-donor-wall.php
243 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' => 'string',
96 'default' => '0',
97 ],
98 'ids' => [
99 'type' => 'string',
100 'default' => '',
101 ],
102 'orderBy' => [
103 'type' => 'string',
104 'default' => 'post_date',
105 ],
106 'order' => [
107 'type' => 'string',
108 'default' => 'DESC',
109 ],
110 'paged' => [
111 'type' => 'string',
112 'default' => '1',
113 ],
114 'columns' => [
115 'type' => 'string',
116 'default' => 'best-fit',
117 ],
118 'showAvatar' => [
119 'type' => 'boolean',
120 'default' => true,
121 ],
122 'showName' => [
123 'type' => 'boolean',
124 'default' => true,
125 ],
126 'showCompanyName' => [
127 'type' => 'boolean',
128 'default' => false,
129 ],
130 'showTotal' => [
131 'type' => 'boolean',
132 'default' => true,
133 ],
134 'showDate' => [
135 'type' => 'boolean',
136 'default' => true,
137 ],
138 'showComments' => [
139 'type' => 'boolean',
140 'default' => true,
141 ],
142 'showAnonymous' => [
143 'type' => 'boolean',
144 'default' => true,
145 ],
146 'onlyComments' => [
147 'type' => 'boolean',
148 'default' => false,
149 ],
150 'commentLength' => [
151 'type' => 'string',
152 'default' => '140',
153 ],
154 'readMoreText' => [
155 'type' => 'string',
156 'default' => __( 'Read more', 'give' ),
157 ],
158 'loadMoreText' => [
159 'type' => 'string',
160 'default' => __( 'Load more', 'give' ),
161 ],
162 'avatarSize' => [
163 'type' => 'string',
164 'default' => '60',
165 ],
166 ],
167 ]
168 );
169 }
170
171 /**
172 * Block render callback
173 *
174 * @param array $attributes Block parameters.
175 *
176 * @access public
177 * @return string;
178 */
179 public function render_block( $attributes ) {
180 $avatarSize = absint( $attributes['avatarSize'] );
181
182 $parameters = [
183 'donors_per_page' => absint( $attributes['donorsPerPage'] ),
184 'form_id' => absint( $attributes['formID'] ),
185 'ids' => $attributes['ids'],
186 'orderby' => $attributes['orderBy'],
187 'order' => $attributes['order'],
188 'pages' => absint( $attributes['paged'] ),
189 'columns' => $attributes['columns'],
190 'show_avatar' => $attributes['showAvatar'],
191 'show_name' => $attributes['showName'],
192 'show_company_name' => $attributes['showCompanyName'],
193 'show_total' => $attributes['showTotal'],
194 'show_time' => $attributes['showDate'],
195 'show_comments' => $attributes['showComments'],
196 'anonymous' => $attributes['showAnonymous'],
197 'comment_length' => absint( $attributes['commentLength'] ),
198 'only_comments' => $attributes['onlyComments'],
199 'readmore_text' => $attributes['readMoreText'],
200 'loadmore_text' => $attributes['loadMoreText'],
201 'avatar_size' => $avatarSize ?: 60,
202 ];
203
204 $html = Give_Donor_Wall::get_instance()->render_shortcode( $parameters );
205 $html = ! empty( $html ) ? $html : $this->blank_slate();
206
207 return $html;
208 }
209
210 /**
211 * Return formatted notice when shortcode returns an empty string
212 *
213 * @since 2.4.0
214 *
215 * @return string
216 */
217 private function blank_slate() {
218 if ( ! defined( 'REST_REQUEST' ) ) {
219 return '';
220 }
221
222 ob_start();
223
224 $content = [
225 'image_url' => GIVE_PLUGIN_URL . 'assets/dist/images/give-icon-full-circle.svg',
226 'image_alt' => __( 'GiveWP Icon', 'give' ),
227 'heading' => __( 'No donors found.', 'give' ),
228 'help' => sprintf(
229 /* translators: 1: Opening anchor tag. 2: Closing anchor tag. */
230 __( 'Need help? Learn more about %1$sDonors%2$s.', 'give' ),
231 '<a href="http://docs.givewp.com/core-donors/">',
232 '</a>'
233 ),
234 ];
235
236 include_once GIVE_PLUGIN_DIR . 'includes/admin/views/blank-slate.php';
237
238 return ob_get_clean();
239 }
240 }
241
242 Give_Donor_Wall_Block::get_instance();
243