public static function get_api_follow_counts($network, $index = '') { $url = ''; $result = false; $settings = ET_Monarch::get_options_array(); switch ($network) { case 'vimeo': if (isset($settings['access_tokens']['vimeo'])) { $url = sprintf('https://api.vimeo.com/me/followers?access_token=%1$s', $settings['access_tokens']['vimeo']); } break; case 'instagram': if (isset($settings['access_tokens']['instagram'])) { $url = sprintf('https://api.instagram.com/v1/users/self/?access_token=%1$s', $settings['access_tokens']['instagram']); } break; case 'linkedin': if (isset($settings['access_tokens']['linkedin'])) { $url = sprintf('https://api.linkedin.com/v1/people/~:(num-connections)?oauth2_access_token=%1$s&format=json', $settings['access_tokens']['linkedin']); } break; case 'soundcloud': if (isset($settings['follow_networks_networks_sorting']['client_id'][$index])) { $url = sprintf('http://api.soundcloud.com/users/%1$s.json?client_id=%2$s', $settings['follow_networks_networks_sorting']['client_name'][$index], $settings['follow_networks_networks_sorting']['client_id'][$index]); } break; case 'facebook': if (isset($settings['follow_networks_networks_sorting']['client_id'][$index])) { $url = sprintf('http://graph.facebook.com/%1$s', $settings['follow_networks_networks_sorting']['client_id'][$index]); } break; case 'dribbble': if (isset($settings['follow_networks_networks_sorting']['client_id'][$index])) { $url = sprintf('https://api.dribbble.com/v1/user?access_token=%1$s', $settings['follow_networks_networks_sorting']['client_id'][$index]); } break; case 'vkontakte': if (isset($settings['follow_networks_networks_sorting']['client_id'][$index])) { $url = sprintf('https://api.vk.com/method/friends.get?user_id=%1$s&count=1&v=5.8', $settings['follow_networks_networks_sorting']['client_id'][$index]); } break; case 'github': if (isset($settings['follow_networks_networks_sorting']['client_id'][$index])) { $url = sprintf('https://api.github.com/users/%1$s', $settings['follow_networks_networks_sorting']['client_id'][$index]); } break; case 'twitter': if (isset($settings['follow_networks_twitter_api_key'])) { $api_key = $settings['follow_networks_twitter_api_key']; $api_secret = $settings['follow_networks_twitter_api_secret']; $token = $settings['follow_networks_twitter_token']; $token_secret = $settings['follow_networks_twitter_token_secret']; $result = ET_Monarch::get_twitter_followers($api_key, $api_secret, $token, $token_secret, $index, false); } break; case 'pinterest': if (!empty($settings['follow_networks_networks_sorting']['username'][$index])) { $metas = get_meta_tags($settings['follow_networks_networks_sorting']['username'][$index]); $result = isset($metas['pinterestapp:followers']) ? $metas['pinterestapp:followers'] : 0; } break; case 'youtube': if (isset($settings['follow_networks_networks_sorting']['client_id'][$index])) { $url = sprintf('http://gdata.youtube.com/feeds/api/users/%1$s', sanitize_text_field($settings['follow_networks_networks_sorting']['client_id'][$index])); } break; } $request = wp_remote_get(esc_url($url)); if (!is_wp_error($request) && wp_remote_retrieve_response_code($request) == 200) { $data = wp_remote_retrieve_body($request); if ('linkedin' !== $network && 'youtube' !== $network) { $data = json_decode($data); } if ('youtube' == $network) { $data = str_replace('yt:', 'yt', $data); $data = new SimpleXMLElement($data); } } if (isset($data)) { switch ($network) { case 'vimeo': $result = $data->total; break; case 'instagram': $result = $data->data->counts->followed_by; break; case 'linkedin': $result = $data; break; case 'soundcloud': $result = $data->followers_count; break; case 'facebook': $result = isset($data->likes) ? $data->likes : 0; break; case 'dribbble': $result = $data->followers_count; break; case 'vkontakte': if (isset($data->response)) { $result = count($data->response); } else { return -1; } break; case 'github': $result = $data->followers; break; case 'youtube': $result = $data->ytstatistics['subscriberCount']; break; } } return intval($result); }
public static function get_api_follow_counts($network, $index = '') { $url = ''; $result = false; $settings = ET_Monarch::get_options_array(); switch ($network) { case 'vimeo': if (isset($settings['access_tokens']['vimeo'])) { $url = sprintf('https://api.vimeo.com/me/followers?access_token=%1$s', $settings['access_tokens']['vimeo']); } break; case 'instagram': if (isset($settings['access_tokens']['instagram'])) { $url = sprintf('https://api.instagram.com/v1/users/self/?access_token=%1$s', $settings['access_tokens']['instagram']); } break; case 'linkedin': if (isset($settings['access_tokens']['linkedin'])) { $url = sprintf('https://api.linkedin.com/v1/people/~:(num-connections)?oauth2_access_token=%1$s&format=json', $settings['access_tokens']['linkedin']); } break; case 'soundcloud': if (isset($settings['follow_networks_networks_sorting']['client_id'][$index])) { $url = sprintf('http://api.soundcloud.com/users/%1$s.json?client_id=%2$s', $settings['follow_networks_networks_sorting']['client_name'][$index], $settings['follow_networks_networks_sorting']['client_id'][$index]); } break; case 'facebook': if (isset($settings['access_tokens']['facebook']) && isset($settings['follow_networks_networks_sorting']['client_id'][$index])) { $url = sprintf('https://graph.facebook.com/v2.4/?id=%1$s&access_token=%2$s&fields=likes', $settings['follow_networks_networks_sorting']['client_id'][$index], $settings['access_tokens']['facebook']); } break; case 'dribbble': if (isset($settings['follow_networks_networks_sorting']['client_id'][$index])) { $url = sprintf('https://api.dribbble.com/v1/user?access_token=%1$s', $settings['follow_networks_networks_sorting']['client_id'][$index]); } break; case 'vkontakte': if (isset($settings['follow_networks_networks_sorting']['client_id'][$index])) { $url = sprintf('https://api.vk.com/method/friends.get?user_id=%1$s&count=1&v=5.8', $settings['follow_networks_networks_sorting']['client_id'][$index]); } break; case 'github': if (isset($settings['follow_networks_networks_sorting']['client_id'][$index])) { $url = sprintf('https://api.github.com/users/%1$s', $settings['follow_networks_networks_sorting']['client_id'][$index]); } break; case 'twitter': if (isset($settings['follow_networks_twitter_api_key'])) { $api_key = $settings['follow_networks_twitter_api_key']; $api_secret = $settings['follow_networks_twitter_api_secret']; $token = $settings['follow_networks_twitter_token']; $token_secret = $settings['follow_networks_twitter_token_secret']; $result = ET_Monarch::get_twitter_followers($api_key, $api_secret, $token, $token_secret, $index, false); } break; case 'pinterest': if (!empty($settings['follow_networks_networks_sorting']['username'][$index])) { $metas = get_meta_tags($settings['follow_networks_networks_sorting']['username'][$index]); $result = isset($metas['pinterestapp:followers']) ? $metas['pinterestapp:followers'] : 0; if (0 === $result) { $result = isset($metas['followers']) ? $metas['followers'] : 0; } } break; case 'youtube': if (isset($settings['access_tokens']['youtube']) && isset($settings['follow_networks_networks_sorting']['client_id'][$index])) { $url = sprintf('https://www.googleapis.com/youtube/v3/channels?part=statistics&id=%1$s&fields=%2$s&key=%3$s', sanitize_text_field($settings['follow_networks_networks_sorting']['client_id'][$index]), rawurlencode('items/statistics/subscriberCount'), sanitize_text_field($settings['access_tokens']['youtube'])); } break; } $request = wp_remote_get(esc_url_raw($url)); if (!is_wp_error($request) && wp_remote_retrieve_response_code($request) == 200) { $data = wp_remote_retrieve_body($request); if ('linkedin' !== $network) { $data = json_decode($data); } } if (isset($data)) { switch ($network) { case 'vimeo': $result = $data->total; break; case 'instagram': $result = $data->data->counts->followed_by; break; case 'linkedin': preg_match('/<num-connections>(.*)<\\/num-connections>/', $data, $matches); if (is_array($matches)) { $result = isset($matches[1]) ? $matches[1] : 0; } break; case 'soundcloud': $result = $data->followers_count; break; case 'facebook': $result = isset($data->likes) ? $data->likes : 0; break; case 'dribbble': $result = $data->followers_count; break; case 'vkontakte': if (isset($data->response)) { $result = count($data->response); } else { return -1; } break; case 'github': // organizations cannot have followers, so we count stars for all the public repos of organization if any. if ('Organization' === $data->type && 0 !== intval($data->public_repos)) { $repos_request = wp_remote_get(esc_url_raw($data->repos_url)); if (!is_wp_error($repos_request) && wp_remote_retrieve_response_code($repos_request) == 200) { $repos_data = wp_remote_retrieve_body($repos_request); $repos_data = json_decode($repos_data); if (!empty($repos_data)) { foreach ($repos_data as $single_repo) { $result += intval($single_repo->stargazers_count); } } } } else { $result = $data->followers; } break; case 'youtube': if (isset($data->items[0]->statistics->subscriberCount)) { $result = $data->items[0]->statistics->subscriberCount; } else { return 0; } break; } } return intval($result); }