ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/www/src/content/recent.content.php
Revision: 1.8
Committed: Wed Apr 7 19:35:22 2010 UTC (14 years, 2 months ago) by sf-dustfinger
Branch: MAIN
CVS Tags: HEAD
Changes since 1.7: +1 -1 lines
Log Message:
Update to change the phrase 'always existed' to 'before known time' in the recent player list.

File Contents

# Content
1 <div id="content">
2 <h2>Recent Deliantra Players</h2>
3
4 <p>
5 This list is updated every ten minutes to show who is online.
6 </p>
7
8 <?php
9
10 /**
11 * array timeDiff(int $t1, int $t2)
12 * $t1 and $t2 must be UNIX timestamp integers, order does not matter
13 * returns array broken down into years/months/weeks/etc.
14 */
15 function timeDiff($t1, $t2)
16 {
17 if($t1 > $t2)
18 {
19 $time1 = $t2;
20 $time2 = $t1;
21 }
22 else
23 {
24 $time1 = $t1;
25 $time2 = $t2;
26 }
27 $diff = array(
28 'years' => 0,
29 'months' => 0,
30 'weeks' => 0,
31 'days' => 0,
32 'hours' => 0,
33 'minutes' => 0,
34 'seconds' =>0
35 );
36
37 foreach(array('years','months','weeks','days','hours','minutes','seconds')
38 as $unit)
39 {
40 while(TRUE)
41 {
42 $next = strtotime("+1 $unit", $time1);
43 if($next < $time2)
44 {
45 $time1 = $next;
46 $diff[$unit]++;
47 }
48 else
49 {
50 break;
51 }
52 }
53 }
54 return($diff);
55 }
56
57 function timeDifferenceText($pastDate)
58 {
59 $rightNow = time();
60 $difference = timeDiff($rightNow,$pastDate);
61
62 if($difference['years']>0)
63 {
64 if($difference['years']==1)
65 {
66 $difference = " 1 year ago";
67 }
68 else
69 {
70 $difference = $difference['years'] . " years ago";
71 }
72 }
73 else if($difference['months']>0)
74 {
75 if($difference['months']==1)
76 {
77 $difference = " 1 month ago";
78 }
79 else
80 {
81 $difference = $difference['months'] . " months ago";
82 }
83 }
84 else if($difference['weeks']>0)
85 {
86 if($difference['weeks']==1)
87 {
88 $difference = " 1 week ago";
89 }
90 else
91 {
92 $difference = $difference['weeks'] . " weeks ago";
93 }
94 }
95 else if($difference['days']>0)
96 {
97 if($difference['days']==1)
98 {
99 $difference = "1 day ago";
100 }
101 else
102 {
103 $difference = $difference['days'] . " days ago";
104 }
105 }
106 else if($difference['hours']>0)
107 {
108 if($difference['hours']==1)
109 {
110 $difference = " 1 hour ago";
111 }
112 else
113 {
114 $difference = $difference['hours'] . " hours ago";
115 }
116 }
117 else if($difference['minutes'])
118 {
119 if($difference['minutes']==1)
120 {
121 $difference = " 1 minute ago";
122 }
123 else
124 {
125 $difference = $difference['minutes'] . " minutes ago";
126 }
127 }
128 else
129 {
130 $difference = " Just now";
131 }
132
133 return $difference;
134 }
135
136 //Generate the highscore table.
137
138 $jsonScoresUnparsed = file_get_contents("recent.json");
139
140 $jsonArray = json_decode($jsonScoresUnparsed);
141
142 $timestamp = $jsonArray->date;
143 $version = $jsonArray->version;
144 $players = $jsonArray->data;
145
146 echo "<table style='width: 100%'>\n";
147 echo "<tr><th>Player Name</th><th>Last Login</th><th>Last Logout</th><th>Birthdate</th><th style='text-align: right;'>Logins</th><th style='text-align: right;'>Deaths</th><th>OS</th><th>Go</th></tr>";
148
149 $number = 0;
150 $size = 100;
151 foreach($players as $player)
152 {
153 echo "<tr style='font-size: $size%'>";
154 $number++;
155
156 if($number>50 & $size>=50)
157 {
158 $size -= .5; //Decrease the font size.
159 }
160
161 $name = $player[0];
162 $birthdate = $player[1];
163 $lastLogin = $player[2];
164 $loginCount = $player[3];
165 $lastLogout = $player[4];
166 $client = $player[5];
167 $deaths = $player[6];
168 $location = $player[7];
169
170 /*
171 //A quick PHP side filter. If needed uncomment.
172
173 $ancientTest = timeDiff(time(),$lastLogin);
174
175 if($ancientTest['months']>0)
176 {
177 break; //Haven't logged in for a month.... they aren't exactly recent or online.
178 }
179 */
180
181 if($deaths==="?")
182 {
183 $deaths = 0;
184 }
185
186 $loginDifference = timeDifferenceText($lastLogin);
187 if($lastLogout==null)
188 {
189 $logoutDifference = "Currently online";
190 }
191 else
192 {
193 $logoutDifference = timeDifferenceText($lastLogout);
194 }
195 if($birthdate==null)
196 {
197 $birthdateDifference = "Before known time";
198 }
199 else
200 {
201 $birthdateDifference = timeDifferenceText($birthdate);
202 }
203
204 if(stripos($client,"darwin")!==FALSE)
205 {
206 $operatingSystem = "mac";
207 }
208 else if(stripos($client,"unix")!==FALSE)
209 {
210 $operatingSystem = "mac";
211 }
212 else if(stripos($client,"MSWin32")!==FALSE)
213 {
214 $operatingSystem = "win";
215 }
216 else if(stripos($client,"linux")!==FALSE)
217 {
218 $operatingSystem = "lin";
219 }
220
221 if($logoutDifference==="Currently online")
222 {
223 $loggedInColor = "#96FFB2";
224 echo "<td style='background-color: $loggedInColor;'>$name</td><td style='background-color: $loggedInColor;'>$loginDifference</td><td style='background-color: $loggedInColor;'>$logoutDifference</td><td style='background-color: $loggedInColor;'>$birthdateDifference</td><td style='background-color: $loggedInColor;' align='right'>$loginCount</td><td style='background-color: $loggedInColor;' align='right'>$deaths</td>\n";
225 echo "<td align='center' style='background-color: $loggedInColor;'><img title='$client' style='width: 20px; height: 20px;' src='images/$operatingSystem.png' /></td>\n";
226
227 if(stripos($location,"~")!==FALSE or stripos($location,"?random")!==FALSE)
228 {
229 echo "<td align='center' style='background-color: $loggedInColor;'><img title='$name is on a map you can not see: $location' style='width: 20px; height: 20px;' src='images/no.png' /></a></td>\n";
230 }
231 else
232 {
233 echo "<td align='center' style='background-color: $loggedInColor;'><a href='http://maps.deliantra.net$location'><img title='$location' style='width: 20px; height: 20px;' src='images/arrow.png' /></a></td>\n";
234 }
235 }
236 else
237 {
238 echo "<td>$name</td><td>$loginDifference</td><td>$logoutDifference</td><td>$birthdateDifference</td><td align='right'>$loginCount</td><td align='right'>$deaths</td>\n";
239 echo "<td align='center'><img title='$client' style='width: 20px; height: 20px;' src='images/$operatingSystem.png' /></td>\n";
240
241 if(stripos($location,"~")!==FALSE or stripos($location,"?random")!==FALSE)
242 {
243 echo "<td align='center'><img title='$name is on a map you can not see: $location' style='width: 20px; height: 20px;' src='images/no.png' /></a></td>\n";
244 }
245 else
246 {
247 echo "<td align='center'><a href='http://maps.deliantra.net$location'><img title='$location' style='width: 20px; height: 20px;' src='images/arrow.png' /></a></td>\n";
248 }
249 }
250
251 echo "</tr>\n";
252 }
253
254 echo "</table>\n";
255 ?>
256
257 </div>
258
259