Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 05-28-2015, 08:18 AM
Skyrider Skyrider is offline
 
Join Date: Feb 2006
Location: Netherlands
Posts: 1,392
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Grabbing value from an API (existing code)

I know I'm asking a lot lately, but I'm still learning. Currently, I'm using this code (in attempts) to get the proper value: (inside a *.PHP file)

Code:
	    $url = sprintf("http://api.steampowered.com/ISteamUser/GetPlayerBans/v1/?key=%s&steamid=%s",
		$api_key,
		$steam_id);

	$curl_time = microtime(1);
	// Needs curl to actually be able to pull data from steam api because of the special response-behaviour.
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_URL, $url );
    @curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    curl_setopt( $ch, CURLOPT_MAXREDIRS, 5 );
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $vbulletin->options['stc_curl_timeout'] ); #rc1: helps with page delay if steam is down
    $tradeban = curl_exec( $ch );
    $http_response_header = curl_getinfo( $ch );
	$curl_errno = curl_errno($ch);
	$curl_error = curl_error($ch);
	curl_close($ch);
    
    $tradeban = json_decode($tradeban, 1);
With:
Code:
    $steam_info['EconomyBan'] = is_array($tradeban) && isset($tradeban['players'], $tradeban['players']['EconomyBan']) ? $tradeban['players']['EconomyBan'] : -1;
To get the value.. however, once I check whatever it grabs, it shows this:

Quote:
"EconomyBan";i:-1;}
Here's an example of an API result when going to: http://api.steampowered.com/ISteamUs...=xx&steamid=xx (<- key removed for obvious reasons)

Quote:
{
"players": [
{
"SteamId": "76561198024651743",
"CommunityBanned": false,
"VACBanned": false,
"NumberOfVACBans": 0,
"DaysSinceLastBan": 0,
"NumberOfGameBans": 0,
"EconomyBan": "banned"
}
]

}
I need to get the value of the EconomyBan which in this case is "banned". Any help would be appreciated, been trying for hours now. I assume the -1 only works for numbers rather than letters?

Forgot to mention. EconomyBan is already filled in in the steam options plugin (see attachment), so the EconomyBan field should be called. You can ignore the rest of the text on the attachment provided below, the author already has created this steam_level check for me:

Code:
    $url = sprintf("http://api.steampowered.com/IPlayerService/GetSteamLevel/v0001/?key=%s&steamid=%s",
		$api_key,
		$steam_id);

	$curl_time = microtime(1);
	// Needs curl to actually be able to pull data from steam api because of the special response-behaviour.
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_URL, $url );
    @curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    curl_setopt( $ch, CURLOPT_MAXREDIRS, 5 );
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $vbulletin->options['stc_curl_timeout'] ); #rc1: helps with page delay if steam is down
    $steamlevel = curl_exec( $ch );
    $http_response_header = curl_getinfo( $ch );
	$curl_errno = curl_errno($ch);
	$curl_error = curl_error($ch);
	curl_close($ch);
    
    $steamlevel = json_decode($steamlevel, 1);
with:

Code:
    $steam_info['player_level'] = is_array($steamlevel) && isset($steamlevel['response'], $steamlevel['response']['player_level']) ? $steamlevel['response']['player_level'] : -1;
Which is working perfectly. I'm merely trying to duplicate the code, and grab the information from a different API instead.
Attached Images
File Type: png steam-api-vbulletin.png (20.7 KB, 0 views)
Reply With Quote
  #2  
Old 05-28-2015, 09:36 AM
Dave Dave is offline
 
Join Date: May 2010
Posts: 2,583
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

What do you get when you var_dump or print_r the json_decoded string?
Reply With Quote
  #3  
Old 05-28-2015, 09:47 AM
Skyrider Skyrider is offline
 
Join Date: Feb 2006
Location: Netherlands
Posts: 1,392
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Dave View Post
What do you get when you var_dump or print_r the json_decoded string?
Mind sharing an example? I'm aware of those codes, just unsure if I should put it inside the entire:

Code:
$tradeban = json_decode($tradeban, 1);
Would this work?

Code:
$tradeban = var_dump(json_decode($tradeban, 1));
Still a newbie at this, learning on the go.

Forgot to mention, all these changes are within a *.PHP file, rather than a plugin. Might be good to know as well where the var is being dumped. In debug mode, under messages? Tried that with above code (if thats correct), but shows no new info in debug mode -> messages.
Reply With Quote
  #4  
Old 05-28-2015, 10:17 AM
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Posts: 1,987
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

That's basic PHP, it has nothing to do with vb's debug system.

See: http://php.net/manual/en/function.var-dump.php

Your second code would not work. var_dump or print_r print the content of the variable or array directly to the screen. The output can't be saved to a variable. It's just
PHP Code:
$tradeban json_decode($tradeban1);
var_dump($tradeban); 
Reply With Quote
  #5  
Old 05-28-2015, 12:09 PM
Skyrider Skyrider is offline
 
Join Date: Feb 2006
Location: Netherlands
Posts: 1,392
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Here's the entire PHP file just for the sake of it:

See line 128 to 150 and 207

I've created a PHP code specially designed to check 2 variables:

Code:
require_once(DIR . '/includes/functions_steamconnect.php');

// Steam Level Information API
$steam_id = get_user_steamid($stc_userinfo);
$steam_info = fetch_steam_info($steam_id, $vbulletin->options['stc_apikey']);

var_dump($steam_info['player_level']);
var_dump($steam_info['tradeban']);
This is the result at the top of the page:

Quote:
int(36) NULL
The first, showing my steam level, 36. Which is correct. The steam_level API always has worked.. so I copy/pasted the code to see if I can get it to work for tradeban API as well. However, the second tradeban var_dump shows NULL, thus no information was grabbed.

Using:

Code:
var_dump($steam_info['EconomyBan'])
Result in: int(-1)

[s]It 'might' be possible its giving NULL results as the results are being cached within files (for each user) that is defined in another PHP file:

[/s]

^- Striped above, I've edited this post as I've posted the var_dump results on a separated plugin calling the right information. Left the edit intact, just in case.

---EDIT:

Does this have something to do with it? Seeing -1 is mentioned here, as a matching value.

line 184 to 200 (first pastebin)

Code:
$values = $match[1];
	foreach ($values AS $val) {
		$match = array();
		preg_match("/\"(.+)\": ([^,]*),?/", $val, $match);
		if (is_array($match) && count($match) == 3) {

			$name = $match[1];
			$value = trim($match[2]);
			if (!in_array($name, $whitelist)) continue; // Not a setting we're looking for. skip..

			// Strip quotes and slashes
			if ($value{0} == '"' && $value{strlen($value)-1} == '"')
				$value = stripslashes(substr($value, 1, -1));

			$steam_info[$name] = $value;
		}
	}
I'm unsure, still checking into the code why I'm not getting the 'banned' value back.

Really would like to know why.

----SOLVED IT-----

Wanted to share, got it to work with some help.

First, URL near the end had to be "steamids" rather than "steamid"

Second:
Code:
$steam_info['EconomyBan'] = is_array($tradeban) && isset($tradeban['players'], $tradeban['players']['EconomyBan']) ? $tradeban['players']['EconomyBan'] : -1;
Had to be:
Code:
$steam_info['EconomyBan'] = is_array($tradeban) && isset($tradeban['players'], $tradeban['players'][0]['EconomyBan']) ? $tradeban['players'][0]['EconomyBan'] : -1;
I appreciate the replies however!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 02:02 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05630 seconds
  • Memory Usage 2,237KB
  • Queries Executed 12 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (11)bbcode_code
  • (1)bbcode_php
  • (6)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (1)postbit_attachment
  • (5)postbit_onlinestatus
  • (5)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete