Social Counter for WordPress – AccessPress Social Counter - Version 1.9.1

Version Description

  • Solved facebook page follower count issue for pages transitioned to new page experience.
Download this release

Release Info

Developer Access Keys
Plugin Icon 128x128 Social Counter for WordPress – AccessPress Social Counter
Version 1.9.1
Comparing to
See all releases

Code changes from version 1.9.0 to 1.9.1

accesspress-social-counter.php CHANGED
@@ -1,444 +1,467 @@
1
- <?php
2
-
3
- defined( 'ABSPATH' ) or die( "No script kiddies please!" );
4
-
5
- /**
6
- * Plugin Name: AccessPress Social Counter
7
- * Plugin URI: https://accesspressthemes.com/wordpress-plugins/accesspress-social-counter/
8
- * Description: A plugin to display your social accounts fans, subscribers and followers number on your website with handful of backend settings and interface.
9
- * Version: 1.9.0
10
- * Author: AccessPress Themes
11
- * Author URI: http://accesspressthemes.com
12
- * Text Domain: aps-counter
13
- * Domain Path: /languages/
14
- * Network: false
15
- * License: GPL2
16
- */
17
-
18
-
19
- if ( ! defined( 'SC_IMAGE_DIR' ) ) {
20
- define( 'SC_IMAGE_DIR', plugin_dir_url( __FILE__ ) . 'images' );
21
- }
22
-
23
- if ( ! defined( 'SC_JS_DIR' ) ) {
24
- define( 'SC_JS_DIR', plugin_dir_url( __FILE__ ) . 'js' );
25
- }
26
-
27
- if ( ! defined( 'SC_CSS_DIR' ) ) {
28
- define( 'SC_CSS_DIR', plugin_dir_url( __FILE__ ) . 'css' );
29
- }
30
-
31
- if ( ! defined( 'SC_VERSION' ) ) {
32
- define( 'SC_VERSION', '1.9.0' );
33
- }
34
-
35
- if ( ! defined( 'SC_PATH' ) ) {
36
- define( 'SC_PATH', plugin_dir_path( __FILE__ ) );
37
- }
38
-
39
- defined('APSC_LITE_PLUGIN_NAME') or define('APSC_LITE_PLUGIN_NAME', 'AccessPress Social Counter');
40
- defined('APSC_LITE_DEMO') or define('APSC_LITE_DEMO', 'http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-counter');
41
- defined('APSC_LITE_DOC') or define('APSC_LITE_DOC', 'https://accesspressthemes.com/documentation/accesspress-social-counter/');
42
- defined('APSC_LITE_DETAIL') or define('APSC_LITE_DETAIL', 'https://accesspressthemes.com/wordpress-plugins/accesspress-social-counter/');
43
- defined('APSC_LITE_RATING') or define('APSC_LITE_RATING', 'https://wordpress.org/support/plugin/accesspress-social-counter/reviews/#new-post');
44
-
45
- defined('APSC_PRO_PLUGIN_NAME') or define('APSC_PRO_PLUGIN_NAME', 'AccessPress Social Pro');
46
- defined('APSC_PRO_LINK') or define('APSC_PRO_LINK','https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/');
47
- defined('APSC_PRO_DEMO') or define('APSC_PRO_DEMO', 'http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-pro');
48
- defined('APSC_PRO_DETAIL') or define('APSC_PRO_DETAIL', 'https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/');
49
-
50
-
51
- /**
52
- * Register of widgets
53
- * */
54
- include_once('inc/backend/widget.php');
55
- if ( ! class_exists( 'SC_Class' ) ) {
56
-
57
- class SC_Class{
58
-
59
- var $apsc_settings;
60
-
61
- function __construct(){
62
- $this -> apsc_settings = get_option( 'apsc_settings' );
63
- register_activation_hook( __FILE__, array( $this, 'load_default_settings' ) ); //loads default settings for the plugin while activating the plugin
64
- add_action( 'init', array( $this, 'plugin_text_domain' ) ); //loads text domain for translation ready
65
- add_action( 'admin_menu', array( $this, 'add_sc_menu' ) ); //adds plugin menu in wp-admin
66
- add_action( 'admin_enqueue_scripts', array( $this, 'register_admin_assets' ) ); //registers admin assests such as js and css
67
- add_action( 'wp_enqueue_scripts', array( $this, 'register_frontend_assets' ) ); //registers js and css for frontend
68
- add_action( 'admin_post_apsc_settings_action', array( $this, 'apsc_settings_action' ) ); //recieves the posted values from settings form
69
- add_action( 'admin_post_apsc_restore_default', array( $this, 'apsc_restore_default' ) ); //restores default settings;
70
- add_action( 'widgets_init', array( $this, 'register_apsc_widget' ) ); //registers the widget
71
- add_shortcode( 'aps-counter', array( $this, 'apsc_shortcode' ) ); //adds a shortcode
72
- add_shortcode( 'aps-get-count', array( $this, 'apsc_count_shortcode' ) ); //
73
- add_action( 'admin_post_apsc_delete_cache', array( $this, 'apsc_delete_cache' ) ); //deletes the counter values from cache
74
-
75
- add_filter( 'plugin_row_meta', array( $this, 'apsc_plugin_row_meta' ), 10, 2 );
76
- add_filter( 'admin_footer_text', array( $this, 'apsc_admin_footer_text' ) );
77
- add_action( 'admin_init', array( $this, 'redirect_to_site' ), 1 );
78
-
79
- }
80
-
81
- function redirect_to_site(){
82
- if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'apsc-documentation' ) {
83
- wp_redirect( APSC_LITE_DOC );
84
- exit();
85
- }
86
-
87
- if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'apsc-premium' ) {
88
- wp_redirect( APSC_PRO_LINK );
89
- exit();
90
- }
91
- }
92
-
93
- function apsc_plugin_row_meta( $links, $file ){
94
- if ( strpos( $file, 'accesspress-social-counter.php' ) !== false ) {
95
- $new_links = array(
96
- 'demo' => '<a href="'.APSC_LITE_DEMO.'" target="_blank"><span class="dashicons dashicons-welcome-view-site"></span>Live Demo</a>',
97
- 'doc' => '<a href="'.APSC_LITE_DOC.'" target="_blank"><span class="dashicons dashicons-media-document"></span>Documentation</a>',
98
- 'support' => '<a href="http://accesspressthemes.com/support" target="_blank"><span class="dashicons dashicons-admin-users"></span>Support</a>',
99
- 'pro' => '<a href="'.APSC_PRO_LINK.'" target="_blank"><span class="dashicons dashicons-cart"></span>Premium version</a>'
100
- );
101
- $links = array_merge( $links, $new_links );
102
- }
103
- return $links;
104
- }
105
-
106
- function apsc_admin_footer_text( $text ){
107
- global $post;
108
- if ( isset($_GET['page']) && $_GET['page'] === 'ap-social-counter') {
109
- $text = 'Enjoyed ' . APSC_LITE_PLUGIN_NAME . '? <a href="' . APSC_LITE_RATING . '" target="_blank">Please leave us a ★★★★★ rating</a> We really appreciate your support! | Try premium version <a href="' . APSC_PRO_LINK . '" target="_blank">' . APSC_PRO_PLUGIN_NAME . '</a> - more features, more power!';
110
- return $text;
111
- } else {
112
- return $text;
113
-
114
- }
115
- }
116
-
117
- function plugin_text_domain(){
118
- load_plugin_textdomain( 'accesspress-social-counter', false, basename( dirname( __FILE__ ) ) . '/languages/' );
119
- }
120
-
121
- function load_default_settings(){
122
- if ( ! get_option( 'apsc_settings' ) ) {
123
- $apsc_settings = $this -> get_default_settings();
124
- update_option( 'apsc_settings', $apsc_settings );
125
- }
126
- }
127
-
128
-
129
- function add_sc_menu(){
130
- add_menu_page( __( 'AccessPress Social Counter', 'accesspress-social-counter' ), __( 'AccessPress Social Counter', 'accesspress-social-counter' ), 'manage_options', 'ap-social-counter', array( $this, 'sc_settings' ), SC_IMAGE_DIR . '/sc-icon.png' );
131
-
132
- add_submenu_page('ap-social-counter', __('Documentation', 'accesspress-social-counter'), __('Documentation', 'accesspress-social-counter'), 'manage_options', 'apsc-documentation', '__return_false', null, 9);
133
- add_submenu_page('ap-social-counter', __('Check Premium Version', 'accesspress-social-counter'), __('Check Premium Version', 'accesspress-social-counter'), 'manage_options', 'apsc-premium', '__return_false', null, 9);
134
- }
135
-
136
- function sc_settings(){
137
- include('inc/backend/settings.php');
138
- }
139
-
140
- function register_admin_assets(){
141
- if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'ap-social-counter' ) {
142
- wp_enqueue_style( 'sc-admin-css', SC_CSS_DIR . '/backend.css', array(), SC_VERSION );
143
- wp_enqueue_script( 'sc-admin-js', SC_JS_DIR . '/backend.js', array( 'jquery', 'jquery-ui-sortable' ), SC_VERSION );
144
- wp_enqueue_script( 'sc-wpac-time-js', SC_JS_DIR . '/wpac-time.js', array( 'jquery' ), SC_VERSION ); // Third Party API for Facebook followers count
145
- wp_enqueue_script( 'sc-wpac-js', SC_JS_DIR . '/wpac.js', array( 'jquery' ), SC_VERSION ); // Third Party API for Facebook followers count
146
- }
147
- wp_enqueue_style( 'fontawesome-css', SC_CSS_DIR . '/font-awesome.min.css', false, SC_VERSION );
148
- }
149
-
150
- function register_frontend_assets(){
151
- $apsc_settings = $this -> apsc_settings;
152
- $enable_font_css = (isset( $apsc_settings[ 'disable_font_css' ] ) && $apsc_settings[ 'disable_font_css' ] == 0) ? true : false;
153
- $enable_frontend_css = (isset( $apsc_settings[ 'disable_frontend_css' ] ) && $apsc_settings[ 'disable_frontend_css' ] == 0) ? true : false;
154
- if ( $enable_font_css ) {
155
- if ( isset( $apsc_settings[ 'font_awesome_version' ]) && $apsc_settings[ 'font_awesome_version' ] == 'apsc-font-awesome-four' ) {
156
- wp_enqueue_style( 'fontawesome-four-css', SC_CSS_DIR . '/font-awesome.min.css', false, SC_VERSION );
157
- }
158
- else{
159
- wp_enqueue_style( 'fontawesome-five-css', SC_CSS_DIR . '/fontawesome-all.css', false, SC_VERSION );
160
- }
161
- }
162
- if ( $enable_frontend_css ) {
163
- wp_enqueue_style( 'apsc-frontend-css', SC_CSS_DIR . '/frontend.css', array(), SC_VERSION );
164
- }
165
- }
166
-
167
- function apsc_settings_action(){
168
- if ( ! empty( $_POST ) && wp_verify_nonce( $_POST[ 'apsc_settings_nonce' ], 'apsc_settings_action' ) ) {
169
- include('inc/backend/save-settings.php');
170
- }
171
- }
172
-
173
- function print_array( $array ){
174
- echo "<pre>";
175
- print_r( $array );
176
- echo "</pre>";
177
- }
178
-
179
- function apsc_restore_default(){
180
- if ( ! empty( $_GET ) && wp_verify_nonce( $_GET[ '_wpnonce' ], 'apsc-restore-default-nonce' ) ) {
181
- $apsc_settings = $this -> get_default_settings();
182
- update_option( 'apsc_settings', $apsc_settings );
183
- $_SESSION[ 'apsc_message' ] = __( 'Default Settings Restored Successfully', 'accesspress-social-counter' );
184
- wp_redirect( admin_url() . 'admin.php?page=ap-social-counter' );
185
- }
186
- }
187
-
188
- function get_default_settings(){
189
- $apsc_settings = array( 'social_profile' => array( 'facebook' => array( 'page_id' => '' ),
190
- 'twitter' => array( 'username' => '', 'consumer_key' => '',
191
- 'consumer_secret' => '',
192
- 'access_token' => '',
193
- 'access_token_secret' => '' ),
194
- 'instagram' => array('app_id' => '',
195
- 'app_secret' => '',
196
- 'username' => '',
197
- 'access_token' => '',
198
- 'user_id' => '' ),
199
- 'youtube' => array( 'username' => '',
200
- 'channel_url' => '' ),
201
- 'soundcloud' => array( 'username' => '',
202
- 'client_id' => '' ),
203
- 'dribbble' => array( 'client_id' => '',
204
- 'client_secret' => '',
205
- 'username' => '',
206
- 'access_token' => ''),
207
- ),
208
- 'profile_order' => array( 'facebook', 'twitter', 'instagram', 'youtube', 'soundcloud', 'dribbble', 'posts', 'comments' ),
209
- 'social_profile_theme' => 'theme-1',
210
- 'counter_format' => 'comma',
211
- 'font_awesome_version' => 'apsc-font-awesome-five',
212
- 'cache_period' => '',
213
- 'disable_font_css' => 0,
214
- 'disable_frontend_css' => 0
215
- );
216
- return $apsc_settings;
217
- }
218
-
219
- function register_apsc_widget(){
220
- register_widget( 'APSC_Widget' );
221
- }
222
-
223
- function apsc_shortcode( $atts ){
224
- ob_start();
225
- include('inc/frontend/shortcode.php');
226
- $html = ob_get_contents();
227
- ob_get_clean();
228
- return $html;
229
- }
230
-
231
- function apsc_delete_cache(){
232
- if ( ! empty( $_GET ) && wp_verify_nonce( $_GET[ '_wpnonce' ], 'apsc-cache-nonce' ) ) {
233
- $transient_array = array( 'apsc_facebook', 'apsc_twitter', 'apsc_youtube', 'apsc_instagram','apsc_soundcloud', 'apsc_dribbble', 'apsc_posts', 'apsc_comments' );
234
- foreach ( $transient_array as $transient ) {
235
- delete_transient( $transient );
236
- }
237
- $_SESSION[ 'apsc_message' ] = __( 'Cache Deleted Successfully', 'accesspress-social-counter' );
238
- wp_redirect( admin_url() . 'admin.php?page=ap-social-counter' );
239
- }
240
- }
241
-
242
- function authorization( $user, $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret ){
243
- $query = 'screen_name=' . $user;
244
- $signature = $this -> signature( $query, $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret );
245
- return $this -> header( $signature );
246
- }
247
-
248
- function signature_base_string( $url, $query, $method, $params ){
249
- $return = array();
250
- ksort( $params );
251
-
252
- foreach ( $params as $key => $value ) {
253
- $return[] = $key . '=' . $value;
254
- }
255
-
256
- return $method . "&" . rawurlencode( $url ) . '&' . rawurlencode( implode( '&', $return ) ) . '%26' . rawurlencode( $query );
257
- }
258
-
259
- function signature( $query, $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret ){
260
- $oauth = array(
261
- 'oauth_consumer_key' => $consumer_key,
262
- 'oauth_nonce' => hash_hmac( 'sha1', time(), true ),
263
- 'oauth_signature_method' => 'HMAC-SHA1',
264
- 'oauth_token' => $oauth_access_token,
265
- 'oauth_timestamp' => time(),
266
- 'oauth_version' => '1.0'
267
- );
268
- $api_url = 'https://api.twitter.com/1.1/users/show.json';
269
- $base_info = $this -> signature_base_string( $api_url, $query, 'GET', $oauth );
270
- $composite_key = rawurlencode( $consumer_secret ) . '&' . rawurlencode( $oauth_access_token_secret );
271
- $oauth_signature = base64_encode( hash_hmac( 'sha1', $base_info, $composite_key, true ) );
272
- $oauth[ 'oauth_signature' ] = $oauth_signature;
273
- return $oauth;
274
- }
275
-
276
- public function header( $signature ){
277
- $return = 'OAuth ';
278
- $values = array();
279
-
280
- foreach ( $signature as $key => $value ) {
281
- $values[] = $key . '="' . rawurlencode( $value ) . '"';
282
- }
283
-
284
- $return .= implode( ', ', $values );
285
-
286
- return $return;
287
- }
288
-
289
-
290
- function get_twitter_count(){
291
- $apsc_settings = $this -> apsc_settings;
292
- $user = $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'username' ];
293
- $api_url = 'https://api.twitter.com/1.1/users/show.json';
294
- $params = array(
295
- 'method' => 'GET',
296
- 'sslverify' => false,
297
- 'timeout' => 60,
298
- 'headers' => array(
299
- 'Content-Type' => 'application/x-www-form-urlencoded',
300
- 'Authorization' => $this -> authorization(
301
- $user, $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'consumer_key' ], $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'consumer_secret' ], $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'access_token' ], $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'access_token_secret' ]
302
- )
303
- )
304
- );
305
-
306
- $connection = wp_remote_get( $api_url . '?screen_name=' . $user, $params );
307
- if ( is_wp_error( $connection ) ) {
308
- $count = 0;
309
- } else {
310
- $_data = json_decode( $connection[ 'body' ], true );
311
- if ( isset( $_data[ 'followers_count' ] ) ) {
312
- $count = intval( $_data[ 'followers_count' ] );
313
- } else {
314
- $count = 0;
315
- }
316
- }
317
- return $count;
318
- }
319
-
320
- function get_formatted_count( $count, $format ){
321
- if ( $count == '' ) {
322
- return '';
323
- }
324
- switch ( $format ) {
325
- case 'comma':
326
- $count = number_format( $count );
327
- break;
328
- case 'short':
329
- $count = $this -> abreviateTotalCount( $count );
330
- break;
331
- default:
332
- break;
333
- }
334
- return $count;
335
- }
336
-
337
- function abreviateTotalCount( $value ){
338
-
339
- $abbreviations = array( 12 => 'T', 9 => 'B', 6 => 'M', 3 => 'K', 0 => '' );
340
-
341
- foreach ( $abbreviations as $exponent => $abbreviation ) {
342
-
343
- if ( $value >= pow( 10, $exponent ) ) {
344
- return round( floatval( $value / pow( 10, $exponent ) ), 1 ) . $abbreviation;
345
- }
346
- }
347
- }
348
-
349
- function facebook_count( $url ){
350
-
351
- $fql = "SELECT like_count ";
352
- $fql .= " FROM link_stat WHERE url = '$url'";
353
-
354
- $fqlURL = "https://api.facebook.com/method/fql.query?format=json&query=" . urlencode( $fql );
355
-
356
- $response = wp_remote_get( $fqlURL );
357
-
358
- if ( ! is_wp_error( $response ) ) {
359
- $response = json_decode( $response[ 'body' ] );
360
- if ( is_array( $response ) && isset( $response[ 0 ] -> like_count ) ) {
361
- return $response[ 0 ] -> like_count;
362
- } else {
363
- $count = '0';
364
- return $count;
365
- }
366
- }else{
367
- $count = '0';
368
- return $count;
369
- }
370
- }
371
-
372
- function get_count( $social_media ){
373
- include('inc/frontend/api.php');
374
- return $count;
375
- }
376
-
377
- function apsc_count_shortcode( $atts ){
378
- if ( isset( $atts[ 'social_media' ] ) ) {
379
- $count = $this -> get_count( $atts[ 'social_media' ] );
380
- if ( isset( $atts[ 'count_format' ] ) && $count != '' ) {
381
- $count = $this -> get_formatted_count( $count, $atts[ 'count_format' ] );
382
- }
383
- return $count;
384
- }
385
- }
386
-
387
- function get_fb_access_token(){
388
- $apsc_settings = $this -> apsc_settings;
389
- $api_url = 'https://graph.facebook.com/';
390
- $url = sprintf(
391
- '%soauth/access_token?client_id=%s&client_secret=%s&grant_type=client_credentials', $api_url, $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ], $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ]
392
- );
393
- $access_token = wp_remote_get( $url, array( 'timeout' => 60 ) );
394
-
395
- if ( is_wp_error( $access_token ) || ( isset( $access_token[ 'response' ][ 'code' ] ) && 200 != $access_token[ 'response' ][ 'code' ] ) ) {
396
- return '';
397
- } else {
398
- return sanitize_text_field( $access_token[ 'body' ] );
399
- }
400
- }
401
-
402
- function new_fb_count(){
403
- $apsc_settings = $this -> apsc_settings;
404
- $facebook_method = ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] != '' ) ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] : '2';
405
- if ( $facebook_method == '1' ) {
406
- $access_token = $this -> get_fb_access_token();
407
- $access_token = json_decode( $access_token );
408
- $access_token = $access_token -> access_token;
409
- $api_url = 'https://graph.facebook.com/v3.0/'; //not working
410
- //$api_url = 'https://graph.facebook.com/v2.8/'; // not working
411
- //$api_url = 'https://graph.facebook.com/v3.2/'; // not working
412
- $url = sprintf(
413
- '%s%s?fields=fan_count&access_token=%s', $api_url, $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ], $access_token
414
- );
415
- } else {
416
- $fb_page_id = (isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'fb_page_id' ] ) && ! empty( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'fb_page_id' ] )) ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'fb_page_id' ] : ' ';
417
- $fb_access_token = (isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'access_token' ] ) && ! empty( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'access_token' ] )) ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'access_token' ] : ' ';
418
-
419
- if ( $fb_access_token != '' && $fb_page_id != '' ) {
420
- $api_url = 'https://graph.facebook.com/';
421
- $url = sprintf(
422
- '%s%s?fields=fan_count&access_token=%s', $api_url, $fb_page_id, $fb_access_token
423
- );
424
- } else {
425
- $url = 'https://graph.facebook.com/';
426
- }
427
- }
428
- $connection = wp_remote_get( $url, array( 'timeout' => 60 ) );
429
-
430
- if ( is_wp_error( $connection ) || ( isset( $connection[ 'response' ][ 'code' ] ) && 200 != $connection[ 'response' ][ 'code' ] ) ) {
431
- $count = 0;
432
- } else {
433
- $_data = json_decode( $connection[ 'body' ], true );
434
- if ( isset( $_data[ 'fan_count' ] ) ) {
435
- $count = intval( $_data[ 'fan_count' ] );
436
- } else {
437
- $count = 0;
438
- }
439
- }
440
- return $count;
441
- }
442
- }
443
- $sc_object = new SC_Class();
444
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined( 'ABSPATH' ) or die( "No script kiddies please!" );
4
+
5
+ /**
6
+ * Plugin Name: AccessPress Social Counter
7
+ * Plugin URI: https://accesspressthemes.com/wordpress-plugins/accesspress-social-counter/
8
+ * Description: A plugin to display your social accounts fans, subscribers and followers number on your website with handful of backend settings and interface.
9
+ * Version: 1.9.1
10
+ * Author: AccessPress Themes
11
+ * Author URI: http://accesspressthemes.com
12
+ * Text Domain: aps-counter
13
+ * Domain Path: /languages/
14
+ * Network: false
15
+ * License: GPL2
16
+ */
17
+
18
+
19
+ if ( ! defined( 'SC_IMAGE_DIR' ) ) {
20
+ define( 'SC_IMAGE_DIR', plugin_dir_url( __FILE__ ) . 'images' );
21
+ }
22
+
23
+ if ( ! defined( 'SC_JS_DIR' ) ) {
24
+ define( 'SC_JS_DIR', plugin_dir_url( __FILE__ ) . 'js' );
25
+ }
26
+
27
+ if ( ! defined( 'SC_CSS_DIR' ) ) {
28
+ define( 'SC_CSS_DIR', plugin_dir_url( __FILE__ ) . 'css' );
29
+ }
30
+
31
+ if ( ! defined( 'SC_VERSION' ) ) {
32
+ define( 'SC_VERSION', '1.9.1' );
33
+ }
34
+
35
+ if ( ! defined( 'SC_PATH' ) ) {
36
+ define( 'SC_PATH', plugin_dir_path( __FILE__ ) );
37
+ }
38
+
39
+ defined('APSC_LITE_PLUGIN_NAME') or define('APSC_LITE_PLUGIN_NAME', 'AccessPress Social Counter');
40
+ defined('APSC_LITE_DEMO') or define('APSC_LITE_DEMO', 'http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-counter');
41
+ defined('APSC_LITE_DOC') or define('APSC_LITE_DOC', 'https://accesspressthemes.com/documentation/accesspress-social-counter/');
42
+ defined('APSC_LITE_DETAIL') or define('APSC_LITE_DETAIL', 'https://accesspressthemes.com/wordpress-plugins/accesspress-social-counter/');
43
+ defined('APSC_LITE_RATING') or define('APSC_LITE_RATING', 'https://wordpress.org/support/plugin/accesspress-social-counter/reviews/#new-post');
44
+
45
+ defined('APSC_PRO_PLUGIN_NAME') or define('APSC_PRO_PLUGIN_NAME', 'AccessPress Social Pro');
46
+ defined('APSC_PRO_LINK') or define('APSC_PRO_LINK','https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/');
47
+ defined('APSC_PRO_DEMO') or define('APSC_PRO_DEMO', 'http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-pro');
48
+ defined('APSC_PRO_DETAIL') or define('APSC_PRO_DETAIL', 'https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/');
49
+
50
+
51
+ /**
52
+ * Register of widgets
53
+ * */
54
+ include_once('inc/backend/widget.php');
55
+ if ( ! class_exists( 'SC_Class' ) ) {
56
+
57
+ class SC_Class{
58
+
59
+ var $apsc_settings;
60
+
61
+ function __construct(){
62
+ $this -> apsc_settings = get_option( 'apsc_settings' );
63
+ register_activation_hook( __FILE__, array( $this, 'load_default_settings' ) ); //loads default settings for the plugin while activating the plugin
64
+ add_action( 'init', array( $this, 'plugin_text_domain' ) ); //loads text domain for translation ready
65
+ add_action( 'admin_menu', array( $this, 'add_sc_menu' ) ); //adds plugin menu in wp-admin
66
+ add_action( 'admin_enqueue_scripts', array( $this, 'register_admin_assets' ) ); //registers admin assests such as js and css
67
+ add_action( 'wp_enqueue_scripts', array( $this, 'register_frontend_assets' ) ); //registers js and css for frontend
68
+ add_action( 'admin_post_apsc_settings_action', array( $this, 'apsc_settings_action' ) ); //recieves the posted values from settings form
69
+ add_action( 'admin_post_apsc_restore_default', array( $this, 'apsc_restore_default' ) ); //restores default settings;
70
+ add_action( 'widgets_init', array( $this, 'register_apsc_widget' ) ); //registers the widget
71
+ add_shortcode( 'aps-counter', array( $this, 'apsc_shortcode' ) ); //adds a shortcode
72
+ add_shortcode( 'aps-get-count', array( $this, 'apsc_count_shortcode' ) ); //
73
+ add_action( 'admin_post_apsc_delete_cache', array( $this, 'apsc_delete_cache' ) ); //deletes the counter values from cache
74
+
75
+ add_filter( 'plugin_row_meta', array( $this, 'apsc_plugin_row_meta' ), 10, 2 );
76
+ add_filter( 'admin_footer_text', array( $this, 'apsc_admin_footer_text' ) );
77
+ add_action( 'admin_init', array( $this, 'redirect_to_site' ), 1 );
78
+
79
+ }
80
+
81
+ function redirect_to_site(){
82
+ if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'apsc-documentation' ) {
83
+ wp_redirect( APSC_LITE_DOC );
84
+ exit();
85
+ }
86
+
87
+ if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'apsc-premium' ) {
88
+ wp_redirect( APSC_PRO_LINK );
89
+ exit();
90
+ }
91
+ }
92
+
93
+ function apsc_plugin_row_meta( $links, $file ){
94
+ if ( strpos( $file, 'accesspress-social-counter.php' ) !== false ) {
95
+ $new_links = array(
96
+ 'demo' => '<a href="'.APSC_LITE_DEMO.'" target="_blank"><span class="dashicons dashicons-welcome-view-site"></span>Live Demo</a>',
97
+ 'doc' => '<a href="'.APSC_LITE_DOC.'" target="_blank"><span class="dashicons dashicons-media-document"></span>Documentation</a>',
98
+ 'support' => '<a href="http://accesspressthemes.com/support" target="_blank"><span class="dashicons dashicons-admin-users"></span>Support</a>',
99
+ 'pro' => '<a href="'.APSC_PRO_LINK.'" target="_blank"><span class="dashicons dashicons-cart"></span>Premium version</a>'
100
+ );
101
+ $links = array_merge( $links, $new_links );
102
+ }
103
+ return $links;
104
+ }
105
+
106
+ function apsc_admin_footer_text( $text ){
107
+ global $post;
108
+ if ( isset($_GET['page']) && $_GET['page'] === 'ap-social-counter') {
109
+ $text = 'Enjoyed ' . APSC_LITE_PLUGIN_NAME . '? <a href="' . APSC_LITE_RATING . '" target="_blank">Please leave us a ★★★★★ rating</a> We really appreciate your support! | Try premium version <a href="' . APSC_PRO_LINK . '" target="_blank">' . APSC_PRO_PLUGIN_NAME . '</a> - more features, more power!';
110
+ return $text;
111
+ } else {
112
+ return $text;
113
+
114
+ }
115
+ }
116
+
117
+ function plugin_text_domain(){
118
+ load_plugin_textdomain( 'accesspress-social-counter', false, basename( dirname( __FILE__ ) ) . '/languages/' );
119
+ }
120
+
121
+ function load_default_settings(){
122
+ if ( ! get_option( 'apsc_settings' ) ) {
123
+ $apsc_settings = $this -> get_default_settings();
124
+ update_option( 'apsc_settings', $apsc_settings );
125
+ }
126
+ }
127
+
128
+
129
+ function add_sc_menu(){
130
+ add_menu_page( __( 'AccessPress Social Counter', 'accesspress-social-counter' ), __( 'AccessPress Social Counter', 'accesspress-social-counter' ), 'manage_options', 'ap-social-counter', array( $this, 'sc_settings' ), SC_IMAGE_DIR . '/sc-icon.png' );
131
+
132
+ add_submenu_page('ap-social-counter', __('Documentation', 'accesspress-social-counter'), __('Documentation', 'accesspress-social-counter'), 'manage_options', 'apsc-documentation', '__return_false', null, 9);
133
+ add_submenu_page('ap-social-counter', __('Check Premium Version', 'accesspress-social-counter'), __('Check Premium Version', 'accesspress-social-counter'), 'manage_options', 'apsc-premium', '__return_false', null, 9);
134
+ }
135
+
136
+ function sc_settings(){
137
+ include('inc/backend/settings.php');
138
+ }
139
+
140
+ function register_admin_assets(){
141
+ if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'ap-social-counter' ) {
142
+ wp_enqueue_style( 'sc-admin-css', SC_CSS_DIR . '/backend.css', array(), SC_VERSION );
143
+ wp_enqueue_script( 'sc-admin-js', SC_JS_DIR . '/backend.js', array( 'jquery', 'jquery-ui-sortable' ), SC_VERSION );
144
+ wp_enqueue_script( 'sc-wpac-time-js', SC_JS_DIR . '/wpac-time.js', array( 'jquery' ), SC_VERSION ); // Third Party API for Facebook followers count
145
+ wp_enqueue_script( 'sc-wpac-js', SC_JS_DIR . '/wpac.js', array( 'jquery' ), SC_VERSION ); // Third Party API for Facebook followers count
146
+ }
147
+ wp_enqueue_style( 'fontawesome-css', SC_CSS_DIR . '/font-awesome.min.css', false, SC_VERSION );
148
+ }
149
+
150
+ function register_frontend_assets(){
151
+ $apsc_settings = $this -> apsc_settings;
152
+ $enable_font_css = (isset( $apsc_settings[ 'disable_font_css' ] ) && $apsc_settings[ 'disable_font_css' ] == 0) ? true : false;
153
+ $enable_frontend_css = (isset( $apsc_settings[ 'disable_frontend_css' ] ) && $apsc_settings[ 'disable_frontend_css' ] == 0) ? true : false;
154
+ if ( $enable_font_css ) {
155
+ if ( isset( $apsc_settings[ 'font_awesome_version' ]) && $apsc_settings[ 'font_awesome_version' ] == 'apsc-font-awesome-four' ) {
156
+ wp_enqueue_style( 'fontawesome-four-css', SC_CSS_DIR . '/font-awesome.min.css', false, SC_VERSION );
157
+ }
158
+ else{
159
+ wp_enqueue_style( 'fontawesome-five-css', SC_CSS_DIR . '/fontawesome-all.css', false, SC_VERSION );
160
+ }
161
+ }
162
+ if ( $enable_frontend_css ) {
163
+ wp_enqueue_style( 'apsc-frontend-css', SC_CSS_DIR . '/frontend.css', array(), SC_VERSION );
164
+ }
165
+ }
166
+
167
+ function apsc_settings_action(){
168
+ if ( ! empty( $_POST ) && wp_verify_nonce( $_POST[ 'apsc_settings_nonce' ], 'apsc_settings_action' ) ) {
169
+ include('inc/backend/save-settings.php');
170
+ }
171
+ }
172
+
173
+ function print_array( $array ){
174
+ echo "<pre>";
175
+ print_r( $array );
176
+ echo "</pre>";
177
+ }
178
+
179
+ function apsc_restore_default(){
180
+ if ( ! empty( $_GET ) && wp_verify_nonce( $_GET[ '_wpnonce' ], 'apsc-restore-default-nonce' ) ) {
181
+ $apsc_settings = $this -> get_default_settings();
182
+ update_option( 'apsc_settings', $apsc_settings );
183
+ $_SESSION[ 'apsc_message' ] = __( 'Default Settings Restored Successfully', 'accesspress-social-counter' );
184
+ wp_redirect( admin_url() . 'admin.php?page=ap-social-counter' );
185
+ }
186
+ }
187
+
188
+ function get_default_settings(){
189
+ $apsc_settings = array( 'social_profile' => array( 'facebook' => array( 'page_id' => '' ),
190
+ 'twitter' => array( 'username' => '', 'consumer_key' => '',
191
+ 'consumer_secret' => '',
192
+ 'access_token' => '',
193
+ 'access_token_secret' => '' ),
194
+ 'instagram' => array('app_id' => '',
195
+ 'app_secret' => '',
196
+ 'username' => '',
197
+ 'access_token' => '',
198
+ 'user_id' => '' ),
199
+ 'youtube' => array( 'username' => '',
200
+ 'channel_url' => '' ),
201
+ 'soundcloud' => array( 'username' => '',
202
+ 'client_id' => '' ),
203
+ 'dribbble' => array( 'client_id' => '',
204
+ 'client_secret' => '',
205
+ 'username' => '',
206
+ 'access_token' => ''),
207
+ ),
208
+ 'profile_order' => array( 'facebook', 'twitter', 'instagram', 'youtube', 'soundcloud', 'dribbble', 'posts', 'comments' ),
209
+ 'social_profile_theme' => 'theme-1',
210
+ 'counter_format' => 'comma',
211
+ 'font_awesome_version' => 'apsc-font-awesome-five',
212
+ 'cache_period' => '',
213
+ 'disable_font_css' => 0,
214
+ 'disable_frontend_css' => 0
215
+ );
216
+ return $apsc_settings;
217
+ }
218
+
219
+ function register_apsc_widget(){
220
+ register_widget( 'APSC_Widget' );
221
+ }
222
+
223
+ function apsc_shortcode( $atts ){
224
+ ob_start();
225
+ include('inc/frontend/shortcode.php');
226
+ $html = ob_get_contents();
227
+ ob_get_clean();
228
+ return $html;
229
+ }
230
+
231
+ function apsc_delete_cache(){
232
+ if ( ! empty( $_GET ) && wp_verify_nonce( $_GET[ '_wpnonce' ], 'apsc-cache-nonce' ) ) {
233
+ $transient_array = array( 'apsc_facebook', 'apsc_twitter', 'apsc_youtube', 'apsc_instagram','apsc_soundcloud', 'apsc_dribbble', 'apsc_posts', 'apsc_comments' );
234
+ foreach ( $transient_array as $transient ) {
235
+ delete_transient( $transient );
236
+ }
237
+ $_SESSION[ 'apsc_message' ] = __( 'Cache Deleted Successfully', 'accesspress-social-counter' );
238
+ wp_redirect( admin_url() . 'admin.php?page=ap-social-counter' );
239
+ }
240
+ }
241
+
242
+ function authorization( $user, $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret ){
243
+ $query = 'screen_name=' . $user;
244
+ $signature = $this -> signature( $query, $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret );
245
+ return $this -> header( $signature );
246
+ }
247
+
248
+ function signature_base_string( $url, $query, $method, $params ){
249
+ $return = array();
250
+ ksort( $params );
251
+
252
+ foreach ( $params as $key => $value ) {
253
+ $return[] = $key . '=' . $value;
254
+ }
255
+
256
+ return $method . "&" . rawurlencode( $url ) . '&' . rawurlencode( implode( '&', $return ) ) . '%26' . rawurlencode( $query );
257
+ }
258
+
259
+ function signature( $query, $consumer_key, $consumer_secret, $oauth_access_token, $oauth_access_token_secret ){
260
+ $oauth = array(
261
+ 'oauth_consumer_key' => $consumer_key,
262
+ 'oauth_nonce' => hash_hmac( 'sha1', time(), true ),
263
+ 'oauth_signature_method' => 'HMAC-SHA1',
264
+ 'oauth_token' => $oauth_access_token,
265
+ 'oauth_timestamp' => time(),
266
+ 'oauth_version' => '1.0'
267
+ );
268
+ $api_url = 'https://api.twitter.com/1.1/users/show.json';
269
+ $base_info = $this -> signature_base_string( $api_url, $query, 'GET', $oauth );
270
+ $composite_key = rawurlencode( $consumer_secret ) . '&' . rawurlencode( $oauth_access_token_secret );
271
+ $oauth_signature = base64_encode( hash_hmac( 'sha1', $base_info, $composite_key, true ) );
272
+ $oauth[ 'oauth_signature' ] = $oauth_signature;
273
+ return $oauth;
274
+ }
275
+
276
+ public function header( $signature ){
277
+ $return = 'OAuth ';
278
+ $values = array();
279
+
280
+ foreach ( $signature as $key => $value ) {
281
+ $values[] = $key . '="' . rawurlencode( $value ) . '"';
282
+ }
283
+
284
+ $return .= implode( ', ', $values );
285
+
286
+ return $return;
287
+ }
288
+
289
+
290
+ function get_twitter_count(){
291
+ $apsc_settings = $this -> apsc_settings;
292
+ $user = $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'username' ];
293
+ $api_url = 'https://api.twitter.com/1.1/users/show.json';
294
+ $params = array(
295
+ 'method' => 'GET',
296
+ 'sslverify' => false,
297
+ 'timeout' => 60,
298
+ 'headers' => array(
299
+ 'Content-Type' => 'application/x-www-form-urlencoded',
300
+ 'Authorization' => $this -> authorization(
301
+ $user, $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'consumer_key' ], $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'consumer_secret' ], $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'access_token' ], $apsc_settings[ 'social_profile' ][ 'twitter' ][ 'access_token_secret' ]
302
+ )
303
+ )
304
+ );
305
+
306
+ $connection = wp_remote_get( $api_url . '?screen_name=' . $user, $params );
307
+ if ( is_wp_error( $connection ) ) {
308
+ $count = 0;
309
+ } else {
310
+ $_data = json_decode( $connection[ 'body' ], true );
311
+ if ( isset( $_data[ 'followers_count' ] ) ) {
312
+ $count = intval( $_data[ 'followers_count' ] );
313
+ } else {
314
+ $count = 0;
315
+ }
316
+ }
317
+ return $count;
318
+ }
319
+
320
+ function get_formatted_count( $count, $format ){
321
+ if ( $count == '' ) {
322
+ return '';
323
+ }
324
+ switch ( $format ) {
325
+ case 'comma':
326
+ $count = number_format( $count );
327
+ break;
328
+ case 'short':
329
+ $count = $this -> abreviateTotalCount( $count );
330
+ break;
331
+ default:
332
+ break;
333
+ }
334
+ return $count;
335
+ }
336
+
337
+ function abreviateTotalCount( $value ){
338
+
339
+ $abbreviations = array( 12 => 'T', 9 => 'B', 6 => 'M', 3 => 'K', 0 => '' );
340
+
341
+ foreach ( $abbreviations as $exponent => $abbreviation ) {
342
+
343
+ if ( $value >= pow( 10, $exponent ) ) {
344
+ return round( floatval( $value / pow( 10, $exponent ) ), 1 ) . $abbreviation;
345
+ }
346
+ }
347
+ }
348
+
349
+ function facebook_count( $url ){
350
+
351
+ $fql = "SELECT like_count ";
352
+ $fql .= " FROM link_stat WHERE url = '$url'";
353
+
354
+ $fqlURL = "https://api.facebook.com/method/fql.query?format=json&query=" . urlencode( $fql );
355
+
356
+ $response = wp_remote_get( $fqlURL );
357
+
358
+ if ( ! is_wp_error( $response ) ) {
359
+ $response = json_decode( $response[ 'body' ] );
360
+ if ( is_array( $response ) && isset( $response[ 0 ] -> like_count ) ) {
361
+ return $response[ 0 ] -> like_count;
362
+ } else {
363
+ $count = '0';
364
+ return $count;
365
+ }
366
+ }else{
367
+ $count = '0';
368
+ return $count;
369
+ }
370
+ }
371
+
372
+ function get_count( $social_media ){
373
+ include('inc/frontend/api.php');
374
+ return $count;
375
+ }
376
+
377
+ function apsc_count_shortcode( $atts ){
378
+ if ( isset( $atts[ 'social_media' ] ) ) {
379
+ $count = $this -> get_count( $atts[ 'social_media' ] );
380
+ if ( isset( $atts[ 'count_format' ] ) && $count != '' ) {
381
+ $count = $this -> get_formatted_count( $count, $atts[ 'count_format' ] );
382
+ }
383
+ return $count;
384
+ }
385
+ }
386
+
387
+ function get_fb_access_token(){
388
+ $apsc_settings = $this -> apsc_settings;
389
+ $api_url = 'https://graph.facebook.com/';
390
+ $url = sprintf(
391
+ '%soauth/access_token?client_id=%s&client_secret=%s&grant_type=client_credentials', $api_url, $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ], $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ]
392
+ );
393
+ $access_token = wp_remote_get( $url, array( 'timeout' => 60 ) );
394
+
395
+ if ( is_wp_error( $access_token ) || ( isset( $access_token[ 'response' ][ 'code' ] ) && 200 != $access_token[ 'response' ][ 'code' ] ) ) {
396
+ return '';
397
+ } else {
398
+ return sanitize_text_field( $access_token[ 'body' ] );
399
+ }
400
+ }
401
+
402
+ function new_fb_count(){
403
+ $apsc_settings = $this -> apsc_settings;
404
+ $facebook_method = ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] != '' ) ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] : '2';
405
+ if ( $facebook_method == '1' ) {
406
+ $access_token = $this -> get_fb_access_token();
407
+ $access_token = json_decode( $access_token );
408
+ $access_token = $access_token -> access_token;
409
+ $api_url = 'https://graph.facebook.com/v3.0/'; //not working
410
+ //$api_url = 'https://graph.facebook.com/v2.8/'; // not working
411
+ //$api_url = 'https://graph.facebook.com/v3.2/'; // not working
412
+ $url = sprintf(
413
+ '%s%s?fields=fan_count&access_token=%s', $api_url, $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ], $access_token
414
+ );
415
+ } else {
416
+ $fb_page_id = (isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'fb_page_id' ] ) && ! empty( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'fb_page_id' ] )) ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'fb_page_id' ] : ' ';
417
+ $fb_access_token = (isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'access_token' ] ) && ! empty( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'access_token' ] )) ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'access_token' ] : ' ';
418
+
419
+ if ( $fb_access_token != '' && $fb_page_id != '' ) {
420
+ $api_url = 'https://graph.facebook.com/';
421
+ $new_page_experience_url = sprintf(
422
+ '%s%s?fields=has_transitioned_to_new_page_experience&access_token=%s', $api_url, $fb_page_id, $fb_access_token
423
+ );
424
+ $new_page_experience = wp_remote_get($new_page_experience_url, array('timeout' => 60));
425
+ if ( is_wp_error( $new_page_experience ) || ( isset( $new_page_experience[ 'response' ][ 'code' ] ) && 200 != $new_page_experience[ 'response' ][ 'code' ] ) ) {
426
+ $url = 'https://graph.facebook.com/';
427
+ } else {
428
+ $new_page_experience_data = json_decode( $new_page_experience[ 'body' ], true );
429
+ if ( isset( $_data[ 'has_transitioned_to_new_page_experience' ] ) ) {
430
+ $has_transitioned = $_data[ 'has_transitioned_to_new_page_experience' ];
431
+ } else {
432
+ $has_transitioned = false;
433
+ }
434
+ }
435
+ if($has_transitioned) {
436
+ $url = sprintf(
437
+ '%s%s?fields=followers_count&access_token=%s', $api_url, $fb_page_id, $fb_access_token
438
+ );
439
+ } else {
440
+ $url = sprintf(
441
+ '%s%s?fields=fan_count&access_token=%s', $api_url, $fb_page_id, $fb_access_token
442
+ );
443
+ }
444
+ // $url = sprintf(
445
+ // '%s%s?fields=fan_count&access_token=%s', $api_url, $fb_page_id, $fb_access_token
446
+ // );
447
+ } else {
448
+ $url = 'https://graph.facebook.com/';
449
+ }
450
+ }
451
+ $connection = wp_remote_get( $url, array( 'timeout' => 60 ) );
452
+
453
+ if ( is_wp_error( $connection ) || ( isset( $connection[ 'response' ][ 'code' ] ) && 200 != $connection[ 'response' ][ 'code' ] ) ) {
454
+ $count = 0;
455
+ } else {
456
+ $_data = json_decode( $connection[ 'body' ], true );
457
+ if ( isset( $_data[ 'fan_count' ] ) ) {
458
+ $count = intval( $_data[ 'fan_count' ] );
459
+ } else {
460
+ $count = 0;
461
+ }
462
+ }
463
+ return $count;
464
+ }
465
+ }
466
+ $sc_object = new SC_Class();
467
+ }
inc/frontend/social_network/extract_count/facebook.php CHANGED
@@ -1,47 +1,22 @@
1
- <?php defined( 'ABSPATH' ) or die( "No script kiddies please!" );
2
- //$facebook_page_id = isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] != '' ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] : '';
3
- //$default_count = isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] != '' ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] : '0';
4
- //$facebook_count = get_transient( 'apsc_facebook' );
5
- //
6
- //if ( false === $facebook_count ) {
7
- // $facebook_method = ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] != '' ) ? esc_attr( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) : '2';
8
- // if ( $facebook_method == '1' ) {
9
- // $count = $this -> new_fb_count();
10
- // } else {
11
- // if ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ], $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ] != '' && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ] != '' ) {
12
- // $count = $this -> new_fb_count();
13
- // } else {
14
- // $api_url = 'https://www.facebook.com/' . $facebook_page_id;
15
- // $count = $this -> facebook_count( $api_url );
16
- // }
17
- // }
18
- // set_transient( 'apsc_facebook', $count, $cache_period );
19
- //} else {
20
- // $count = $facebook_count;
21
- //}
22
- //
23
- //$count = ($count == 0) ? $default_count : $count;
24
- //if ( $count != 0 ) {
25
- // set_transient( 'apsc_facebook', $count, $cache_period );
26
- //}
27
- $facebook_page_id = isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] != '' ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] : '';
28
- $default_count = isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] != '' ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] : '0';
29
- $facebook_count = get_transient( 'apsc_facebook' );
30
- if ( false === $facebook_count ) {
31
- $facebook_method = ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] != '' ) ? esc_attr( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) : '2';
32
- if ( $facebook_method == '1' ) {
33
- if ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ], $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ] != '' && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ] != '' ) {
34
- $count = $this -> new_fb_count();
35
- } else {
36
- $api_url = 'https://www.facebook.com/' . $facebook_page_id;
37
- $count = $this -> facebook_count( $api_url );
38
- }
39
- } else {
40
- $count = $this -> new_fb_count();
41
- }
42
- $count = ($count == 0) ? $default_count : $count;
43
- set_transient( 'apsc_facebook', $count, $cache_period );
44
- } else {
45
- $count = $facebook_count;
46
- }
47
-
1
+ <?php defined( 'ABSPATH' ) or die( "No script kiddies please!" );
2
+ $facebook_page_id = isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] != '' ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'page_id' ] : '';
3
+ $default_count = isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] != '' ? $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'default_count' ] : '0';
4
+ $facebook_count = get_transient( 'apsc_facebook' );
5
+ if ( false === $facebook_count ) {
6
+ $facebook_method = ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] != '' ) ? esc_attr( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'method' ] ) : '2';
7
+ if ( $facebook_method == '1' ) {
8
+ if ( isset( $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ], $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ] ) && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_id' ] != '' && $apsc_settings[ 'social_profile' ][ 'facebook' ][ 'app_secret' ] != '' ) {
9
+ $count = $this -> new_fb_count();
10
+ } else {
11
+ $api_url = 'https://www.facebook.com/' . $facebook_page_id;
12
+ $count = $this -> facebook_count( $api_url );
13
+ }
14
+ } else {
15
+ $count = $this -> new_fb_count();
16
+ }
17
+ $count = ($count == 0) ? $default_count : $count;
18
+ set_transient( 'apsc_facebook', $count, $cache_period );
19
+ } else {
20
+ $count = $facebook_count;
21
+ }
22
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -1,404 +1,407 @@
1
- === AccessPress Social Counter ===
2
- Contributors: Access Keys
3
- Tags: social count, social counter, social counters, social media counters, social media, social network, social profiles counter, social profile count, social profile, social icons, social icon counter
4
- Donate link: http://accesspressthemes.com/donation/
5
- Requires at least: 4.5
6
- Tested up to: 5.7
7
- Stable tag: 1.9.0
8
- License: GPLv2 or later
9
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
-
11
- A plugin to display your social accounts fans, subscribers and followers number on your website with handful of backend settings.
12
-
13
- == Description ==
14
- [Documentation](https://accesspressthemes.com/documentation/accesspress-social-counter/) | [Support](https://accesspressthemes.com/support) | [Demo](http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-counter/) | [Premium Version](https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/)
15
-
16
- <strong>AccessPress Social Counter</strong> is a <strong>Free WordPress plugin</strong> to display your social accounts fans, subscribers and followers number on your website!
17
- A perfect plugin to show your social media stats and encourage more to join your network.
18
-
19
- You can select the social media profiles you want to activate, enter details of your social media and select one of the designs from beautifully designed 5 design themes.
20
-
21
- All you have to do is either use a widget or shortcode to display your social media counter right on your website in your chosen location!
22
-
23
- The available social media in FREE version are: Facebook, Twitter, Instagram, Youtube, Sound Cloud and Dribbble along with Posts and Comments count.
24
-
25
- Just get it done in a few minutes!
26
-
27
- `For more social media integration, more design options, floating sidebar
28
- options,social sharing options, pinterest sharing options and more
29
- features please upgrade to Premium version.`
30
-
31
- Note: If Instagram followers count is returning 0, it is due to change in the instagram API. Please get the new access token again from the plugin's settings.
32
-
33
- = Free Features: =
34
-
35
- * <strong>Beautifully designed 5 themes to select from.</strong> More available in Pro versoin.
36
- * <strong>Major 7 social media included </strong>(Facebook, Twitter, Instagram, Youtube, Sound Cloud and Dribbble). More available in Pro versoin.
37
- * <strong>Latest use of APIs to fetch data</strong>
38
- * <strong>Auto updates on all APIs</strong>
39
- * <strong>Option to select which social media profile to show</strong>
40
- * <strong>Display order for selected social media</strong>
41
- * <strong>Cache setting</strong> - you can set a cache period to avoid frequent API calls
42
- * <strong>Fully Responsive</strong> - compatible with mobile devices
43
- * <strong>User friendly and very interactive user interface</strong>
44
- - Anyone can use it, its as easy as drag and drop.
45
- * <strong>Upgrades available</strong>
46
- - For more features like more social media profiles, more design themes, your own design etc. - upgrade to Pro.
47
- * <strong>Support</strong>
48
- - Dedicated email, forum support
49
- * <strong>Free updates</strong>
50
- - Get free updates for lifetime.
51
-
52
- [youtube https://www.youtube.com/watch?v=96E67Z6AKM8]
53
-
54
- = Premium Features: =
55
- ★ Major 18 social media included(Facebook, Twitter, Instagram,
56
- SoundCloud, Dribbble, Youtube, Steam, Vimeo, Pinterest, Forrst, VK,
57
- Flickr, Behance, Github, Envato,Posts, Comments)
58
-
59
- ★ Beautifully designed 20 themes to select from.
60
-
61
- ★ 5 soothing animations
62
-
63
- ★ Floating Sidebar with 5 beautiful themes
64
-
65
- ★ Different Social Media Sharing Options with 10 pre available themes
66
-
67
- ★ Floating Social Sharing Sidebar with 4 pre available themes
68
-
69
- ★ Pinterest Sharing Options
70
-
71
- ★ Popup sharing and many more...
72
-
73
- = Premium Upgrade =
74
- * For premium upgrade, please go [here](https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/)
75
-
76
- = Available Languages =
77
- * English
78
- * Serbo-Croatian
79
- * Belarussian
80
-
81
- = Translators =
82
- * Serbo-Croatian - Borisa Djuraskovic ( http://www.webhostinghub.com )
83
- * Belarussian - UStarCash ( https://www.ustarcash.com )
84
-
85
- = Some Useful Links =
86
- * <strong>Support Email</strong>: support@accesspressthemes.com
87
- * <strong>Support Forum Link</strong>: http://accesspressthemes.com/support/
88
- * <strong>Youtube channel link</strong>: https://www.youtube.com/watch?v=TjZNcVG3fDE
89
- * <strong>Facebook link</strong>: https://www.facebook.com/AccessPressThemes
90
-
91
-
92
- For a easy installation guide checkout the Installation tab above.
93
-
94
- For complete information and documentation regarding plugin,please visit below links.
95
-
96
- [Plugin information](https://accesspressthemes.com/wordpress-plugins/accesspress-social-counter/)
97
-
98
- [Docs](https://accesspressthemes.com/documentation/accesspress-social-counter/ )
99
-
100
- [Demo](http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-counter/)
101
-
102
-
103
- == Installation ==
104
- 1. Unzip accesspress-social-counter.zip
105
- 1. Upload all the files to the /wp-content/plugins/accesspress-social-counter
106
- 1. Activate the plugin through the 'Plugins' menu in WordPress.
107
- 1. For customizing the plugin's settings, click on AccessPress Social Counter menu in Wordpress left admin menu.
108
- 1. To display the social counts in the frontend,please use [aps-counter] shortcode or AccessPress Social Counter widgets wherever necessary.
109
-
110
- == Frequently Asked Questions ==
111
- = What does this plugin do? =
112
- This plugin provides the ability to to display your social accounts fans, subscribers and followers number on your website along with the links to your social profile sites.
113
-
114
- = Will it effect my site's speed? =
115
- No , because we have provided the caching option to store the count in the database and update within certain period kept in the plugin cache settings section.
116
-
117
- = Do I need to design the icons again? =
118
- No , you won't need to get any trouble regarding design and layout of the icons since we have provided inbuilt 5 beautiful icon themes.You can choose any as per your requirement.
119
-
120
-
121
- = Where can I find the documentation for the plugin? =
122
- Once you install the plugin , you can check some general documentation about how to use the plugin in the "How to use" panel of the plugin's settings page.Complete documentation can be found [here](https://accesspressthemes.com/documentation/documentation-plugin-instruction-accesspress-social-counter/).
123
-
124
- == Screenshots ==
125
- 1. Frontend Display of Social Counts
126
- 2. Frontend Display of Social Counts
127
- 3. Backend Social Profiles Section
128
- 4. Backend Display Settings Section
129
- 5. Backend Cache Settings Section
130
-
131
- == Changelog ==
132
-
133
- = 1.9.0 =
134
- * Few backend code refinement
135
-
136
- = 1.8.9 =
137
- * Solved facebook page follower count issue.
138
- * Added new settings for instagram and dribbble to fetch follower count.
139
- * WordPress latest version compatibility checked.
140
-
141
- = 1.8.8 =
142
- * Added font awesome 4 and 5 compatibility settings in backend and frontend.
143
- * Added few css to solve font awesome issue.
144
-
145
- = 1.8.7 =
146
- * General bug fixes and refinement in the script
147
-
148
- = 1.8.6 =
149
- * Bug fix related to Facebook Count
150
-
151
- = 1.8.5 =
152
- * Bug fix related to social networks sorting
153
-
154
- = 1.8.4 =
155
- * Refinements in the plugin to avoid trademark infringement
156
-
157
- = 1.8.3 =
158
- * Bug fix related to Google+
159
-
160
- = 1.8.2 =
161
- * Removed Google+ from the plugin
162
-
163
- = 1.8.1 =
164
- * Bug fix ralated to Facebook link
165
-
166
- = 1.8.0 =
167
- * Bug fix ralated to instagram count
168
- * Refinement in the code
169
-
170
- = 1.7.9 =
171
- * General bug fixes in the plugin
172
-
173
- = 1.7.8 =
174
- * Addition of third party API to extract Facebook count
175
- * Addition of default count values for all the available networks
176
-
177
- = 1.7.7 =
178
- * WordPress 5.0 compatibility check
179
-
180
- = 1.7.4 =
181
- * Update in Facebook API
182
-
183
- = 1.7.3 =
184
- * Changed field type for cache settings from text to number
185
-
186
- = 1.7.2 =
187
- * Removed notice for Youtube counter
188
- * Compatibility check for version 4.8
189
-
190
- = 1.7.1 =
191
- * Done the bug fixings for the facebook followers counter.
192
-
193
- = 1.7.0 =
194
- * Updated google Plus setup description
195
-
196
- = 1.6.9 =
197
- * Updated file_get_contents with wp_remote_get for FQL
198
-
199
- = 1.6.8 =
200
- * Done small change in backend checkbox label layout
201
-
202
- = 1.6.7 =
203
- * Removed fontawesome CDN and enqueued locally as per WordPress Plugin Guidlines
204
-
205
- = 1.6.6 =
206
- * Updated documentation URL
207
-
208
- = 1.6.5 =
209
- * Removed session from backend
210
-
211
- = 1.6.4 =
212
- * Updated Documentation link in how to use section
213
-
214
- = 1.6.3 =
215
- * Changed backend settings tabs layout
216
- * Added More WordPress Resources link
217
-
218
- = 1.6.2 =
219
- * Fixed the facebook counter issue for the wordpress version 4.6.
220
-
221
- = 1.6.1 =
222
- * Updated backend notes to dismissible notices
223
- * Added below hooks on all the social network anchor links
224
- - apsc_facebook_link
225
- - apsc_twitter_link
226
- - apsc_googlePlus_link
227
- - apsc_instagram_link
228
- - apsc_youtube_link
229
- - apsc_soundcloud_link
230
- - apsc_dribbble_link
231
- - apsc_posts_link
232
- - apsc_comments_link
233
-
234
- = 1.6.0 =
235
- * Added tutuorial video in how to use section.
236
-
237
- = 1.5.9 =
238
- * Added Belarussian Language
239
-
240
- = 1.5.8 =
241
- * Fixed the Facebook followers count issue for Facebook APP API version 2.5 and above.
242
-
243
- = 1.5.7 =
244
- * Fixed the instagram followers count issues.
245
-
246
- = 1.5.6 =
247
- * Updated about section
248
-
249
- = 1.5.5 =
250
- * Updated layout of backend message
251
-
252
- = 1.5.4 =
253
- * Changed link for facebook and google to https
254
- * Updated heading notes layout in settings page
255
-
256
- = 1.5.3 =
257
- * Updated google API key generation procedure
258
-
259
- = 1.5.2 =
260
- * Updated FB API to work with new graph API
261
-
262
- = 1.5.1 =
263
- * Updated language file
264
-
265
- = 1.5.0 =
266
- * Done some modifications for WordPress 4.4 compatibility
267
-
268
- = 1.4.9 =
269
- * Done some css refining for theme 1
270
-
271
- = 1.4.8 =
272
- * Fixed file missing bug for system status
273
-
274
- = 1.4.7 =
275
- * Added system status tab
276
-
277
- = 1.4.6 =
278
- * Added some css to resolve the conflict
279
-
280
- = 1.4.5 =
281
- * Updated how to use section
282
-
283
- = 1.4.4 =
284
- * Updated backend notes layout
285
-
286
- = 1.4.3 =
287
- * Updated text domain to match the plugin's slug
288
-
289
- = 1.4.2 =
290
- * Fixed small bug regarding new added option
291
-
292
- = 1.4.1 =
293
- * Added font and frontend css disabling option
294
-
295
- = 1.4.0 =
296
- * Updated help note for youtube
297
-
298
- = 1.3.9 =
299
- * Fixed youtube count to be fetched automatically using API v3
300
- * Code cleanup done for shortcode
301
- * Fixed small bug for facebook count on API limit reach
302
-
303
- = 1.3.8 =
304
- * Updated demo link
305
-
306
- = 1.3.7 =
307
- * Escaped the output to prevent XSS vulnerability on social profile section
308
-
309
-
310
- = 1.3.6 =
311
- * Updated note in social profiles section
312
- * Updated rating link in settings header
313
-
314
- = 1.3.5 =
315
- * Removed font awesome dependency from frontend.css
316
- * Fixed some css conflicts for anchor links color and hover color
317
- * Added font awesome from CDN and removed the local file inclusion
318
- * Updated notes in how to use section
319
-
320
- = 1.3.4 =
321
- * Added count="coma/short/default" parameter for count only shortcode
322
-
323
- = 1.3.3 =
324
- * Fixed small bug regarding youtube count
325
-
326
- = 1.3.2 =
327
- * Updated youtube note for subscribers count
328
-
329
- = 1.3.1 =
330
- * Added Facebook Default Count field for fallback count to show when API is not available
331
- * Changed note for facebook user ID
332
- * Fixed small bug regarding the individual social media count shortcode cache period
333
-
334
- = 1.3.0 =
335
- * Added Shortcode [aps-get-count social_media="name of social media"] to get the individual social media count only
336
-
337
- = 1.2.0 =
338
- * Updated Facebook API
339
- * Added Youtube Subscribers field for mannual count
340
-
341
- = 1.1.9 =
342
- * Added some missed text domain
343
-
344
- = 1.1.8 =
345
- * Updated language file
346
-
347
- = 1.1.7 =
348
- * Fixed small issue for count format
349
-
350
- = 1.1.6 =
351
- * Updated some css for theme 5
352
-
353
- = 1.1.5 =
354
- * Updated some css for theme 4
355
-
356
- = 1.1.4 =
357
- * Updated some css for theme 2
358
-
359
- = 1.1.3 =
360
- * Updated some css for theme 1
361
-
362
- = 1.1.2 =
363
- * Updated some css for theme 3 for uniform width for all icons
364
-
365
- = 1.1.1 =
366
- * Added Serbo-Croatian Language
367
-
368
- = 1.1.0 =
369
- * Fixed the widget ID conflict
370
- * Updated Facebook Counter Description in backend
371
-
372
- = 1.0.9 =
373
- * Fixed some mismatched text domain
374
-
375
- = 1.0.8 =
376
- * Fixed the issue of opening the posts and comments links opening in new link for firefox and IE
377
-
378
- = 1.0.7 =
379
- * Added Counter Format Option
380
-
381
- = 1.0.6 =
382
- * Done few changes in backend social profiles
383
-
384
- = 1.0.5 =
385
- * Done small update in upgrade banner
386
-
387
- = 1.0.4 =
388
- * Added Upgrade Side banner
389
-
390
- = 1.0.3 =
391
- * Added Theme Selection Feature in widget
392
-
393
- = 1.0.2 =
394
- * Done number formatting for counts
395
-
396
- = 1.0.1 =
397
- * Done some fixes for mobile version
398
-
399
- = 1.0.0 =
400
- * Plugin submitted to http://wordpress.org for review and approval
401
- * Plugin approved in http://wordpress.org and comitted in plugin repository
402
-
403
- == Upgrade Notice ==
 
 
 
404
  There is an update available for the AccessPress Social Counter Plugin.Please update to recieve new updates and bug fixes.
1
+ === AccessPress Social Counter ===
2
+ Contributors: Access Keys
3
+ Tags: social count, social counter, social counters, social media counters, social media, social network, social profiles counter, social profile count, social profile, social icons, social icon counter
4
+ Donate link: http://accesspressthemes.com/donation/
5
+ Requires at least: 4.5
6
+ Tested up to: 5.7.2
7
+ Stable tag: 1.9.1
8
+ License: GPLv2 or later
9
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
+
11
+ A plugin to display your social accounts fans, subscribers and followers number on your website with handful of backend settings.
12
+
13
+ == Description ==
14
+ [Documentation](https://accesspressthemes.com/documentation/accesspress-social-counter/) | [Support](https://accesspressthemes.com/support) | [Demo](http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-counter/) | [Premium Version](https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/)
15
+
16
+ <strong>AccessPress Social Counter</strong> is a <strong>Free WordPress plugin</strong> to display your social accounts fans, subscribers and followers number on your website!
17
+ A perfect plugin to show your social media stats and encourage more to join your network.
18
+
19
+ You can select the social media profiles you want to activate, enter details of your social media and select one of the designs from beautifully designed 5 design themes.
20
+
21
+ All you have to do is either use a widget or shortcode to display your social media counter right on your website in your chosen location!
22
+
23
+ The available social media in FREE version are: Facebook, Twitter, Instagram, Youtube, Sound Cloud and Dribbble along with Posts and Comments count.
24
+
25
+ Just get it done in a few minutes!
26
+
27
+ `For more social media integration, more design options, floating sidebar
28
+ options,social sharing options, pinterest sharing options and more
29
+ features please upgrade to Premium version.`
30
+
31
+ Note: If Instagram followers count is returning 0, it is due to change in the instagram API. Please get the new access token again from the plugin's settings.
32
+
33
+ = Free Features: =
34
+
35
+ * <strong>Beautifully designed 5 themes to select from.</strong> More available in Pro versoin.
36
+ * <strong>Major 7 social media included </strong>(Facebook, Twitter, Instagram, Youtube, Sound Cloud and Dribbble). More available in Pro versoin.
37
+ * <strong>Latest use of APIs to fetch data</strong>
38
+ * <strong>Auto updates on all APIs</strong>
39
+ * <strong>Option to select which social media profile to show</strong>
40
+ * <strong>Display order for selected social media</strong>
41
+ * <strong>Cache setting</strong> - you can set a cache period to avoid frequent API calls
42
+ * <strong>Fully Responsive</strong> - compatible with mobile devices
43
+ * <strong>User friendly and very interactive user interface</strong>
44
+ - Anyone can use it, its as easy as drag and drop.
45
+ * <strong>Upgrades available</strong>
46
+ - For more features like more social media profiles, more design themes, your own design etc. - upgrade to Pro.
47
+ * <strong>Support</strong>
48
+ - Dedicated email, forum support
49
+ * <strong>Free updates</strong>
50
+ - Get free updates for lifetime.
51
+
52
+ [youtube https://www.youtube.com/watch?v=96E67Z6AKM8]
53
+
54
+ = Premium Features: =
55
+ ★ Major 18 social media included(Facebook, Twitter, Instagram,
56
+ SoundCloud, Dribbble, Youtube, Steam, Vimeo, Pinterest, Forrst, VK,
57
+ Flickr, Behance, Github, Envato,Posts, Comments)
58
+
59
+ ★ Beautifully designed 20 themes to select from.
60
+
61
+ ★ 5 soothing animations
62
+
63
+ ★ Floating Sidebar with 5 beautiful themes
64
+
65
+ ★ Different Social Media Sharing Options with 10 pre available themes
66
+
67
+ ★ Floating Social Sharing Sidebar with 4 pre available themes
68
+
69
+ ★ Pinterest Sharing Options
70
+
71
+ ★ Popup sharing and many more...
72
+
73
+ = Premium Upgrade =
74
+ * For premium upgrade, please go [here](https://accesspressthemes.com/wordpress-plugins/accesspress-social-pro/)
75
+
76
+ = Available Languages =
77
+ * English
78
+ * Serbo-Croatian
79
+ * Belarussian
80
+
81
+ = Translators =
82
+ * Serbo-Croatian - Borisa Djuraskovic ( http://www.webhostinghub.com )
83
+ * Belarussian - UStarCash ( https://www.ustarcash.com )
84
+
85
+ = Some Useful Links =
86
+ * <strong>Support Email</strong>: support@accesspressthemes.com
87
+ * <strong>Support Forum Link</strong>: http://accesspressthemes.com/support/
88
+ * <strong>Youtube channel link</strong>: https://www.youtube.com/watch?v=TjZNcVG3fDE
89
+ * <strong>Facebook link</strong>: https://www.facebook.com/AccessPressThemes
90
+
91
+
92
+ For a easy installation guide checkout the Installation tab above.
93
+
94
+ For complete information and documentation regarding plugin,please visit below links.
95
+
96
+ [Plugin information](https://accesspressthemes.com/wordpress-plugins/accesspress-social-counter/)
97
+
98
+ [Docs](https://accesspressthemes.com/documentation/accesspress-social-counter/ )
99
+
100
+ [Demo](http://demo.accesspressthemes.com/wordpress-plugins/accesspress-social-counter/)
101
+
102
+
103
+ == Installation ==
104
+ 1. Unzip accesspress-social-counter.zip
105
+ 1. Upload all the files to the /wp-content/plugins/accesspress-social-counter
106
+ 1. Activate the plugin through the 'Plugins' menu in WordPress.
107
+ 1. For customizing the plugin's settings, click on AccessPress Social Counter menu in Wordpress left admin menu.
108
+ 1. To display the social counts in the frontend,please use [aps-counter] shortcode or AccessPress Social Counter widgets wherever necessary.
109
+
110
+ == Frequently Asked Questions ==
111
+ = What does this plugin do? =
112
+ This plugin provides the ability to to display your social accounts fans, subscribers and followers number on your website along with the links to your social profile sites.
113
+
114
+ = Will it effect my site's speed? =
115
+ No , because we have provided the caching option to store the count in the database and update within certain period kept in the plugin cache settings section.
116
+
117
+ = Do I need to design the icons again? =
118
+ No , you won't need to get any trouble regarding design and layout of the icons since we have provided inbuilt 5 beautiful icon themes.You can choose any as per your requirement.
119
+
120
+
121
+ = Where can I find the documentation for the plugin? =
122
+ Once you install the plugin , you can check some general documentation about how to use the plugin in the "How to use" panel of the plugin's settings page.Complete documentation can be found [here](https://accesspressthemes.com/documentation/documentation-plugin-instruction-accesspress-social-counter/).
123
+
124
+ == Screenshots ==
125
+ 1. Frontend Display of Social Counts
126
+ 2. Frontend Display of Social Counts
127
+ 3. Backend Social Profiles Section
128
+ 4. Backend Display Settings Section
129
+ 5. Backend Cache Settings Section
130
+
131
+ == Changelog ==
132
+
133
+ = 1.9.1 =
134
+ * Solved facebook page follower count issue for pages transitioned to new page experience.
135
+
136
+ = 1.9.0 =
137
+ * Few backend code refinement
138
+
139
+ = 1.8.9 =
140
+ * Solved facebook page follower count issue.
141
+ * Added new settings for instagram and dribbble to fetch follower count.
142
+ * WordPress latest version compatibility checked.
143
+
144
+ = 1.8.8 =
145
+ * Added font awesome 4 and 5 compatibility settings in backend and frontend.
146
+ * Added few css to solve font awesome issue.
147
+
148
+ = 1.8.7 =
149
+ * General bug fixes and refinement in the script
150
+
151
+ = 1.8.6 =
152
+ * Bug fix related to Facebook Count
153
+
154
+ = 1.8.5 =
155
+ * Bug fix related to social networks sorting
156
+
157
+ = 1.8.4 =
158
+ * Refinements in the plugin to avoid trademark infringement
159
+
160
+ = 1.8.3 =
161
+ * Bug fix related to Google+
162
+
163
+ = 1.8.2 =
164
+ * Removed Google+ from the plugin
165
+
166
+ = 1.8.1 =
167
+ * Bug fix ralated to Facebook link
168
+
169
+ = 1.8.0 =
170
+ * Bug fix ralated to instagram count
171
+ * Refinement in the code
172
+
173
+ = 1.7.9 =
174
+ * General bug fixes in the plugin
175
+
176
+ = 1.7.8 =
177
+ * Addition of third party API to extract Facebook count
178
+ * Addition of default count values for all the available networks
179
+
180
+ = 1.7.7 =
181
+ * WordPress 5.0 compatibility check
182
+
183
+ = 1.7.4 =
184
+ * Update in Facebook API
185
+
186
+ = 1.7.3 =
187
+ * Changed field type for cache settings from text to number
188
+
189
+ = 1.7.2 =
190
+ * Removed notice for Youtube counter
191
+ * Compatibility check for version 4.8
192
+
193
+ = 1.7.1 =
194
+ * Done the bug fixings for the facebook followers counter.
195
+
196
+ = 1.7.0 =
197
+ * Updated google Plus setup description
198
+
199
+ = 1.6.9 =
200
+ * Updated file_get_contents with wp_remote_get for FQL
201
+
202
+ = 1.6.8 =
203
+ * Done small change in backend checkbox label layout
204
+
205
+ = 1.6.7 =
206
+ * Removed fontawesome CDN and enqueued locally as per WordPress Plugin Guidlines
207
+
208
+ = 1.6.6 =
209
+ * Updated documentation URL
210
+
211
+ = 1.6.5 =
212
+ * Removed session from backend
213
+
214
+ = 1.6.4 =
215
+ * Updated Documentation link in how to use section
216
+
217
+ = 1.6.3 =
218
+ * Changed backend settings tabs layout
219
+ * Added More WordPress Resources link
220
+
221
+ = 1.6.2 =
222
+ * Fixed the facebook counter issue for the wordpress version 4.6.
223
+
224
+ = 1.6.1 =
225
+ * Updated backend notes to dismissible notices
226
+ * Added below hooks on all the social network anchor links
227
+ - apsc_facebook_link
228
+ - apsc_twitter_link
229
+ - apsc_googlePlus_link
230
+ - apsc_instagram_link
231
+ - apsc_youtube_link
232
+ - apsc_soundcloud_link
233
+ - apsc_dribbble_link
234
+ - apsc_posts_link
235
+ - apsc_comments_link
236
+
237
+ = 1.6.0 =
238
+ * Added tutuorial video in how to use section.
239
+
240
+ = 1.5.9 =
241
+ * Added Belarussian Language
242
+
243
+ = 1.5.8 =
244
+ * Fixed the Facebook followers count issue for Facebook APP API version 2.5 and above.
245
+
246
+ = 1.5.7 =
247
+ * Fixed the instagram followers count issues.
248
+
249
+ = 1.5.6 =
250
+ * Updated about section
251
+
252
+ = 1.5.5 =
253
+ * Updated layout of backend message
254
+
255
+ = 1.5.4 =
256
+ * Changed link for facebook and google to https
257
+ * Updated heading notes layout in settings page
258
+
259
+ = 1.5.3 =
260
+ * Updated google API key generation procedure
261
+
262
+ = 1.5.2 =
263
+ * Updated FB API to work with new graph API
264
+
265
+ = 1.5.1 =
266
+ * Updated language file
267
+
268
+ = 1.5.0 =
269
+ * Done some modifications for WordPress 4.4 compatibility
270
+
271
+ = 1.4.9 =
272
+ * Done some css refining for theme 1
273
+
274
+ = 1.4.8 =
275
+ * Fixed file missing bug for system status
276
+
277
+ = 1.4.7 =
278
+ * Added system status tab
279
+
280
+ = 1.4.6 =
281
+ * Added some css to resolve the conflict
282
+
283
+ = 1.4.5 =
284
+ * Updated how to use section
285
+
286
+ = 1.4.4 =
287
+ * Updated backend notes layout
288
+
289
+ = 1.4.3 =
290
+ * Updated text domain to match the plugin's slug
291
+
292
+ = 1.4.2 =
293
+ * Fixed small bug regarding new added option
294
+
295
+ = 1.4.1 =
296
+ * Added font and frontend css disabling option
297
+
298
+ = 1.4.0 =
299
+ * Updated help note for youtube
300
+
301
+ = 1.3.9 =
302
+ * Fixed youtube count to be fetched automatically using API v3
303
+ * Code cleanup done for shortcode
304
+ * Fixed small bug for facebook count on API limit reach
305
+
306
+ = 1.3.8 =
307
+ * Updated demo link
308
+
309
+ = 1.3.7 =
310
+ * Escaped the output to prevent XSS vulnerability on social profile section
311
+
312
+
313
+ = 1.3.6 =
314
+ * Updated note in social profiles section
315
+ * Updated rating link in settings header
316
+
317
+ = 1.3.5 =
318
+ * Removed font awesome dependency from frontend.css
319
+ * Fixed some css conflicts for anchor links color and hover color
320
+ * Added font awesome from CDN and removed the local file inclusion
321
+ * Updated notes in how to use section
322
+
323
+ = 1.3.4 =
324
+ * Added count="coma/short/default" parameter for count only shortcode
325
+
326
+ = 1.3.3 =
327
+ * Fixed small bug regarding youtube count
328
+
329
+ = 1.3.2 =
330
+ * Updated youtube note for subscribers count
331
+
332
+ = 1.3.1 =
333
+ * Added Facebook Default Count field for fallback count to show when API is not available
334
+ * Changed note for facebook user ID
335
+ * Fixed small bug regarding the individual social media count shortcode cache period
336
+
337
+ = 1.3.0 =
338
+ * Added Shortcode [aps-get-count social_media="name of social media"] to get the individual social media count only
339
+
340
+ = 1.2.0 =
341
+ * Updated Facebook API
342
+ * Added Youtube Subscribers field for mannual count
343
+
344
+ = 1.1.9 =
345
+ * Added some missed text domain
346
+
347
+ = 1.1.8 =
348
+ * Updated language file
349
+
350
+ = 1.1.7 =
351
+ * Fixed small issue for count format
352
+
353
+ = 1.1.6 =
354
+ * Updated some css for theme 5
355
+
356
+ = 1.1.5 =
357
+ * Updated some css for theme 4
358
+
359
+ = 1.1.4 =
360
+ * Updated some css for theme 2
361
+
362
+ = 1.1.3 =
363
+ * Updated some css for theme 1
364
+
365
+ = 1.1.2 =
366
+ * Updated some css for theme 3 for uniform width for all icons
367
+
368
+ = 1.1.1 =
369
+ * Added Serbo-Croatian Language
370
+
371
+ = 1.1.0 =
372
+ * Fixed the widget ID conflict
373
+ * Updated Facebook Counter Description in backend
374
+
375
+ = 1.0.9 =
376
+ * Fixed some mismatched text domain
377
+
378
+ = 1.0.8 =
379
+ * Fixed the issue of opening the posts and comments links opening in new link for firefox and IE
380
+
381
+ = 1.0.7 =
382
+ * Added Counter Format Option
383
+
384
+ = 1.0.6 =
385
+ * Done few changes in backend social profiles
386
+
387
+ = 1.0.5 =
388
+ * Done small update in upgrade banner
389
+
390
+ = 1.0.4 =
391
+ * Added Upgrade Side banner
392
+
393
+ = 1.0.3 =
394
+ * Added Theme Selection Feature in widget
395
+
396
+ = 1.0.2 =
397
+ * Done number formatting for counts
398
+
399
+ = 1.0.1 =
400
+ * Done some fixes for mobile version
401
+
402
+ = 1.0.0 =
403
+ * Plugin submitted to http://wordpress.org for review and approval
404
+ * Plugin approved in http://wordpress.org and comitted in plugin repository
405
+
406
+ == Upgrade Notice ==
407
  There is an update available for the AccessPress Social Counter Plugin.Please update to recieve new updates and bug fixes.