Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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);
 }