00001 <?php
00013 require_once(dirname(__FILE__).'/base.php');
00014
00021 class LFSWorldHostsList extends LFSWorldDataProvider
00022 {
00027 var $m_sURL = 'http:
00028
00033 var $m_aSrcMetaData = array('lifeTime' => 90, 'actualTarpit' => 60);
00034
00078 function parse($rawList, &$outputList)
00079 {
00080
00081 $offset = 0; $t=0;
00082
00083 while(true)
00084 {
00085 $blob = substr($rawList, $offset, 53);
00086
00087 if(strlen($blob) == 53)
00088 {
00089 $data = $racers = array();
00090
00091
00092 $data = unpack('a32host_name/C1server_type/C1major_version/C1minor_version/C1test_version/C1track/C1config/C1reversed/C1max_players/C4cars/C4rules/C1laps/C1qualify_mins/x2/C1players', $blob);
00093 $offset+= 53;
00094
00095
00096 for($i=0; $i < $data['players']; $i++)
00097 {
00098 $racers[] = trim(substr($rawList, $offset, 24));
00099 $offset += 24;
00100 }
00101
00102
00103 $data['hours'] = 0;
00104 if($data['laps'] > 100)
00105 {
00106 if($data['laps'] < 191)
00107 {
00108
00109 $data['laps'] = (($data['laps'] - 100) * 10) + 100;
00110 }
00111 else
00112 {
00113
00114 $data['hours'] = $data['laps'] - 190;
00115 $data['laps'] = 0;
00116 }
00117 }
00118
00119
00120
00121
00122 $data['cars'] = strrev( str_pad(decbin($data['cars4']), 8, '0', STR_PAD_LEFT).
00123 str_pad(decbin($data['cars3']), 8, '0', STR_PAD_LEFT).
00124 str_pad(decbin($data['cars2']), 8, '0', STR_PAD_LEFT).
00125 str_pad(decbin($data['cars1']), 8, '0', STR_PAD_LEFT));
00126
00127 $data['rules'] = strrev(str_pad(decbin($data['rules4']), 8, '0', STR_PAD_LEFT).
00128 str_pad(decbin($data['rules3']), 8, '0', STR_PAD_LEFT).
00129 str_pad(decbin($data['rules2']), 8, '0', STR_PAD_LEFT).
00130 str_pad(decbin($data['rules1']), 8, '0', STR_PAD_LEFT));
00131
00132
00133 $data['track'] = $data['track'].$data['config'].$data['reversed'];
00134
00135
00136 unset($data['config'], $data['reversed'],
00137 $data['cars1'], $data['cars2'], $data['cars3'], $data['cars4'],
00138 $data['rules1'], $data['rules2'], $data['rules3'], $data['rules4']);
00139
00140
00141 $data['racers'] = $racers;
00142
00143
00144 $data['major_version'] /= 10;
00145 $data['minor_version'] = chr($data['minor_version']);
00146
00147
00148 $outputList[] = $data;
00149 }
00150 else
00151 {
00152 break;
00153 }
00154 }
00155 return true;
00156 }
00157 }
00158
00159 ?>