PluginProbe
BlockSpare – Gutenberg Blocks for News, Magazine, Blog & Business Websites / 2.1.2
BlockSpare – Gutenberg Blocks for News, Magazine, Blog & Business Websites v2.1.2
4.1.0 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.1.0 1.1.1 1.1.2 1.2.0 1.2.1 1.2.2 1.2.3 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 2.1.2 2.5.0 2.5.3 2.6.1 All 38 releases
blockspare / src / blocks / social-sharing / index.php

index.php in BlockSpare – Gutenberg Blocks for News, Magazine, Blog & Business Websites 2.1.2, at src/blocks/social-sharing/index.php

262 lines 8.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Server-side rendering for the sharing block
4 *
5 * @since 1.1.2
6 * @package Blockspare
7 */
8
9 /**
10 * Register the block on the server
11 */
12
13 if(!function_exists('blockspare_register_social_sharing_block')){
14 function blockspare_register_social_sharing_block()
15 {
16
17 if (!function_exists('register_block_type')) {
18 return;
19 }
20 ob_start();
21 include BLOCKSPARE_PLUGIN_DIR . '/src/blocks/social-sharing/block.json';
22
23 $metadata = json_decode(ob_get_clean(), true);
24
25 register_block_type(
26 'blockspare/blockspare-social-sharing',
27
28 array(
29 'style' => 'blockspare-style-css',
30 'attributes' => $metadata['attributes'],
31 'render_callback' => 'blockspare_render_social_sharing_block',
32 )
33 );
34 }
35
36 add_action('init', 'blockspare_register_social_sharing_block');
37 }
38
39
40 /**
41 * Add the pop-up share window to the footer
42 */
43 if(! function_exists('blockspare_social_sharing_block_icon_footer_script')){
44 function blockspare_social_sharing_block_icon_footer_script()
45 {
46
47 if (function_exists('is_amp_endpoint') && is_amp_endpoint()) {
48 return;
49 }
50 ?>
51 <script type="text/javascript">
52 function blockspareBlocksShare(url, title, w, h) {
53 var left = (window.innerWidth / 2) - (w / 2);
54 var top = (window.innerHeight / 2) - (h / 2);
55 return window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=600, height=600, top=' + top + ', left=' + left);
56 }
57 </script>
58 <?php
59 }
60
61
62 add_action('wp_footer', 'blockspare_social_sharing_block_icon_footer_script');
63 }
64
65 /**
66 * Render the sharing links
67 *
68 * @param array $attributes The block attributes.
69 *
70 * @return string The block HTML.
71 */
72 if(!function_exists('blockspare_render_social_sharing_block')){
73 function blockspare_render_social_sharing_block($attributes)
74 {
75
76 global $post;
77
78 if (has_post_thumbnail()) {
79 $thumbnail_id = get_post_thumbnail_id($post->ID);
80 $thumbnail = $thumbnail_id ? current(wp_get_attachment_image_src($thumbnail_id, 'large', true)) : '';
81 } else {
82 $thumbnail = null;
83 }
84
85
86 $unq_class = mt_rand(100000,999999);
87 $blockuniqueclass = '';
88
89 if(!empty($attributes['uniqueClass'])){
90 $blockuniqueclass = $attributes['uniqueClass'];
91 }else{
92 $blockuniqueclass = 'blockspare-share-'.$unq_class;
93 }
94
95 $icon_style = '';
96
97 if ($attributes['iconColorOption'] != 'blockspare-default-official-color') {
98
99 $icon_style = "color:" . $attributes['customfontColorOption'] . ';';
100 $icon_style .= " background-color:" . $attributes['custombackgroundColorOption'] . ';';
101
102 }
103
104
105 $is_amp_endpoint = function_exists('is_amp_endpoint') && is_amp_endpoint();
106
107 $share_url = '';
108
109
110 if (isset($attributes['facebook']) && $attributes['facebook']) {
111 $facebook_url = 'https://www.facebook.com/sharer/sharer.php?u=' . get_the_permalink() . '&title=' . get_the_title() . '';
112 $share_url .= blockspare_render_social_sharing_block_item($attributes['facebookTitle'], $facebook_url, 'blockspare-share-facebook', 'fab fa-facebook-f', $icon_style, $is_amp_endpoint);
113 }
114
115 if (isset($attributes['twitter']) && $attributes['twitter']) {
116 $twitter_url = 'http://twitter.com/share?text=' . get_the_title() . '&url=' . get_the_permalink() . '';
117 $share_url .= blockspare_render_social_sharing_block_item($attributes['twitterTitle'], $twitter_url, 'blockspare-share-twitter', 'fab fa-twitter', $icon_style, $is_amp_endpoint);
118 }
119
120
121 if (isset($attributes['pinterest']) && $attributes['pinterest']) {
122
123 $pinterest_url = 'https://pinterest.com/pin/create/button/?&url=' . get_the_permalink() . '&description=' . get_the_title() . '&media=' . esc_url($thumbnail) . '';
124 $share_url .= blockspare_render_social_sharing_block_item($attributes['pinterestTitle'], $pinterest_url, 'blockspare-share-pinterest', 'fab fa-pinterest-p', $icon_style, $is_amp_endpoint);
125 }
126
127 if (isset($attributes['linkedin']) && $attributes['linkedin']) {
128
129 $linkedin_url = 'https://www.linkedin.com/shareArticle?mini=true&url=' . get_the_permalink() . '&title=' . get_the_title() . '';
130 $share_url .= blockspare_render_social_sharing_block_item($attributes['linkedinTitle'], $linkedin_url, 'blockspare-share-linkedin', 'fab fa-linkedin-in', $icon_style, $is_amp_endpoint);
131 }
132
133 if (isset($attributes['reddit']) && $attributes['reddit']) {
134
135
136 $reddit_url = 'https://www.reddit.com/submit?url=' . get_the_permalink() . '';
137 $share_url .= blockspare_render_social_sharing_block_item($attributes['redditTitle'], $reddit_url, 'blockspare-share-reddit', 'fab fa-reddit-alien', $icon_style, $is_amp_endpoint);
138 }
139
140 if (isset($attributes['email']) && $attributes['email']) {
141
142 $email_url = 'mailto:?subject=' . get_the_title() . '&body=' . get_the_title() . '&mdash;' . get_the_permalink() . '';
143 $share_url .= blockspare_render_social_sharing_block_item($attributes['emailTitle'], $email_url, 'blockspare-share-email', 'fas fa-envelope', $icon_style, false);
144 }
145
146 $block_content = sprintf(
147 '
148 <div class="%7$s">
149 <div class="blockspare-blocks blockspare-social-wrapper">
150 <ul class="blockspare-social-sharing %2$s %3$s %4$s %5$s %6$s">%1$s</ul>
151 </div>
152 </div>
153 ',
154 $share_url,
155 isset($attributes['iconColorOption']) ? $attributes['iconColorOption'] : null,
156 isset($attributes['buttonOptions']) ? $attributes['buttonOptions'] : null,
157 isset($attributes['buttonShapes']) ? $attributes['buttonShapes'] : null,
158 isset($attributes['buttonSizes']) ? $attributes['buttonSizes'] : null,
159 isset($attributes['buttonFills']) ? $attributes['buttonFills'] : null,
160 $blockuniqueclass
161
162
163
164 );
165
166 $block_content .= '<style type="text/css">';
167
168 if ($attributes['iconColorOption'] != 'blockspare-default-official-color') {
169
170 if($attributes['buttonFills' ]=='blockspare-social-icon-solid') {
171
172 $block_content .= ' .' . $blockuniqueclass . ' .blockspare-social-sharing a span{
173 color:' . $attributes['customfontColorOption'] . ';
174 background-color:' . $attributes['custombackgroundColorOption'] . ';
175 }';
176 }
177 else if($attributes['buttonFills' ]=='blockspare-social-icon-border') {
178 $block_content .= ' .' . $blockuniqueclass . ' .blockspare-social-wrapper .blockspare-social-sharing a{
179 color:' . $attributes['customfontColorOption'] . ';
180 border:'."2px solid " . $attributes['custombackgroundColorOption'] . ';
181 }';
182 }else{
183 $block_content .= ' .' . $blockuniqueclass . ' .blockspare-social-sharing a span{
184 color:' . $attributes['customfontColorOption'] . ';
185
186 }';
187
188 }
189 }
190 $block_content .=' .' . $blockuniqueclass . ' .blockspare-social-wrapper{
191 text-align:'.$attributes['sectionAlignment'].';
192 margin-top:'.$attributes['marginTop'].';
193 margin-right:'.$attributes['marginRight'].';
194 margin-bottom:'.$attributes['marginBottom'].';
195 margin-left:'.$attributes['marginLeft'].';
196
197 }';
198
199 $block_content .= '</style>';
200
201 return $block_content;
202 }
203 }
204
205 if(!function_exists('blockspare_render_social_sharing_block_item')){
206
207 function blockspare_render_social_sharing_block_item($attribute_title, $attribute_url, $item_class, $icon_class, $icon_style, $is_amp_endpoint)
208 {
209
210
211 $share_url = '';
212
213 if (!$is_amp_endpoint) {
214 $share_url .= sprintf(
215 '<li>
216 <a
217 href="%1$s"
218 class="%3$s"
219 title="%2$s"
220 >
221 <span class="blockspare-social-icons">
222 <i class="%4$s"></i> <span class="blockspare-social-text">%2$s</span>
223 </span>
224 </a>
225 </li>',
226 $attribute_url,
227 esc_html__($attribute_title),
228 esc_attr__($item_class),
229 esc_attr__($icon_class)
230
231 );
232 } else {
233
234 $href_format = sprintf('href="javascript:void(0)" onClick="javascript:blockspareBlocksShare(\'%1$s\', \'%2$s\', \'600\', \'600\')"', esc_url($attribute_url), esc_html__($attribute_title));
235
236 if ($is_amp_endpoint) {
237 $href_format = sprintf('href="%1$s"', esc_url($attribute_url));
238 }
239 $share_url .= sprintf(
240 '<li>
241 <a
242 %1$s
243 class="%3$s"
244 title="%2$s"
245 ><span class="blockspare-social-icons">
246 <i class="%4$s"></i> <span class="blockspare-social-text">%2$s</span>
247 </span>
248 </a>
249 </li>',
250 $href_format,
251 esc_html__($attribute_title),
252 esc_attr__($item_class),
253 esc_attr__($icon_class)
254
255 );
256 }
257
258
259 return $share_url;
260 }
261 }
262