1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

PageCallback versus my function

Discussion in 'XenForo Development Discussions' started by TerminalAddict, Mar 3, 2011.

  1. TerminalAddict

    TerminalAddict Active Member

    So I'll be displaying my blissful ignorance here in OOP

    I've got some code that looks like this (that works a treat in a single php file):
    /* SOURCE ENGINE QUERY FUNCTION, requires the server ip:port */

    function source_query($ip){
    $cut explode(":"$ip);
    $HL2_address $cut[0];
    $HL2_port $cut[1];

    $HL2_command "\377\377\377\377TSource Engine Query\0";

    $HL2_socket fsockopen("udp://".$HL2_address$HL2_port$errno$errstr,3);
    $JunkHead fread($HL2_socket,4);
    $CheckStatus socket_get_status($HL2_socket);

    $CheckStatus["unread_bytes"] == 0)return 0;

    $do 1;
    $str fread($HL2_socket,1);
    $HL2_stats.= $str;
    $status socket_get_status($HL2_socket);
    $status["unread_bytes"] == 0){
    $do 0;

    $x 0;
        while (
    $x <= strlen($HL2_stats)){
    $result.= substr($HL2_stats$x1);

    // ord ( string $string );
    $result str_split($result);
    $info['network'] = ord($result[0]);$char 1;
    ord($result[$char]) != "%00"){$info['name'] .= $result[$char];$char++;}$char++;
    ord($result[$char]) != "%00"){$info['map'] .= $result[$char];$char++;}$char++;
    ord($result[$char]) != "%00"){$info['dir'] .= $result[$char];$char++;}$char++;
    ord($result[$char]) != "%00"){$info['description'] .= $result[$char];$char++;}$char++;
    $info['appid'] = ord($result[$char].$result[($char+1)]);$char += 2;
    $info['players'] = ord($result[$char]);$char++;
    $info['max'] = ord($result[$char]);$char++;
    $info['bots'] = ord($result[$char]);$char++;
    $info['dedicated'] = ord($result[$char]);$char++;
    $info['os'] = chr(ord($result[$char]));$char++;
    $info['password'] = ord($result[$char]);$char++;
    $info['secure'] = ord($result[$char]);$char++;
    ord($result[$char]) != "%00"){$info['version'] .= $result[$char];$char++;}


    $q source_query('');

    "network: ".$q['network']."<br/>\n";
    "name: ".$q['name']."<br/>\n";
    "map: ".$q['map']."<br/>\n";
    Now I want to put this in an integrated page using pages and PageCallback
    so here goes:

    class FPS_HomePage_PageCallback_Servers
            public static function 
    response(XenForo_ControllerPublic_Abstract $controllerXenForo_ControllerResponse_Abstract $response)

    /* SOURCE ENGINE QUERY FUNCTION, requires the server ip:port */

    $fps_server source_query('');

    // send the response to the template
    $response->templateName 'FPS_servers';
    // I'll have more than one server soon
    $response->params += array(
    'fps_nz' => $fps_server

    $result "";
    $cut explode(":"$ip);
    $HL2_address $cut[0];
    $HL2_port = ....
    ... (
    skip the boring bits)
    it's as if no data is passed to the function source_query() so nothing seems to work
    ... see .. I don't really understand classes etc :)

    Can somebody help please?
  2. Shadab

    Shadab Well-Known Member

    What's the exact output when you dump the value right after the fn' returns it, like:
    $fps_server source_query('');
    Zend_Debug::dump($fps_server'FPS Server Query');
    Also, If you are comfortable using a debugger, have you tried stepping through the code yet?
  3. TerminalAddict

    TerminalAddict Active Member

    actually you put me in the right direction (perhaps again? :) )

    xF requires me to be more vigilant creating variables .. not just willy nilly add stuff like I often do
    $x = 0;
    echo $y; // returns undefined variable in xenforo

    so the fix was basically to build a blank array before populating it
    $info = array("network"=>"","name"=>"","map"=>"","dir"=>"","description"=>"","appid"=>"","players"=>"","max"=>"","bots"=>"","dedicated"=>"","os"=>"","password"=>"","secure"=>"","version"=>"");

    plus a couple of other variables needed initialising ($results, and $HL2_stats)

    thanks for your help
    now to make my page look pretty :confused:

Share This Page