PluginProbe ʕ •ᴥ•ʔ
All-in-one Like Widget / 2.3.0
All-in-one Like Widget v2.3.0
trunk 1.4 2.0 2.1 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0
all-in-one-facebook-like-widget / index.php
all-in-one-facebook-like-widget Last commit date
index.php 2 weeks ago readme.txt 2 weeks ago
index.php
374 lines
1 <?php
2 /**
3 * Plugin Name: All-in-one Like Widget
4 * Plugin URI: https://jeroenpeters.dev/english/software/facebook-all-in-one-likebox-widget
5 * Description: All-in-one Like Widget. Add a Like button, stream or facebox (fans) for your Facebook page to your site.
6 * Version: 2.3.0
7 * Author: Jeroen Peters
8 * Author URI: https://jeroenpeters.dev
9 * Text Domain: all-in-one-facebook-like-widget
10 * Domain Path: /translation
11 * License: GPL2
12 */
13
14 /* Make sure we don't expose any info if called directly */
15 if (! function_exists('add_action'))
16 {
17 echo 'Nothing to see here. Move along now people.';
18 exit;
19 }
20
21 function AIO_Facebook_Like_widget_register()
22 {
23 return register_widget('AIO_Facebook_Like_widget');
24 }
25 add_action('widgets_init','AIO_Facebook_Like_widget_register');
26
27
28 class AIO_Facebook_Like_widget extends WP_Widget
29 {
30
31 /**
32 * Register WordPress Widget
33 */
34 private $widget_title = "Like Us";
35 private $facebook_username = "quoteshirts";
36 private $facebook_width = "240";
37 private $facebook_height = "auto";
38 private $facebook_language = "en_US";
39 private $facebook_show_stream = "false";
40 private $facebook_show_header = "true";
41 private $facebook_hide_cover = "true";
42 private $facebook_small_header = "false";
43 private $facebook_tabs = "";
44
45
46 public function __construct()
47 {
48 parent::__construct(
49 'aio_facebook_like_widget',
50 'AIO Facebook Like Widget',
51 array(
52 'classname' => 'aio_facebook_like_widget',
53 'description' => __('All-in-one Facebook Like Widget', 'aio-facebook-like-widget')
54 )
55 );
56
57 $this->widget_title = __('Like us', 'aio-facebook-like-widget');
58 }
59
60 /**
61 * Front end Display of widgets
62 * @see WP_Widget::widget()
63 *
64 * @param array $args Widget arguments
65 * @param array $instance Saved values from Database
66 */
67 public function widget($args, $instance)
68 {
69 extract($args);
70
71 /* Variables from the widget settings */
72 $this->widget_title = apply_filters('widget_title', $instance['title']);
73
74 $this->facebook_username = $instance['page_name'];
75 $this->facebook_width = $instance['width'];
76 $this->facebook_height = $instance['height'];
77 $this->facebook_language = $instance['language'];
78 $this->facebook_hide_cover = ($instance['show_header'] == '1'? 'true' : 'false');
79 $this->facebook_small_header = (empty($instance['small_header'])? 'false' : 'true');
80 $this->facebook_tabs = (empty($instance['tabs']) ? 'timeline' : $instance['tabs']);
81
82 /* Legacy from v1.4 */
83 if(isset($instance['show_stream']) && empty($instance['tabs']))
84 {
85 $this->facebook_tabs = '';
86 if($instance['show_stream'] == '1')
87 {
88 $this->facebook_tabs = 'timeline';
89 }
90 }
91
92 add_action('wp_footer', array($this, 'aio_fb_like_add_js'));
93
94 /* Display the widget title if one was input (before and after defined by the theme) */
95 echo $args['before_widget'];
96
97 if($this->widget_title)
98 {
99 echo $args['before_title'] . $this->widget_title . $args['after_title'];
100 }
101
102 /* Like Box */
103 ?>
104 <div class="fb-page"
105 data-href="https://www.facebook.com/<?php echo esc_attr($this->facebook_username);?>"
106 data-width="<?php echo esc_attr($this->facebook_width);?>"
107 <?php if(! empty($this->facebook_height) && $this->facebook_height != 'auto') {
108 echo 'data-height="' . esc_attr($this->facebook_height) . '"' . "\n";
109 }?>
110 data-tabs="<?php echo esc_attr($this->facebook_tabs);?>"
111 data-hide-cover="<?php echo esc_attr($this->facebook_hide_cover);?>"
112 data-small-header="<?php echo esc_attr($this->facebook_small_header);?>"
113 >
114 </div>
115
116 <?php
117 echo $args['after_widget'];
118 }
119
120 /**
121 * Add Facebook Javascripts to the webpage
122 */
123 public function aio_fb_like_add_js()
124 {
125 echo '
126 <div id="fb-root"></div>
127 <script>(function(d, s, id) {
128 var js, fjs = d.getElementsByTagName(s)[0];
129 if (d.getElementById(id)) return;
130 js = d.createElement(s); js.id = id;
131 js.src = "//connect.facebook.net/' . esc_js($this->facebook_language) . '/all.js#xfbml=1&appId=";
132 fjs.parentNode.insertBefore(js, fjs);
133 }(document, \'script\', \'facebook-jssdk\'));</script>';
134 }
135
136 /**
137 * Sanitize data from values as they are saved
138 * @see WP_Widget::update();
139 */
140 public function update($new_instance, $old_instance)
141 {
142 $facebook_strips = array(
143 'http://facebook.com/',
144 'https://facebook.com/',
145 'http://www.facebook.com/',
146 'https://www.facebook.com/',
147 'facebook.com/',
148 );
149
150 $instance = $old_instance;
151
152 /* Strip tags for title and name to remove HTML (important for text inputs) */
153 $instance['title'] = strip_tags($new_instance['title']);
154 $instance['page_name'] = str_replace($facebook_strips, array(), strip_tags($new_instance['page_name']));
155
156 if( in_array($instance['page_name'], array_keys($this->getLanguages())) ) {
157 $instance['language'] = $new_instance['language'];
158 } else {
159 $instance['language'] = $old_instance['language'];
160 }
161
162 $instance['width'] = intval(strip_tags($new_instance['width']));
163 $instance['height'] = intval(strip_tags($new_instance['height']));
164 $instance['tabs'] = strip_tags($new_instance['tabs']);
165 $instance['show_stream'] = (bool)$new_instance['show_stream'];
166 $instance['show_header'] = (bool)$new_instance['show_header'];
167 $instance['small_header'] = (bool)$new_instance['small_header'];
168
169 return $instance;
170 }
171
172 public function getLanguages() {
173 return array(
174 'en_US-' => __('Most popular','aio-facebook-like-widget'),
175 'en_US--' => '---',
176 'en_US' => __('English','aio-facebook-like-widget') . ' - English',
177 'fr_FR' => __('French (France)','aio-facebook-like-widget') . ' - Français',
178 'es_ES' => __('Spanish (Spain)','aio-facebook-like-widget') . ' - Español (España)',
179 'nl_NL' => __('Dutch','aio-facebook-like-widget') . ' - Nederlands',
180 'de_DE' => __('German','aio-facebook-like-widget') . ' - Deutsch',
181 'it_IT' => __('Italian','aio-facebook-like-widget') . ' - Italiano',
182 'ru_RU' => __('Russian','aio-facebook-like-widget') . ' - Русский',
183 'zh_CN' => __('Simplified Chinese','aio-facebook-like-widget') . ' - 中文(简体',
184 'pt_BR' => __('Portuguese (Brazil)','aio-facebook-like-widget') . ' Português (Brasil)',
185 'id_ID' => __('Indonesian','aio-facebook-like-widget') . ' - Bahasa Indonesia',
186 'tr_TR' => __('Turkish','aio-facebook-like-widget') . ' - Türkçe',
187
188 'en_US---' => '---',
189 'en_US----' => __('More languages','aio-facebook-like-widget'),
190 'en_US-----' => '---',
191
192 'fr_CA' => __('French (Canada)','aio-facebook-like-widget') . ' - Français',
193 'af_ZA' => __('Afrikaans','aio-facebook-like-widget') . ' - Afrikaans',
194 'gn_PY' => __('Guaraní','aio-facebook-like-widget') . ' - Avañeẽ',
195 'ay_BO' => __('Aymara','aio-facebook-like-widget') . ' - Aymar aru',
196 'az_AZ' => __('Azeri','aio-facebook-like-widget') . ' - Azərbaycan dili',
197 'ms_MY' => __('Malay','aio-facebook-like-widget') . ' - Bahasa Melayu',
198 'jv_ID' => __('Javanese','aio-facebook-like-widget') . ' - Basa Jawa',
199 'bs_BA' => __('Bosnian','aio-facebook-like-widget') . ' - Bosanski',
200 'ca_ES' => __('Catalan','aio-facebook-like-widget') . ' - Català',
201 'cs_CZ' => __('Czech','aio-facebook-like-widget') . ' - Čeština',
202 'ck_US' => __('Cherokee','aio-facebook-like-widget') . ' - Cherokee',
203 'cy_GB' => __('Welsh','aio-facebook-like-widget') . ' - Cymraeg',
204 'da_DK' => __('Danish','aio-facebook-like-widget') . ' - Dansk',
205 'se_NO' => __('Northern Sámi','aio-facebook-like-widget') . ' - Davvisámegiella',
206 'et_EE' => __('Estonian','aio-facebook-like-widget') . ' - Eesti',
207 'en_IN' => __('English (India)','aio-facebook-like-widget') . ' - English (India)',
208 'en_GB' => __('English (UK)','aio-facebook-like-widget') . ' - English (UK)',
209 'es_LA' => __('Spanish','aio-facebook-like-widget') . ' - Español',
210 'es_CL' => __('Spanish (Chile)','aio-facebook-like-widget') . ' - Español (Chile)',
211 'es_CO' => __('Spanish (Colombia)','aio-facebook-like-widget') . ' - Español (Colombia)',
212 'es_MX' => __('Spanish (Mexico)','aio-facebook-like-widget'). ' - Español (México)',
213 'es_VE' => __('Spanish (Venezuela)','aio-facebook-like-widget') . ' - Español (Venezuela)',
214 'eo_EO' => __('Esperanto','aio-facebook-like-widget') . ' - Esperanto',
215 'eu_ES' => __('Basque','aio-facebook-like-widget') . ' - Euskara',
216 'tl_PH' => __('Filipino','aio-facebook-like-widget') . ' - Filipino',
217 'fo_FO' => __('Faroese','aio-facebook-like-widget') . ' - Føroyskt',
218 'fy_NL' => __('Frisian','aio-facebook-like-widget') . ' - Frysk',
219 'ga_IE' => __('Irish','aio-facebook-like-widget') . ' - Gaeilge',
220 'gl_ES' => __('Galician','aio-facebook-like-widget') . ' - Galego',
221 'ko_KR' => __('Korean','aio-facebook-like-widget') . ' - 한국어',
222 'hr_HR' => __('Croatian','aio-facebook-like-widget') . ' - Hrvatski',
223 'xh_ZA' => __('Xhosa','aio-facebook-like-widget') . ' - isiXhosa',
224 'zu_ZA' => __('Zulu','aio-facebook-like-widget') . ' - isiZulu',
225 'is_IS' => __('Icelandic','aio-facebook-like-widget') . ' - Íslenska',
226 'sw_KE' => __('Swahili','aio-facebook-like-widget') . ' - Kiswahili',
227 'tl_ST' => __('Klingon','aio-facebook-like-widget') . ' - tlhIngan-Hol',
228 'ku_TR' => __('Kurdish','aio-facebook-like-widget') . ' - Kurdî',
229 'lv_LV' => __('Latvian','aio-facebook-like-widget') . ' - Latviešu',
230 'lt_LT' => __('Lithuanian','aio-facebook-like-widget') . ' - Lietuvių',
231 'li_NL' => __('Limburgish','aio-facebook-like-widget') . ' - Lèmbörgs',
232 'la_VA' => __('Latin','aio-facebook-like-widget') . ' - lingua latina',
233 'hu_HU' => __('Hungarian','aio-facebook-like-widget') . ' - Magyar',
234 'mg_MG' => __('Malagasy','aio-facebook-like-widget') . ' - Malagasy',
235 'mt_MT' => __('Maltese','aio-facebook-like-widget') . ' - Malti',
236 'nl_BE' => __('Dutch (Flemish)','aio-facebook-like-widget') . ' - Nederlands (België)',
237 'ja_JP' => __('Japanese','aio-facebook-like-widget') . ' - 日本語',
238 'nb_NO' => __('Norwegian (bokmal)','aio-facebook-like-widget') . ' - Norsk (bokmål)',
239 'nn_NO' => __('Norwegian (nynorsk)','aio-facebook-like-widget') . ' - Norsk (nynorsk)',
240 'uz_UZ' => __('Uzbek','aio-facebook-like-widget') . ' - Ozbek',
241 'pl_PL' => __('Polish','aio-facebook-like-widget') . ' - Polski',
242 'pt_PT' => __('Portuguese (Portugal','aio-facebook-like-widget') . ' - Português (Portugal)',
243 'qu_PE' => __('Quechua','aio-facebook-like-widget') . ' - Qhichwa',
244 'ro_RO' => __('Romanian','aio-facebook-like-widget') . ' - Română',
245 'rm_CH' => __('Romansh','aio-facebook-like-widget') . ' - Rumantsch',
246 'sq_AL' => __('Albanian','aio-facebook-like-widget') . ' - Shqip',
247 'sk_SK' => __('Slovak','aio-facebook-like-widget') . ' - Slovenčina',
248 'sl_SI' => __('Slovenian','aio-facebook-like-widget') . ' - Slovenščina',
249 'so_SO' => __('Somali','aio-facebook-like-widget') . ' - Soomaaliga',
250 'fi_FI' => __('Finnish','aio-facebook-like-widget') . ' - Suomi',
251 'sv_SE' => __('Swedish','aio-facebook-like-widget') . ' - Svenska',
252 'th_TH' => __('Thai','aio-facebook-like-widget') . ' - ภาษาไทย',
253 'vi_VN' => __('Vietnamese','aio-facebook-like-widget') . ' - Tiếng Việt',
254 'zh_TW' => __('Traditional Chinese, Taiwan','aio-facebook-like-widget') . ' - 中文(台灣',
255 'zh_HK' => __('Traditional Chinese, Hong Kong','aio-facebook-like-widget') . ' - 中文(香港',
256 'el_GR' => __('Greek','aio-facebook-like-widget') . ' - Ελληνικά',
257 'be_BY' => __('Belarusian','aio-facebook-like-widget') . ' - Беларуская',
258 'bg_BG' => __('Bulgarian','aio-facebook-like-widget') . ' - Български',
259 'kk_KZ' => __('Kazakh','aio-facebook-like-widget') . ' - Қазақша',
260 'mk_MK' => __('Macedonian','aio-facebook-like-widget') . ' - Македонски',
261 'mn_MN' => __('Mongolian','aio-facebook-like-widget') . ' - Монгол',
262 'sr_RS' => __('Serbian','aio-facebook-like-widget') . ' - Српски',
263 'uk_UA' => __('Ukrainian','aio-facebook-like-widget') . ' - Українська',
264 'he_IL' => __('Hebrew','aio-facebook-like-widget') . ' - ‏עברית‏',
265 'sy_SY' => __('Syriac','aio-facebook-like-widget') . ' - ‏ܐܪܡܝܐ‏',
266 'ne_NP' => __('Nepali','aio-facebook-like-widget') . ' - नेपाली',
267 'hi_IN' => __('Hindi','aio-facebook-like-widget') . ' - हिन्दी',
268 'bn_IN' => __('Bengali','aio-facebook-like-widget') . ' - বাংলা',
269 'pa_IN' => __('Punjabi','aio-facebook-like-widget') . ' - ਪੰਜਾਬੀ',
270 'ta_IN' => __('Tamil','aio-facebook-like-widget') . ' - தமிழ்',
271
272 'en_PI' => __('English (Pirate)','aio-facebook-like-widget'). ' - English (Pirate)',
273 'en_UD' => __('English (Upside Down)','aio-facebook-like-widget') . ' - English (Upside Down)',
274 'fb_LT' => __('Leet Speak','aio-facebook-like-widget') . ' - Leet Speak',
275 );
276 }
277
278 /**
279 * Back end widget Form
280 * This displays the configuration form for the widget
281 */
282 public function form($instance)
283 {
284 $defaults = array(
285 'title' => $this->widget_title,
286 'page_name' => $this->facebook_username,
287 'width' => $this->facebook_width,
288 'height' => $this->facebook_height,
289 'language' => $this->facebook_language,
290 'show_stream' => $this->facebook_show_stream,
291 'show_header' => $this->facebook_show_header,
292 'small_header' => $this->facebook_small_header,
293 'tabs' => $this->facebook_tabs,
294 );
295
296 $available_languages = $this->getLanguages();
297
298 $tabs = array(
299 '' => __('No','aio-facebook-like-widget'),
300 'timeline' => __('Timeline','aio-facebook-like-widget'),
301 'timeline,events' => __('Timeline and events','aio-facebook-like-widget'),
302 'timeline,messages' => __('Timeline and messages','aio-facebook-like-widget'),
303 'timeline,events,messages' => __('Timeline, events and messages','aio-facebook-like-widget'),
304 );
305
306 $instance = wp_parse_args( (array) $instance, $defaults ); ?>
307
308
309 <!-- Widget Title: Text Input -->
310 <p>
311 <label for="<?php echo $this->get_field_id('title'); ?>" title="<?php _e('This will be displayed above the Like box', 'aio-facebook-like-widget') ?>"><?php _e('Title', 'aio-facebook-like-widget') ?>:</label>
312 <input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo esc_attr($instance['title']); ?>" />
313 </p>
314
315 <!-- Facebook pagename or id: Text Input -->
316 <p>
317 <label for="<?php echo $this->get_field_id('page_name'); ?>" title="<?php _e('This is the name of your page (the part after http://facebook.com/', 'aio-facebook-like-widget') ?>"><?php _e('Facebook Page Name (or Id)', 'aio-facebook-like-widget') ?>:</label>
318 <input type="text" class="widefat" id="<?php echo $this->get_field_id('page_name'); ?>" name="<?php echo $this->get_field_name('page_name'); ?>" value="<?php echo esc_attr($instance['page_name']); ?>" />
319 </p>
320
321 <!-- Width: Text Input -->
322 <p>
323 <label for="<?php echo $this->get_field_id('width'); ?>"><?php _e('Width', 'aio-facebook-like-widget') ?>:</label>
324 <input type="text" class="widefat" id="<?php echo $this->get_field_id('width'); ?>" name="<?php echo $this->get_field_name('width'); ?>" value="<?php echo esc_attr($instance['width']); ?>" />
325 </p>
326
327 <!-- Height: Text Input -->
328 <p>
329 <label for="<?php echo $this->get_field_id('height'); ?>" title="<?php _e("Leave blank or set to 'auto' to let the plugin determine the best height", 'aio-facebook-like-widget') ?>"><?php _e('Height', 'aio-facebook-like-widget') ?>:</label>
330 <input type="text" class="widefat" id="<?php echo $this->get_field_id('height'); ?>" name="<?php echo $this->get_field_name('height'); ?>" value="<?php echo esc_attr($instance['height']); ?>" />
331 </p>
332
333 <!-- Tabs: Selectbox input -->
334 <p>
335 <label for="<?php echo $this->get_field_id('tabs'); ?>"><?php _e('Show content tabs', 'aio-facebook-like-widget') ?>:</label>
336 <select id="<?php echo $this->get_field_id('tabs'); ?>" name="<?php echo $this->get_field_name('tabs'); ?>" style="max-width: 100%;">
337 <?php
338 foreach($tabs as $tab_val => $tabs_exp)
339 {
340 echo '<option value="' . $tab_val . '"' . ($instance['tabs'] == $tab_val ? "selected" : "") . '>' . $tabs_exp . '</option>';
341 }
342 ?>
343 </select>
344 </p>
345
346 <!-- Show Header: Checkbox Input -->
347 <p>
348 <input type="checkbox" class="widefat" id="<?php echo $this->get_field_id('show_header'); ?>" name="<?php echo $this->get_field_name('show_header'); ?>" value="1" <?php echo ($instance['show_header'] == "true" ? "checked='checked'" : ""); ?> />
349 <label for="<?php echo $this->get_field_id('show_header'); ?>"><?php _e('Show page header', 'aio-facebook-like-widget'); ?></label>
350 </p>
351
352 <!-- Show Small Header: Checkbox Input -->
353 <p>
354 <input type="checkbox" class="widefat" id="<?php echo $this->get_field_id('small_header'); ?>" name="<?php echo $this->get_field_name('small_header'); ?>" value="1" <?php echo ($instance['small_header'] == "true" ? "checked='checked'" : ""); ?> />
355 <label for="<?php echo $this->get_field_id('small_header'); ?>" title="<?php _e('Creates the smallest widget possible with a small cover photo', 'aio-facebook-like-widget'); ?>"><?php _e('Compact mode', 'aio-facebook-like-widget'); ?></label>
356 </p>
357
358 <!-- Languages: Selectbox input -->
359 <p>
360 <label for="<?php echo $this->get_field_id('language'); ?>"><?php _e('Language', 'aio-facebook-like-widget') ?>:</label>
361 <select id="<?php echo $this->get_field_id('language'); ?>" name="<?php echo $this->get_field_name('language'); ?>" style="max-width: 100%;">
362 <?php
363 foreach($available_languages as $lang_code => $lang_name)
364 {
365 echo '<option value="' . $lang_code . '"' . ($instance['language'] == $lang_code ? "selected" : "") . '>' . $lang_name . '</option>';
366 }
367 ?>
368 </select>
369 </p>
370
371 <?php
372 }
373 }
374