WP-UserOnline - Version 2.06

Version Description

Download this release

Release Info

Developer GamerZ
Plugin Icon WP-UserOnline
Version 2.06
Comparing to
See all releases

Version 2.06

readme.html ADDED
@@ -0,0 +1,478 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5
+ <title>WP-UserOnline 2.06 Readme</title>
6
+ <style type="text/css" media="screen">
7
+ /* Default Style */
8
+ BODY {
9
+ font-family: Verdana, Arial;
10
+ font-size: 12px;
11
+ color: #000000;
12
+ background: #FFFFFF;
13
+ }
14
+ P {
15
+ padding-left: 10px;
16
+ }
17
+ BLOCKQUOTE {
18
+ margin: 10px 20px 0px 20px;
19
+ padding: 10px;
20
+ border: 1px solid #8d8d8d;
21
+ background-color: #f5f5f5;
22
+ overflow: auto;
23
+ }
24
+ LI {
25
+ margin-top: 20px;
26
+ }
27
+ UL LI UL LI {
28
+ margin-top: 10px;
29
+ }
30
+ A, A:active, A:link, A:visited {
31
+ color: #2d3a4c;
32
+ text-decoration: none;
33
+ }
34
+ A:hover {
35
+ color: #5577a5;
36
+ text-decoration: underline;
37
+ }
38
+ /* Place Holder Style */
39
+ #Container {
40
+ width: 780px;
41
+ margin-left: auto;
42
+ margin-right: auto;
43
+ }
44
+ #Content {
45
+ background-color: #fafafa;
46
+ border: 1px solid #a2b6cb;
47
+ padding: 10px;
48
+ margin-top: -13px;
49
+ }
50
+ /* Title Style */
51
+ #Title {
52
+ font-family: Verdana, Arial;
53
+ font-size: 22px;
54
+ font-weight: bold;
55
+ color: #389aff;
56
+ border-bottom: 1px solid #389aff;
57
+ margin-bottom: 10px;
58
+ }
59
+ .SubTitle {
60
+ font-family: Verdana, Arial;
61
+ font-size: 18px;
62
+ font-weight: bold;
63
+ color: #5b87b4;
64
+ }
65
+ .SubSubTitle {
66
+ font-family: Verdana, Arial;
67
+ font-size: 14px;
68
+ font-weight: bold;
69
+ color: #73a4d6;
70
+ }
71
+ /* Tabs */
72
+ UL#Tabs {
73
+ font-family: Verdana, Arial;
74
+ font-size: 12px;
75
+ font-weight: bold;
76
+ list-style-type: none;
77
+ padding-bottom: 28px;
78
+ border-bottom: 1px solid #a2b6cb;
79
+ margin-bottom: 12px;
80
+ z-index: 1;
81
+ }
82
+ #Tabs LI.Tab {
83
+ float: right;
84
+ height: 25px;
85
+ background-color: #deedfb;
86
+ margin: 2px 0px 0px 5px;
87
+ border: 1px solid #a2b6cb;
88
+ }
89
+ #Tabs LI.Tab A {
90
+ float: left;
91
+ display: block;
92
+ color: #666666;
93
+ text-decoration: none;
94
+ padding: 5px;
95
+ }
96
+ #Tabs LI.Tab A:hover {
97
+ background-color: #bfe0fe;
98
+ border-bottom: 1px solid #bfe0fe;
99
+ }
100
+ /* Selected Tab */
101
+ #Tabs LI.SelectedTab {
102
+ float: right;
103
+ height: 25px;
104
+ background-color: #fafafa;
105
+ margin: 2px 0px 0px 5px;
106
+ border-top: 1px solid #a2b6cb;
107
+ border-right: 1px solid #a2b6cb;
108
+ border-bottom: 1px solid #fafafa;
109
+ border-left: 1px solid #a2b6cb;
110
+ }
111
+ #Tabs LI.SelectedTab A {
112
+ float: left;
113
+ display: block;
114
+ color: #666666;
115
+ text-decoration: none;
116
+ padding: 5px;
117
+ cursor: default;
118
+ }
119
+ /* Copyright */
120
+ #Copyright {
121
+ text-align: center;
122
+ }
123
+ </style>
124
+ <script type="text/javascript">
125
+ // Index Page
126
+ function index() {
127
+ // Tab
128
+ document.getElementById('IndexTab').className = 'SelectedTab';
129
+ document.getElementById('InstallTab').className = 'Tab';
130
+ document.getElementById('UpgradeTab').className = 'Tab';
131
+ document.getElementById('UsageTab').className = 'Tab';
132
+ // Page
133
+ document.getElementById('Index').style.display= 'block';
134
+ document.getElementById('IndexTab').className = 'SelectedTab';
135
+ document.getElementById('Install').style.display = 'none';
136
+ document.getElementById('Upgrade').style.display = 'none';
137
+ document.getElementById('Usage').style.display = 'none';
138
+ }
139
+ // Installation Page
140
+ function install() {
141
+ // Tab
142
+ document.getElementById('IndexTab').className = 'Tab';
143
+ document.getElementById('InstallTab').className = 'SelectedTab';
144
+ document.getElementById('UpgradeTab').className = 'Tab';
145
+ document.getElementById('UsageTab').className = 'Tab';
146
+ // Page
147
+ document.getElementById('Index').style.display= 'none';
148
+ document.getElementById('Install').style.display = 'block';
149
+ document.getElementById('Upgrade').style.display = 'none';
150
+ document.getElementById('Usage').style.display = 'none';
151
+ }
152
+ // Upgrade Page
153
+ function upgrade() {
154
+ // Tab
155
+ document.getElementById('IndexTab').className = 'Tab';
156
+ document.getElementById('InstallTab').className = 'Tab';
157
+ document.getElementById('UpgradeTab').className = 'SelectedTab';
158
+ document.getElementById('UpgradeTab').href = 'Tab';
159
+ document.getElementById('UsageTab').className = 'Tab';
160
+ // Page
161
+ document.getElementById('Index').style.display= 'none';
162
+ document.getElementById('Install').style.display = 'none';
163
+ document.getElementById('Upgrade').style.display = 'block';
164
+ document.getElementById('Usage').style.display = 'none';
165
+ }
166
+ // Usage Page
167
+ function usage() {
168
+ // Tab
169
+ document.getElementById('IndexTab').className = 'Tab';
170
+ document.getElementById('InstallTab').className = 'Tab';
171
+ document.getElementById('UpgradeTab').className = 'Tab';
172
+ document.getElementById('UsageTab').className = 'SelectedTab';
173
+ // Page
174
+ document.getElementById('Index').style.display= 'none';
175
+ document.getElementById('Install').style.display = 'none';
176
+ document.getElementById('Upgrade').style.display = 'none';
177
+ document.getElementById('Usage').style.display = 'block';
178
+ }
179
+ </script>
180
+ </head>
181
+ <body>
182
+ <div id="Container">
183
+ <!-- Title -->
184
+ <div id="Title">WP-UserOnline 2.06&nbsp;&nbsp;&nbsp;<span style="color: #aaaaaa;">Readme</span></div>
185
+
186
+ <!-- Tabs -->
187
+ <ul id="Tabs">
188
+ <li id="UsageTab" class="Tab"><a href="#Usage" onclick="usage(); return false;" title="Usage Instructions">Usage</a></li>
189
+ <li id="UpgradeTab" class="Tab"><a href="#Upgrade" onclick="upgrade(); return false;" title="Upgrade Instructions">Upgrade</a></li>
190
+ <li id="InstallTab" class="Tab"><a href="#Installation" onclick="install(); return false;" title="Installation Instructions">Installation</a></li>
191
+ <li id="IndexTab" class="SelectedTab"><a href="#Index" onclick="index(); return false;" title="Index Instructions">Index</a></li>
192
+ </ul>
193
+
194
+ <!-- Content -->
195
+ <div id="Content">
196
+ <!-- Index -->
197
+ <div id="Index">
198
+ <div class="SubTitle">&raquo; Index</div>
199
+ <div class="SubSubTitle">Plugin Information</div>
200
+ <p><b>Author</b><br /><b>&raquo;</b> Lester 'GaMerZ' Chan</p>
201
+ <p>
202
+ <b>EMail:</b><br /><b>&raquo;</b>
203
+ <script type="text/javascript">
204
+ /* <![CDATA[*/
205
+ document.write(' <a href="mailto:gamerz84@hotmail.com?Subject=WP-UserOnline%202.06%20Support" title="EMail To gamerz84@hotmail.com">gamerz84@hotmail.com</a>');
206
+ /* ]]> */
207
+ </script>
208
+ </p>
209
+ <p><b>Website:</b><br /><b>&raquo;</b> <a href="http://www.lesterchan.net/" title="http://www.lesterchan.net/">http://www.lesterchan.net/</a></p>
210
+ <p><b>Demo:</b><br /><b>&raquo;</b> <a href="http://www.lesterchan.net/wordpress/useronline/" title="http://www.lesterchan.net/wordpress/useronline/">http://www.lesterchan.net/wordpress/useronline/</a></p>
211
+ <p><b>Documentation:</b><br /><b>&raquo;</b> <a href="http://dev.wp-plugins.org/wiki/wp-useronline" title="http://dev.wp-plugins.org/wiki/wp-useronline">http://dev.wp-plugins.org/wiki/wp-useronline</a></p>
212
+ <p><b>Development:</b><br /><b>&raquo;</b> <a href="http://dev.wp-plugins.org/browser/wp-useronline/" title="http://dev.wp-plugins.org/browser/wp-useronline/">http://dev.wp-plugins.org/browser/wp-useronline/</a></p>
213
+ <p><b>Support Forums:</b><br /><b>&raquo;</b> <a href="http://forums.lesterchan.net/index.php?board=21.0" title="http://forums.lesterchan.net/index.php?board=21.0">http://forums.lesterchan.net/index.php?board=21.0</a></p>
214
+ <p><b>Updated:</b><br /><b>&raquo;</b> 2nd January 2007</p>
215
+ <p><b>Note:</b><br /><b>&raquo;</b> I have localize WP-UserOnline, if there is any bug or some text is not translated properly, please contact me immediately.</p>
216
+ <div class="SubSubTitle">Changelog</div>
217
+ <ul>
218
+ <li>
219
+ <b>Version 2.06 (02-01-2007)</b>
220
+ <ul>
221
+ <li>NEW: useronline.php Now Handles The AJAX Processing Instead Of index.php</li>
222
+ <li>NEW: Localize WP-UserOnline</li>
223
+ <li>FIXED: JavaScript onLoad Function Conflict By <a href="http://an-archos.com/anarchy-media-player/">zeug</a></li>
224
+ <li>FIXED: AJAX Not Working On Servers Running On PHP CGI</li>
225
+ <li>FIXED: IP2Nation Will Now Work Whether Or Not WP-Stats Is Activated</li>
226
+ </ul>
227
+ </li>
228
+ <li>
229
+ <b>Version 2.05 (01-10-2006)</b>
230
+ <ul>
231
+ <li>NEW: UserOnline Is Now Embedded Into A Page, And Hence No More Integrating Of UserOnline Page (Removed wp-useronline.php)</li>
232
+ <li>NEW: Changed In WP-UserOnline Structure: Members Mean Registered Users and Guests Mean Comment Authors</li>
233
+ <li>NEW: get_users_browsing_site(false) And get_users_browsing_page(false) Will Now Return An Array Containing Total Users, Total Members, Total Guests and Total Bots Online</li>
234
+ <li>NEW: Added Widget Title Option To WP-UserOnline Widget</li>
235
+ <li>FIXED: Invalid IP Error</li>
236
+ <li>FIXED: If Site URL Doesn't Match WP Option's Site URL, WP-UserOnline Will Not Work</li>
237
+ </ul>
238
+ </li>
239
+ <li>
240
+ <b>Version 2.04 (01-07-2006)</b>
241
+ <ul>
242
+ <li>NEW: AJAX Is Now Used For Updating Users Online Every 1 Minute Without Refreshing The Page</li>
243
+ <li>NEW: You Can Now Place Users Online Count And Users Browsing Site Data On The Sidebar As A Widget</li>
244
+ <li>NEW: UserOnline Options Panel And The Code That WP-UserOnline Generated Is XHTML 1.0 Transitional</li>
245
+ <li>NEW: Added Useronline Options In WP Administration Panel Under 'Options -> Useronline'</li>
246
+ <li>NEW: If You Have <a href="http://frenchfragfactory.net/ozh/archives/2004/08/27/ip-to-nation-plugin/">ip2nation Plugin</a> Installed, The User's/Guest's Country Flag Will Be Displayed</li>
247
+ </ul>
248
+ </li>
249
+ <li>
250
+ <b>Version 2.03 (01-04-2006)</b>
251
+ <ul>
252
+ <li>NEW: Added get_users_browsing_site(); To Display Users Browsing The Site</li>
253
+ <li>FIXED: wp-stats.php Link</li>
254
+ <li>FIXED: Some Grammer Errors, Credit To xclouds (http://www.xclouds.com/)</li>
255
+ </ul>
256
+ </li>
257
+ <li>
258
+ <b>Version 2.02 (01-03-2006)</b>
259
+ <ul>
260
+ <li>NEW: No More Install/Upgrade File, It Will Install/Upgrade When You Activate The Plugin.</li>
261
+ <li>FIXED: IP 'Unknown' Error, Credit To Brian Layman (http://www.knitchat.com/)</li>
262
+ <li>FIXED: ON DUPLICATE KEY Error, Credit To Brian Layman (http://www.knitchat.com/)</li>
263
+ <li>FIXED: DUPLICATE KEY Error By Using DELETE First, Credit To Jody Cairns (http://steelwhitetable.org/blog/)</li>
264
+ </ul>
265
+ </li>
266
+ <li>
267
+ <b>Version 2.01 (01-02-2006)</b>
268
+ <ul>
269
+ <li>NEW: Added Users Browsing Page</li>
270
+ <li>NEW: Added Most Users Ever Online</li>
271
+ <li>FIXED: Added UNIQUE Key Instead Of Primary Key To Test Whether It Will Solve Duplicate Entry Errors</li>
272
+ <li>FIXED: Quotes Issue In Page Title</li>
273
+ </ul>
274
+ </li>
275
+ <li>
276
+ <b>Version 2.00 (01-01-2006)</b>
277
+ <ul>
278
+ <li>NEW: Compatible With Only WordPress 2.0</li>
279
+ <li>NEW: Better Installer</li>
280
+ <li>NEW: GPL License Added</li>
281
+ <li>NEW: Page Title Added To wp-useronline.php</li>
282
+ <li>NEW: Added Extra Bots, Credit To Greg Perry (http://www.gregrperry.com/)</li>
283
+ <li>FIXED: Cleaner Codes</li>
284
+ </ul>
285
+ </li>
286
+ </ul>
287
+ </div>
288
+
289
+ <!-- Installation Instructions -->
290
+ <div id="Install" style="display: none;">
291
+ <div class="SubTitle">&raquo; Installation Instructions</div>
292
+ <ol>
293
+ <li>
294
+ Open <b>wp-content/plugins</b> Folder
295
+ </li>
296
+ <li>
297
+ Put:
298
+ <blockquote>Folder: useronline</blockquote>
299
+ </li>
300
+ <li>
301
+ <b>Activate</b> WP-UserOnline Plugin
302
+ </li>
303
+ <li>
304
+ Refer To <b>Usage</b> For Further Instructions
305
+ </li>
306
+ </ol>
307
+ </div>
308
+
309
+ <!-- Upgrade Instructions -->
310
+ <div id="Upgrade" style="display: none;">
311
+ <div class="SubTitle">&raquo; Upgrade Instructions</div>
312
+ <div class="SubSubTitle">From v1.0x To v2.06</div>
313
+ <ol>
314
+ <li>
315
+ <b>Deactivate</b> WP-UserOnline Plugin
316
+ </li>
317
+ <li>
318
+ Open <b>Root WordPress</b> Folder
319
+ </li>
320
+ <li>
321
+ Delete file if exists:
322
+ <blockquote>File: wp-useronline.php</blockquote>
323
+ </li>
324
+ <li>
325
+ Open <b>wp-content/plugins</b> Folder
326
+ </li>
327
+ <li>
328
+ Put:
329
+ <blockquote>Folder: useronline</blockquote>
330
+ </li>
331
+ <li>
332
+ Delete file if exists:
333
+ <blockquote>File: useronline.php</blockquote>
334
+ </li>
335
+ <li>
336
+ Open <b>wp-content/plugins/useronline</b> Folder
337
+ </li>
338
+ <li>
339
+ Delete file if exists:
340
+ <blockquote>File: wp-useronline.php</blockquote>
341
+ </li>
342
+ <li>
343
+ <b>Activate</b> WP-UserOnline Plugin
344
+ </li>
345
+ <li>
346
+ Refer To <b>Usage</b> For Further Instructions
347
+ </li>
348
+ </ol>
349
+ </div>
350
+
351
+ <!-- Usage Instructions -->
352
+ <div id="Usage" style="display: none;">
353
+ <div class="SubTitle">&raquo; Usage Instructions</div>
354
+ <div class="SubSubTitle">General Usage (Without Widget)</div>
355
+ <ol>
356
+ <li>
357
+ Open <b>wp-content/themes/&lt;YOUR THEME NAME&gt;/sidebar.php</b>
358
+ </li>
359
+ <li>
360
+ Add Anywhere:
361
+ <blockquote>
362
+ &lt;?php if (function_exists('useronline')): ?&gt;<br />
363
+ &nbsp;&nbsp;&nbsp;&lt;li&gt;<br />
364
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h2&gt;UserOnline&lt;/h2&gt;<br />
365
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&gt;<br />
366
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;div id="useronline-count"&gt;&lt;?php get_useronline(); ?&gt;&lt;/div&gt;&lt;/li&gt;<br />
367
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;<br />
368
+ &nbsp;&nbsp;&nbsp;&lt;/li&gt;<br />
369
+ &lt;?php endif; ?&gt;
370
+ </blockquote>
371
+ </li>
372
+ </ol>
373
+ <div class="SubSubTitle">General Usage (With Widget)</div>
374
+ <ol>
375
+ <li>
376
+ <b>Activate</b> WP-UserOnline Widget Plugin
377
+ </li>
378
+ <li>
379
+ Go to 'WP-Admin -> Presentation -> Sidebar Widgets'
380
+ </li>
381
+ <li>
382
+ <b>Drag</b> the UserOnline Widget to your sidebar
383
+ </li>
384
+ <li>
385
+ You can <b>configure</b> the UserOnline Widget by clicking on the configure icon
386
+ </li>
387
+ <li>
388
+ Click 'Save changes'
389
+ </li>
390
+ <li>
391
+ Scroll down for instructions on how to create a <b>UserOnline Page</b>.
392
+ </li>
393
+ </ol>
394
+ <div class="SubSubTitle">UserOnline Page</div>
395
+ <ol>
396
+ <li>
397
+ Go to 'WP-Admin -> Write -> Write Page'
398
+ </li>
399
+ <li>
400
+ Type any title you like in the post's title area
401
+ </li>
402
+ <li>
403
+ Type '<b>[page_useronline]</b>' in the post's content area (without the quotes)
404
+ </li>
405
+ <li>
406
+ Type '<b>useronline</b>' in the post's slug area (without the quotes)
407
+ </li>
408
+ <li>
409
+ Click 'Publish'
410
+ </li>
411
+ <li>If you <b>ARE NOT</b> using nice permalinks, you need to go to 'WP-Admin -> Options -> Useronline' and under '<b>UserOnline URL</b>', you need to fill in the URL to the UserOnline Page you created above.</li>
412
+ </ol>
413
+ <div class="SubSubTitle">Note</div>
414
+ <ul>
415
+ <li>
416
+ The AJAX feature might not work if your blog homepage directory is different from the directory you installed WordPress in. To solve this issue,
417
+ <ol>
418
+ <li>
419
+ Open <b>useronline.php</b>
420
+ </li>
421
+ <li>
422
+ Find:
423
+ <blockquote>
424
+ echo "\t".'var useronline_ajax_url = \''.$useronline_ajax_url.'/wp-content/plugins/useronline/useronline.php\';'."\n";
425
+ </blockquote>
426
+ </li>
427
+ <li>
428
+ Replace:
429
+ <blockquote>
430
+ echo "\t".'var useronline_ajax_url = \''.$useronline_ajax_url.'/WORDPRESS_DIRECTORY/wp-content/plugins/useronline/useronline.php\';'."\n";
431
+ </blockquote>
432
+ <p>Where <b>WORDPRESS_DIRECTORY</b> should be the directory name which you installed WordPress in. Note the backslash after your WordPress Directory, you need that.</p>
433
+ </li>
434
+ </ol>
435
+ </li>
436
+ </ul>
437
+ <div class="SubSubTitle">UserOnline Stats (Outside WP Loop)</div>
438
+ <ul>
439
+ <li>
440
+ To Display <b>Most Number Of Users Online</b>
441
+ </li>
442
+ <li>
443
+ Use:
444
+ <blockquote>
445
+ &lt;?php if (function_exists('get_most_useronline')): ?&gt;<br />
446
+ &nbsp;&nbsp;&nbsp;&lt;p&gt;Most Users Ever Online Is &lt;?php get_most_useronline(); ?&gt; On &lt;?php get_most_useronline_date(); ?&gt;&lt;/p&gt;<br />
447
+ &lt;?php endif; ?&gt;
448
+ </blockquote>
449
+ </li>
450
+ <li>
451
+ To Display <b>Users Browsing Site</b>
452
+ </li>
453
+ <li>
454
+ Use:
455
+ <blockquote>
456
+ &lt;?php if (function_exists('get_users_browsing_site')): ?&gt;<br />
457
+ &nbsp;&nbsp;&nbsp;&lt;div id="useronline-browsing-site"&gt;&lt;?php get_users_browsing_site(); ?&gt;&lt;/div&gt;<br />
458
+ &lt;?php endif; ?&gt;
459
+ </blockquote>
460
+ </li>
461
+ <li>
462
+ To Display <b>Users Browsing A Page</b>
463
+ </li>
464
+ <li>
465
+ Use:
466
+ <blockquote>
467
+ &lt;?php if (function_exists('get_users_browsing_page')): ?&gt;<br />
468
+ &nbsp;&nbsp;&nbsp;&lt;div id="useronline-browsing-page"&gt;&lt;?php get_users_browsing_page(); ?&gt;&lt;/div&gt;<br />
469
+ &lt;?php endif; ?&gt;
470
+ </blockquote>
471
+ </li>
472
+ </ul>
473
+ </div>
474
+ </div>
475
+ </div>
476
+ <p id="Copyright">WP-UserOnline 2.06<br />Copyright &copy; 2006 Lester 'GaMerZ' Chan. All Rights Reserved.</p>
477
+ </body>
478
+ </html>
useronline/useronline-js.js ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ +----------------------------------------------------------------+
3
+ | |
4
+ | WordPress 2.0 Plugin: WP-UserOnline 2.06 |
5
+ | Copyright (c) 2006 Lester "GaMerZ" Chan |
6
+ | |
7
+ | File Written By: |
8
+ | - Lester "GaMerZ" Chan |
9
+ | - http://www.lesterchan.net |
10
+ | |
11
+ | File Information: |
12
+ | - Useronline Javascript File |
13
+ | - wp-content/plugins/useronline/useronline-js.js |
14
+ | |
15
+ +----------------------------------------------------------------+
16
+ */
17
+
18
+
19
+
20
+ // UserOnline JavaScript Init
21
+ function useronline_init() {
22
+ // Check Users Count
23
+ if(document.getElementById('useronline-count') != null ) {
24
+ setInterval("get_useronline_count()", useronline_timeout);
25
+ }
26
+ // Check Users Browsing Site
27
+ if(document.getElementById('useronline-browsing-site') != null ) {
28
+ setInterval("get_useronline_browsingsite()", useronline_timeout);
29
+ }
30
+ // Check Users Browsing Page
31
+ if(document.getElementById('useronline-browsing-page') != null) {
32
+ setInterval("get_useronline_browsingpage()", useronline_timeout);
33
+ }
34
+ }
35
+
36
+
37
+ // Get UserOnline Count
38
+ function get_useronline_count() {
39
+ useronline_count = new sack(useronline_ajax_url);
40
+ useronline_count.setVar("useronline_mode", 'useronline_count');
41
+ useronline_count.method = 'GET';
42
+ useronline_count.element = 'useronline-count';
43
+ useronline_count.runAJAX();
44
+ useronline_count = null;
45
+ }
46
+
47
+
48
+ // Get Users Browsing Site
49
+ function get_useronline_browsingsite() {
50
+ useronline_browsingsite = new sack(useronline_ajax_url);
51
+ useronline_browsingsite.setVar("useronline_mode", 'useronline_browsingsite');
52
+ useronline_browsingsite.method = 'GET';
53
+ useronline_browsingsite.element = 'useronline-browsing-site';
54
+ useronline_browsingsite.runAJAX();
55
+ useronline_browsingsite = null;
56
+ }
57
+
58
+
59
+ // Get Users Browsing Page
60
+ function get_useronline_browsingpage() {
61
+ useronline_browsingpage = new sack(useronline_ajax_url);
62
+ useronline_browsingpage.setVar("useronline_mode", 'useronline_browsingpage');
63
+ useronline_browsingpage.method = 'GET';
64
+ useronline_browsingpage.element = 'useronline-browsing-page';
65
+ useronline_browsingpage.runAJAX();
66
+ useronline_browsingpage = null;
67
+ }
68
+
69
+
70
+ // Init UserOnline
71
+ addLoadEvent = function(f) { var old = window.onload
72
+ if (typeof old != 'function') window.onload = f
73
+ else { window.onload = function() { old(); f() }}
74
+ }
75
+ addLoadEvent(useronline_init);
useronline/useronline-options.php ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ +----------------------------------------------------------------+
4
+ | |
5
+ | WordPress 2.0 Plugin: WP-UserOnline 2.06 |
6
+ | Copyright (c) 2005 Lester "GaMerZ" Chan |
7
+ | |
8
+ | File Written By: |
9
+ | - Lester "GaMerZ" Chan |
10
+ | - http://www.lesterchan.net |
11
+ | |
12
+ | File Information: |
13
+ | - Useronline Options Page |
14
+ | - wp-content/plugins/useronline/useronline-options.php |
15
+ | |
16
+ +----------------------------------------------------------------+
17
+ */
18
+
19
+
20
+ ### Variables Variables Variables
21
+ $base_name = plugin_basename('useronline/useronline-options.php');
22
+ $base_page = 'admin.php?page='.$base_name;
23
+
24
+ ### If Form Is Submitted
25
+ if($_POST['Submit']) {
26
+ $useronline_bots = array();
27
+ $useronline_timeout = intval($_POST['useronline_timeout']);
28
+ $useronline_bots_name = explode("\n", trim($_POST['useronline_bots_name']));
29
+ $useronline_bots_agent = explode("\n", trim($_POST['useronline_bots_agent']));
30
+ $useronline_bots_keys = array_values((array) $useronline_bots_name);
31
+ $useronline_bots_vals = array_values((array) $useronline_bots_agent);
32
+ $n = max(count($useronline_bots_keys), count($useronline_bots_vals));
33
+ for($i = 0; $i < $n; $i++) {
34
+ $useronline_bots[trim($useronline_bots_keys[$i])] = trim($useronline_bots_vals[$i]);
35
+ }
36
+ $useronline_url = addslashes(trim($_POST['useronline_url']));
37
+ $update_useronline_queries = array();
38
+ $update_useronline_text = array();
39
+ $update_useronline_queries[] = update_option('useronline_timeout', $useronline_timeout);
40
+ $update_useronline_queries[] = update_option('useronline_bots', $useronline_bots);
41
+ $update_useronline_queries[] = update_option('useronline_url', $useronline_url);
42
+ $update_useronline_text[] = __('Useronline Timeout', 'wp-useronline');
43
+ $update_useronline_text[] = __('Useronline Bots', 'wp-useronline');
44
+ $update_useronline_text[] = __('Useronline URL', 'wp-useronline');
45
+ $i=0;
46
+ $text = '';
47
+ foreach($update_useronline_queries as $update_useronline_query) {
48
+ if($update_useronline_query) {
49
+ $text .= '<font color="green">'.$update_useronline_text[$i].' '.__('Updated', 'wp-useronline').'</font><br />';
50
+ }
51
+ $i++;
52
+ }
53
+ if(empty($text)) {
54
+ $text = '<font color="red">'.__('No Useronline Option Updated', 'wp-useronline').'</font>';
55
+ }
56
+ }
57
+
58
+ ### Get Useronline Bots
59
+ $useronline_options_bots = get_settings('useronline_bots');
60
+ $useronline_options_bots_name = '';
61
+ $useronline_options_bots_agent = '';
62
+ foreach($useronline_options_bots as $botname => $botagent) {
63
+ $useronline_options_bots_name .= $botname."\n";
64
+ $useronline_options_bots_agent .= $botagent."\n";
65
+ }
66
+ $useronline_options_bots_name = trim($useronline_options_bots_name);
67
+ $useronline_options_bots_agent = trim($useronline_options_bots_agent);
68
+ ?>
69
+ <?php if(!empty($text)) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$text.'</p></div>'; } ?>
70
+ <div class="wrap">
71
+ <h2><?php _e('Useronline Options', 'wp-useronline'); ?></h2>
72
+ <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
73
+ <fieldset class="options">
74
+ <legend><?php _e('Useronline Options', 'wp-useronline'); ?></legend>
75
+ <table width="100%" border="0" cellspacing="3" cellpadding="3">
76
+ <tr valign="top">
77
+ <th align="left" width="30%"><?php _e('Time Out', 'wp-useronline'); ?></th>
78
+ <td align="left">
79
+ <input type="text" name="useronline_timeout" value="<?php echo get_settings('useronline_timeout'); ?>" size="4" /><br /><?php _e('How long till it will remove the user from the database (In seconds).', 'wp-useronline'); ?>
80
+ </td>
81
+ </tr>
82
+ <tr valign="top">
83
+ <th align="left" width="30%"><?php _e('UserOnline URL', 'wp-useronline'); ?></th>
84
+ <td align="left">
85
+ <input type="text" name="useronline_url" value="<?php echo get_settings('useronline_url'); ?>" size="50" /><br /><?php _e('URL To UserOnline Page<br />Example: http://www.yoursite.com/blogs/useronline/<br />Example: http://www.yoursite.com/blogs/?page_id=2', 'wp-useronline'); ?>
86
+ </td>
87
+ </tr>
88
+ <tr valign="top">
89
+ <th align="left" width="30%"><?php _e('Bots Name/User Agent', 'wp-useronline'); ?></th>
90
+ <td align="left">
91
+ <?php _e('Here are a list of bots and their partial browser agents.<br />On the left column will be the <strong>Bot\'s Name</strong> and on the right column will be their <strong>Partial Browser Agent</strong>.<br />Start each entry on a new line.', 'wp-useronline'); ?>
92
+ <br /><br />
93
+ <textarea cols="20" rows="30" name="useronline_bots_name"><?php echo $useronline_options_bots_name; ?></textarea>
94
+ <textarea cols="20" rows="30" name="useronline_bots_agent"><?php echo $useronline_options_bots_agent; ?></textarea>
95
+ </td>
96
+ </tr>
97
+ </table>
98
+ </fieldset>
99
+ <div align="center">
100
+ <input type="submit" name="Submit" class="button" value="<?php _e('Update Options'); ?>" />&nbsp;&nbsp;<input type="button" name="cancel" value="Cancel" class="button" onclick="javascript:history.go(-1)" />
101
+ </div>
102
+ </form>
103
+ </div>
useronline/useronline-widget.php ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: WP-UserOnline Widget
4
+ Plugin URI: http://www.lesterchan.net/portfolio/programming.php
5
+ Description: Adds a UserOnline Widget To Display Users Online From WP-UserOnline Plugin. Please Activate WP-UserOnline First.
6
+ Version: 2.06
7
+ Author: GaMerZ
8
+ Author URI: http://www.lesterchan.net
9
+ */
10
+
11
+
12
+ /* Copyright 2006 Lester Chan (email : gamerz84@hotmail.com)
13
+
14
+ This program is free software; you can redistribute it and/or modify
15
+ it under the terms of the GNU General Public License as published by
16
+ the Free Software Foundation; either version 2 of the License, or
17
+ (at your option) any later version.
18
+
19
+ This program is distributed in the hope that it will be useful,
20
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
+ GNU General Public License for more details.
23
+
24
+ You should have received a copy of the GNU General Public License
25
+ along with this program; if not, write to the Free Software
26
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27
+ */
28
+
29
+
30
+ ### Function: Init WP-UserOnline Widget
31
+ function widget_useronline_init() {
32
+ if (!function_exists('register_sidebar_widget')) {
33
+ return;
34
+ }
35
+
36
+ ### Function: WP-UserOnline Widget
37
+ function widget_useronline($args) {
38
+ extract($args);
39
+ $options = get_option('widget_useronline');
40
+ $title = htmlspecialchars($options['title']);
41
+ echo $before_widget.$before_title.$title.$after_title;
42
+ if (function_exists('useronline')) {
43
+ echo '<ul>'."\n";
44
+ echo '<li><div id="useronline-count">';
45
+ get_useronline();
46
+ echo '</div></li>'."\n";
47
+ if(intval($options['display_usersbrowsingsite']) == 1) {
48
+ echo '<li><div id="useronline-browsing-site">';
49
+ get_users_browsing_site();
50
+ echo '</div></li>'."\n";
51
+ }
52
+ echo '</ul>'."\n";
53
+ }
54
+ echo $after_widget;
55
+ }
56
+
57
+ ### Function: WP-UserOnline Widget Options
58
+ function widget_useronline_options() {
59
+ $options = get_option('widget_useronline');
60
+ if (!is_array($options)) {
61
+ $options = array('display_usersbrowsingsite' => '0', 'title' => __('UserOnline', 'wp-useronline'));
62
+ }
63
+ if ($_POST['useronline-submit']) {
64
+ $options['display_usersbrowsingsite'] = intval($_POST['useronline-usersbrowsingsite']);
65
+ $options['title'] = strip_tags(stripslashes($_POST['useronline-title']));
66
+ update_option('widget_useronline', $options);
67
+ }
68
+ echo '<p style="text-align: left;"><label for="useronline-title">'.__('Widget Title', 'wp-useronline').':</label>&nbsp;&nbsp;&nbsp;<input type="text" id="useronline-title" name="useronline-title" value="'.htmlspecialchars($options['title']).'" />';
69
+ echo '<p style="text-align: center;"><label for="useronline-usersbrowsingsite">'.__('Display Users Browsing Site Under Users Online Count?', 'wp-useronline').'</label></p>'."\n";
70
+ echo '<p style="text-align: center;"><input type="radio" id="useronline-usersbrowsingsite" name="useronline-usersbrowsingsite" value="1"';
71
+ checked(1, intval($options['display_usersbrowsingsite']));
72
+ echo ' />&nbsp;'.__('Yes', 'wp-useronline').'&nbsp;&nbsp;&nbsp;<input type="radio" id="useronline-usersbrowsingsite" name="useronline-usersbrowsingsite" value="0"';
73
+ checked(0, intval($options['display_usersbrowsingsite']));
74
+ echo ' />&nbsp;'.__('No', 'wp-useronline').'</p>'."\n";
75
+ echo '<input type="hidden" id="useronline-submit" name="useronline-submit" value="1" />'."\n";
76
+ }
77
+
78
+ // Register Widgets
79
+ register_sidebar_widget('UserOnline', 'widget_useronline');
80
+ register_widget_control('UserOnline', 'widget_useronline_options', 350, 120);
81
+ }
82
+
83
+
84
+ ### Function: Load The WP-UserOnline Widget
85
+ add_action('plugins_loaded', 'widget_useronline_init');
86
+ ?>
useronline/useronline.php ADDED
@@ -0,0 +1,680 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: WP-UserOnline
4
+ Plugin URI: http://www.lesterchan.net/portfolio/programming.php
5
+ Description: Adds A Useronline Feature To WordPress
6
+ Version: 2.06
7
+ Author: GaMerZ
8
+ Author URI: http://www.lesterchan.net
9
+ */
10
+
11
+
12
+ /* Copyright 2005 Lester Chan (email : gamerz84@hotmail.com)
13
+
14
+ This program is free software; you can redistribute it and/or modify
15
+ it under the terms of the GNU General Public License as published by
16
+ the Free Software Foundation; either version 2 of the License, or
17
+ (at your option) any later version.
18
+
19
+ This program is distributed in the hope that it will be useful,
20
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
+ GNU General Public License for more details.
23
+
24
+ You should have received a copy of the GNU General Public License
25
+ along with this program; if not, write to the Free Software
26
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27
+ */
28
+
29
+
30
+ ### Load WP-Config File If This File Is Called Directly
31
+ if (!function_exists('add_action')) {
32
+ require_once('../../../wp-config.php');
33
+ }
34
+
35
+
36
+ ### Create Text Domain For Translation
37
+ load_plugin_textdomain('wp-useronline', 'wp-content/plugins/useronline');
38
+
39
+
40
+ ### UserOnline Table Name
41
+ $wpdb->useronline = $table_prefix . 'useronline';
42
+
43
+
44
+ ### Function: WP-UserOnline Menu
45
+ add_action('admin_menu', 'useronline_menu');
46
+ function useronline_menu() {
47
+ if (function_exists('add_submenu_page')) {
48
+ add_submenu_page('index.php', __('WP-UserOnline', 'wp-useronline'), __('WP-UserOnline', 'wp-useronline'), 1, 'useronline/useronline.php', 'display_useronline');
49
+ }
50
+ if (function_exists('add_options_page')) {
51
+ add_options_page(__('Useronline', 'wp-useronline'), __('Useronline', 'wp-useronline'), 'manage_options', 'useronline/useronline-options.php');
52
+ }
53
+ }
54
+
55
+
56
+ ### Function: Displays UserOnline Header
57
+ add_action('wp_head', 'useronline_header');
58
+ function useronline_header() {
59
+ if(strpos($_SERVER['SCRIPT_NAME'], 'cgi') === false) {
60
+ $useronline_ajax_url = dirname($_SERVER['SCRIPT_NAME']);
61
+ } else {
62
+ $useronline_ajax_url = dirname($_SERVER['PHP_SELF']);
63
+ }
64
+ if(substr($useronline_ajax_url, -1) == '/') {
65
+ $useronline_ajax_url = substr($useronline_ajax_url, 0, -1);
66
+ }
67
+ echo "\n".'<!-- Start Of Script Generated By WP-UserOnline 2.06 -->'."\n";
68
+ echo '<script type="text/javascript">'."\n";
69
+ echo '/* <![CDATA[ */'."\n";
70
+ echo "\t".'var useronline_ajax_url = \''.$useronline_ajax_url.'/wp-content/plugins/useronline/useronline.php\';'."\n";
71
+ echo "\t".'var useronline_timeout = '.(get_settings('useronline_timeout')*1000).';'."\n";
72
+ echo '/* ]]> */'."\n";
73
+ echo '</script>'."\n";
74
+ echo '<script src="'.get_settings('siteurl').'/wp-includes/js/tw-sack.js" type="text/javascript"></script>'."\n";
75
+ echo '<script src="'.get_settings('siteurl').'/wp-content/plugins/useronline/useronline-js.js" type="text/javascript"></script>'."\n";
76
+ echo '<!-- End Of Script Generated By WP-UserOnline 2.06 -->'."\n";
77
+ }
78
+
79
+
80
+ ### Function: Process UserOnline
81
+ add_action('admin_head', 'useronline');
82
+ add_action('wp_head', 'useronline');
83
+ function useronline() {
84
+ global $wpdb, $useronline;
85
+ // Useronline Settings
86
+ $timeoutseconds = get_settings('useronline_timeout');
87
+ $timestamp = current_time('timestamp');
88
+ $timeout = ($timestamp-$timeoutseconds);
89
+ $ip = get_ipaddress();
90
+ $url = addslashes(urlencode($_SERVER['REQUEST_URI']));
91
+ $useragent = $_SERVER['HTTP_USER_AGENT'];
92
+ $current_user = wp_get_current_user();
93
+
94
+ // Check For Bot
95
+ $bots = get_settings('useronline_bots');
96
+ foreach ($bots as $name => $lookfor) {
97
+ if (stristr($useragent, $lookfor) !== false) {
98
+ $user_id = 0;
99
+ $display_name = addslashes($name);
100
+ $user_name = addslashes($lookfor);
101
+ $type = 'bot';
102
+ $where = "WHERE ip = '$ip'";
103
+ $bot_found = true;
104
+ break;
105
+ }
106
+ }
107
+
108
+ // If No Bot Is Found, Then We Check Members And Guests
109
+ if(!$bot_found) {
110
+ // Check For Member
111
+ if($current_user->ID > 0) {
112
+ $user_id = $current_user->ID;
113
+ $display_name = addslashes($current_user->display_name);
114
+ $user_name = addslashes($current_user->user_login);
115
+ $type = 'member';
116
+ $where = "WHERE userid = '$user_id'";
117
+ // Check For Comment Author (Guest)
118
+ } elseif(!empty($_COOKIE['comment_author_'.COOKIEHASH])) {
119
+ $user_id = 0;
120
+ $display_name = addslashes(trim($_COOKIE['comment_author_'.COOKIEHASH]));
121
+ $user_name = __('guest', 'wp-useronline').'_'.$display_name;
122
+ $type = 'guest';
123
+ $where = "WHERE ip = '$ip'";
124
+ // Check For Guest
125
+ } else {
126
+ $user_id = 0;
127
+ $display_name = __('Guest', 'wp-useronline');
128
+ $user_name = "guest";
129
+ $type = 'guest';
130
+ $where = "WHERE ip = '$ip'";
131
+ }
132
+ }
133
+
134
+ // Get User Agent
135
+ $useragent = addslashes($useragent);
136
+
137
+ // Check For Page Title
138
+ $make_page = wp_title('&raquo;', false);
139
+ if(empty($make_page)) {
140
+ $make_page = get_bloginfo('name');
141
+ } elseif(is_single()) {
142
+ $make_page = get_bloginfo('name').' &raquo; '.__('Blog Archive', 'wp-useronline').' '.$make_page;
143
+ } else {
144
+ $make_page = get_bloginfo('name').$make_page;
145
+ }
146
+ $make_page = addslashes($make_page);
147
+
148
+ // Delete Users
149
+ $delete_users = $wpdb->query("DELETE FROM $wpdb->useronline $where OR (timestamp < $timeout)");
150
+
151
+ // Insert Users
152
+ $insert_user = $wpdb->query("INSERT INTO $wpdb->useronline VALUES ('$timestamp', '$user_id', '$user_name', '$display_name', '$useragent', '$ip', '$make_page', '$url', '$type')");
153
+
154
+ // Count Users Online
155
+ $useronline = intval($wpdb->get_var("SELECT COUNT(*) FROM $wpdb->useronline"));
156
+
157
+ // Get Most User Online
158
+ $most_useronline = intval(get_settings('useronline_most_users'));
159
+
160
+ // Check Whether Current Users Online Is More Than Most Users Online
161
+ if($useronline > $most_useronline) {
162
+ update_option('useronline_most_users', $useronline);
163
+ update_option('useronline_most_timestamp', current_time('timestamp'));
164
+ }
165
+ }
166
+
167
+
168
+ ### Function: Display UserOnline
169
+ if(!function_exists('get_useronline')) {
170
+ function get_useronline($user = '', $users = '', $display = true) {
171
+ global $useronline;
172
+ if(empty($user)) {
173
+ $user = __('User', 'wp-useronline');
174
+ }
175
+ if(empty($users)) {
176
+ $users = __('Users', 'wp-useronline');
177
+ }
178
+ $useronline_url = get_settings('useronline_url');
179
+ // Display User Online
180
+ if($display) {
181
+ if($useronline > 1) {
182
+ echo '<a href="'.$useronline_url.'"><strong>'.number_format($useronline).'</strong> '.$users.' '.__('Online', 'wp-useronline').'</a>'."\n";
183
+ } else {
184
+ echo '<a href="'.$useronline_url.'"><strong>'.$useronline.'</strong> '.$user.' '.__('Online', 'wp-useronline').'</a>'."\n";
185
+ }
186
+ } else {
187
+ return number_format($useronline);
188
+ }
189
+ }
190
+ }
191
+
192
+
193
+ ### Function: Display Max UserOnline
194
+ if(!function_exists('get_most_useronline')) {
195
+ function get_most_useronline($display = true) {
196
+ $most_useronline_users = intval(get_settings('useronline_most_users'));
197
+ if($display) {
198
+ echo number_format($most_useronline_users);
199
+ } else {
200
+ return $most_useronline_users;
201
+ }
202
+ }
203
+ }
204
+
205
+
206
+ ### Function: Display Max UserOnline Date
207
+ if(!function_exists('get_most_useronline_date')) {
208
+ function get_most_useronline_date($display = true, $date_format = 'jS F Y, H:i') {
209
+ $most_useronline_timestamp = get_settings('useronline_most_timestamp');
210
+ $most_useronline_date = gmdate($date_format, $most_useronline_timestamp);
211
+ if($display) {
212
+ echo $most_useronline_date;
213
+ } else {
214
+ return$most_useronline_date;
215
+ }
216
+ }
217
+ }
218
+
219
+
220
+ ### Function: Display Users Browsing The Site
221
+ function get_users_browsing_site($display = true) {
222
+ global $wpdb;
223
+
224
+ // Get Users Browsing Site
225
+ $page_url = addslashes(urlencode($_SERVER['REQUEST_URI']));
226
+ $users_browse = $wpdb->get_results("SELECT displayname, type FROM $wpdb->useronline ORDER BY type");
227
+
228
+ // Variables
229
+ $members = array();
230
+ $guests = array();
231
+ $bots = array();
232
+ $total_users = 0;
233
+ $total_members = 0;
234
+ $total_guests = 0;
235
+ $total_bots = 0;
236
+ $nicetext_members = '';
237
+ $nicetext_guests = '';
238
+ $nicetext_bots = '';
239
+
240
+ // If There Is Users Browsing, Then We Execute
241
+ if($users_browse) {
242
+ // Get Users Information
243
+ foreach($users_browse as $user_browse) {
244
+ switch($user_browse->type) {
245
+ case 'member':
246
+ $members[] = stripslashes($user_browse->displayname);
247
+ $total_members++;
248
+ break;
249
+ case 'guest':
250
+ $guests[] = stripslashes($user_browse->displayname);
251
+ $total_guests++;
252
+ break;
253
+ case 'bot':
254
+ $bots[] = stripslashes($user_browse->displayname);
255
+ $total_bots++;
256
+ break;
257
+ }
258
+ }
259
+ $total_users = ($total_guests+$total_bots+$total_members);
260
+
261
+ // If We Do Not Display It, Return Respective Users Count
262
+ if(!$display) {
263
+ return array ($total_users, $total_members, $total_guests, $total_bots);
264
+ }
265
+
266
+ // Nice Text For Guests
267
+ if($total_guests == 1) {
268
+ $nicetext_guests = $total_guests.' '.__('Guest', 'wp-useronline');
269
+ } else {
270
+ $nicetext_guests = number_format($total_guests).' '.__('Guests', 'wp-useronline');
271
+ }
272
+ // Nice Text For Bots
273
+ if($total_bots == 1) {
274
+ $nicetext_bots = $total_bots.' '.__('Bot', 'wp-useronline');
275
+ } else {
276
+ $nicetext_bots = number_format($total_bots).' '.__('Bots', 'wp-useronline');
277
+ }
278
+
279
+ // Print Member Name
280
+ if($members) {
281
+ $temp_member = '';
282
+ foreach($members as $member) {
283
+ $temp_member .= '<a href="'.useronline_stats_page_link(urlencode($member)).'">'.$member.'</a>, ';
284
+ }
285
+ if(!function_exists('get_totalposts')) {
286
+ $temp_member = strip_tags($temp_member);
287
+ }
288
+ }
289
+ // Print Guests
290
+ if($total_guests > 0) {
291
+ $temp_member .= $nicetext_guests.', ';
292
+ }
293
+ // Print Bots
294
+ if($total_bots > 0) {
295
+ $temp_member .= $nicetext_bots.', ';
296
+ }
297
+ // Print User Count
298
+ $temp_member = substr($temp_member, 0, -2);
299
+ echo __('Users', 'wp-useronline').': <strong>'.$temp_member.'</strong><br />';
300
+ } else {
301
+ // This Should Not Happen
302
+ _e('No User Is Browsing This Site', 'wp-useronline');
303
+ }
304
+ }
305
+
306
+
307
+ ### Function: Display Users Browsing The Page
308
+ function get_users_browsing_page($display = true) {
309
+ global $wpdb;
310
+
311
+ // Get Users Browsing Page
312
+ $page_url = addslashes(urlencode($_SERVER['REQUEST_URI']));
313
+ $users_browse = $wpdb->get_results("SELECT displayname, type FROM $wpdb->useronline WHERE url = '$page_url' ORDER BY type");
314
+
315
+ // Variables
316
+ $members = array();
317
+ $guests = array();
318
+ $bots = array();
319
+ $total_users = 0;
320
+ $total_members = 0;
321
+ $total_guests = 0;
322
+ $total_bots = 0;
323
+ $nicetext_members = '';
324
+ $nicetext_guests = '';
325
+ $nicetext_bots = '';
326
+
327
+ // If There Is Users Browsing, Then We Execute
328
+ if($users_browse) {
329
+ // Reassign Bots Name
330
+ $bots = get_settings('useronline_bots');
331
+ $bots_name = array();
332
+ foreach($bots as $botname => $botlookfor) {
333
+ $bots_name[] = $botname;
334
+ }
335
+ // Get Users Information
336
+ foreach($users_browse as $user_browse) {
337
+ switch($user_browse->type) {
338
+ case 'member':
339
+ $members[] = stripslashes($user_browse->displayname);
340
+ $total_members++;
341
+ break;
342
+ case 'guest':
343
+ $guests[] = stripslashes($user_browse->displayname);
344
+ $total_guests++;
345
+ break;
346
+ case 'bot':
347
+ $bots[] = stripslashes($user_browse->displayname);
348
+ $total_bots++;
349
+ break;
350
+ }
351
+ }
352
+ $total_users = ($total_guests+$total_bots+$total_members);
353
+
354
+ // If We Do Not Display It, Return Respective Users Count
355
+ if(!$display) {
356
+ return array ($total_users, $total_members, $total_guests, $total_bots);
357
+ }
358
+
359
+ // Nice Text For Members
360
+ if($total_members == 1) {
361
+ $nicetext_members = $total_members.' '.__('Member', 'wp-useronline');
362
+ } else {
363
+ $nicetext_members = number_format($total_members).' '.__('Members', 'wp-useronline');
364
+ }
365
+ // Nice Text For Guests
366
+ if($total_guests == 1) {
367
+ $nicetext_guests = $total_guests.' '.__('Guest', 'wp-useronline');
368
+ } else {
369
+ $nicetext_guests = number_format($total_guests).' '.__('Guests', 'wp-useronline');
370
+ }
371
+ // Nice Text For Bots
372
+ if($total_bots == 1) {
373
+ $nicetext_bots = $total_bots.' '.__('Bot', 'wp-useronline');
374
+ } else {
375
+ $nicetext_bots = number_format($total_bots).' '.__('Bots', 'wp-useronline');
376
+ }
377
+
378
+ // Print User Count
379
+ echo __('Users Browsing This Page', 'wp-useronline').': <strong>'.number_format($total_users).'</strong> ('.$nicetext_members.', '.$nicetext_guests.' '.__('and', 'wp-useronline').' '.$nicetext_bots.')<br />';
380
+
381
+ // Print Member Name
382
+ if($members) {
383
+ $temp_member = '';
384
+ foreach($members as $member) {
385
+ $temp_member .= '<a href="'.useronline_stats_page_link(urlencode($member)).'">'.$member.'</a>, ';
386
+ }
387
+ if(!function_exists('get_totalposts')) {
388
+ $temp_member = strip_tags($temp_member);
389
+ }
390
+ echo __('Members', 'wp-useronline').': '.substr($temp_member, 0, -2);
391
+ }
392
+ } else {
393
+ // This Should Not Happen
394
+ _e('No User Is Browsing This Page', 'wp-useronline');
395
+ }
396
+ }
397
+
398
+
399
+ ### Function: Get IP Address
400
+ if(!function_exists('get_ipaddress')) {
401
+ function get_ipaddress() {
402
+ if (empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
403
+ $ip_address = $_SERVER["REMOTE_ADDR"];
404
+ } else {
405
+ $ip_address = $_SERVER["HTTP_X_FORWARDED_FOR"];
406
+ }
407
+ if(strpos($ip_address, ',') !== false) {
408
+ $ip_address = explode(',', $ip_address);
409
+ $ip_address = $ip_address[0];
410
+ }
411
+ return $ip_address;
412
+ }
413
+ }
414
+
415
+
416
+ ### Function: Check IP
417
+ function check_ip($ip) {
418
+ $current_user = wp_get_current_user();
419
+ $user_level = intval($current_user->wp_user_level);
420
+ $ip2long = ip2long($ip);
421
+ if($user_level == 10 && ($ip != 'unknown') && $ip == long2ip($ip2long) && $ip2long !== false) {
422
+ return "(<a href=\"http://ws.arin.net/cgi-bin/whois.pl?queryinput=$ip\" target=\"_blank\" title=\"".gethostbyaddr($ip)."\">$ip</a>)";
423
+ }
424
+ }
425
+
426
+
427
+ ### Function Check If User Is Online
428
+ function is_online($user_login) {
429
+ global $wpdb;
430
+ $is_online = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->useronline WHERE username = '$user_login' LIMIT 1");
431
+ return intval($is_online);
432
+ }
433
+
434
+
435
+ ### Function: Output User's Country Flag/Name
436
+ function ip2nation_country($ip, $display_countryname = 0) {
437
+ if(function_exists('wp_ozh_ip2nation')) {
438
+ $country_code = wp_ozh_getCountryCode(0, $ip);
439
+ $country_name = wp_ozh_getCountryName(0, $ip);
440
+ $country_mirror = '';
441
+ $mirrors = array("http://frenchfragfactory.net/images", "http://www.lesterchan.net/wordpress/images/flags");
442
+ if($country_name != 'Private') {
443
+ foreach($mirrors as $mirror) {
444
+ if(file($mirror.'/flag_sg.gif')) {
445
+ $country_mirror = $mirror;
446
+ break;
447
+ }
448
+ }
449
+ $temp = '<img src="'.$mirror.'/flag_'.$country_code.'.gif" alt="'.$country_name.'" />';
450
+ if($display_countryname) {
451
+ $temp .= $country_name;
452
+ }
453
+ return $temp.' ';
454
+ } else {
455
+ return;
456
+ }
457
+ }
458
+ return;
459
+ }
460
+
461
+
462
+ ### Function: Display UserOnline For Admin
463
+ function display_useronline() {
464
+ $useronline_page = useronline_page();
465
+ echo "<div class=\"wrap\">\n$useronline_page</div>\n";
466
+ }
467
+
468
+
469
+ ### Function: Place Polls Archive In Content
470
+ add_filter('the_content', 'place_useronlinepage', '7');
471
+ function place_useronlinepage($content){
472
+ $content = preg_replace( "/\[page_useronline\]/ise", "useronline_page()", $content);
473
+ return $content;
474
+ }
475
+
476
+
477
+ ### Function: UserOnline Page
478
+ function useronline_page() {
479
+ global $wpdb;
480
+ // Get The Users Online
481
+ $usersonline = $wpdb->get_results("SELECT * FROM $wpdb->useronline ORDER BY type");
482
+
483
+ // Variables Variables Variables
484
+ $useronline_output = '';
485
+ $members = array();
486
+ $guests = array();
487
+ $bots = array();
488
+ $total_users = 0;
489
+ $total_members = 0;
490
+ $total_guests = 0;
491
+ $total_bots = 0;
492
+ $nicetext_users = '';
493
+ $nicetext_members = '';
494
+ $nicetext_guests = '';
495
+ $nicetext_bots = '';
496
+ $url_front = 'http://'.$_SERVER['SERVER_NAME'];
497
+
498
+ // Process Those User Who Is Online
499
+ if($usersonline) {
500
+ foreach($usersonline as $useronline) {
501
+ switch($useronline->type) {
502
+ case 'member':
503
+ $members[] = array('timestamp' => $useronline->timestamp, 'user_id' => $useronline->userid, 'user_name' => stripslashes($useronline->username), 'display_name' => stripslashes($useronline->displayname), 'user_agent' => stripslashes($useronline->useragent), 'ip' => $useronline->ip, 'location' => stripslashes($useronline->location), 'url' => $url_front.stripslashes(urldecode($useronline->url)));
504
+ $total_members++;
505
+ break;
506
+ case 'guest':
507
+ $guests[] = array('timestamp' => $useronline->timestamp, 'user_id' => $useronline->userid, 'user_name' => stripslashes($useronline->username), 'display_name' => stripslashes($useronline->displayname), 'user_agent' => stripslashes($useronline->useragent), 'ip' => $useronline->ip, 'location' => stripslashes($useronline->location), 'url' => $url_front.stripslashes(urldecode($useronline->url)));
508
+ $total_guests++;
509
+ break;
510
+ case 'bot':
511
+ $bots[] = array('timestamp' => $useronline->timestamp, 'user_id' => $useronline->userid, 'user_name' => stripslashes($useronline->username), 'display_name' => stripslashes($useronline->displayname), 'user_agent' => stripslashes($useronline->useragent), 'ip' => $useronline->ip, 'location' => stripslashes($useronline->location), 'url' => $url_front.stripslashes(urldecode($useronline->url)));
512
+ $total_bots++;
513
+ break;
514
+ }
515
+ }
516
+ $total_users = ($total_guests+$total_bots+$total_members);
517
+ }
518
+
519
+ // Nice Text For Users
520
+ if($total_users == 1) {
521
+ $nicetext_users = $total_users.' '.__('User', 'wp-useronline');
522
+ } else {
523
+ $nicetext_users = number_format($total_users).' '.__('Users', 'wp-useronline');
524
+ }
525
+
526
+ // Nice Text For Members
527
+ if($total_members == 1) {
528
+ $nicetext_members = $total_members.' '.__('Member', 'wp-useronline');
529
+ } else {
530
+ $nicetext_members = number_format($total_members).' '.__('Members', 'wp-useronline');
531
+ }
532
+
533
+
534
+ // Nice Text For Guests
535
+ if($total_guests == 1) {
536
+ $nicetext_guests = $total_guests.' '.__('Guest', 'wp-useronline');
537
+ } else {
538
+ $nicetext_guests = number_format($total_guests).' '.__('Guests', 'wp-useronline');
539
+ }
540
+
541
+ // Nice Text For Bots
542
+ if($total_bots == 1) {
543
+ $nicetext_bots = $total_bots.' '.__('Bot', 'wp-useronline');
544
+ } else {
545
+ $nicetext_bots = number_format($total_bots).' '.__('Bots', 'wp-useronline');
546
+ }
547
+
548
+ // Check Whether WP-Stats Is Activated
549
+ $wp_stats = false;
550
+ if(function_exists('get_totalposts')) {
551
+ $wp_stats = true;
552
+ }
553
+ $useronline_output .= '<p>';
554
+ if ($total_users == 1) {
555
+ $useronline_output .= __('There is', 'wp-useronline').' ';
556
+ } else {
557
+ $useronline_output .= __('There are a total of', 'wp-useronline').' ';
558
+ }
559
+ $useronline_output .= "<strong>$nicetext_users</strong> ".__('online now', 'wp-useronline').": <strong>$nicetext_members</strong>, <strong>$nicetext_guests</strong> ".__('and', 'wp-useronline')." <strong>$nicetext_bots</strong>.</p>\n";
560
+ $useronline_output .= '<p>'.__('Most users ever online were', 'wp-useronline')." <strong>".get_most_useronline(false)."</strong>, ".__('on', 'wp-useronline')." <strong>".get_most_useronline_date(false)."</strong></p>\n";
561
+ // Print Out Members
562
+ if($total_members > 0) {
563
+ $useronline_output .= '<h2>'.$nicetext_members.' '.__('Online Now', 'wp-useronline').'</h2>'."\n";
564
+ }
565
+ $no=1;
566
+ if($members) {
567
+ foreach($members as $member) {
568
+ if($wp_stats) {
569
+ $useronline_output .= '<p><strong>#'.$no.' - <a href="'.useronline_stats_page_link($member['display_name']).'">'.$member['display_name'].'</a></strong> '.ip2nation_country($member['ip']).check_ip($member['ip']).' '.__('on', 'wp-useronline').' '.gmdate('d.m.Y @ H:i', $member['timestamp']).'<br />'.$member['location'].' [<a href="'.$member['url'].'">'.__('url', 'wp-useronline').'</a>]</p>'."\n";
570
+ } else {
571
+ $useronline_output .= '<p><strong>#'.$no.' - '.$member['user_name'].'</strong> '.ip2nation_country($member['ip']).check_ip($member['ip']).' '.__('on', 'wp-useronline').' '.gmdate('d.m.Y @ H:i', $member['timestamp']).'<br />'.$member['location'].' [<a href="'.$member['url'].'">'.__('url', 'wp-useronline').'</a>]</p>'."\n";
572
+ }
573
+ $no++;
574
+ }
575
+ }
576
+
577
+ // Print Out Guest
578
+ if($total_guests > 0) {
579
+ $useronline_output .= '<h2>'.$nicetext_guests.' '.__('Online Now', 'wp-useronline').'</h2>'."\n";
580
+ }
581
+ $no=1;
582
+ if($guests) {
583
+ foreach($guests as $guest) {
584
+ if($wp_stats) {
585
+ $useronline_output .= '<p><strong>#'.$no.' - <a href="'.useronline_stats_page_link($guest['display_name']).'">'.$guest['display_name'].'</a></strong> '.ip2nation_country($guest['ip']).check_ip($guest['ip']).' '.__('on', 'wp-useronline').' '.gmdate('d.m.Y @ H:i', $guest['timestamp']).'<br />'.$guest['location'].' [<a href="'.$guest['url'].'">'.__('url', 'wp-useronline').'</a>]</p>'."\n";
586
+ } else {
587
+ $useronline_output .= '<p><strong>#'.$no.' - '.$guest['user_name'].'</strong> '.ip2nation_country($guest['ip']).check_ip($guest['ip']).' '.__('on', 'wp-useronline').' '.gmdate('d.m.Y @ H:i', $guest['timestamp']).'<br />'.$guest['location'].' [<a href="'.$guest['url'].'">'.__('url', 'wp-useronline').'</a>]</p>'."\n";
588
+ }
589
+ $no++;
590
+ }
591
+ }
592
+
593
+ // Print Out Bots
594
+ if($total_bots > 0) {
595
+ $useronline_output .= '<h2>'.$nicetext_bots.' '.__('Online Now', 'wp-useronline').'</h2>'."\n";
596
+ }
597
+ $no=1;
598
+ if($bots) {
599
+ foreach($bots as $bot) {
600
+ $useronline_output .= '<p><strong>#'.$no.' - '.$bot['display_name'].'</strong> '.check_ip($bot['ip']).' '.__('on', 'wp-useronline').' '.gmdate('d.m.Y @ H:i', $bot['timestamp']).'<br />'.$bot['location'].' [<a href="'.$bot['url'].'">'.__('url', 'wp-useronline').'</a>]</p>'."\n";
601
+ $no++;
602
+ }
603
+ }
604
+
605
+ // Print Out No One Is Online Now
606
+ if($total_users == 0) {
607
+ $useronline_output .= '<h2>'.__('No One Is Online Now', 'wp-useronline').'</h2>'."\n";
608
+ }
609
+
610
+ // Output UserOnline Page
611
+ return $useronline_output;
612
+ }
613
+
614
+
615
+ ### Function: Stats Page Link
616
+ function useronline_stats_page_link($author) {
617
+ $stats_url = get_settings('stats_url');
618
+ if(strpos($stats_url, '?') !== false) {
619
+ $stats_url = "$stats_url&amp;stats_author=$author";
620
+ } else {
621
+ $stats_url = "$stats_url?stats_author=$author";
622
+ }
623
+ return $stats_url;
624
+ }
625
+
626
+
627
+ ### Function: Process AJAX Request
628
+ useronline_ajax();
629
+ function useronline_ajax() {
630
+ global $wpdb, $useronline;
631
+ $mode = trim($_GET['useronline_mode']);
632
+ if(!empty($mode)) {
633
+ header('Content-Type: text/html; charset='.get_option('blog_charset'));
634
+ switch($mode) {
635
+ case 'useronline_count':
636
+ $useronline = intval($wpdb->get_var("SELECT COUNT(*) FROM $wpdb->useronline"));
637
+ get_useronline();
638
+ break;
639
+ case 'useronline_browsingsite':
640
+ get_users_browsing_site();
641
+ break;
642
+ case 'useronline_browsingpage':
643
+ get_users_browsing_page();
644
+ break;
645
+ }
646
+ exit();
647
+ }
648
+ }
649
+
650
+
651
+ ### Function: Create UserOnline Table
652
+ add_action('activate_useronline/useronline.php', 'create_useronline_table');
653
+ function create_useronline_table() {
654
+ global $wpdb;
655
+ $bots = array('Google Bot' => 'googlebot', 'Google Bot' => 'google', 'MSN' => 'msnbot', 'Alex' => 'ia_archiver', 'Lycos' => 'lycos', 'Ask Jeeves' => 'jeeves', 'Altavista' => 'scooter', 'AllTheWeb' => 'fast-webcrawler', 'Inktomi' => 'slurp@inktomi', 'Turnitin.com' => 'turnitinbot', 'Technorati' => 'technorati', 'Yahoo' => 'yahoo', 'Findexa' => 'findexa', 'NextLinks' => 'findlinks', 'Gais' => 'gaisbo', 'WiseNut' => 'zyborg', 'WhoisSource' => 'surveybot', 'Bloglines' => 'bloglines', 'BlogSearch' => 'blogsearch', 'PubSub' => 'pubsub', 'Syndic8' => 'syndic8', 'RadioUserland' => 'userland', 'Gigabot' => 'gigabot', 'Become.com' => 'become.com');
656
+ include_once(ABSPATH.'/wp-admin/upgrade-functions.php');
657
+ // Drop UserOnline Table
658
+ $wpdb->query("DROP TABLE IF EXISTS $wpdb->useronline");
659
+ // Create UserOnline Table
660
+ $create_table = "CREATE TABLE $wpdb->useronline (".
661
+ " timestamp int(15) NOT NULL default '0',".
662
+ " userid int(10) NOT NULL default '0',".
663
+ " username varchar(150) NOT NULL default '',".
664
+ " displayname varchar(255) NOT NULL default '',".
665
+ " useragent varchar(255) NOT NULL default '',".
666
+ " ip varchar(40) NOT NULL default '',".
667
+ " location varchar(255) NOT NULL default '',".
668
+ " url varchar(255) NOT NULL default '',".
669
+ " type enum('member','guest','bot') NOT NULL default 'guest',".
670
+ " UNIQUE KEY useronline_id (timestamp,username,ip,useragent)) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
671
+ maybe_create_table($wpdb->useronline, $create_table);
672
+ // Add In Options
673
+ add_option('useronline_most_users', 1, 'Most Users Ever Online Count');
674
+ add_option('useronline_most_timestamp', current_time('timestamp'), 'Most Users Ever Online Date');
675
+ add_option('useronline_timeout', 300, 'Timeout In Seconds');
676
+ add_option('useronline_bots', $bots, 'Bots Name/Useragent');
677
+ // Database Upgrade For WP-UserOnline 2.05
678
+ add_option('useronline_url', get_settings('siteurl').'/useronline/', 'UserOnline Page URL');
679
+ }
680
+ ?>
useronline/wp-useronline.pot ADDED
@@ -0,0 +1,217 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP-UserOnline 2.06\n"
4
+ "POT-Creation-Date: \n"
5
+ "PO-Revision-Date: 2007-01-02 01:14+0800\n"
6
+ "Last-Translator: Lester 'GaMerZ' Chan <gamerz84@hotmail.com>\n"
7
+ "Language-Team: Lester Chan <gamerz84@hotmail.com>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Poedit-Country: SINGAPORE\n"
12
+ "X-Poedit-KeywordsList: __;_e\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "X-Poedit-Language: English\n"
15
+ "X-Poedit-SearchPath-0: .\n"
16
+
17
+ #: useronline-options.php:42
18
+ msgid "Useronline Timeout"
19
+ msgstr ""
20
+
21
+ #: useronline-options.php:43
22
+ msgid "Useronline Bots"
23
+ msgstr ""
24
+
25
+ #: useronline-options.php:44
26
+ msgid "Useronline URL"
27
+ msgstr ""
28
+
29
+ #: useronline-options.php:49
30
+ msgid "Updated"
31
+ msgstr ""
32
+
33
+ #: useronline-options.php:54
34
+ msgid "No Useronline Option Updated"
35
+ msgstr ""
36
+
37
+ #: useronline-options.php:71
38
+ #: useronline-options.php:74
39
+ msgid "Useronline Options"
40
+ msgstr ""
41
+
42
+ #: useronline-options.php:77
43
+ msgid "Time Out"
44
+ msgstr ""
45
+
46
+ #: useronline-options.php:79
47
+ msgid "How long till it will remove the user from the database (In seconds)."
48
+ msgstr ""
49
+
50
+ #: useronline-options.php:83
51
+ msgid "UserOnline URL"
52
+ msgstr ""
53
+
54
+ #: useronline-options.php:85
55
+ msgid "URL To UserOnline Page<br />Example: http://www.yoursite.com/blogs/useronline/<br />Example: http://www.yoursite.com/blogs/?page_id=2"
56
+ msgstr ""
57
+
58
+ #: useronline-options.php:89
59
+ msgid "Bots Name/User Agent"
60
+ msgstr ""
61
+
62
+ #: useronline-options.php:91
63
+ msgid "Here are a list of bots and their partial browser agents.<br />On the left column will be the <strong>Bot's Name</strong> and on the right column will be their <strong>Partial Browser Agent</strong>.<br />Start each entry on a new line."
64
+ msgstr ""
65
+
66
+ #: useronline-options.php:100
67
+ msgid "Update Options"
68
+ msgstr ""
69
+
70
+ #: useronline-widget.php:61
71
+ msgid "UserOnline"
72
+ msgstr ""
73
+
74
+ #: useronline-widget.php:68
75
+ msgid "Widget Title"
76
+ msgstr ""
77
+
78
+ #: useronline-widget.php:69
79
+ msgid "Display Users Browsing Site Under Users Online Count?"
80
+ msgstr ""
81
+
82
+ #: useronline-widget.php:72
83
+ msgid "Yes"
84
+ msgstr ""
85
+
86
+ #: useronline-widget.php:74
87
+ msgid "No"
88
+ msgstr ""
89
+
90
+ #: useronline.php:48
91
+ msgid "WP-UserOnline"
92
+ msgstr ""
93
+
94
+ #: useronline.php:51
95
+ msgid "Useronline"
96
+ msgstr ""
97
+
98
+ #: useronline.php:121
99
+ msgid "guest"
100
+ msgstr ""
101
+
102
+ #: useronline.php:127
103
+ #: useronline.php:268
104
+ #: useronline.php:367
105
+ #: useronline.php:536
106
+ msgid "Guest"
107
+ msgstr ""
108
+
109
+ #: useronline.php:142
110
+ msgid "Blog Archive"
111
+ msgstr ""
112
+
113
+ #: useronline.php:173
114
+ #: useronline.php:521
115
+ msgid "User"
116
+ msgstr ""
117
+
118
+ #: useronline.php:176
119
+ #: useronline.php:299
120
+ #: useronline.php:523
121
+ msgid "Users"
122
+ msgstr ""
123
+
124
+ #: useronline.php:182
125
+ #: useronline.php:184
126
+ msgid "Online"
127
+ msgstr ""
128
+
129
+ #: useronline.php:270
130
+ #: useronline.php:369
131
+ #: useronline.php:538
132
+ msgid "Guests"
133
+ msgstr ""
134
+
135
+ #: useronline.php:274
136
+ #: useronline.php:373
137
+ #: useronline.php:543
138
+ msgid "Bot"
139
+ msgstr ""
140
+
141
+ #: useronline.php:276
142
+ #: useronline.php:375
143
+ #: useronline.php:545
144
+ msgid "Bots"
145
+ msgstr ""
146
+
147
+ #: useronline.php:302
148
+ msgid "No User Is Browsing This Site"
149
+ msgstr ""
150
+
151
+ #: useronline.php:361
152
+ #: useronline.php:528
153
+ msgid "Member"
154
+ msgstr ""
155
+
156
+ #: useronline.php:363
157
+ #: useronline.php:390
158
+ #: useronline.php:530
159
+ msgid "Members"
160
+ msgstr ""
161
+
162
+ #: useronline.php:379
163
+ msgid "Users Browsing This Page"
164
+ msgstr ""
165
+
166
+ #: useronline.php:379
167
+ #: useronline.php:559
168
+ msgid "and"
169
+ msgstr ""
170
+
171
+ #: useronline.php:394
172
+ msgid "No User Is Browsing This Page"
173
+ msgstr ""
174
+
175
+ #: useronline.php:555
176
+ msgid "There is"
177
+ msgstr ""
178
+
179
+ #: useronline.php:557
180
+ msgid "There are a total of"
181
+ msgstr ""
182
+
183
+ #: useronline.php:559
184
+ msgid "online now"
185
+ msgstr ""
186
+
187
+ #: useronline.php:560
188
+ msgid "Most users ever online were"
189
+ msgstr ""
190
+
191
+ #: useronline.php:560
192
+ #: useronline.php:569
193
+ #: useronline.php:571
194
+ #: useronline.php:585
195
+ #: useronline.php:587
196
+ #: useronline.php:600
197
+ msgid "on"
198
+ msgstr ""
199
+
200
+ #: useronline.php:563
201
+ #: useronline.php:579
202
+ #: useronline.php:595
203
+ msgid "Online Now"
204
+ msgstr ""
205
+
206
+ #: useronline.php:569
207
+ #: useronline.php:571
208
+ #: useronline.php:585
209
+ #: useronline.php:587
210
+ #: useronline.php:600
211
+ msgid "url"
212
+ msgstr ""
213
+
214
+ #: useronline.php:607
215
+ msgid "No One Is Online Now"
216
+ msgstr ""
217
+