We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 32378
    • 1 Posts
    Hey all,

    let me start by thanking all you guys for the great cms system you made, and offcourse all the snippets you guys provide!

    But i have ran into a small problem (hope it’s small).

    I’m currently working on a clansite for battlefield 2 and wanted to put some memberinfo screen on it.

    Here’s the site: http://www.cwgdesigns.com/teamwoot/
    I’ve got the script running outside modx like so: http://www.cwgdesigns.com/teamwoot/bf2.php

    My problem is however when i make a snippet of the php file it runs into an error :

    ’Error: array_push() [function.array-push]: First argument should be an array ’


    Here’s the original php code it runs on:


    <?php
    $clanid="15947";

    function startTag($parser, $name, $attrs) {
    global $stack;

    $tag=array("name"=>$name,"attrs"=>$attrs);
    array_push($stack,$tag);
    }

    function cdata($parser, $cdata) {
    global $stack;

    $stack[count($stack)-1][’cdata’] .= $cdata;
    }

    function endTag($parser, $name) {
    global $stack;

    $stack[count($stack)-2][’children’][] = $stack[count($stack)-1];
    array_pop($stack);
    }


    // Parse XML

    $stack = array();
    $claninfo = array();
    $clanstats = array();
    $playerstats = array();

    $xml_parser = xml_parser_create();
    xml_set_element_handler($xml_parser, "startTag", "endTag");
    xml_set_character_data_handler($xml_parser, "cdata");

    $xmllink="http://bf2tracker.com/livefeed/xml_clanprofile.php?clanid=$clanid";
    $data = xml_parse($xml_parser,file_get_contents($xmllink));
    if(!$data) die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));

    xml_parser_free($xml_parser);


    // Get Data

    // Get Clan Profile Data
    for($i = 0; $i < sizeof($stack[0][children][0][children]); $i++) {
    $valname=$stack[0][children][0][children][$i][name];
    $claninfo[$valname]=$stack[0][children][0][children][$i][cdata];
    }

    // Get Clan Stats Data
    for($i = 0; $i < sizeof($stack[0][children][1][children]); $i++) {
    $valname=$stack[0][children][1][children][$i][name];
    $clanstats[$valname]=$stack[0][children][1][children][$i][cdata];
    }

    // Get Player Data
    for($i = 0; $i < sizeof($stack[0][children][2][children]); $i++) {
    for($x = 0; $x < sizeof($stack[0][children][2][children][$i][children]); $x++) {
    $valname=$stack[0][children][2][children][$i][children][$x][name];
    $value=$stack[0][children][2][children][$i][children][$x][cdata];
    if($valname=="PLAYERID") $pid=$value;
    $playerstats[$pid][$valname]=$value;
    }
    }



    // Now we have 3 arrays with all stats and infos
    // print_r($claninfo);
    //print_r($clanstats);
    // print_r($playerstats);

    // Prepare table for info/stats
    echo "<table align=\"center\" cellpadding=\"2\" cellspacing=\"0\">\n
    <tr><th colspan=\"12\">Clan info/statistics</td></tr>\n
    <tr><th>ID</td>\n
    <th>Name</td>\n
    <th>Tag</td>\n
    <th>CO</td>\n
    <th>Score</td>\n
    <th>TM</td>\n
    <th>WM</td>\n
    <th>LM</td>\n
    <th>Kills</td>\n
    <th>KillAs.</td>\n
    <th>Deaths</td>\n
    <th>Ratio</td>\n
    </tr>\n";

    //get clan info
    foreach($claninfo as $key => $value) {
    $clanname=$claninfo[CLANNAME];
    $clanid=$claninfo[CLANID];
    $clanurl=$claninfo[CLANSTATSURL];
    $clantag=$claninfo[CLANTAG];
    $clanCO=$claninfo[CLANCOUNTRY];
    }

    // get Clan Stats

    foreach($clanstats as $key => $value) {
    $clanK=$clanstats[KILLS];
    $clanKA=$clanstats[KILLASS];
    $clanD=$clanstats[DEATHS];
    $clanGS=$clanstats[SCORE];
    $clanRATIO=$clanstats[KDRATIO];
    $clanMA=$clanstats[MATCHES];
    $clanWI=$clanstats[WINS];
    $clanLO=$clanstats[LOSS];
    }

    //show in table
    echo "<tr class=\"gen\">\n
    <td align=\"center\" class=\"row1\">$clanid</a></td>\n
    <td class=\"row1\"><a target=\"_blank\" href=\"$clanurl\">$clanname</a></td>\n
    <td class=\"row1\">$clantag</td>\n
    <td class=\"row1\">$clanCO</td>\n
    <td align=\"right\" class=\"row1\">$clanGS</td>\n
    <td align=\"right\" class=\"row1\">$clanMA</td>\n
    <td align=\"right\" class=\"row1\">$clanWI</td>\n
    <td align=\"right\" class=\"row1\">$clanLO</td>\n
    <td align=\"right\" class=\"row1\">$clanK</td>\n
    <td align=\"right\" class=\"row1\">$clanKA</td>\n
    <td align=\"right\" class=\"row1\">$clanD</td>\n
    <td align=\"right\" class=\"row1\">$clanRATIO</td>\n
    </tr>\n
    </table>";


    // Prepare Player Stats table
    echo "<table align=\"center\" cellpadding=\"2\" cellspacing=\"0\">\n
    <tr><th colspan=\"12\">Player Stats</td></tr>\n
    <tr>\n";

    // remove/add pictures depending how many members you have in your clan.
    // Also change the rowspan to suit. remove the first cell if you dont want the pics at all
    echo " <td width=\"150\" align=\"left\" rowspan=\"25\" valign=\"top\" class=\"row2\">\n
    <img border=\"0\" src=\"bf2/images/engineer.jpg\" width=\"150\" height=\"224\">\n
    <img border=\"0\" src=\"bf2/images/sniper.jpg\" width=\"150\" height=\"224\">\n
    </td>\n
    <th>Rank</td>\n
    <th>Status</td>\n
    <th>Name</td>\n
    <th>CO</td>\n
    <th>GS</td>\n
    <th>TM</td>\n
    <th>WM</td>\n
    <th>LM</td>\n
    <th>TT</td>\n
    <th>SM</td>\n
    <th>SH</td>\n
    </tr>\n";

    $row="row2";
    //sorting by global score
    function sort_by_gscore($a, $b) {return strnatcmp($b["PLAYERGLOBALSCORE"],$a["PLAYERGLOBALSCORE"]);}
    usort($playerstats,sort_by_gscore);
    // get player stats
    foreach($playerstats as $key => $value) {
    $playername=$playerstats[$key][PLAYERNAME];
    $playerurl=$playerstats[$key][PLAYERSTATSURL];
    $playerid=$playerstats[$key][PLAYERID];
    $playerGS=$playerstats[$key][PLAYERGLOBALSCORE];
    $playerCO=$playerstats[$key][PLAYERCOUNTRY];
    $playerMA=$playerstats[$key][PLAYERMATCHES];
    $playerWI=$playerstats[$key][PLAYERWINS];
    $playerLO=$playerstats[$key][PLAYERLOSS];
    $playerTI=$playerstats[$key][PLAYERTIME];

    // average score/match
    if ($playerGS>0) $avescore=round($playerGS/$playerMA, 1);
    else $avescore="N/A";

    // playing time in hrs
    if ($playerstats[$key][PLAYERTIME]> 0) $playerTI=round(($playerstats[$key][PLAYERTIME])/3600, 1);
    else $playerTI=0.0;

    // average score/hr
    if (($playerGS>0) and ($playerTI>0)) $hrscore=round($playerGS/$playerTI, 1);
    else $hrscore="N/A";

    if($playerstats[$key][PLAYERRANK]!="") $playerrank=$playerstats[$key][PLAYERRANK];
    else $playerrank=0;

    if($playerstats[$key][PLAYERCOUNTRY]!="-") $playerCO=$playerstats[$key][PLAYERCOUNTRY];
    else $playerCO="unknown";

    if($playerstats[$key][PLAYERSTATUS]=="1") $statuspic="ponline.gif";
    else $statuspic="poffline.gif";

    //change the row color
    if ($row=="row2") $row="row1"; else $row="row2";

    // print player stats
    echo "<tr class=\"gen\">\n
    <td align=\"center\" class=$row><img border=\"0\" src=\"bf2/images/ranksmall_$playerrank.gif\" width=\"16\" height=\"16\"></td>\n
    <td class=$row><img border=\"0\" src=\"bf2/images/$statuspic\" width=\"42\" height=\"16\"></td>\n
    <td class=$row><a target=\"_blank\" href=\"$playerurl\">$playername</a></td>\n
    <td class=$row><img border=\"0\" src=\"bf2/images/flags/$playerCO.gif\" width=\"18\" height=\"12\"></td>\n
    <td align=\"right\" class=$row>$playerGS</td>\n
    <td align=\"right\" class=$row>$playerMA</td>\n
    <td align=\"right\" class=$row>$playerWI</td>\n
    <td align=\"right\" class=$row>$playerLO</td>\n
    <td align=\"right\" class=$row>$playerTI</td>\n
    <td align=\"right\" class=$row>$avescore</td>\n
    <td align=\"right\" class=$row>$hrscore</td>\n
    </tr>\n";
    }
    echo "<tr class=\"gensmall\"><td class=\"row1\" colspan=\"12\" align=\"center\"></td></tr>\n
    <tr class=\"gensmall\"><td class=\"row2\" colspan=\"12\" align=\"center\"></td></tr>\n
    </table>\n";

    ?>


    Since i’m a total noob at php scripting i was wandering if you guys know a solution for this problem.


    Greetz,

    WiGeTS