Thread: Integration with vBulletin - Steam Connect - Sign in with your Steam Account! [RC3]
View Single Post
  #541  
Old 01-25-2019, 01:45 AM
KHALIK KHALIK is offline
 
Join Date: May 2005
Posts: 211
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by jetkai View Post
Match array no longer works as expected on 4.2.5 vb (PHP 7.1)
[shame this is no longer supported]

Had to do some modifications to the functions_steamconnect.php file to get Avatar, DisplayName & Community URL to show.

Replace Previous Code in (functions_steamconnect.php):

Code:
$match = array();
	preg_match_all("/\w*(\".+\": .+,?)\n/", $raw_json, $match);

	if (!isset($match[1]) || !is_array($match[1])) {
		DEVDEBUG("stc_profiling[] = Time: ".(microtime(1)-$time).", ret: http404");
		return false;
	}	

	$steam_info = array();
	// We filter just for the fields we actually need.
	$additional_fields2 = explode("\n",$vbulletin->options['stc_additionalfields']);
	$whitelist = array_unique(array_merge(array('steamid', 'communityvisibilitystate', 'personaname', 'profileurl', 'avatar', 'avatarmedium', 'avatarfull'),$additional_fields,$additional_fields2));
	$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;
		}
	}

With either options below

Code:
    $steam_info = array();
    $json_decoded = json_decode($raw_json);

    foreach ($json_decoded->response->players as $player) {

        $steam_info['steamid'] = $player->steamid;
        $steam_info['communityvisibilitystate'] = $player->communityvisibilitystate;
        $steam_info['personaname'] = $player->personaname;
        $steam_info['profileurl'] = $player->profileurl;
        $steam_info['avatar'] = $player->avatar;
        $steam_info['avatarfull'] = $player->avatarfull;
        $steam_info['avatarmedium'] = $player->avatarmedium;

    }

or

Code:
        $steam_info = array();
        $json_decoded = json_decode($raw_json);
        $steam_values = array('steamid', 'communityvisibilitystate', 'personaname', 'profileurl', 'avatar', 'avatarmedium', 'avatarfull');

        foreach ($json_decoded->response->players as $player) {

            foreach ($steam_values as $steam_value) {
                $data = $player->$steam_value;

                if($data != null && $player != null)
                    $steam_info[$steam_value] = $data;
            }

        }
No idea if this causes any further security issues, just a quick fix to showing Avatars & URL's. Haven't come across any other issues yet.
Thank you, it worked for me as well.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01433 seconds
  • Memory Usage 1,782KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (3)bbcode_code
  • (1)bbcode_quote
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • 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_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete