Hi folks,
I'm trying to get a script to display in a center block on one of my pages. I'm having no luck. I've been able to make a new block and do a preview and I can see the script displaying just fine but, when I goto my actual site, I come up with a blank page.
Here is a sample script that I want to display on my site:
/*
* guildxml.php
* a Dark Age of Camelot Guild XML data parser that returns a guild roster
* sortable with some parameters like name, Realm Points, Level, etc...
* for use on Dark Age of Camelot community websites.
*
* Dark Age of Camelot (or DAoC) is a MMORPG
* (massively multiplayer online rolepaying game)
* developed by Mythic Entertainment (http://www.mythicentertainment.com)
*
* Author: Julien COQUET
* a.k.a Glenfiddich Singlemalt on DAoC Merlin/Albion
* e-mail
glenfiddich@purpledragons.net *
http://www.purpledragons.net/xml/ *
* Adapted from generic PHP code from
http://www.php.net *
* Developed in September of 2002 under the GNU GPL License.
* For more information, visit
http://www.gnu.org/licenses/gpl.html *
* Enjoy and please link to our site
*
http://www.purpledragons.net *
* Changelog:
* September 9, 2003 : added support for realm title selection according to realm in XML
* March 28, 2003 : added UTF8 support for GOA XML - Euro servers only
* Feb. 25, 2003 : finally added $param as $_GET['param']
*/
class guildXML {
/*
* This class takes a Dark Age of Camelot Herald XML guild data file and parses it
*/
var $xml_parser;
var $xml_file;
var $html;
var $open_tag ;
var $close_tag ;
var $in_char;
var $in_alliance;
var $chars_array;
var $alliance_array;
var $current_tag ='';
/*
* Class Constructor
*/
function guildXML() {
$this->xml_parser = "";
$this->xml_file = "";
$this->html = "";
}
//Class Destructor (has to be invoked manually as PHP does not support destructors)
function destroy() {
xml_parser_free($this->xml_parser);
}
//Class Members
function concat($str) {
$this->html .= $str;
}
function startElement($parser, $name, $attrs) {
global $totalchars, $num_activechars,$num_inactivechars, $insideElement, $in_char, $current_tag, $i;
if (($in_char==1)||($in_alliance==1)){
$current_tag = $name;
}
if ($name=='GUILD'){
$current_tag= $name;
if (sizeof($attrs)) {
while (list($k, $v) = each($attrs)) {
if ($k=='GUILDRP'){$this->guildrp=$v;};
if ($k=='TIMESTAMP'){$this->timestamp=$v;};
if ($k=='REALM'){$this->realm=$v;};
}
}
}
if ($name=='CHARACTER'){
$in_alliance = 1;
}
if ($name=='CHARACTER'){
$in_char=1;
$totalchars++;
if (sizeof($attrs)) {
while (list($k, $v) = each($attrs)) {
if ($k=='NAME'){
$this->chars_array[$i]['name']=trim($v);
$this->chars_array[$i]['firstname']= trim (substr($this->chars_array[$i]['name'],0, strpos($this->chars_array[$i]['name'],' ')));
$this->chars_array[$i]['lastname']= trim (substr($this->chars_array[$i]['name'], strpos($this->chars_array[$i]['name'],' ')));
// Italian servers with Base64 encoding for last name, comment the above line and uncomment the following line
//$this->chars_array[$i]['lastname']= base64_decode(trim (substr($this->chars_array[$i]['name'], strpos($this->chars_array[$i]['name'],' '))));
if (!$this->chars_array[$i]['firstname'] && $this->chars_array[$i]['lastname']){
$this->chars_array[$i]['firstname'] = $this->chars_array[$i]['lastname'];
$this->chars_array[$i]['lastname']='';
}
}
if ($k=='LASTON') {
$this->chars_array[$i]['laston']=$v;
if ($v!='Inactive') {
$num_activechars++;
} elseif($v=='Inactive'){
$num_inactivechars++;
}
}
}
}
}
}
function endElement($parser, $name) {
global $close_tag, $current_tag, $in_char, $i;
if ($name=='CHARACTER'){$i++; $in_char=0;}
if ($name=='ALLIANCE'){$i++; $in_alliance=0;}
}
function characterData($parser, $data) {
global $guildrp, $inactiverp, $current_tag, $in_char, $i;
//$content_output .= '<br>'.$current_tag.' = '.$data.'<br>';
if (($in_char==1) && ($current_tag=='RACE')){
$this->chars_array[$i]['race'].=$data;
}
if (($in_char==1) && ($current_tag=='CLASS')){
$this->chars_array[$i]['class'].=$data;
}
if (($in_char==1) && ($current_tag=='LEVEL')){
$this->chars_array[$i]['level'].=$data;
}
if (($in_char==1) && ($current_tag=='TOTALRP')){
$this->chars_array[$i]['rp'].=$data;
if ($this->chars_array[$i]['laston']=='Inactive'){
$inactiverp += $data;
} else {
$guildrp += $data;
}
}
if (($in_char==1) && ($current_tag=='GUILDRANK')){
$this->chars_array[$i]['guildrank'].=$data;
}
//$this->html .= $data;
}
function parse() {
$this->xml_parser = xml_parser_create();
xml_set_object($this->xml_parser, $this);
// use case-folding so we are sure to find the tag in $map_array
xml_parser_set_option($this->xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_set_element_handler($this->xml_parser, "startElement", "endElement");
xml_set_character_data_handler($this->xml_parser, "characterData");
//xml_set_processing_instruction_handler($this->xml_parser, "PIHandler");
if (!($fp = fopen($this->xml_file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($this->xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->xml_parser)),
xml_get_current_line_number($this->xml_parser)));
}
}
}
}
// End of class
// Support functions
/*
* The function sortItems() is used for sorting, called upon by uksort()
* It uses querystring parameter $param as the sorting parameter
* querystring parameter $dir indicates ascending or descending order
*/
function sortItems($a, $b) {
global $gu, $dir, $param;
$val_a = ($gu[$a][$param]);
$val_b = ($gu[$b][$param]);
if (!$param){$param='level';}
if (!$dir){$dir='down';}
switch ($param){
case 'rp':
$val_a = $val_a - 0;
$val_b = $val_b - 0;
break;
case 'level':
$val_a = $val_a - 0;
$val_b = $val_b - 0;
break;
}
if ($dir=='up'){
if ( $val_a > $val_b ){return 1;}
if ( $val_a < $val_b ){return -1;}
if ( $val_a = $val_b ){return 0;}
} else {
if ( $val_a < $val_b ){return 1;}
if ( $val_a > $val_b ){return -1;}
if ( $val_a = $val_b ){return 0;}
}
}
/*
* returns array with Guild Rank information
*/
function guildrank($rank){
switch ($rank){
case 0: $rankname = array('Guildmaster', 'Description for Guildmaster');
break;
case 1: $rankname = array('Rank 1 Title', 'Description for Guild Rank 1');
break;
case 2: $rankname = array('Rank 2 Title', 'Description for Guild Rank 2');
break;
case 3: $rankname = array('Rank 3 Title', 'Description for Guild Rank 3');
break;
case 4: $rankname = array('Rank 4 Title', 'Description for Guild Rank 4');
break;
case 5: $rankname = array('Rank 5 Title', 'Description for Guild Rank 5');
break;
case 6: $rankname = array('Rank 6 Title', 'Description for Guild Rank 6');
break;
case 7: $rankname = array('Rank 7 Title', 'Description for Guild Rank 7');
break;
case 8: $rankname = array('Rank 8 Title', 'Description for Guild Rank 8');
break;
case 9: $rankname = array('Rank 9 Title', 'Description for Guild Rank 9');
break;
}
return $rankname;
}
/*
* returns Realm Rank/Level
*/
function realmlevel ($rp){
$rap =1;
for ($i=1; $i<11; $i++){
if ($i!=1){
for ($j=0;$j<10;$j++){
$rp_needed = ((25/3)*(pow($rap,3))) - ((25/2)*(pow($rap,2))) + ((25/6)*$rap);
if ($rp_needed <10) {
$rp_needed =0;
}
if ($rp>=$rp_needed) {
$level = 'R'.$i.'L'.$j;
}
$rap++;
}
} else {
for ($j=1;$j<10;$j++){
$rp_needed = ((25/3)*(pow($rap,3))) - ((25/2)*(pow($rap,2))) + ((25/6)*$rap);
if ($rp_needed <10) {
$rp_needed =0;
}
if ($rp>=$rp_needed) {
$level = 'R'.$i.'L'.$j;
}
$rap++;
}
}
}
return $level;
}
/*
* returns Realm Title
*/
function realmtitle($rp){
/*
* You start at Rank 1. To rise to Rank 2, you need 7125 realm points.
* Rank 3 = 61750, Rank 4 = 213875, Rank 5 = 513500, Rank 6 = 1010625, Rank 7 = 1755250, Rank 8 = 2797375, Rank 9 = 4187000
* and finally Rank 10 = 5974125
*
* These ranks are for the Albion Realm. You need to add correct values for Hibernia or Midgard.
* The list of ranks per realm can be found at
http://www.purpledragons.net/camelot/rp_chart.php */
global $realm_id;
if ($rp >=0)
$rank= array ('Guardian','Savant','Skilvakten');
if ($rp > 7125)
$rank = array ('Warder','Cosantoir','Isen Vakten');
if ($rp > 61750)
$rank = array ('Myrmidon','Brehon','Flamen Vakten');
if ($rp > 213875)
$rank = array ('Gryphon Knight','Grove Protector','Elding Vakten');
if ($rp > 513500)
$rank = array ('Eagle Knight','Raven Ardent','Stormur Vakten');
if ($rp > 1010625)
$rank = array ('Phoenix Knight','Silver Hand','Isen Herra');
if ($rp > 1755250)
$rank = array ('Alerion Knight','Thunderer','Flammen Herra');
if ($rp > 2797375)
$rank = array ('Unicorn Knight','Gilded Spear','Elding Herra');
if ($rp > 4187000)
$rank = array ('Lion Knight','Tiarna','Stormur Herra');
if ($rp > 5974125)
$rank = array ('Dragon Knight','Emerald Rider','Einherjar');
return $rank[$realm_id];
}
// Main content
$guild = new guildXML(); //instantiate class
$guild->xml_file = "http://www.camelotherald.com/guilds/Merlin/804.xml";
// the xml_file property referes to you guild XML data file.
// Example given is the Merlin/Albion guild Dragon's Blood
$guild->parse();
// Copy some variables
$gu = $guild->chars_array;
$guildrp = $guild->guildrp;
$guildtimestamp = $guild->timestamp;
$realm = $guild->realm;
switch($realm){
case 'Albion': $realm_id=0; break;
case 'Hibernia': $realm_id=1; break;
case 'Midgard': $realm_id=2; break;
default: $realm_id=0;
} // switch
$xml_file = $guild->xml_file;
$guild->destroy(); // destroy the object
$param = $_GET['param']; // retrieve sort parameter from URL querystring
uksort($gu, "sortItems"); // call upon sortItems() to sort the guild information array
reset($gu);
/*
*
* Bases stats on active vs. inactive characters and indicates differentials
*
*/
if ($_GET['active']=='no'){
$content_output.= 'Statistics for <b>'.$num_inactivechars.'</b> inactive characters out of <b>'. $totalchars .'</b> [<a href=" '.$PHP_SELF. '">see active</a>]<br>';
} else {
$content_output.='Statistics for <b>'.$num_activechars.'</b> active characters out of <b>'.$totalchars.'</b> [<a href="'.$PHP_SELF.'?active=no">see inactive</a>]<br>';
}
/*
* Creates the output table
*/
$content_output .= 'Total Realm Points: <b>'. $guildrp .'</b>';
$content_output .= '<br><span style="font-size:9pt;">Data last updated: <b>'.$guildtimestamp.'</b> :: <a href="'.$xml_file.'" target="xml">View raw XML data</a></span><hr noshade="true">
<table cellspacing="0" cellpadding="0" style="border: solid 1px #3F5471;">
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="2">
<tr bgcolor="#E5E5E5">
<form action="'. $PHP_SELF .'" method="get">
<td>
<SELECT name="param">
<option value="name">Name</option>
<option value="level">Level</option>
<option value="class">Class</option>
<option value="race">Race</option>
<option value="rp">RP</option>
<option value="guildrank">Guild Rank</option>
</select>
<SELECT name="dir">
<option value="up">Ascending</option>
<option value="down">Descending</option>
</select>
<input type="submit" value="search"><input type="hidden" name="active" value="'.$_GET['active'].'">
</td>
</form>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="5">
<tr style="font-weight: bold;" bgcolor="#CCCCCC">
<td>#</td>
<td>Name</td>
<td>Level</td>
<td>Class</td>
<td>Race</td>
<td>RPs</td>
<td>Rank</td>
<td>level</td>
<td>Guild</td>
</tr>
';
$i=1;
foreach ($gu as $key=>$value){
if ($_GET['active']!='no'){
if ($value['laston']!='Inactive') {
if ($i%2==0){$color='#CCCCCC';}else{$color='#DDDDFF';}
$content_output .= '
<tr bgcolor="'.$color.'" style="font-size:9pt;">
<td>#'.$i.'</td>
<td><b>'.$value['firstname'].' '.$value['lastname'].'</b></td>
<td>'.$value['level'].'</td>
<td>'.$value['class'].'</td>
<td>'.$value['race'].'</td>
<td align="right">';
if ($value['level']>=20){
$content_output .= number_format($value['rp']);
} else {
$content_output .= ' ';
}
$content_output .= '
</td>
<td>';
if ($value['level']>=20){
$content_output .= realmtitle($value['rp']);
} else {
$content_output .= ' ';
}
$content_output .= '
</td>
<td>';
if ($value['level']>=20){
$content_output .= realmlevel($value['rp']);
} else {
$content_output .= ' ';
}
$content_output .= '
</td>';
$guildrank = guildrank($value['guildrank']);
$content_output .= '
<td>'.$guildrank[0].'</td>
</tr>';
$i++;
}
} else {
if ($value['laston']=='Inactive') {
if ($i%2==0){$color='#CCCCCC';}else{$color='#DDDDFF';}
$content_output .= '
<tr bgcolor="'.$color.'" style="font-size:9pt;">
<td>#'.$i.'</td>
<td><b>'.$value['firstname'].' '.$value['lastname'].'</b></td>
<td>'.$value['level'].'</td>
<td>'.$value['class'].'</td>
<td>'.$value['race'].'</td>
<td align="right">';
if ($value['level']>=20){
$content_output .= number_format($value['rp']);
} else {
$content_output .= ' ';
}
$content_output .= '
</td>
<td>';
if ($value['level']>=20){
$content_output .= realmtitle($value['rp']);
} else {
$content_output .= ' ';
}
$content_output .= '
</td>
<td>';
if ($value['level']>=20){
$content_output .= realmlevel($value['rp']);
} else {
$content_output .= ' ';
}
$content_output .= '
</td>';
$guildrank = guildrank($value['guildrank']);
$content_output .= '
<td>'.$guildrank[0].'</td>
</tr>';
$i++;
}
}
}
$content_output .= '
</table>
</td>
</tr>
</table>';
/*
For Euro guilds: uncomment the following instructions
*/
// $content_output = utf8_decode($content_output); // handles UTF8 character encoding
/*
* Outputs table; end of script
*/
print $content_output;
It's to display character from a guild in the mmorpg Dark Age of Camelot.
I'm not sure if I'm going about the right way to display this data.
Any help would be most appreciated