WP-UserOnline - Version 2.40

Version Description

Download this release

Release Info

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

Code changes from version 2.31 to 2.40

Files changed (255) hide show
  1. images/flags/ad.png +0 -0
  2. images/flags/ae.png +0 -0
  3. images/flags/af.png +0 -0
  4. images/flags/ag.png +0 -0
  5. images/flags/ai.png +0 -0
  6. images/flags/al.png +0 -0
  7. images/flags/am.png +0 -0
  8. images/flags/an.png +0 -0
  9. images/flags/ao.png +0 -0
  10. images/flags/ar.png +0 -0
  11. images/flags/as.png +0 -0
  12. images/flags/at.png +0 -0
  13. images/flags/au.png +0 -0
  14. images/flags/aw.png +0 -0
  15. images/flags/ax.png +0 -0
  16. images/flags/az.png +0 -0
  17. images/flags/ba.png +0 -0
  18. images/flags/bb.png +0 -0
  19. images/flags/bd.png +0 -0
  20. images/flags/be.png +0 -0
  21. images/flags/bf.png +0 -0
  22. images/flags/bg.png +0 -0
  23. images/flags/bh.png +0 -0
  24. images/flags/bi.png +0 -0
  25. images/flags/bj.png +0 -0
  26. images/flags/bm.png +0 -0
  27. images/flags/bn.png +0 -0
  28. images/flags/bo.png +0 -0
  29. images/flags/br.png +0 -0
  30. images/flags/bs.png +0 -0
  31. images/flags/bt.png +0 -0
  32. images/flags/bv.png +0 -0
  33. images/flags/bw.png +0 -0
  34. images/flags/by.png +0 -0
  35. images/flags/bz.png +0 -0
  36. images/flags/ca.png +0 -0
  37. images/flags/catalonia.png +0 -0
  38. images/flags/cc.png +0 -0
  39. images/flags/cd.png +0 -0
  40. images/flags/cf.png +0 -0
  41. images/flags/cg.png +0 -0
  42. images/flags/ch.png +0 -0
  43. images/flags/ci.png +0 -0
  44. images/flags/ck.png +0 -0
  45. images/flags/cl.png +0 -0
  46. images/flags/cm.png +0 -0
  47. images/flags/cn.png +0 -0
  48. images/flags/co.png +0 -0
  49. images/flags/cr.png +0 -0
  50. images/flags/cs.png +0 -0
  51. images/flags/cu.png +0 -0
  52. images/flags/cv.png +0 -0
  53. images/flags/cx.png +0 -0
  54. images/flags/cy.png +0 -0
  55. images/flags/cz.png +0 -0
  56. images/flags/de.png +0 -0
  57. images/flags/dj.png +0 -0
  58. images/flags/dk.png +0 -0
  59. images/flags/dm.png +0 -0
  60. images/flags/do.png +0 -0
  61. images/flags/dz.png +0 -0
  62. images/flags/ec.png +0 -0
  63. images/flags/ee.png +0 -0
  64. images/flags/eg.png +0 -0
  65. images/flags/eh.png +0 -0
  66. images/flags/england.png +0 -0
  67. images/flags/er.png +0 -0
  68. images/flags/es.png +0 -0
  69. images/flags/et.png +0 -0
  70. images/flags/eu.png +0 -0
  71. images/flags/fam.png +0 -0
  72. images/flags/fi.png +0 -0
  73. images/flags/fj.png +0 -0
  74. images/flags/fk.png +0 -0
  75. images/flags/fm.png +0 -0
  76. images/flags/fo.png +0 -0
  77. images/flags/fr.png +0 -0
  78. images/flags/ga.png +0 -0
  79. images/flags/gb.png +0 -0
  80. images/flags/gd.png +0 -0
  81. images/flags/ge.png +0 -0
  82. images/flags/gf.png +0 -0
  83. images/flags/gh.png +0 -0
  84. images/flags/gi.png +0 -0
  85. images/flags/gl.png +0 -0
  86. images/flags/gm.png +0 -0
  87. images/flags/gn.png +0 -0
  88. images/flags/gp.png +0 -0
  89. images/flags/gq.png +0 -0
  90. images/flags/gr.png +0 -0
  91. images/flags/gs.png +0 -0
  92. images/flags/gt.png +0 -0
  93. images/flags/gu.png +0 -0
  94. images/flags/gw.png +0 -0
  95. images/flags/gy.png +0 -0
  96. images/flags/hk.png +0 -0
  97. images/flags/hm.png +0 -0
  98. images/flags/hn.png +0 -0
  99. images/flags/hr.png +0 -0
  100. images/flags/ht.png +0 -0
  101. images/flags/hu.png +0 -0
  102. images/flags/id.png +0 -0
  103. images/flags/ie.png +0 -0
  104. images/flags/il.png +0 -0
  105. images/flags/in.png +0 -0
  106. images/flags/io.png +0 -0
  107. images/flags/iq.png +0 -0
  108. images/flags/ir.png +0 -0
  109. images/flags/is.png +0 -0
  110. images/flags/it.png +0 -0
  111. images/flags/jm.png +0 -0
  112. images/flags/jo.png +0 -0
  113. images/flags/jp.png +0 -0
  114. images/flags/ke.png +0 -0
  115. images/flags/kg.png +0 -0
  116. images/flags/kh.png +0 -0
  117. images/flags/ki.png +0 -0
  118. images/flags/km.png +0 -0
  119. images/flags/kn.png +0 -0
  120. images/flags/kp.png +0 -0
  121. images/flags/kr.png +0 -0
  122. images/flags/kw.png +0 -0
  123. images/flags/ky.png +0 -0
  124. images/flags/kz.png +0 -0
  125. images/flags/la.png +0 -0
  126. images/flags/lb.png +0 -0
  127. images/flags/lc.png +0 -0
  128. images/flags/li.png +0 -0
  129. images/flags/lk.png +0 -0
  130. images/flags/lr.png +0 -0
  131. images/flags/ls.png +0 -0
  132. images/flags/lt.png +0 -0
  133. images/flags/lu.png +0 -0
  134. images/flags/lv.png +0 -0
  135. images/flags/ly.png +0 -0
  136. images/flags/ma.png +0 -0
  137. images/flags/mc.png +0 -0
  138. images/flags/md.png +0 -0
  139. images/flags/me.png +0 -0
  140. images/flags/mg.png +0 -0
  141. images/flags/mh.png +0 -0
  142. images/flags/mk.png +0 -0
  143. images/flags/ml.png +0 -0
  144. images/flags/mm.png +0 -0
  145. images/flags/mn.png +0 -0
  146. images/flags/mo.png +0 -0
  147. images/flags/mp.png +0 -0
  148. images/flags/mq.png +0 -0
  149. images/flags/mr.png +0 -0
  150. images/flags/ms.png +0 -0
  151. images/flags/mt.png +0 -0
  152. images/flags/mu.png +0 -0
  153. images/flags/mv.png +0 -0
  154. images/flags/mw.png +0 -0
  155. images/flags/mx.png +0 -0
  156. images/flags/my.png +0 -0
  157. images/flags/mz.png +0 -0
  158. images/flags/na.png +0 -0
  159. images/flags/nc.png +0 -0
  160. images/flags/ne.png +0 -0
  161. images/flags/nf.png +0 -0
  162. images/flags/ng.png +0 -0
  163. images/flags/ni.png +0 -0
  164. images/flags/nl.png +0 -0
  165. images/flags/no.png +0 -0
  166. images/flags/np.png +0 -0
  167. images/flags/nr.png +0 -0
  168. images/flags/nu.png +0 -0
  169. images/flags/nz.png +0 -0
  170. images/flags/om.png +0 -0
  171. images/flags/pa.png +0 -0
  172. images/flags/pe.png +0 -0
  173. images/flags/pf.png +0 -0
  174. images/flags/pg.png +0 -0
  175. images/flags/ph.png +0 -0
  176. images/flags/pk.png +0 -0
  177. images/flags/pl.png +0 -0
  178. images/flags/pm.png +0 -0
  179. images/flags/pn.png +0 -0
  180. images/flags/pr.png +0 -0
  181. images/flags/ps.png +0 -0
  182. images/flags/pt.png +0 -0
  183. images/flags/pw.png +0 -0
  184. images/flags/py.png +0 -0
  185. images/flags/qa.png +0 -0
  186. images/flags/re.png +0 -0
  187. images/flags/ro.png +0 -0
  188. images/flags/rs.png +0 -0
  189. images/flags/ru.png +0 -0
  190. images/flags/rw.png +0 -0
  191. images/flags/sa.png +0 -0
  192. images/flags/sb.png +0 -0
  193. images/flags/sc.png +0 -0
  194. images/flags/scotland.png +0 -0
  195. images/flags/sd.png +0 -0
  196. images/flags/se.png +0 -0
  197. images/flags/sg.png +0 -0
  198. images/flags/sh.png +0 -0
  199. images/flags/si.png +0 -0
  200. images/flags/sj.png +0 -0
  201. images/flags/sk.png +0 -0
  202. images/flags/sl.png +0 -0
  203. images/flags/sm.png +0 -0
  204. images/flags/sn.png +0 -0
  205. images/flags/so.png +0 -0
  206. images/flags/sr.png +0 -0
  207. images/flags/st.png +0 -0
  208. images/flags/sv.png +0 -0
  209. images/flags/sy.png +0 -0
  210. images/flags/sz.png +0 -0
  211. images/flags/tc.png +0 -0
  212. images/flags/td.png +0 -0
  213. images/flags/tf.png +0 -0
  214. images/flags/tg.png +0 -0
  215. images/flags/th.png +0 -0
  216. images/flags/tj.png +0 -0
  217. images/flags/tk.png +0 -0
  218. images/flags/tl.png +0 -0
  219. images/flags/tm.png +0 -0
  220. images/flags/tn.png +0 -0
  221. images/flags/to.png +0 -0
  222. images/flags/tr.png +0 -0
  223. images/flags/tt.png +0 -0
  224. images/flags/tv.png +0 -0
  225. images/flags/tw.png +0 -0
  226. images/flags/tz.png +0 -0
  227. images/flags/ua.png +0 -0
  228. images/flags/ug.png +0 -0
  229. images/flags/um.png +0 -0
  230. images/flags/us.png +0 -0
  231. images/flags/uy.png +0 -0
  232. images/flags/uz.png +0 -0
  233. images/flags/va.png +0 -0
  234. images/flags/vc.png +0 -0
  235. images/flags/ve.png +0 -0
  236. images/flags/vg.png +0 -0
  237. images/flags/vi.png +0 -0
  238. images/flags/vn.png +0 -0
  239. images/flags/vu.png +0 -0
  240. images/flags/wales.png +0 -0
  241. images/flags/wf.png +0 -0
  242. images/flags/ws.png +0 -0
  243. images/flags/ye.png +0 -0
  244. images/flags/yt.png +0 -0
  245. images/flags/za.png +0 -0
  246. images/flags/zm.png +0 -0
  247. images/flags/zw.png +0 -0
  248. readme.html +71 -12
  249. readme.txt +2 -2
  250. useronline-js.js +1 -1
  251. useronline-options.php +20 -19
  252. wp-useronline-widget.php +2 -2
  253. wp-useronline.mo +0 -0
  254. wp-useronline.php +917 -920
  255. wp-useronline.pot +132 -111
images/flags/ad.png ADDED
Binary file
images/flags/ae.png ADDED
Binary file
images/flags/af.png ADDED
Binary file
images/flags/ag.png ADDED
Binary file
images/flags/ai.png ADDED
Binary file
images/flags/al.png ADDED
Binary file
images/flags/am.png ADDED
Binary file
images/flags/an.png ADDED
Binary file
images/flags/ao.png ADDED
Binary file
images/flags/ar.png ADDED
Binary file
images/flags/as.png ADDED
Binary file
images/flags/at.png ADDED
Binary file
images/flags/au.png ADDED
Binary file
images/flags/aw.png ADDED
Binary file
images/flags/ax.png ADDED
Binary file
images/flags/az.png ADDED
Binary file
images/flags/ba.png ADDED
Binary file
images/flags/bb.png ADDED
Binary file
images/flags/bd.png ADDED
Binary file
images/flags/be.png ADDED
Binary file
images/flags/bf.png ADDED
Binary file
images/flags/bg.png ADDED
Binary file
images/flags/bh.png ADDED
Binary file
images/flags/bi.png ADDED
Binary file
images/flags/bj.png ADDED
Binary file
images/flags/bm.png ADDED
Binary file
images/flags/bn.png ADDED
Binary file
images/flags/bo.png ADDED
Binary file
images/flags/br.png ADDED
Binary file
images/flags/bs.png ADDED
Binary file
images/flags/bt.png ADDED
Binary file
images/flags/bv.png ADDED
Binary file
images/flags/bw.png ADDED
Binary file
images/flags/by.png ADDED
Binary file
images/flags/bz.png ADDED
Binary file
images/flags/ca.png ADDED
Binary file
images/flags/catalonia.png ADDED
Binary file
images/flags/cc.png ADDED
Binary file
images/flags/cd.png ADDED
Binary file
images/flags/cf.png ADDED
Binary file
images/flags/cg.png ADDED
Binary file
images/flags/ch.png ADDED
Binary file
images/flags/ci.png ADDED
Binary file
images/flags/ck.png ADDED
Binary file
images/flags/cl.png ADDED
Binary file
images/flags/cm.png ADDED
Binary file
images/flags/cn.png ADDED
Binary file
images/flags/co.png ADDED
Binary file
images/flags/cr.png ADDED
Binary file
images/flags/cs.png ADDED
Binary file
images/flags/cu.png ADDED
Binary file
images/flags/cv.png ADDED
Binary file
images/flags/cx.png ADDED
Binary file
images/flags/cy.png ADDED
Binary file
images/flags/cz.png ADDED
Binary file
images/flags/de.png ADDED
Binary file
images/flags/dj.png ADDED
Binary file
images/flags/dk.png ADDED
Binary file
images/flags/dm.png ADDED
Binary file
images/flags/do.png ADDED
Binary file
images/flags/dz.png ADDED
Binary file
images/flags/ec.png ADDED
Binary file
images/flags/ee.png ADDED
Binary file
images/flags/eg.png ADDED
Binary file
images/flags/eh.png ADDED
Binary file
images/flags/england.png ADDED
Binary file
images/flags/er.png ADDED
Binary file
images/flags/es.png ADDED
Binary file
images/flags/et.png ADDED
Binary file
images/flags/eu.png ADDED
Binary file
images/flags/fam.png ADDED
Binary file
images/flags/fi.png ADDED
Binary file
images/flags/fj.png ADDED
Binary file
images/flags/fk.png ADDED
Binary file
images/flags/fm.png ADDED
Binary file
images/flags/fo.png ADDED
Binary file
images/flags/fr.png ADDED
Binary file
images/flags/ga.png ADDED
Binary file
images/flags/gb.png ADDED
Binary file
images/flags/gd.png ADDED
Binary file
images/flags/ge.png ADDED
Binary file
images/flags/gf.png ADDED
Binary file
images/flags/gh.png ADDED
Binary file
images/flags/gi.png ADDED
Binary file
images/flags/gl.png ADDED
Binary file
images/flags/gm.png ADDED
Binary file
images/flags/gn.png ADDED
Binary file
images/flags/gp.png ADDED
Binary file
images/flags/gq.png ADDED
Binary file
images/flags/gr.png ADDED
Binary file
images/flags/gs.png ADDED
Binary file
images/flags/gt.png ADDED
Binary file
images/flags/gu.png ADDED
Binary file
images/flags/gw.png ADDED
Binary file
images/flags/gy.png ADDED
Binary file
images/flags/hk.png ADDED
Binary file
images/flags/hm.png ADDED
Binary file
images/flags/hn.png ADDED
Binary file
images/flags/hr.png ADDED
Binary file
images/flags/ht.png ADDED
Binary file
images/flags/hu.png ADDED
Binary file
images/flags/id.png ADDED
Binary file
images/flags/ie.png ADDED
Binary file
images/flags/il.png ADDED
Binary file
images/flags/in.png ADDED
Binary file
images/flags/io.png ADDED
Binary file
images/flags/iq.png ADDED
Binary file
images/flags/ir.png ADDED
Binary file
images/flags/is.png ADDED
Binary file
images/flags/it.png ADDED
Binary file
images/flags/jm.png ADDED
Binary file
images/flags/jo.png ADDED
Binary file
images/flags/jp.png ADDED
Binary file
images/flags/ke.png ADDED
Binary file
images/flags/kg.png ADDED
Binary file
images/flags/kh.png ADDED
Binary file
images/flags/ki.png ADDED
Binary file
images/flags/km.png ADDED
Binary file
images/flags/kn.png ADDED
Binary file
images/flags/kp.png ADDED
Binary file
images/flags/kr.png ADDED
Binary file
images/flags/kw.png ADDED
Binary file
images/flags/ky.png ADDED
Binary file
images/flags/kz.png ADDED
Binary file
images/flags/la.png ADDED
Binary file
images/flags/lb.png ADDED
Binary file
images/flags/lc.png ADDED
Binary file
images/flags/li.png ADDED
Binary file
images/flags/lk.png ADDED
Binary file
images/flags/lr.png ADDED
Binary file
images/flags/ls.png ADDED
Binary file
images/flags/lt.png ADDED
Binary file
images/flags/lu.png ADDED
Binary file
images/flags/lv.png ADDED
Binary file
images/flags/ly.png ADDED
Binary file
images/flags/ma.png ADDED
Binary file
images/flags/mc.png ADDED
Binary file
images/flags/md.png ADDED
Binary file
images/flags/me.png ADDED
Binary file
images/flags/mg.png ADDED
Binary file
images/flags/mh.png ADDED
Binary file
images/flags/mk.png ADDED
Binary file
images/flags/ml.png ADDED
Binary file
images/flags/mm.png ADDED
Binary file
images/flags/mn.png ADDED
Binary file
images/flags/mo.png ADDED
Binary file
images/flags/mp.png ADDED
Binary file
images/flags/mq.png ADDED
Binary file
images/flags/mr.png ADDED
Binary file
images/flags/ms.png ADDED
Binary file
images/flags/mt.png ADDED
Binary file
images/flags/mu.png ADDED
Binary file
images/flags/mv.png ADDED
Binary file
images/flags/mw.png ADDED
Binary file
images/flags/mx.png ADDED
Binary file
images/flags/my.png ADDED
Binary file
images/flags/mz.png ADDED
Binary file
images/flags/na.png ADDED
Binary file
images/flags/nc.png ADDED
Binary file
images/flags/ne.png ADDED
Binary file
images/flags/nf.png ADDED
Binary file
images/flags/ng.png ADDED
Binary file
images/flags/ni.png ADDED
Binary file
images/flags/nl.png ADDED
Binary file
images/flags/no.png ADDED
Binary file
images/flags/np.png ADDED
Binary file
images/flags/nr.png ADDED
Binary file
images/flags/nu.png ADDED
Binary file
images/flags/nz.png ADDED
Binary file
images/flags/om.png ADDED
Binary file
images/flags/pa.png ADDED
Binary file
images/flags/pe.png ADDED
Binary file
images/flags/pf.png ADDED
Binary file
images/flags/pg.png ADDED
Binary file
images/flags/ph.png ADDED
Binary file
images/flags/pk.png ADDED
Binary file
images/flags/pl.png ADDED
Binary file
images/flags/pm.png ADDED
Binary file
images/flags/pn.png ADDED
Binary file
images/flags/pr.png ADDED
Binary file
images/flags/ps.png ADDED
Binary file
images/flags/pt.png ADDED
Binary file
images/flags/pw.png ADDED
Binary file
images/flags/py.png ADDED
Binary file
images/flags/qa.png ADDED
Binary file
images/flags/re.png ADDED
Binary file
images/flags/ro.png ADDED
Binary file
images/flags/rs.png ADDED
Binary file
images/flags/ru.png ADDED
Binary file
images/flags/rw.png ADDED
Binary file
images/flags/sa.png ADDED
Binary file
images/flags/sb.png ADDED
Binary file
images/flags/sc.png ADDED
Binary file
images/flags/scotland.png ADDED
Binary file
images/flags/sd.png ADDED
Binary file
images/flags/se.png ADDED
Binary file
images/flags/sg.png ADDED
Binary file
images/flags/sh.png ADDED
Binary file
images/flags/si.png ADDED
Binary file
images/flags/sj.png ADDED
Binary file
images/flags/sk.png ADDED
Binary file
images/flags/sl.png ADDED
Binary file
images/flags/sm.png ADDED
Binary file
images/flags/sn.png ADDED
Binary file
images/flags/so.png ADDED
Binary file
images/flags/sr.png ADDED
Binary file
images/flags/st.png ADDED
Binary file
images/flags/sv.png ADDED
Binary file
images/flags/sy.png ADDED
Binary file
images/flags/sz.png ADDED
Binary file
images/flags/tc.png ADDED
Binary file
images/flags/td.png ADDED
Binary file
images/flags/tf.png ADDED
Binary file
images/flags/tg.png ADDED
Binary file
images/flags/th.png ADDED
Binary file
images/flags/tj.png ADDED
Binary file
images/flags/tk.png ADDED
Binary file
images/flags/tl.png ADDED
Binary file
images/flags/tm.png ADDED
Binary file
images/flags/tn.png ADDED
Binary file
images/flags/to.png ADDED
Binary file
images/flags/tr.png ADDED
Binary file
images/flags/tt.png ADDED
Binary file
images/flags/tv.png ADDED
Binary file
images/flags/tw.png ADDED
Binary file
images/flags/tz.png ADDED
Binary file
images/flags/ua.png ADDED
Binary file
images/flags/ug.png ADDED
Binary file
images/flags/um.png ADDED
Binary file
images/flags/us.png ADDED
Binary file
images/flags/uy.png ADDED
Binary file
images/flags/uz.png ADDED
Binary file
images/flags/va.png ADDED
Binary file
images/flags/vc.png ADDED
Binary file
images/flags/ve.png ADDED
Binary file
images/flags/vg.png ADDED
Binary file
images/flags/vi.png ADDED
Binary file
images/flags/vn.png ADDED
Binary file
images/flags/vu.png ADDED
Binary file
images/flags/wales.png ADDED
Binary file
images/flags/wf.png ADDED
Binary file
images/flags/ws.png ADDED
Binary file
images/flags/ye.png ADDED
Binary file
images/flags/yt.png ADDED
Binary file
images/flags/za.png ADDED
Binary file
images/flags/zm.png ADDED
Binary file
images/flags/zw.png ADDED
Binary file
readme.html CHANGED
@@ -1,8 +1,8 @@
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.31 Readme</title>
6
  <style type="text/css" media="screen">
7
  /* Default Style */
8
  BODY {
@@ -204,7 +204,7 @@
204
  <body>
205
  <div id="Container">
206
  <!-- Title -->
207
- <div id="Title">WP-UserOnline 2.31&nbsp;&nbsp;&nbsp;<span style="color: #aaaaaa;">Readme</span></div>
208
 
209
  <!-- Tabs -->
210
  <ul id="Tabs">
@@ -235,6 +235,7 @@
235
  </p>
236
  <p>
237
  <strong>Download:</strong><br />
 
238
  <strong>&raquo;</strong> <a href="http://downloads.wordpress.org/plugin/wp-useronline.2.31.zip" title="http://downloads.wordpress.org/plugin/wp-useronline.2.31.zip">WP-UserOnline 2.31 For WordPress 2.5.x And 2.6.x</a><br />
239
  <strong>&raquo;</strong> <a href="http://downloads.wordpress.org/plugin/wp-useronline.2.20.zip" title="http://downloads.wordpress.org/plugin/wp-useronline.2.20.zip">WP-UserOnline 2.20 For WordPress 2.3.x</a><br />
240
  <strong>&raquo;</strong> <a href="http://downloads.wordpress.org/plugin/wp-useronline.2.11.zip" title="http://downloads.wordpress.org/plugin/wp-useronline.2.11.zip">WP-UserOnline 2.11 For WordPress 2.1.x And 2.2.x</a><br />
@@ -261,6 +262,11 @@
261
  <strong>Support Forums:</strong><br />
262
  <strong>&raquo;</strong> <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>
263
  </p>
 
 
 
 
 
264
  <p>
265
  <strong>Note:</strong><br />
266
  <strong>&raquo;</strong> The <strong>Changelog</strong>, <strong>Installation</strong>, <strong>Upgrade</strong>, <strong>Usage</strong> Tab at the top of the page.
@@ -280,6 +286,20 @@
280
  <div id="Changelog" style="display: none;">
281
  <div class="SubTitle">&raquo; Changelog</div>
282
  <ul>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
283
  <li>
284
  <strong>Version 2.31 (16-07-2008)</strong>
285
  <ul>
@@ -401,7 +421,7 @@
401
 
402
  <!-- Installation Instructions -->
403
  <div id="Install" style="display: none;">
404
- <div class="SubTitle">&raquo; Installation Instructions</div>
405
  <ol>
406
  <li>
407
  Open <strong>wp-content/plugins</strong> Folder
@@ -413,6 +433,45 @@
413
  <li>
414
  <strong>Activate</strong> WP-UserOnline Plugin
415
  </li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
416
  <li>
417
  Refer To <strong>Usage</strong> For Further Instructions
418
  </li>
@@ -422,7 +481,7 @@
422
  <!-- Upgrade Instructions -->
423
  <div id="Upgrade" style="display: none;">
424
  <div class="SubTitle">&raquo; Upgrade Instructions</div>
425
- <div class="SubSubTitle">From v2.0x To v2.31</div>
426
  <ol>
427
  <li>
428
  <strong>Deactivate</strong> WP-UserOnline Plugin
@@ -477,7 +536,7 @@
477
  <strong>Activate</strong> WP-UserOnline Widget Plugin
478
  </li>
479
  <li>
480
- Go to '<strong>WP-Admin -> Design -> Widgets</strong>'
481
  </li>
482
  <li>
483
  You can <strong>add</strong> the UserOnline Widget by clicking on the 'Add' link besides it.
@@ -495,13 +554,13 @@
495
  <div class="SubSubTitle">UserOnline Page</div>
496
  <ol>
497
  <li>
498
- Go to '<strong>WP-Admin -> Write -> Write Page</strong>'
499
  </li>
500
  <li>
501
  Type any title you like in the post's title area
502
  </li>
503
  <li>
504
- After typing the title, WordPress will generate the permalink to the page. You will see an 'Edit' link just beside the permalink.
505
  </li>
506
  <li>
507
  Click 'Edit' and type in '<strong>useronline</strong>' in the text field (without the quotes) and click 'Save'.
@@ -523,7 +582,7 @@
523
  Use:
524
  <blockquote>
525
  &lt;?php if (function_exists('get_most_useronline')): ?&gt;<br />
526
- &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 />
527
  &lt;?php endif; ?&gt;
528
  </blockquote>
529
  </li>
@@ -534,7 +593,7 @@
534
  Use:
535
  <blockquote>
536
  &lt;?php if (function_exists('get_users_browsing_site')): ?&gt;<br />
537
- &nbsp;&nbsp;&nbsp;&lt;div id="useronline-browsing-site"&gt;&lt;?php get_users_browsing_site(); ?&gt;&lt;/div&gt;<br />
538
  &lt;?php endif; ?&gt;
539
  </blockquote>
540
  </li>
@@ -545,7 +604,7 @@
545
  Use:
546
  <blockquote>
547
  &lt;?php if (function_exists('get_users_browsing_page')): ?&gt;<br />
548
- &nbsp;&nbsp;&nbsp;&lt;div id="useronline-browsing-page"&gt;&lt;?php get_users_browsing_page(); ?&gt;&lt;/div&gt;<br />
549
  &lt;?php endif; ?&gt;
550
  </blockquote>
551
  </li>
@@ -553,6 +612,6 @@
553
  </div>
554
  </div>
555
  </div>
556
- <p id="Copyright">WP-UserOnline 2.31<br />Copyright &copy; 2007 Lester 'GaMerZ' Chan. All Rights Reserved.</p>
557
  </body>
558
  </html>
1
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
  <head>
4
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5
+ <title>WP-UserOnline 2.40 Readme</title>
6
  <style type="text/css" media="screen">
7
  /* Default Style */
8
  BODY {
204
  <body>
205
  <div id="Container">
206
  <!-- Title -->
207
+ <div id="Title">WP-UserOnline 2.40&nbsp;&nbsp;&nbsp;<span style="color: #aaaaaa;">Readme</span></div>
208
 
209
  <!-- Tabs -->
210
  <ul id="Tabs">
235
  </p>
236
  <p>
237
  <strong>Download:</strong><br />
238
+ <strong>&raquo;</strong> <a href="http://downloads.wordpress.org/plugin/wp-useronline.2.40.zip" title="http://downloads.wordpress.org/plugin/wp-useronline.2.40.zip">WP-UserOnline 2.40 For 2.7.x</a><br />
239
  <strong>&raquo;</strong> <a href="http://downloads.wordpress.org/plugin/wp-useronline.2.31.zip" title="http://downloads.wordpress.org/plugin/wp-useronline.2.31.zip">WP-UserOnline 2.31 For WordPress 2.5.x And 2.6.x</a><br />
240
  <strong>&raquo;</strong> <a href="http://downloads.wordpress.org/plugin/wp-useronline.2.20.zip" title="http://downloads.wordpress.org/plugin/wp-useronline.2.20.zip">WP-UserOnline 2.20 For WordPress 2.3.x</a><br />
241
  <strong>&raquo;</strong> <a href="http://downloads.wordpress.org/plugin/wp-useronline.2.11.zip" title="http://downloads.wordpress.org/plugin/wp-useronline.2.11.zip">WP-UserOnline 2.11 For WordPress 2.1.x And 2.2.x</a><br />
262
  <strong>Support Forums:</strong><br />
263
  <strong>&raquo;</strong> <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>
264
  </p>
265
+ <p>
266
+ <strong>Credits:</strong><br />
267
+ <strong>&raquo;</strong> __ngetext() by <a href="http://hweia.ru/" title="http://hweia.ru/">Anna Ozeritskaya</a>.<br />
268
+ <strong>&raquo;</strong> Right To Left Language Support by <a href="http://persian-programming.com/" title="http://persian-programming.com/">Kambiz R. Khojasteh</a>.
269
+ </p>
270
  <p>
271
  <strong>Note:</strong><br />
272
  <strong>&raquo;</strong> The <strong>Changelog</strong>, <strong>Installation</strong>, <strong>Upgrade</strong>, <strong>Usage</strong> Tab at the top of the page.
286
  <div id="Changelog" style="display: none;">
287
  <div class="SubTitle">&raquo; Changelog</div>
288
  <ul>
289
+ <li>
290
+ <strong>Version 2.40 (12-12-2008)</strong>
291
+ <ul>
292
+ <li>NEW: Works For WordPress 2.7 Only</li>
293
+ <li>NEW: Uses plugins_url() And site_url()</li>
294
+ <li>NEW: Cache IPs of ip2nation by <a href="http://persian-programming.com/" title="http://persian-programming.com/">Kambiz R. Khojasteh</a></li>
295
+ <li>NEW: Country Flags Images Are Now Included As Part Of The Plugin</li>
296
+ <li>NEW: Right To Left Language Support by <a href="http://persian-programming.com/" title="http://persian-programming.com/">Kambiz R. Khojasteh</a></li>
297
+ <li>NEW: Better Translation Using __ngetext() by <a href="http://hweia.ru/" title="http://hweia.ru/">Anna Ozeritskaya</a></li>
298
+ <li>NEW: Output Of useronline_page() Applied To "useronline_page" Filter by <a href="http://persian-programming.com/" title="http://persian-programming.com/">Kambiz R. Khojasteh</a></li>
299
+ <li>NEW: Called useronline_textdomain() In create_useronline_table() by <a href="http://persian-programming.com/" title="http://persian-programming.com/">Kambiz R. Khojasteh</a></li>
300
+ <li>FIXED: SSL Support</li>
301
+ </ul>
302
+ </li>
303
  <li>
304
  <strong>Version 2.31 (16-07-2008)</strong>
305
  <ul>
421
 
422
  <!-- Installation Instructions -->
423
  <div id="Install" style="display: none;">
424
+ <div class="SubTitle">&raquo; WP-UserOnline Installation Instructions</div>
425
  <ol>
426
  <li>
427
  Open <strong>wp-content/plugins</strong> Folder
433
  <li>
434
  <strong>Activate</strong> WP-UserOnline Plugin
435
  </li>
436
+ <li>
437
+ Proceed On To <strong>ip2nation Installation Instructions</strong>
438
+ </li>
439
+ </ol>
440
+ <div class="SubTitle">&raquo; ip2nation Installation Instructions</div>
441
+ <ol>
442
+ <li>
443
+ Go to <strong><a href="http://www.ip2nation.com/ip2nation/Download">http://www.ip2nation.com/ip2nation/Download</a></strong>
444
+ </li>
445
+ <li>
446
+ It will prompt you to download a ZIP file called <strong>ip2nation.zip</strong>
447
+ </li>
448
+ <li>
449
+ After you have completed downloading <strong>ip2nation.zip</strong>, extract out <strong>ip2nation.zip</strong>
450
+ </li>
451
+ <li>
452
+ You should see a SQL file called <strong>ip2nation.sql</strong>
453
+ </li>
454
+ <li>
455
+ Go to your domain <strong>phpMyAdmin</strong> webpage
456
+ </li>
457
+ <li>
458
+ Select your <strong>WordPress Database</strong>
459
+ </li>
460
+ <li>
461
+ Click on <strong>Import Tab</strong>
462
+ </li>
463
+ <li>
464
+ Under <strong>File to import</strong> and then under <strong>Location of the text file</strong>, click <strong>Browse</strong>
465
+ </li>
466
+ <li>
467
+ Browse for the SQL file <strong>ip2nation.sql</strong>
468
+ </li>
469
+ <li>
470
+ Click <strong>Go</strong>
471
+ </li>
472
+ <li>
473
+ It should take a few seconds and after that both <strong>ip2nationCountries</strong> and <strong>ip2nation</strong> tables will be created
474
+ </li>
475
  <li>
476
  Refer To <strong>Usage</strong> For Further Instructions
477
  </li>
481
  <!-- Upgrade Instructions -->
482
  <div id="Upgrade" style="display: none;">
483
  <div class="SubTitle">&raquo; Upgrade Instructions</div>
484
+ <div class="SubSubTitle">From v2.0x To v2.40</div>
485
  <ol>
486
  <li>
487
  <strong>Deactivate</strong> WP-UserOnline Plugin
536
  <strong>Activate</strong> WP-UserOnline Widget Plugin
537
  </li>
538
  <li>
539
+ Go to '<strong>WP-Admin -> Appearance -> Widgets</strong>'
540
  </li>
541
  <li>
542
  You can <strong>add</strong> the UserOnline Widget by clicking on the 'Add' link besides it.
554
  <div class="SubSubTitle">UserOnline Page</div>
555
  <ol>
556
  <li>
557
+ Go to '<strong>WP-Admin -> Pages -> Add New</strong>'
558
  </li>
559
  <li>
560
  Type any title you like in the post's title area
561
  </li>
562
  <li>
563
+ If you <strong>ARE </strong> using nice permalinks, after typing the title, WordPress will generate the permalink to the page. You will see an 'Edit' link just beside the permalink.
564
  </li>
565
  <li>
566
  Click 'Edit' and type in '<strong>useronline</strong>' in the text field (without the quotes) and click 'Save'.
582
  Use:
583
  <blockquote>
584
  &lt;?php if (function_exists('get_most_useronline')): ?&gt;<br />
585
+ &nbsp;&nbsp;&nbsp;&lt;p&gt;Most Users Ever Online Is &lt;?php echo get_most_useronline(); ?&gt; On &lt;?php echo get_most_useronline_date(); ?&gt;&lt;/p&gt;<br />
586
  &lt;?php endif; ?&gt;
587
  </blockquote>
588
  </li>
593
  Use:
594
  <blockquote>
595
  &lt;?php if (function_exists('get_users_browsing_site')): ?&gt;<br />
596
+ &nbsp;&nbsp;&nbsp;&lt;div id="useronline-browsing-site"&gt;&lt;?php echo get_users_browsing_site(); ?&gt;&lt;/div&gt;<br />
597
  &lt;?php endif; ?&gt;
598
  </blockquote>
599
  </li>
604
  Use:
605
  <blockquote>
606
  &lt;?php if (function_exists('get_users_browsing_page')): ?&gt;<br />
607
+ &nbsp;&nbsp;&nbsp;&lt;div id="useronline-browsing-page"&gt;&lt;?php echo get_users_browsing_page(); ?&gt;&lt;/div&gt;<br />
608
  &lt;?php endif; ?&gt;
609
  </blockquote>
610
  </li>
612
  </div>
613
  </div>
614
  </div>
615
+ <p id="Copyright">WP-UserOnline 2.40<br />Copyright &copy; 2007 Lester 'GaMerZ' Chan. All Rights Reserved.</p>
616
  </body>
617
  </html>
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: GamerZ
3
  Donate link: http://lesterchan.net/wordpress
4
  Tags: useronline, usersonline, wp-useronline, online, users, user, ajax, widget
5
- Requires at least: 2.5.0
6
- Stable tag: 2.31
7
 
8
  Enable you to display how many users are online on your Wordpress blog with detailed statistics.
9
 
2
  Contributors: GamerZ
3
  Donate link: http://lesterchan.net/wordpress
4
  Tags: useronline, usersonline, wp-useronline, online, users, user, ajax, widget
5
+ Requires at least: 2.7
6
+ Stable tag: 2.40
7
 
8
  Enable you to display how many users are online on your Wordpress blog with detailed statistics.
9
 
useronline-js.js CHANGED
@@ -1,7 +1,7 @@
1
  /*
2
  +----------------------------------------------------------------+
3
  | |
4
- | WordPress 2.5 Plugin: WP-UserOnline 2.31 |
5
  | Copyright (c) 2008 Lester "GaMerZ" Chan |
6
  | |
7
  | File Written By: |
1
  /*
2
  +----------------------------------------------------------------+
3
  | |
4
+ | WordPress 2.6 Plugin: WP-UserOnline 2.40 |
5
  | Copyright (c) 2008 Lester "GaMerZ" Chan |
6
  | |
7
  | File Written By: |
useronline-options.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  +----------------------------------------------------------------+
4
  | |
5
- | WordPress 2.5 Plugin: WP-UserOnline 2.31 |
6
  | Copyright (c) 2008 Lester "GaMerZ" Chan |
7
  | |
8
  | File Written By: |
@@ -167,21 +167,22 @@ switch($mode) {
167
  document.getElementById('useronline_naming_bots').value = "<?php _e('%USERONLINE_COUNT% Bots', 'wp-useronline'); ?>";
168
  }
169
  function useronline_default_browsing_site() {
170
- document.getElementById('useronline_separator_browsingsite_members').value = ', ';
171
- document.getElementById('useronline_separator_browsingsite_guests').value = ', ';
172
- document.getElementById('useronline_separator_browsingsite_bots').value = ', ';
173
- document.getElementById('useronline_template_browsingsite').value = "<?php _e('Users', 'wp-useronline'); ?>: <strong>%USERONLINE_MEMBER_NAMES%%USERONLINE_GUESTS_SEPERATOR%%USERONLINE_GUESTS%%USERONLINE_BOTS_SEPERATOR%%USERONLINE_BOTS%</strong>";
174
  }
175
  function useronline_default_browsing_page() {
176
- document.getElementById('useronline_separator_browsingpage_members').value = ', ';
177
- document.getElementById('useronline_separator_browsingpage_guests').value = ', ';
178
- document.getElementById('useronline_separator_browsingpage_bots').value = ', ';
179
- document.getElementById('useronline_template_browsingpage').value = "<strong>%USERONLINE_USERS%</strong> <?php _e('Browsing This Page.', 'wp-useronline'); ?><br /><?php _e('Users', 'wp-useronline'); ?>: <strong>%USERONLINE_MEMBER_NAMES%%USERONLINE_GUESTS_SEPERATOR%%USERONLINE_GUESTS%%USERONLINE_BOTS_SEPERATOR%%USERONLINE_BOTS%</strong>";
180
  }
181
  /* ]]> */
182
  </script>
183
  <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
184
- <div class="wrap">
 
185
  <h2><?php _e('Useronline Options', 'wp-useronline'); ?></h2>
186
  <h3><?php _e('Useronline Options', 'wp-useronline'); ?></h3>
187
  <table class="form-table">
@@ -194,7 +195,7 @@ switch($mode) {
194
  <tr>
195
  <th scope="row" valign="top"><?php _e('UserOnline URL', 'wp-useronline'); ?></th>
196
  <td>
197
- <input type="text" name="useronline_url" value="<?php echo get_option('useronline_url'); ?>" size="50" /><br /><?php _e('URL To UserOnline Page (leave blank if you do not want to link it to the UserOnline Page)<br />Example: http://www.yoursite.com/blogs/useronline/<br />Example: http://www.yoursite.com/blogs/?page_id=2', 'wp-useronline'); ?>
198
  </td>
199
  </tr>
200
  <tr>
@@ -202,8 +203,8 @@ switch($mode) {
202
  <td>
203
  <?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'); ?>
204
  <br /><br />
205
- <textarea cols="20" rows="30" name="useronline_bots_name"><?php echo $useronline_options_bots_name; ?></textarea>
206
- <textarea cols="20" rows="30" name="useronline_bots_agent"><?php echo $useronline_options_bots_agent; ?></textarea>
207
  </td>
208
  </tr>
209
  <tr>
@@ -334,22 +335,22 @@ switch($mode) {
334
  <!-- Uninstall WP-UserOnline -->
335
  <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
336
  <div class="wrap">
337
- <h2><?php _e('Uninstall WP-UserOnline', 'wp-useronline'); ?></h2>
338
- <p style="text-align: left;">
339
  <?php _e('Deactivating WP-UserOnline plugin does not remove any data that may have been created, such as the useronline options. To completely remove this plugin, you can uninstall it here.', 'wp-useronline'); ?>
340
  </p>
341
- <p style="text-align: left; color: red">
342
  <strong><?php _e('WARNING:', 'wp-useronline'); ?></strong><br />
343
  <?php _e('Once uninstalled, this cannot be undone. You should use a Database Backup plugin of WordPress to back up all the data first.', 'wp-useronline'); ?>
344
  </p>
345
- <p style="text-align: left; color: red">
346
  <strong><?php _e('The following WordPress Options/Tables will be DELETED:', 'wp-useronline'); ?></strong><br />
347
  </p>
348
  <table class="widefat">
349
  <thead>
350
  <tr>
351
- <th><?php _e('WordPress Options', 'wp-polls'); ?></th>
352
- <th><?php _e('WordPress Tables', 'wp-polls'); ?></th>
353
  </tr>
354
  </thead>
355
  <tr>
2
  /*
3
  +----------------------------------------------------------------+
4
  | |
5
+ | WordPress 2.6 Plugin: WP-UserOnline 2.40 |
6
  | Copyright (c) 2008 Lester "GaMerZ" Chan |
7
  | |
8
  | File Written By: |
167
  document.getElementById('useronline_naming_bots').value = "<?php _e('%USERONLINE_COUNT% Bots', 'wp-useronline'); ?>";
168
  }
169
  function useronline_default_browsing_site() {
170
+ document.getElementById('useronline_separator_browsingsite_members').value = "<?php _e(',', 'wp-useronline') ?> ";
171
+ document.getElementById('useronline_separator_browsingsite_guests').value = "<?php _e(',', 'wp-useronline') ?> ";
172
+ document.getElementById('useronline_separator_browsingsite_bots').value = "<?php _e(',', 'wp-useronline') ?> ";
173
+ document.getElementById('useronline_template_browsingsite').value = "<?php echo(_c('Users|Template Element', 'wp-useronline')); ?>: <strong>%USERONLINE_MEMBER_NAMES%%USERONLINE_GUESTS_SEPERATOR%%USERONLINE_GUESTS%%USERONLINE_BOTS_SEPERATOR%%USERONLINE_BOTS%</strong>";
174
  }
175
  function useronline_default_browsing_page() {
176
+ document.getElementById('useronline_separator_browsingpage_members').value = "<?php _e(',', 'wp-useronline') ?> ";
177
+ document.getElementById('useronline_separator_browsingpage_guests').value = "<?php _e(',', 'wp-useronline') ?> ";
178
+ document.getElementById('useronline_separator_browsingpage_bots').value = "<?php _e(',', 'wp-useronline') ?> ";
179
+ document.getElementById('useronline_template_browsingpage').value = "<strong>%USERONLINE_USERS%</strong> <?php _e('Browsing This Page.', 'wp-useronline'); ?><br /><?php echo(_c('Users|Template Element', 'wp-useronline')); ?>: <strong>%USERONLINE_MEMBER_NAMES%%USERONLINE_GUESTS_SEPERATOR%%USERONLINE_GUESTS%%USERONLINE_BOTS_SEPERATOR%%USERONLINE_BOTS%</strong>";
180
  }
181
  /* ]]> */
182
  </script>
183
  <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
184
+ <div class="wrap">
185
+ <?php screen_icon(); ?>
186
  <h2><?php _e('Useronline Options', 'wp-useronline'); ?></h2>
187
  <h3><?php _e('Useronline Options', 'wp-useronline'); ?></h3>
188
  <table class="form-table">
195
  <tr>
196
  <th scope="row" valign="top"><?php _e('UserOnline URL', 'wp-useronline'); ?></th>
197
  <td>
198
+ <input type="text" name="useronline_url" value="<?php echo get_option('useronline_url'); ?>" size="50" dir="ltr" /><br /><?php _e('URL To UserOnline Page (leave blank if you do not want to link it to the UserOnline Page)<br />Example: http://www.yoursite.com/blogs/useronline/<br />Example: http://www.yoursite.com/blogs/?page_id=2', 'wp-useronline'); ?>
199
  </td>
200
  </tr>
201
  <tr>
203
  <td>
204
  <?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'); ?>
205
  <br /><br />
206
+ <textarea cols="20" rows="30" name="useronline_bots_name" dir="ltr"><?php echo $useronline_options_bots_name; ?></textarea>
207
+ <textarea cols="20" rows="30" name="useronline_bots_agent" dir="ltr"><?php echo $useronline_options_bots_agent; ?></textarea>
208
  </td>
209
  </tr>
210
  <tr>
335
  <!-- Uninstall WP-UserOnline -->
336
  <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
337
  <div class="wrap">
338
+ <h3><?php _e('Uninstall WP-UserOnline', 'wp-useronline'); ?></h3>
339
+ <p>
340
  <?php _e('Deactivating WP-UserOnline plugin does not remove any data that may have been created, such as the useronline options. To completely remove this plugin, you can uninstall it here.', 'wp-useronline'); ?>
341
  </p>
342
+ <p style="color: red">
343
  <strong><?php _e('WARNING:', 'wp-useronline'); ?></strong><br />
344
  <?php _e('Once uninstalled, this cannot be undone. You should use a Database Backup plugin of WordPress to back up all the data first.', 'wp-useronline'); ?>
345
  </p>
346
+ <p style="color: red">
347
  <strong><?php _e('The following WordPress Options/Tables will be DELETED:', 'wp-useronline'); ?></strong><br />
348
  </p>
349
  <table class="widefat">
350
  <thead>
351
  <tr>
352
+ <th><?php _e('WordPress Options', 'wp-useronline'); ?></th>
353
+ <th><?php _e('WordPress Tables', 'wp-useronline'); ?></th>
354
  </tr>
355
  </thead>
356
  <tr>
wp-useronline-widget.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: WP-UserOnline Widget
4
  Plugin URI: http://lesterchan.net/portfolio/programming/php/
5
  Description: Adds a UserOnline Widget to display users online from WP-UserOnline Plugin. You need to activate WP-UserOnline first.
6
- Version: 2.31
7
  Author: Lester 'GaMerZ' Chan
8
  Author URI: http://lesterchan.net
9
  */
@@ -66,7 +66,7 @@ function widget_useronline_init() {
66
  $options['title'] = strip_tags($_POST['useronline-title']);
67
  update_option('widget_useronline', $options);
68
  }
69
- 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(stripslashes($options['title'])).'" />';
70
  echo '<p style="text-align: center;">'.__('Display Users Browsing Site Under Users Online Count?', 'wp-useronline').'</p>'."\n";
71
  echo '<p style="text-align: center;"><input type="radio" id="useronline-usersbrowsingsite-1" name="useronline-usersbrowsingsite" value="1"';
72
  checked(1, intval($options['display_usersbrowsingsite']));
3
  Plugin Name: WP-UserOnline Widget
4
  Plugin URI: http://lesterchan.net/portfolio/programming/php/
5
  Description: Adds a UserOnline Widget to display users online from WP-UserOnline Plugin. You need to activate WP-UserOnline first.
6
+ Version: 2.40
7
  Author: Lester 'GaMerZ' Chan
8
  Author URI: http://lesterchan.net
9
  */
66
  $options['title'] = strip_tags($_POST['useronline-title']);
67
  update_option('widget_useronline', $options);
68
  }
69
+ echo '<p><label for="useronline-title">'.__('Widget Title', 'wp-useronline').':</label>&nbsp;&nbsp;&nbsp;<input type="text" id="useronline-title" name="useronline-title" value="'.htmlspecialchars(stripslashes($options['title'])).'" />';
70
  echo '<p style="text-align: center;">'.__('Display Users Browsing Site Under Users Online Count?', 'wp-useronline').'</p>'."\n";
71
  echo '<p style="text-align: center;"><input type="radio" id="useronline-usersbrowsingsite-1" name="useronline-usersbrowsingsite" value="1"';
72
  checked(1, intval($options['display_usersbrowsingsite']));
wp-useronline.mo CHANGED
Binary file
wp-useronline.php CHANGED
@@ -1,921 +1,918 @@
1
- <?php
2
- /*
3
- Plugin Name: WP-UserOnline
4
- Plugin URI: http://lesterchan.net/portfolio/programming/php/
5
- Description: Enable you to display how many users are online on your Wordpress blog with detailed statistics of where they are and who there are(Members/Guests/Search Bots).
6
- Version: 2.31
7
- Author: Lester 'GaMerZ' Chan
8
- Author URI: http://lesterchan.net
9
- */
10
-
11
-
12
- /*
13
- Copyright 2008 Lester Chan (email : lesterchan@gmail.com)
14
-
15
- This program is free software; you can redistribute it and/or modify
16
- it under the terms of the GNU General Public License as published by
17
- the Free Software Foundation; either version 2 of the License, or
18
- (at your option) any later version.
19
-
20
- This program is distributed in the hope that it will be useful,
21
- but WITHOUT ANY WARRANTY; without even the implied warranty of
22
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
- GNU General Public License for more details.
24
-
25
- You should have received a copy of the GNU General Public License
26
- along with this program; if not, write to the Free Software
27
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28
- */
29
-
30
-
31
- ### Load WP-Config File If This File Is Called Directly
32
- if (!function_exists('add_action')) {
33
- $wp_root = '../../..';
34
- if (file_exists($wp_root.'/wp-load.php')) {
35
- require_once($wp_root.'/wp-load.php');
36
- } else {
37
- require_once($wp_root.'/wp-config.php');
38
- }
39
- }
40
-
41
-
42
- ### Use WordPress 2.6 Constants
43
- if (!defined('WP_CONTENT_DIR')) {
44
- define( 'WP_CONTENT_DIR', ABSPATH.'wp-content');
45
- }
46
- if (!defined('WP_CONTENT_URL')) {
47
- define('WP_CONTENT_URL', get_option('siteurl').'/wp-content');
48
- }
49
- if (!defined('WP_PLUGIN_DIR')) {
50
- define('WP_PLUGIN_DIR', WP_CONTENT_DIR.'/plugins');
51
- }
52
- if (!defined('WP_PLUGIN_URL')) {
53
- define('WP_PLUGIN_URL', WP_CONTENT_URL.'/plugins');
54
- }
55
-
56
-
57
- ### Create Text Domain For Translations
58
- add_action('init', 'useronline_textdomain');
59
- function useronline_textdomain() {
60
- if (!function_exists('wp_print_styles')) {
61
- load_plugin_textdomain('wp-useronline', 'wp-content/plugins/wp-useronline');
62
- } else {
63
- load_plugin_textdomain('wp-useronline', false, 'wp-useronline');
64
- }
65
- }
66
-
67
-
68
- ### UserOnline Table Name
69
- global $wpdb;
70
- $wpdb->useronline = $wpdb->prefix.'useronline';
71
-
72
-
73
- ### Function: WP-UserOnline Menu
74
- add_action('admin_menu', 'useronline_menu');
75
- function useronline_menu() {
76
- if (function_exists('add_submenu_page')) {
77
- add_submenu_page('index.php', __('WP-UserOnline', 'wp-useronline'), __('WP-UserOnline', 'wp-useronline'), 1, 'wp-useronline/wp-useronline.php', 'display_useronline');
78
- }
79
- if (function_exists('add_options_page')) {
80
- add_options_page(__('Useronline', 'wp-useronline'), __('Useronline', 'wp-useronline'), 'manage_options', 'wp-useronline/useronline-options.php');
81
- }
82
- }
83
-
84
-
85
- ### Function: Displays UserOnline Header
86
- add_action('wp_head', 'useronline_header');
87
- function useronline_header() {
88
- wp_register_script('wp-useronline', WP_PLUGIN_URL.'/wp-useronline/useronline-js-packed.js', false, '2.31');
89
- echo "\n".'<!-- Start Of Script Generated By WP-UserOnline 2.31 -->'."\n";
90
- echo '<script type="text/javascript">'."\n";
91
- echo '/* <![CDATA[ */'."\n";
92
- echo "\t".'var useronline_ajax_url = \''.WP_PLUGIN_URL.'/wp-useronline/wp-useronline.php'."';\n";
93
- echo "\t".'var useronline_timeout = '.(get_option('useronline_timeout')*1000).';'."\n";
94
- echo '/* ]]> */'."\n";
95
- echo '</script>'."\n";
96
- wp_print_scripts(array('sack', 'wp-useronline'));
97
- echo '<!-- End Of Script Generated By WP-UserOnline 2.31 -->'."\n";
98
- }
99
-
100
-
101
- ### Function: Process UserOnline
102
- add_action('admin_head', 'useronline');
103
- add_action('wp_head', 'useronline');
104
- function useronline() {
105
- global $wpdb, $useronline;
106
- // Useronline Settings
107
- $timeoutseconds = get_option('useronline_timeout');
108
- $timestamp = current_time('timestamp');
109
- $timeout = ($timestamp-$timeoutseconds);
110
- $ip = get_ipaddress();
111
- $url = addslashes(urlencode($_SERVER['REQUEST_URI']));
112
- $referral = '';
113
- $useragent = $_SERVER['HTTP_USER_AGENT'];
114
- $current_user = wp_get_current_user();
115
- if(!empty($_SERVER['HTTP_REFERER'])) {
116
- $referral = addslashes(urlencode(strip_tags($_SERVER['HTTP_REFERER'])));
117
- }
118
- // Check For Bot
119
- $bots = get_option('useronline_bots');
120
- foreach ($bots as $name => $lookfor) {
121
- if (stristr($useragent, $lookfor) !== false) {
122
- $user_id = 0;
123
- $display_name = addslashes($name);
124
- $user_name = addslashes($lookfor);
125
- $type = 'bot';
126
- $where = "WHERE ip = '$ip'";
127
- $bot_found = true;
128
- break;
129
- }
130
- }
131
-
132
- // If No Bot Is Found, Then We Check Members And Guests
133
- if(!$bot_found) {
134
- // Check For Member
135
- if($current_user->ID > 0) {
136
- $user_id = $current_user->ID;
137
- $display_name = addslashes($current_user->display_name);
138
- $user_name = addslashes($current_user->user_login);
139
- $type = 'member';
140
- $where = "WHERE userid = '$user_id'";
141
- // Check For Comment Author (Guest)
142
- } elseif(!empty($_COOKIE['comment_author_'.COOKIEHASH])) {
143
- $user_id = 0;
144
- $display_name = addslashes(trim($_COOKIE['comment_author_'.COOKIEHASH]));
145
- $user_name = __('guest', 'wp-useronline').'_'.$display_name;
146
- $type = 'guest';
147
- $where = "WHERE ip = '$ip'";
148
- // Check For Guest
149
- } else {
150
- $user_id = 0;
151
- $display_name = __('Guest', 'wp-useronline');
152
- $user_name = "guest";
153
- $type = 'guest';
154
- $where = "WHERE ip = '$ip'";
155
- }
156
- }
157
-
158
- // Get User Agent
159
- $useragent = addslashes($useragent);
160
-
161
- // Check For Page Title
162
- $make_page = wp_title('&raquo;', false);
163
- if(empty($make_page)) {
164
- $make_page = get_bloginfo('name');
165
- } elseif(is_single()) {
166
- $make_page = get_bloginfo('name').' &raquo; '.__('Blog Archive', 'wp-useronline').' '.$make_page;
167
- } else {
168
- $make_page = get_bloginfo('name').$make_page;
169
- }
170
- $make_page = addslashes($make_page);
171
-
172
- // Delete Users
173
- $delete_users = $wpdb->query("DELETE FROM $wpdb->useronline $where OR (timestamp < $timeout)");
174
-
175
- // Insert Users
176
- $insert_user = $wpdb->query("INSERT INTO $wpdb->useronline VALUES ('$timestamp', '$user_id', '$user_name', '$display_name', '$useragent', '$ip', '$make_page', '$url', '$type', '$referral')");
177
-
178
- // Count Users Online
179
- $useronline = intval($wpdb->get_var("SELECT COUNT(*) FROM $wpdb->useronline"));
180
-
181
- // Get Most User Online
182
- $most_useronline = intval(get_option('useronline_most_users'));
183
-
184
- // Check Whether Current Users Online Is More Than Most Users Online
185
- if($useronline > $most_useronline) {
186
- update_option('useronline_most_users', $useronline);
187
- update_option('useronline_most_timestamp', current_time('timestamp'));
188
- }
189
- }
190
-
191
-
192
- ### Function: Display UserOnline
193
- if(!function_exists('get_useronline')) {
194
- function get_useronline($display = true) {
195
- // Template - Naming Conventions
196
- $useronline_naming = get_option('useronline_naming');
197
- // Template - User(s) Online
198
- $template_useronline = stripslashes(get_option('useronline_template_useronline'));
199
- $template_useronline = str_replace('%USERONLINE_PAGE_URL%', get_option('useronline_url'), $template_useronline);
200
- $template_useronline = str_replace('%USERONLINE_MOSTONLINE_COUNT%', number_format_i18n(get_most_useronline()), $template_useronline);
201
- $template_useronline = str_replace('%USERONLINE_MOSTONLINE_DATE%', get_most_useronline_date(), $template_useronline);
202
- if(get_useronline_count() == 1) {
203
- $template_useronline = str_replace('%USERONLINE_USERS%', stripslashes($useronline_naming['user']), $template_useronline);
204
- } else {
205
- $useronline_naming_users = str_replace('%USERONLINE_COUNT%', number_format_i18n(get_useronline_count()), stripslashes($useronline_naming['users']));
206
- $template_useronline = str_replace('%USERONLINE_USERS%', $useronline_naming_users, $template_useronline);
207
- }
208
- if($display) {
209
- echo $template_useronline;
210
- } else {
211
- return $template_useronline;
212
- }
213
- }
214
- }
215
-
216
-
217
- ### Function: Display UserOnline Count
218
- if(!function_exists('get_useronline_count')) {
219
- function get_useronline_count($display = false) {
220
- global $useronline;
221
- if($display) {
222
- echo number_format_i18n($useronline);
223
- } else {
224
- return $useronline;
225
- }
226
- }
227
- }
228
-
229
-
230
- ### Function: Display Max UserOnline
231
- if(!function_exists('get_most_useronline')) {
232
- function get_most_useronline($display = false) {
233
- $most_useronline_users = intval(get_option('useronline_most_users'));
234
- if($display) {
235
- echo number_format_i18n($most_useronline_users);
236
- } else {
237
- return $most_useronline_users;
238
- }
239
- }
240
- }
241
-
242
-
243
- ### Function: Display Max UserOnline Date
244
- if(!function_exists('get_most_useronline_date')) {
245
- function get_most_useronline_date($display = false) {
246
- $most_useronline_timestamp = get_option('useronline_most_timestamp');
247
- $most_useronline_date = mysql2date(sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $most_useronline_timestamp));
248
- if($display) {
249
- echo $most_useronline_date;
250
- } else {
251
- return $most_useronline_date;
252
- }
253
- }
254
- }
255
-
256
-
257
- ### Function Check If User Is Online
258
- function is_online($user_login) {
259
- global $wpdb;
260
- $is_online = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->useronline WHERE username = '$user_login' LIMIT 1");
261
- return intval($is_online);
262
- }
263
-
264
-
265
-
266
- ### Function: Update Member last Visit
267
- //add_action('wp_head', 'update_memberlastvisit');
268
- function update_memberlastvisit() {
269
- global $current_user, $user_ID;
270
- if(!empty($current_user) && intval($user_ID) > 0) {
271
- update_user_option($user_ID, 'member_last_login', current_time('timestamp'));
272
- }
273
- }
274
-
275
-
276
- ### Function: Get Member last Visit
277
- function get_memberlastvisit($user_id = 0) {
278
- $date_format = sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format'));
279
- if($user_id == 0) {
280
- return mysql2date($date_format, gmdate('Y-m-d H:i:s', get_user_option('member_last_login')));
281
- } else {
282
- return mysql2date($date_format, gmdate('Y-m-d H:i:s', get_user_option('member_last_login', $user_id)));
283
- }
284
- }
285
-
286
-
287
- ### Function: Display Users Browsing The Site
288
- function get_users_browsing_site($display = true) {
289
- global $wpdb;
290
-
291
- // Get Users Browsing Site
292
- $page_url = addslashes(urlencode($_SERVER['REQUEST_URI']));
293
- $users_browse = $wpdb->get_results("SELECT displayname, type FROM $wpdb->useronline ORDER BY type");
294
-
295
- // Variables
296
- $members = array();
297
- $guests = array();
298
- $bots = array();
299
- $total_members = 0;
300
- $total_guests = 0;
301
- $total_bots = 0;
302
- $nicetext_members = '';
303
- $nicetext_guests = '';
304
- $nicetext_bots = '';
305
-
306
- // If There Is Users Browsing, Then We Execute
307
- if($users_browse) {
308
- // Get Users Information
309
- foreach($users_browse as $user_browse) {
310
- switch($user_browse->type) {
311
- case 'member':
312
- $members[] = stripslashes($user_browse->displayname);
313
- $total_members++;
314
- break;
315
- case 'guest':
316
- $guests[] = stripslashes($user_browse->displayname);
317
- $total_guests++;
318
- break;
319
- case 'bot':
320
- $bots[] = stripslashes($user_browse->displayname);
321
- $total_bots++;
322
- break;
323
- }
324
- }
325
-
326
- // If We Do Not Display It, Return Respective Users Count
327
- if(!$display) {
328
- return array($total_members, $total_guests, $total_bots);
329
- }
330
-
331
- // Template - Naming Conventions
332
- $useronline_naming = get_option('useronline_naming');
333
-
334
- // Template - User(s) Browsing Site
335
- $options_browsingsite = get_option('useronline_template_browsingsite');
336
- $separator_members_browsingsite = stripslashes($options_browsingsite[0]);
337
- $separator_guests_browsingsite = stripslashes($options_browsingsite[1]);
338
- $separator_bots_browsingsite = stripslashes($options_browsingsite[2]);
339
- $template_browsingsite = stripslashes($options_browsingsite[3]);
340
-
341
- // Nice Text For Users
342
- if(get_useronline_count() == 1) {
343
- $template_browsingsite = str_replace('%USERONLINE_USERS%', stripslashes($useronline_naming['user']), $template_browsingsite);
344
- } else {
345
- $useronline_naming_users = str_replace('%USERONLINE_COUNT%', number_format_i18n(get_useronline_count()), stripslashes($useronline_naming['users']));
346
- $template_browsingsite = str_replace('%USERONLINE_USERS%', $useronline_naming_users, $template_browsingsite);
347
- }
348
-
349
- // Print Member Name
350
- if($members) {
351
- $temp_member = '';
352
- if(!function_exists('get_totalposts')) {
353
- foreach($members as $member) {
354
- $temp_member .= $member.$separator_members_browsingsite;
355
- }
356
- } else {
357
- foreach($members as $member) {
358
- $temp_member .= useronline_stats_page_link($member).$separator_members_browsingsite;
359
- }
360
- }
361
- $template_browsingsite = str_replace('%USERONLINE_MEMBER_NAMES%', substr($temp_member, 0, -strlen($separator_members_browsingsite)), $template_browsingsite);
362
- } else {
363
- $template_browsingsite = str_replace('%USERONLINE_MEMBER_NAMES%', '', $template_browsingsite);
364
- }
365
-
366
- // Nice Text For Members
367
- if($total_members > 1) {
368
- $useronline_naming_members = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_members), stripslashes($useronline_naming['members']));
369
- $template_browsingsite = str_replace('%USERONLINE_MEMBERS%', $useronline_naming_members, $template_browsingsite);
370
- } elseif($total_members == 1) {
371
- $template_browsingsite = str_replace('%USERONLINE_MEMBERS%', stripslashes($useronline_naming['member']), $template_browsingsite);
372
- } else {
373
- $template_browsingsite = str_replace('%USERONLINE_MEMBERS%', '', $template_browsingsite);
374
- }
375
-
376
- // Nice Text For Guests
377
- if($total_guests > 1) {
378
- $useronline_naming_guests = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_guests), stripslashes($useronline_naming['guests']));
379
- $template_browsingsite = str_replace('%USERONLINE_GUESTS%', $useronline_naming_guests, $template_browsingsite);
380
- } elseif($total_guests == 1) {
381
- $template_browsingsite = str_replace('%USERONLINE_GUESTS%', stripslashes($useronline_naming['guest']), $template_browsingsite);
382
- } else {
383
- $template_browsingsite = str_replace('%USERONLINE_GUESTS%', '', $template_browsingsite);
384
- }
385
-
386
- // Nice Text For Bots
387
- if($total_bots > 1) {
388
- $useronline_naming_bots = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_bots), stripslashes($useronline_naming['bots']));
389
- $template_browsingsite = str_replace('%USERONLINE_BOTS%', $useronline_naming_bots, $template_browsingsite);
390
- } elseif($total_bots == 1) {
391
- $template_browsingsite = str_replace('%USERONLINE_BOTS%', stripslashes($useronline_naming['bot']), $template_browsingsite);
392
- } else {
393
- $template_browsingsite = str_replace('%USERONLINE_BOTS%', '', $template_browsingsite);
394
- }
395
- // Seperators
396
- if($total_members > 0 && $total_guests > 0) {
397
- $template_browsingsite = str_replace('%USERONLINE_GUESTS_SEPERATOR%', $separator_guests_browsingsite, $template_browsingsite);
398
- } else {
399
- $template_browsingsite = str_replace('%USERONLINE_GUESTS_SEPERATOR%', '', $template_browsingsite);
400
- }
401
- if(($total_guests > 0 || $total_members > 0) && $total_bots > 0) {
402
- $template_browsingsite = str_replace('%USERONLINE_BOTS_SEPERATOR%', $separator_bots_browsingsite, $template_browsingsite);
403
- } else {
404
- $template_browsingsite = str_replace('%USERONLINE_BOTS_SEPERATOR%', '', $template_browsingsite);
405
- }
406
-
407
- // Output The Template
408
- echo $template_browsingsite;
409
- } else {
410
- // This Should Not Happen
411
- _e('No User Is Browsing This Site', 'wp-useronline');
412
- }
413
- }
414
-
415
-
416
- ### Function: Display Users Browsing The Page
417
- function get_users_browsing_page($display = true) {
418
- global $wpdb;
419
-
420
- // Get Users Browsing Page
421
- $page_url = addslashes(urlencode($_SERVER['REQUEST_URI']));
422
- $users_browse = $wpdb->get_results("SELECT displayname, type FROM $wpdb->useronline WHERE url = '$page_url' ORDER BY type");
423
-
424
- // Variables
425
- $members = array();
426
- $guests = array();
427
- $bots = array();
428
- $total_users = 0;
429
- $total_members = 0;
430
- $total_guests = 0;
431
- $total_bots = 0;
432
- $nicetext_members = '';
433
- $nicetext_guests = '';
434
- $nicetext_bots = '';
435
-
436
- // If There Is Users Browsing, Then We Execute
437
- if($users_browse) {
438
- // Reassign Bots Name
439
- $bots = get_option('useronline_bots');
440
- $bots_name = array();
441
- foreach($bots as $botname => $botlookfor) {
442
- $bots_name[] = $botname;
443
- }
444
- // Get Users Information
445
- foreach($users_browse as $user_browse) {
446
- switch($user_browse->type) {
447
- case 'member':
448
- $members[] = stripslashes($user_browse->displayname);
449
- $total_members++;
450
- break;
451
- case 'guest':
452
- $guests[] = stripslashes($user_browse->displayname);
453
- $total_guests++;
454
- break;
455
- case 'bot':
456
- $bots[] = stripslashes($user_browse->displayname);
457
- $total_bots++;
458
- break;
459
- }
460
- }
461
- $total_users = ($total_guests+$total_bots+$total_members);
462
-
463
- // If We Do Not Display It, Return Respective Users Count
464
- if(!$display) {
465
- return array ($total_users, $total_members, $total_guests, $total_bots);
466
- }
467
-
468
- // Template - Naming Conventions
469
- $useronline_naming = get_option('useronline_naming');
470
-
471
- // Template - User(s) Browsing Site
472
- $options_browsingpage = get_option('useronline_template_browsingpage');
473
- $separator_members_browsingpage = stripslashes($options_browsingpage[0]);
474
- $separator_guests_browsingpage = stripslashes($options_browsingpage[1]);
475
- $separator_bots_browsingpage = stripslashes($options_browsingpage[2]);
476
- $template_browsingpage = stripslashes($options_browsingpage[3]);
477
-
478
- // Nice Text For Users
479
- if($total_users == 1) {
480
- $template_browsingpage = str_replace('%USERONLINE_USERS%', stripslashes($useronline_naming['user']), $template_browsingpage);
481
- } else {
482
- $useronline_naming_users = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_users), stripslashes($useronline_naming['users']));
483
- $template_browsingpage = str_replace('%USERONLINE_USERS%', $useronline_naming_users, $template_browsingpage);
484
- }
485
-
486
- // Print Member Name
487
- if($members) {
488
- $temp_member = '';
489
- if(!function_exists('get_totalposts')) {
490
- foreach($members as $member) {
491
- $temp_member .= $member.$separator_members_browsingpage;
492
- }
493
- } else {
494
- foreach($members as $member) {
495
- $temp_member .= useronline_stats_page_link($member).$separator_members_browsingpage;
496
- }
497
- }
498
- $template_browsingpage = str_replace('%USERONLINE_MEMBER_NAMES%', substr($temp_member, 0, -strlen($separator_members_browsingpage)), $template_browsingpage);
499
- } else {
500
- $template_browsingpage = str_replace('%USERONLINE_MEMBER_NAMES%', '', $template_browsingpage);
501
- }
502
-
503
- // Nice Text For Members
504
- if($total_members > 1) {
505
- $useronline_naming_members = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_members), stripslashes($useronline_naming['members']));
506
- $template_browsingpage = str_replace('%USERONLINE_MEMBERS%', $useronline_naming_members, $template_browsingpage);
507
- } elseif($total_members == 1) {
508
- $template_browsingpage = str_replace('%USERONLINE_MEMBERS%', stripslashes($useronline_naming['member']), $template_browsingpage);
509
- } else {
510
- $template_browsingpage = str_replace('%USERONLINE_MEMBERS%', '', $template_browsingpage);
511
- }
512
-
513
- // Nice Text For Guests
514
- if($total_guests > 1) {
515
- $useronline_naming_guests = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_guests), stripslashes($useronline_naming['guests']));
516
- $template_browsingpage = str_replace('%USERONLINE_GUESTS%', $useronline_naming_guests, $template_browsingpage);
517
- } elseif($total_guests == 1) {
518
- $template_browsingpage = str_replace('%USERONLINE_GUESTS%', stripslashes($useronline_naming['guest']), $template_browsingpage);
519
- } else {
520
- $template_browsingpage = str_replace('%USERONLINE_GUESTS%', '', $template_browsingpage);
521
- }
522
-
523
- // Nice Text For Bots
524
- if($total_bots > 1) {
525
- $useronline_naming_bots = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_bots), stripslashes($useronline_naming['bots']));
526
- $template_browsingpage = str_replace('%USERONLINE_BOTS%', $useronline_naming_bots, $template_browsingpage);
527
- } elseif($total_bots == 1) {
528
- $template_browsingpage = str_replace('%USERONLINE_BOTS%', stripslashes($useronline_naming['bot']), $template_browsingpage);
529
- } else {
530
- $template_browsingpage = str_replace('%USERONLINE_BOTS%', '', $template_browsingpage);
531
- }
532
- // Seperators
533
- if($total_members > 0 && $total_guests > 0) {
534
- $template_browsingpage = str_replace('%USERONLINE_GUESTS_SEPERATOR%', $separator_guests_browsingpage, $template_browsingpage);
535
- } else {
536
- $template_browsingpage = str_replace('%USERONLINE_GUESTS_SEPERATOR%', '', $template_browsingpage);
537
- }
538
- if(($total_guests > 0 || $total_members > 0) && $total_bots > 0) {
539
- $template_browsingpage = str_replace('%USERONLINE_BOTS_SEPERATOR%', $separator_bots_browsingpage, $template_browsingpage);
540
- } else {
541
- $template_browsingpage = str_replace('%USERONLINE_BOTS_SEPERATOR%', '', $template_browsingpage);
542
- }
543
-
544
-
545
- // Output The Template
546
- echo $template_browsingpage;
547
- } else {
548
- // This Should Not Happen
549
- _e('No User Is Browsing This Page', 'wp-useronline');
550
- }
551
- }
552
-
553
-
554
- ### Function: Get IP Address
555
- if(!function_exists('get_ipaddress')) {
556
- function get_ipaddress() {
557
- if (empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
558
- $ip_address = $_SERVER["REMOTE_ADDR"];
559
- } else {
560
- $ip_address = $_SERVER["HTTP_X_FORWARDED_FOR"];
561
- }
562
- if(strpos($ip_address, ',') !== false) {
563
- $ip_address = explode(',', $ip_address);
564
- $ip_address = $ip_address[0];
565
- }
566
- return $ip_address;
567
- }
568
- }
569
-
570
-
571
- ### Function: Check IP
572
- function check_ip($ip) {
573
- $current_user = wp_get_current_user();
574
- $user_level = intval($current_user->user_level);
575
- $ip2long = ip2long($ip);
576
- if($user_level == 10 && ($ip != 'unknown') && $ip == long2ip($ip2long) && $ip2long !== false) {
577
- return "(<a href=\"http://ws.arin.net/cgi-bin/whois.pl?queryinput=$ip\" title=\"".gethostbyaddr($ip)."\">$ip</a>)";
578
- }
579
- }
580
-
581
-
582
- ### Function: Output User's Country Flag/Name
583
- function ip2nation_country($ip, $display_countryname = 0) {
584
- if(function_exists('wp_ozh_ip2nation')) {
585
- $country_code = wp_ozh_getCountryCode(0, $ip);
586
- $country_name = wp_ozh_getCountryName(0, $ip);
587
- $country_mirror = '';
588
- $mirrors = array('http://lesterchan.net/wp-content/themes/lesterchan/images/flags');
589
- if($country_name != 'Private') {
590
- foreach($mirrors as $mirror) {
591
- if(@file($mirror.'/sg.gif')) {
592
- $country_mirror = $mirror;
593
- break;
594
- }
595
- }
596
- $temp = '<img src="'.$mirror.'/'.$country_code.'.png" alt="'.$country_name.'" title="'.$country_name.'" />';
597
- if($display_countryname) {
598
- $temp .= $country_name;
599
- }
600
- return $temp.' ';
601
- } else {
602
- return;
603
- }
604
- }
605
- return;
606
- }
607
-
608
-
609
- ### Function: Display UserOnline For Admin
610
- function display_useronline() {
611
- $useronline_page = useronline_page();
612
- echo '<div class="wrap">'."\n";
613
- echo '<h2>'.__('Users Online Now', 'wp-useronline').'</h2>'."\n";
614
- echo $useronline_page;
615
- echo '</div>'."\n";
616
- }
617
-
618
-
619
- ### Function Display UserOnline For Admin's Right Now
620
- add_action('rightnow_end', 'useronline_rightnow');
621
- function useronline_rightnow() {
622
- $total_users = get_useronline_count(false);
623
- echo '<p>';
624
- if ($total_users == 1) {
625
- printf(__('There is <strong><a href="%s">%s user</a></strong> online now.', 'wp-useronline'), get_option('siteurl').'/wp-admin/index.php?page=wp-useronline/wp-useronline.php', number_format_i18n($total_users));
626
- } else {
627
- printf(__('There are a total of <strong><a href="%s">%s users</a></strong> online now.', 'wp-useronline'), get_option('siteurl').'/wp-admin/index.php?page=wp-useronline/wp-useronline.php', number_format_i18n($total_users));
628
- }
629
- echo '<br />';
630
- get_users_browsing_site();
631
- echo '.<br />';
632
- printf(__('Most users ever online were <strong>%s</strong>, on <strong>%s</strong>', 'wp-useronline'), number_format_i18n(get_most_useronline()), get_most_useronline_date());
633
- echo '</p>'."\n";
634
- }
635
-
636
-
637
- ### Function: Short Code For Inserting Users Online Into Page
638
- add_shortcode('page_useronline', 'useronline_page_shortcode');
639
- function useronline_page_shortcode($atts) {
640
- return useronline_page();
641
- }
642
-
643
-
644
- ### Function: Format URL
645
- function format_url($url) {
646
- $url = str_replace('&', '&amp;', $url);
647
- $url = str_replace(' ', '+', $url);
648
- return $url;
649
- }
650
-
651
-
652
- ### Function: UserOnline Page
653
- function useronline_page() {
654
- global $wpdb;
655
- // Get The Users Online
656
- $usersonline = $wpdb->get_results("SELECT * FROM $wpdb->useronline ORDER BY type");
657
-
658
- // Variables Variables Variables
659
- $useronline_output = '';
660
- $members = array();
661
- $guests = array();
662
- $bots = array();
663
- $total_users = 0;
664
- $total_members = 0;
665
- $total_guests = 0;
666
- $total_bots = 0;
667
- $nicetext_users = '';
668
- $nicetext_members = '';
669
- $nicetext_guests = '';
670
- $nicetext_bots = '';
671
- $url_front = 'http://'.$_SERVER['SERVER_NAME'];
672
-
673
- // Process Those User Who Is Online
674
- if($usersonline) {
675
- foreach($usersonline as $useronline) {
676
- switch($useronline->type) {
677
- case 'member':
678
- $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)), 'referral' => stripslashes(urldecode($useronline->referral)));
679
- $total_members++;
680
- break;
681
- case 'guest':
682
- $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)), 'referral' => stripslashes(urldecode($useronline->referral)));
683
- $total_guests++;
684
- break;
685
- case 'bot':
686
- $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)), 'referral' => stripslashes(urldecode($useronline->referral)));
687
- $total_bots++;
688
- break;
689
- }
690
- }
691
- $total_users = ($total_guests+$total_bots+$total_members);
692
- }
693
-
694
- // Nice Text For Users
695
- if($total_users == 1) {
696
- $nicetext_users = $total_users.' '.__('User', 'wp-useronline');
697
- } else {
698
- $nicetext_users = number_format_i18n($total_users).' '.__('Users', 'wp-useronline');
699
- }
700
-
701
- // Nice Text For Members
702
- if($total_members == 1) {
703
- $nicetext_members = $total_members.' '.__('Member', 'wp-useronline');
704
- } else {
705
- $nicetext_members = number_format_i18n($total_members).' '.__('Members', 'wp-useronline');
706
- }
707
-
708
-
709
- // Nice Text For Guests
710
- if($total_guests == 1) {
711
- $nicetext_guests = $total_guests.' '.__('Guest', 'wp-useronline');
712
- } else {
713
- $nicetext_guests = number_format_i18n($total_guests).' '.__('Guests', 'wp-useronline');
714
- }
715
-
716
- // Nice Text For Bots
717
- if($total_bots == 1) {
718
- $nicetext_bots = $total_bots.' '.__('Bot', 'wp-useronline');
719
- } else {
720
- $nicetext_bots = number_format_i18n($total_bots).' '.__('Bots', 'wp-useronline');
721
- }
722
-
723
- // Check Whether WP-Stats Is Activated
724
- $wp_stats = false;
725
- if(function_exists('get_totalposts')) {
726
- $wp_stats = true;
727
- }
728
- if ($total_users == 1) {
729
- $useronline_output .= '<p>'.sprintf(__('There is <strong>%s</strong> online now: <strong>%s</strong>, <strong>%s</strong> and <strong>%s</strong>.', 'wp-useronline'), $nicetext_users, $nicetext_members, $nicetext_guests, $nicetext_bots).'</p>';
730
- } else {
731
- $useronline_output .= '<p>'.sprintf(__('There are a total of <strong>%s</strong> online now: <strong>%s</strong>, <strong>%s</strong> and <strong>%s</strong>.', 'wp-useronline'), $nicetext_users, $nicetext_members, $nicetext_guests, $nicetext_bots).'</p>';
732
- }
733
- $useronline_output .= '<p>'.sprintf(__('Most users ever online were <strong>%s</strong>, on <strong>%s</strong>', 'wp-useronline'), number_format_i18n(get_most_useronline()), get_most_useronline_date()).'</p>';
734
- // Print Out Members
735
- if($total_members > 0) {
736
- $useronline_output .= '<h2>'.$nicetext_members.' '.__('Online Now', 'wp-useronline').'</h2>'."\n";
737
- }
738
- $no=1;
739
- if($members) {
740
- foreach($members as $member) {
741
- $referral_output = '';
742
- if(!empty($member['referral'])) {
743
- $referral_output = ' [<a href="'.format_url($member['referral']).'">'.__('referral', 'wp-useronline').'</a>]';
744
- }
745
- if($wp_stats) {
746
- $useronline_output .= '<p><strong>#'.$no.' - '.useronline_stats_page_link($member['display_name']).'</strong> '.ip2nation_country($member['ip']).check_ip($member['ip']).' '.__('on', 'wp-useronline').' '.mysql2date(sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $member['timestamp'])).'<br />'.$member['location'].' [<a href="'.format_url($member['url']).'">'.__('url', 'wp-useronline').'</a>]'.$referral_output.'</p>'."\n";
747
- } else {
748
- $useronline_output .= '<p><strong>#'.$no.' - '.$member['display_name'].'</strong> '.ip2nation_country($member['ip']).check_ip($member['ip']).' '.__('on', 'wp-useronline').' '.mysql2date(sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $member['timestamp'])).'<br />'.$member['location'].' [<a href="'.format_url($member['url']).'">'.__('url', 'wp-useronline').'</a>]'.$referral_output.'</p>'."\n";
749
- }
750
- $no++;
751
- }
752
- }
753
-
754
- // Print Out Guest
755
- if($total_guests > 0) {
756
- $useronline_output .= '<h2>'.$nicetext_guests.' '.__('Online Now', 'wp-useronline').'</h2>'."\n";
757
- }
758
- $no=1;
759
- if($guests) {
760
- foreach($guests as $guest) {
761
- $referral_output = '';
762
- if(!empty($guest['referral'])) {
763
- $referral_output = '[<a href="'.format_url($guest['referral']).'">'.__('referral', 'wp-useronline').'</a>]';
764
- }
765
- if($wp_stats) {
766
- $useronline_output .= '<p><strong>#'.$no.' - '.useronline_stats_page_link($guest['display_name']).'</strong> '.ip2nation_country($guest['ip']).check_ip($guest['ip']).' '.__('on', 'wp-useronline').' '.mysql2date(sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $guest['timestamp'])).'<br />'.$guest['location'].' [<a href="'.format_url($guest['url']).'">'.__('url', 'wp-useronline').'</a>]'.$referral_output.'</p>'."\n";
767
- } else {
768
- $useronline_output .= '<p><strong>#'.$no.' - '.$guest['display_name'].'</strong> '.ip2nation_country($guest['ip']).check_ip($guest['ip']).' '.__('on', 'wp-useronline').' '.mysql2date(sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $guest['timestamp'])).'<br />'.$guest['location'].' [<a href="'.format_url($guest['url']).'">'.__('url', 'wp-useronline').'</a>]'.$referral_output.'</p>'."\n";
769
- }
770
- $no++;
771
- }
772
- }
773
-
774
- // Print Out Bots
775
- if($total_bots > 0) {
776
- $useronline_output .= '<h2>'.$nicetext_bots.' '.__('Online Now', 'wp-useronline').'</h2>'."\n";
777
- }
778
- $no=1;
779
- if($bots) {
780
- foreach($bots as $bot) {
781
- $useronline_output .= '<p><strong>#'.$no.' - '.$bot['display_name'].'</strong> '.check_ip($bot['ip']).' '.__('on', 'wp-useronline').' '.mysql2date(sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $bot['timestamp'])).'<br />'.$bot['location'].' [<a href="'.format_url($bot['url']).'">'.__('url', 'wp-useronline').'</a>]</p>'."\n";
782
- $no++;
783
- }
784
- }
785
-
786
- // Print Out No One Is Online Now
787
- if($total_users == 0) {
788
- $useronline_output .= '<h2>'.__('No One Is Online Now', 'wp-useronline').'</h2>'."\n";
789
- }
790
-
791
- // Output UserOnline Page
792
- return $useronline_output;
793
- }
794
-
795
-
796
- ### Function: Stats Page Link
797
- function useronline_stats_page_link($author) {
798
- $stats_url = '';
799
- if(function_exists('stats_page')) {
800
- $stats_url = get_option('stats_url');
801
- $author_encode = urlencode($author);
802
- if(strpos($stats_url, '?') !== false) {
803
- $stats_url = "$stats_url&amp;stats_author=$author_encode";
804
- } else {
805
- $stats_url = "$stats_url?stats_author=$author_encode";
806
- }
807
- return '<a href="'.$stats_url.'" title="'.$author.'">'.$author.'</a>';
808
- }
809
- return $stats_url;
810
- }
811
-
812
-
813
- ### Function: Process AJAX Request
814
- useronline_ajax();
815
- function useronline_ajax() {
816
- global $wpdb, $useronline;
817
- $mode = trim($_GET['useronline_mode']);
818
- if(!empty($mode)) {
819
- header('Content-Type: text/html; charset='.get_option('blog_charset'));
820
- switch($mode) {
821
- case 'useronline_count':
822
- $useronline = intval($wpdb->get_var("SELECT COUNT(*) FROM $wpdb->useronline"));
823
- get_useronline();
824
- break;
825
- case 'useronline_browsingsite':
826
- get_users_browsing_site();
827
- break;
828
- case 'useronline_browsingpage':
829
- get_users_browsing_page();
830
- break;
831
- }
832
- exit();
833
- }
834
- }
835
-
836
-
837
- ### Function: Plug Into WP-Stats
838
- if(strpos(get_option('stats_url'), $_SERVER['REQUEST_URI']) || strpos($_SERVER['REQUEST_URI'], 'stats-options.php') || strpos($_SERVER['REQUEST_URI'], 'wp-stats/wp-stats.php')) {
839
- add_filter('wp_stats_page_admin_plugins', 'useronline_page_admin_general_stats');
840
- add_filter('wp_stats_page_plugins', 'useronline_page_general_stats');
841
- }
842
-
843
-
844
- ### Function: Add WP-UserOnline General Stats To WP-Stats Page Options
845
- function useronline_page_admin_general_stats($content) {
846
- $stats_display = get_option('stats_display');
847
- if($stats_display['useronline'] == 1) {
848
- $content .= '<input type="checkbox" name="stats_display[]" id="wpstats_useronline" value="useronline" checked="checked" />&nbsp;&nbsp;<label for="wpstats_useronline">'.__('WP-UserOnline', 'wp-useronline').'</label><br />'."\n";
849
- } else {
850
- $content .= '<input type="checkbox" name="stats_display[]" id="wpstats_useronline" value="useronline" />&nbsp;&nbsp;<label for="wpstats_useronline">'.__('WP-UserOnline', 'wp-useronline').'</label><br />'."\n";
851
- }
852
- return $content;
853
- }
854
-
855
-
856
- ### Function: Add WP-UserOnline General Stats To WP-Stats Page
857
- function useronline_page_general_stats($content) {
858
- $stats_display = get_option('stats_display');
859
- if($stats_display['useronline'] == 1) {
860
- $content .= '<p><strong>'.__('WP-UserOnline', 'wp-useronline').'</strong></p>'."\n";
861
- $content .= '<ul>'."\n";
862
- $content .= '<li><strong>'.number_format_i18n(get_useronline_count()).'</strong> '.__('user(s) online now.', 'wp-useronline').'</li>'."\n";
863
- $content .= '<li>'.__('Most users ever online was', 'wp-useronline').' <strong>'.number_format_i18n(get_most_useronline()).'</strong>.</li>'."\n";
864
- $content .= '<li>'.__('On', 'wp-useronline').' <strong>'.get_most_useronline_date().'</strong>.</li>'."\n";
865
- $content .= '</ul>'."\n";
866
- }
867
- return $content;
868
- }
869
-
870
-
871
- ### Function: Create UserOnline Table
872
- add_action('activate_wp-useronline/wp-useronline.php', 'create_useronline_table');
873
- function create_useronline_table() {
874
- global $wpdb;
875
- $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');
876
- if(@is_file(ABSPATH.'/wp-admin/upgrade-functions.php')) {
877
- include_once(ABSPATH.'/wp-admin/upgrade-functions.php');
878
- } elseif(@is_file(ABSPATH.'/wp-admin/includes/upgrade.php')) {
879
- include_once(ABSPATH.'/wp-admin/includes/upgrade.php');
880
- } else {
881
- die('We have problem finding your \'/wp-admin/upgrade-functions.php\' and \'/wp-admin/includes/upgrade.php\'');
882
- }
883
- $charset_collate = '';
884
- if($wpdb->supports_collation()) {
885
- if(!empty($wpdb->charset)) {
886
- $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
887
- }
888
- if(!empty($wpdb->collate)) {
889
- $charset_collate .= " COLLATE $wpdb->collate";
890
- }
891
- }
892
- // Drop UserOnline Table
893
- $wpdb->query("DROP TABLE IF EXISTS $wpdb->useronline");
894
- // Create UserOnline Table
895
- $create_table = "CREATE TABLE $wpdb->useronline (".
896
- " timestamp int(15) NOT NULL default '0',".
897
- " userid int(10) NOT NULL default '0',".
898
- " username varchar(20) NOT NULL default '',".
899
- " displayname varchar(255) NOT NULL default '',".
900
- " useragent varchar(255) NOT NULL default '',".
901
- " ip varchar(40) NOT NULL default '',".
902
- " location varchar(255) NOT NULL default '',".
903
- " url varchar(255) NOT NULL default '',".
904
- " type enum('member','guest','bot') NOT NULL default 'guest',".
905
- " referral varchar(255) NOT NULL default '',".
906
- " UNIQUE KEY useronline_id (timestamp,username,ip,useragent)) $charset_collate;";
907
- maybe_create_table($wpdb->useronline, $create_table);
908
- // Add In Options
909
- add_option('useronline_most_users', 1, 'Most Users Ever Online Count');
910
- add_option('useronline_most_timestamp', current_time('timestamp'), 'Most Users Ever Online Date');
911
- add_option('useronline_timeout', 300, 'Timeout In Seconds');
912
- add_option('useronline_bots', $bots, 'Bots Name/Useragent');
913
- // Database Upgrade For WP-UserOnline 2.05
914
- add_option('useronline_url', get_option('siteurl').'/useronline/', 'UserOnline Page URL');
915
- // Database Upgrade For WP-UserOnline 2.20
916
- add_option('useronline_naming', array('user' => __('1 User', 'wp-useronline'), 'users' => __('%USERONLINE_COUNT% Users', 'wp-useronline'), 'member' => __('1 Member', 'wp-useronline'), 'members' => __('%USERONLINE_COUNT% Members', 'wp-useronline'), 'guest' => __('1 Guest', 'wp-useronline'), 'guests' => __('%USERONLINE_COUNT% Guests', 'wp-useronline'), 'bot' => __('1 Bot', 'wp-useronline'), 'bots' => __('%USERONLINE_COUNT% Bots', 'wp-useronline')),'Member(s), Guest(s) or Bot(s)');
917
- add_option('useronline_template_useronline', '<a href="%USERONLINE_PAGE_URL%" title="%USERONLINE_USERS%"><strong>%USERONLINE_USERS%</strong> '.__('Online', 'wp-useronline').'</a>', 'Useronline Template');
918
- add_option('useronline_template_browsingsite', array(', ', ', ', ', ', __('Users', 'wp-useronline').': <strong>%USERONLINE_MEMBER_NAMES%%USERONLINE_GUESTS_SEPERATOR%%USERONLINE_GUESTS%%USERONLINE_BOTS_SEPERATOR%%USERONLINE_BOTS%</strong>'), 'User Browsing Site Template');
919
- add_option('useronline_template_browsingpage', array(', ', ', ', ', ', '<strong>%USERONLINE_USERS%</strong> '.__('Browsing This Page.', 'wp-useronline').'<br />'.__('Users', 'wp-useronline').': <strong>%USERONLINE_MEMBER_NAMES%%USERONLINE_GUESTS_SEPERATOR%%USERONLINE_GUESTS%%USERONLINE_BOTS_SEPERATOR%%USERONLINE_BOTS%</strong>'), 'User Browsing Site Template');
920
- }
921
  ?>
1
+ <?php
2
+ /*
3
+ Plugin Name: WP-UserOnline
4
+ Plugin URI: http://lesterchan.net/portfolio/programming/php/
5
+ Description: Enable you to display how many users are online on your Wordpress blog with detailed statistics of where they are and who there are(Members/Guests/Search Bots).
6
+ Version: 2.40
7
+ Author: Lester 'GaMerZ' Chan
8
+ Author URI: http://lesterchan.net
9
+ */
10
+
11
+
12
+ /*
13
+ Copyright 2008 Lester Chan (email : lesterchan@gmail.com)
14
+
15
+ This program is free software; you can redistribute it and/or modify
16
+ it under the terms of the GNU General Public License as published by
17
+ the Free Software Foundation; either version 2 of the License, or
18
+ (at your option) any later version.
19
+
20
+ This program is distributed in the hope that it will be useful,
21
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
22
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
+ GNU General Public License for more details.
24
+
25
+ You should have received a copy of the GNU General Public License
26
+ along with this program; if not, write to the Free Software
27
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28
+ */
29
+
30
+
31
+ ### Load WP-Config File If This File Is Called Directly
32
+ if (!function_exists('add_action')) {
33
+ $wp_root = '../../..';
34
+ if (file_exists($wp_root.'/wp-load.php')) {
35
+ require_once($wp_root.'/wp-load.php');
36
+ } else {
37
+ require_once($wp_root.'/wp-config.php');
38
+ }
39
+ }
40
+
41
+
42
+ ### Create Text Domain For Translations
43
+ add_action('init', 'useronline_textdomain');
44
+ function useronline_textdomain() {
45
+ load_plugin_textdomain('wp-useronline', false, 'wp-useronline');
46
+ }
47
+
48
+
49
+ ### UserOnline Table Name
50
+ global $wpdb;
51
+ $wpdb->useronline = $wpdb->prefix.'useronline';
52
+
53
+
54
+ ### Function: WP-UserOnline Menu
55
+ add_action('admin_menu', 'useronline_menu');
56
+ function useronline_menu() {
57
+ if (function_exists('add_submenu_page')) {
58
+ add_submenu_page('index.php', __('WP-UserOnline', 'wp-useronline'), __('WP-UserOnline', 'wp-useronline'), 1, 'wp-useronline/wp-useronline.php', 'display_useronline');
59
+ }
60
+ if (function_exists('add_options_page')) {
61
+ add_options_page(__('Useronline', 'wp-useronline'), __('Useronline', 'wp-useronline'), 'manage_options', 'wp-useronline/useronline-options.php');
62
+ }
63
+ }
64
+
65
+
66
+ ### Function: Displays UserOnline Header
67
+ add_action('wp_head', 'useronline_header');
68
+ function useronline_header() {
69
+ wp_register_script('wp-useronline', plugins_url('wp-useronline/useronline-js-packed.js'), false, '2.40');
70
+ echo "\n".'<!-- Start Of Script Generated By WP-UserOnline 2.40 -->'."\n";
71
+ echo '<script type="text/javascript">'."\n";
72
+ echo '/* <![CDATA[ */'."\n";
73
+ echo "\t".'var useronline_ajax_url = \''.plugins_url('wp-useronline/wp-useronline.php')."';\n";
74
+ echo "\t".'var useronline_timeout = '.(get_option('useronline_timeout')*1000).';'."\n";
75
+ echo '/* ]]> */'."\n";
76
+ echo '</script>'."\n";
77
+ wp_print_scripts(array('sack', 'wp-useronline'));
78
+ echo '<!-- End Of Script Generated By WP-UserOnline 2.40 -->'."\n";
79
+ }
80
+
81
+
82
+ ### Function: Process UserOnline
83
+ add_action('admin_head', 'useronline');
84
+ add_action('wp_head', 'useronline');
85
+ function useronline() {
86
+ global $wpdb, $useronline;
87
+ // Useronline Settings
88
+ $timeoutseconds = get_option('useronline_timeout');
89
+ $timestamp = current_time('timestamp');
90
+ $timeout = ($timestamp-$timeoutseconds);
91
+ $ip = get_ipaddress();
92
+ $url = addslashes(urlencode($_SERVER['REQUEST_URI']));
93
+ $referral = '';
94
+ $useragent = $_SERVER['HTTP_USER_AGENT'];
95
+ $current_user = wp_get_current_user();
96
+ if(!empty($_SERVER['HTTP_REFERER'])) {
97
+ $referral = addslashes(urlencode(strip_tags($_SERVER['HTTP_REFERER'])));
98
+ }
99
+ // Check For Bot
100
+ $bots = get_option('useronline_bots');
101
+ foreach ($bots as $name => $lookfor) {
102
+ if (stristr($useragent, $lookfor) !== false) {
103
+ $user_id = 0;
104
+ $display_name = addslashes($name);
105
+ $user_name = addslashes($lookfor);
106
+ $type = 'bot';
107
+ $where = "WHERE ip = '$ip'";
108
+ $bot_found = true;
109
+ break;
110
+ }
111
+ }
112
+
113
+ // If No Bot Is Found, Then We Check Members And Guests
114
+ if(!$bot_found) {
115
+ // Check For Member
116
+ if($current_user->ID > 0) {
117
+ $user_id = $current_user->ID;
118
+ $display_name = addslashes($current_user->display_name);
119
+ $user_name = addslashes($current_user->user_login);
120
+ $type = 'member';
121
+ $where = "WHERE userid = '$user_id'";
122
+ // Check For Comment Author (Guest)
123
+ } elseif(!empty($_COOKIE['comment_author_'.COOKIEHASH])) {
124
+ $user_id = 0;
125
+ $display_name = addslashes(trim($_COOKIE['comment_author_'.COOKIEHASH]));
126
+ $user_name = __('guest', 'wp-useronline').'_'.$display_name;
127
+ $type = 'guest';
128
+ $where = "WHERE ip = '$ip'";
129
+ // Check For Guest
130
+ } else {
131
+ $user_id = 0;
132
+ $display_name = __('Guest', 'wp-useronline');
133
+ $user_name = "guest";
134
+ $type = 'guest';
135
+ $where = "WHERE ip = '$ip'";
136
+ }
137
+ }
138
+
139
+ // Get User Agent
140
+ $useragent = addslashes($useragent);
141
+
142
+ // Check For Page Title
143
+ $make_page = wp_title('&raquo;', false);
144
+ if(empty($make_page)) {
145
+ $make_page = get_bloginfo('name');
146
+ } elseif(is_single()) {
147
+ $make_page = get_bloginfo('name').' &raquo; '.__('Blog Archive', 'wp-useronline').' '.$make_page;
148
+ } else {
149
+ $make_page = get_bloginfo('name').$make_page;
150
+ }
151
+ $make_page = addslashes($make_page);
152
+
153
+ // Delete Users
154
+ $delete_users = $wpdb->query("DELETE FROM $wpdb->useronline $where OR (timestamp < $timeout)");
155
+
156
+ // Insert Users
157
+ $insert_user = $wpdb->query("INSERT INTO $wpdb->useronline VALUES ('$timestamp', '$user_id', '$user_name', '$display_name', '$useragent', '$ip', '$make_page', '$url', '$type', '$referral')");
158
+
159
+ // Count Users Online
160
+ $useronline = intval($wpdb->get_var("SELECT COUNT(*) FROM $wpdb->useronline"));
161
+
162
+ // Get Most User Online
163
+ $most_useronline = intval(get_option('useronline_most_users'));
164
+
165
+ // Check Whether Current Users Online Is More Than Most Users Online
166
+ if($useronline > $most_useronline) {
167
+ update_option('useronline_most_users', $useronline);
168
+ update_option('useronline_most_timestamp', current_time('timestamp'));
169
+ }
170
+ }
171
+
172
+
173
+ ### Function: Display UserOnline
174
+ if(!function_exists('get_useronline')) {
175
+ function get_useronline($display = true) {
176
+ // Template - Naming Conventions
177
+ $useronline_naming = get_option('useronline_naming');
178
+ // Template - User(s) Online
179
+ $template_useronline = stripslashes(get_option('useronline_template_useronline'));
180
+ $template_useronline = str_replace('%USERONLINE_PAGE_URL%', get_option('useronline_url'), $template_useronline);
181
+ $template_useronline = str_replace('%USERONLINE_MOSTONLINE_COUNT%', number_format_i18n(get_most_useronline()), $template_useronline);
182
+ $template_useronline = str_replace('%USERONLINE_MOSTONLINE_DATE%', get_most_useronline_date(), $template_useronline);
183
+ if(get_useronline_count() == 1) {
184
+ $template_useronline = str_replace('%USERONLINE_USERS%', stripslashes($useronline_naming['user']), $template_useronline);
185
+ } else {
186
+ $useronline_naming_users = str_replace('%USERONLINE_COUNT%', number_format_i18n(get_useronline_count()), stripslashes($useronline_naming['users']));
187
+ $template_useronline = str_replace('%USERONLINE_USERS%', $useronline_naming_users, $template_useronline);
188
+ }
189
+ if($display) {
190
+ echo $template_useronline;
191
+ } else {
192
+ return $template_useronline;
193
+ }
194
+ }
195
+ }
196
+
197
+
198
+ ### Function: Display UserOnline Count
199
+ if(!function_exists('get_useronline_count')) {
200
+ function get_useronline_count($display = false) {
201
+ global $useronline;
202
+ if($display) {
203
+ echo number_format_i18n($useronline);
204
+ } else {
205
+ return $useronline;
206
+ }
207
+ }
208
+ }
209
+
210
+
211
+ ### Function: Display Max UserOnline
212
+ if(!function_exists('get_most_useronline')) {
213
+ function get_most_useronline($display = false) {
214
+ $most_useronline_users = intval(get_option('useronline_most_users'));
215
+ if($display) {
216
+ echo number_format_i18n($most_useronline_users);
217
+ } else {
218
+ return $most_useronline_users;
219
+ }
220
+ }
221
+ }
222
+
223
+
224
+ ### Function: Display Max UserOnline Date
225
+ if(!function_exists('get_most_useronline_date')) {
226
+ function get_most_useronline_date($display = false) {
227
+ $most_useronline_timestamp = get_option('useronline_most_timestamp');
228
+ $most_useronline_date = mysql2date(sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $most_useronline_timestamp));
229
+ if($display) {
230
+ echo $most_useronline_date;
231
+ } else {
232
+ return $most_useronline_date;
233
+ }
234
+ }
235
+ }
236
+
237
+
238
+ ### Function Check If User Is Online
239
+ function is_online($user_login) {
240
+ global $wpdb;
241
+ $is_online = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->useronline WHERE username = '$user_login' LIMIT 1");
242
+ return intval($is_online);
243
+ }
244
+
245
+
246
+
247
+ ### Function: Update Member last Visit
248
+ //add_action('wp_head', 'update_memberlastvisit');
249
+ function update_memberlastvisit() {
250
+ global $current_user, $user_ID;
251
+ if(!empty($current_user) && intval($user_ID) > 0) {
252
+ update_user_option($user_ID, 'member_last_login', current_time('timestamp'));
253
+ }
254
+ }
255
+
256
+
257
+ ### Function: Get Member last Visit
258
+ function get_memberlastvisit($user_id = 0) {
259
+ $date_format = sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format'));
260
+ if($user_id == 0) {
261
+ return mysql2date($date_format, gmdate('Y-m-d H:i:s', get_user_option('member_last_login')));
262
+ } else {
263
+ return mysql2date($date_format, gmdate('Y-m-d H:i:s', get_user_option('member_last_login', $user_id)));
264
+ }
265
+ }
266
+
267
+
268
+ ### Function: Display Users Browsing The Site
269
+ function get_users_browsing_site($display = true) {
270
+ global $wpdb;
271
+
272
+ // Get Users Browsing Site
273
+ $page_url = addslashes(urlencode($_SERVER['REQUEST_URI']));
274
+ $users_browse = $wpdb->get_results("SELECT displayname, type FROM $wpdb->useronline ORDER BY type");
275
+
276
+ // Variables
277
+ $members = array();
278
+ $guests = array();
279
+ $bots = array();
280
+ $total_members = 0;
281
+ $total_guests = 0;
282
+ $total_bots = 0;
283
+ $nicetext_members = '';
284
+ $nicetext_guests = '';
285
+ $nicetext_bots = '';
286
+
287
+ // If There Is Users Browsing, Then We Execute
288
+ if($users_browse) {
289
+ // Get Users Information
290
+ foreach($users_browse as $user_browse) {
291
+ switch($user_browse->type) {
292
+ case 'member':
293
+ $members[] = stripslashes($user_browse->displayname);
294
+ $total_members++;
295
+ break;
296
+ case 'guest':
297
+ $guests[] = stripslashes($user_browse->displayname);
298
+ $total_guests++;
299
+ break;
300
+ case 'bot':
301
+ $bots[] = stripslashes($user_browse->displayname);
302
+ $total_bots++;
303
+ break;
304
+ }
305
+ }
306
+
307
+ // If We Do Not Display It, Return Respective Users Count
308
+ if(!$display) {
309
+ return array($total_members, $total_guests, $total_bots);
310
+ }
311
+
312
+ // Template - Naming Conventions
313
+ $useronline_naming = get_option('useronline_naming');
314
+
315
+ // Template - User(s) Browsing Site
316
+ $options_browsingsite = get_option('useronline_template_browsingsite');
317
+ $separator_members_browsingsite = stripslashes($options_browsingsite[0]);
318
+ $separator_guests_browsingsite = stripslashes($options_browsingsite[1]);
319
+ $separator_bots_browsingsite = stripslashes($options_browsingsite[2]);
320
+ $template_browsingsite = stripslashes($options_browsingsite[3]);
321
+
322
+ // Nice Text For Users
323
+ if(get_useronline_count() == 1) {
324
+ $template_browsingsite = str_replace('%USERONLINE_USERS%', stripslashes($useronline_naming['user']), $template_browsingsite);
325
+ } else {
326
+ $useronline_naming_users = str_replace('%USERONLINE_COUNT%', number_format_i18n(get_useronline_count()), stripslashes($useronline_naming['users']));
327
+ $template_browsingsite = str_replace('%USERONLINE_USERS%', $useronline_naming_users, $template_browsingsite);
328
+ }
329
+
330
+ // Print Member Name
331
+ if($members) {
332
+ $temp_member = '';
333
+ if(!function_exists('get_totalposts')) {
334
+ foreach($members as $member) {
335
+ $temp_member .= $member.$separator_members_browsingsite;
336
+ }
337
+ } else {
338
+ foreach($members as $member) {
339
+ $temp_member .= useronline_stats_page_link($member).$separator_members_browsingsite;
340
+ }
341
+ }
342
+ $template_browsingsite = str_replace('%USERONLINE_MEMBER_NAMES%', substr($temp_member, 0, -strlen($separator_members_browsingsite)), $template_browsingsite);
343
+ } else {
344
+ $template_browsingsite = str_replace('%USERONLINE_MEMBER_NAMES%', '', $template_browsingsite);
345
+ }
346
+
347
+ // Nice Text For Members
348
+ if($total_members > 1) {
349
+ $useronline_naming_members = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_members), stripslashes($useronline_naming['members']));
350
+ $template_browsingsite = str_replace('%USERONLINE_MEMBERS%', $useronline_naming_members, $template_browsingsite);
351
+ } elseif($total_members == 1) {
352
+ $template_browsingsite = str_replace('%USERONLINE_MEMBERS%', stripslashes($useronline_naming['member']), $template_browsingsite);
353
+ } else {
354
+ $template_browsingsite = str_replace('%USERONLINE_MEMBERS%', '', $template_browsingsite);
355
+ }
356
+
357
+ // Nice Text For Guests
358
+ if($total_guests > 1) {
359
+ $useronline_naming_guests = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_guests), stripslashes($useronline_naming['guests']));
360
+ $template_browsingsite = str_replace('%USERONLINE_GUESTS%', $useronline_naming_guests, $template_browsingsite);
361
+ } elseif($total_guests == 1) {
362
+ $template_browsingsite = str_replace('%USERONLINE_GUESTS%', stripslashes($useronline_naming['guest']), $template_browsingsite);
363
+ } else {
364
+ $template_browsingsite = str_replace('%USERONLINE_GUESTS%', '', $template_browsingsite);
365
+ }
366
+
367
+ // Nice Text For Bots
368
+ if($total_bots > 1) {
369
+ $useronline_naming_bots = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_bots), stripslashes($useronline_naming['bots']));
370
+ $template_browsingsite = str_replace('%USERONLINE_BOTS%', $useronline_naming_bots, $template_browsingsite);
371
+ } elseif($total_bots == 1) {
372
+ $template_browsingsite = str_replace('%USERONLINE_BOTS%', stripslashes($useronline_naming['bot']), $template_browsingsite);
373
+ } else {
374
+ $template_browsingsite = str_replace('%USERONLINE_BOTS%', '', $template_browsingsite);
375
+ }
376
+ // Seperators
377
+ if($total_members > 0 && $total_guests > 0) {
378
+ $template_browsingsite = str_replace('%USERONLINE_GUESTS_SEPERATOR%', $separator_guests_browsingsite, $template_browsingsite);
379
+ } else {
380
+ $template_browsingsite = str_replace('%USERONLINE_GUESTS_SEPERATOR%', '', $template_browsingsite);
381
+ }
382
+ if(($total_guests > 0 || $total_members > 0) && $total_bots > 0) {
383
+ $template_browsingsite = str_replace('%USERONLINE_BOTS_SEPERATOR%', $separator_bots_browsingsite, $template_browsingsite);
384
+ } else {
385
+ $template_browsingsite = str_replace('%USERONLINE_BOTS_SEPERATOR%', '', $template_browsingsite);
386
+ }
387
+
388
+ // Output The Template
389
+ echo $template_browsingsite;
390
+ } else {
391
+ // This Should Not Happen
392
+ global $l10n;
393
+ if (!isset($l10n['wp-useronline'])) {
394
+ useronline_textdomain();
395
+ }
396
+ _e('No User Is Browsing This Site', 'wp-useronline');
397
+ }
398
+ }
399
+
400
+
401
+ ### Function: Display Users Browsing The Page
402
+ function get_users_browsing_page($display = true) {
403
+ global $wpdb;
404
+
405
+ // Get Users Browsing Page
406
+ $page_url = addslashes(urlencode($_SERVER['REQUEST_URI']));
407
+ $users_browse = $wpdb->get_results("SELECT displayname, type FROM $wpdb->useronline WHERE url = '$page_url' ORDER BY type");
408
+
409
+ // Variables
410
+ $members = array();
411
+ $guests = array();
412
+ $bots = array();
413
+ $total_users = 0;
414
+ $total_members = 0;
415
+ $total_guests = 0;
416
+ $total_bots = 0;
417
+ $nicetext_members = '';
418
+ $nicetext_guests = '';
419
+ $nicetext_bots = '';
420
+
421
+ // If There Is Users Browsing, Then We Execute
422
+ if($users_browse) {
423
+ // Reassign Bots Name
424
+ $bots = get_option('useronline_bots');
425
+ $bots_name = array();
426
+ foreach($bots as $botname => $botlookfor) {
427
+ $bots_name[] = $botname;
428
+ }
429
+ // Get Users Information
430
+ foreach($users_browse as $user_browse) {
431
+ switch($user_browse->type) {
432
+ case 'member':
433
+ $members[] = stripslashes($user_browse->displayname);
434
+ $total_members++;
435
+ break;
436
+ case 'guest':
437
+ $guests[] = stripslashes($user_browse->displayname);
438
+ $total_guests++;
439
+ break;
440
+ case 'bot':
441
+ $bots[] = stripslashes($user_browse->displayname);
442
+ $total_bots++;
443
+ break;
444
+ }
445
+ }
446
+ $total_users = ($total_guests+$total_bots+$total_members);
447
+
448
+ // If We Do Not Display It, Return Respective Users Count
449
+ if(!$display) {
450
+ return array ($total_users, $total_members, $total_guests, $total_bots);
451
+ }
452
+
453
+ // Template - Naming Conventions
454
+ $useronline_naming = get_option('useronline_naming');
455
+
456
+ // Template - User(s) Browsing Site
457
+ $options_browsingpage = get_option('useronline_template_browsingpage');
458
+ $separator_members_browsingpage = stripslashes($options_browsingpage[0]);
459
+ $separator_guests_browsingpage = stripslashes($options_browsingpage[1]);
460
+ $separator_bots_browsingpage = stripslashes($options_browsingpage[2]);
461
+ $template_browsingpage = stripslashes($options_browsingpage[3]);
462
+
463
+ // Nice Text For Users
464
+ if($total_users == 1) {
465
+ $template_browsingpage = str_replace('%USERONLINE_USERS%', stripslashes($useronline_naming['user']), $template_browsingpage);
466
+ } else {
467
+ $useronline_naming_users = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_users), stripslashes($useronline_naming['users']));
468
+ $template_browsingpage = str_replace('%USERONLINE_USERS%', $useronline_naming_users, $template_browsingpage);
469
+ }
470
+
471
+ // Print Member Name
472
+ if($members) {
473
+ $temp_member = '';
474
+ if(!function_exists('get_totalposts')) {
475
+ foreach($members as $member) {
476
+ $temp_member .= $member.$separator_members_browsingpage;
477
+ }
478
+ } else {
479
+ foreach($members as $member) {
480
+ $temp_member .= useronline_stats_page_link($member).$separator_members_browsingpage;
481
+ }
482
+ }
483
+ $template_browsingpage = str_replace('%USERONLINE_MEMBER_NAMES%', substr($temp_member, 0, -strlen($separator_members_browsingpage)), $template_browsingpage);
484
+ } else {
485
+ $template_browsingpage = str_replace('%USERONLINE_MEMBER_NAMES%', '', $template_browsingpage);
486
+ }
487
+
488
+ // Nice Text For Members
489
+ if($total_members > 1) {
490
+ $useronline_naming_members = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_members), stripslashes($useronline_naming['members']));
491
+ $template_browsingpage = str_replace('%USERONLINE_MEMBERS%', $useronline_naming_members, $template_browsingpage);
492
+ } elseif($total_members == 1) {
493
+ $template_browsingpage = str_replace('%USERONLINE_MEMBERS%', stripslashes($useronline_naming['member']), $template_browsingpage);
494
+ } else {
495
+ $template_browsingpage = str_replace('%USERONLINE_MEMBERS%', '', $template_browsingpage);
496
+ }
497
+
498
+ // Nice Text For Guests
499
+ if($total_guests > 1) {
500
+ $useronline_naming_guests = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_guests), stripslashes($useronline_naming['guests']));
501
+ $template_browsingpage = str_replace('%USERONLINE_GUESTS%', $useronline_naming_guests, $template_browsingpage);
502
+ } elseif($total_guests == 1) {
503
+ $template_browsingpage = str_replace('%USERONLINE_GUESTS%', stripslashes($useronline_naming['guest']), $template_browsingpage);
504
+ } else {
505
+ $template_browsingpage = str_replace('%USERONLINE_GUESTS%', '', $template_browsingpage);
506
+ }
507
+
508
+ // Nice Text For Bots
509
+ if($total_bots > 1) {
510
+ $useronline_naming_bots = str_replace('%USERONLINE_COUNT%', number_format_i18n($total_bots), stripslashes($useronline_naming['bots']));
511
+ $template_browsingpage = str_replace('%USERONLINE_BOTS%', $useronline_naming_bots, $template_browsingpage);
512
+ } elseif($total_bots == 1) {
513
+ $template_browsingpage = str_replace('%USERONLINE_BOTS%', stripslashes($useronline_naming['bot']), $template_browsingpage);
514
+ } else {
515
+ $template_browsingpage = str_replace('%USERONLINE_BOTS%', '', $template_browsingpage);
516
+ }
517
+ // Seperators
518
+ if($total_members > 0 && $total_guests > 0) {
519
+ $template_browsingpage = str_replace('%USERONLINE_GUESTS_SEPERATOR%', $separator_guests_browsingpage, $template_browsingpage);
520
+ } else {
521
+ $template_browsingpage = str_replace('%USERONLINE_GUESTS_SEPERATOR%', '', $template_browsingpage);
522
+ }
523
+ if(($total_guests > 0 || $total_members > 0) && $total_bots > 0) {
524
+ $template_browsingpage = str_replace('%USERONLINE_BOTS_SEPERATOR%', $separator_bots_browsingpage, $template_browsingpage);
525
+ } else {
526
+ $template_browsingpage = str_replace('%USERONLINE_BOTS_SEPERATOR%', '', $template_browsingpage);
527
+ }
528
+
529
+
530
+ // Output The Template
531
+ echo $template_browsingpage;
532
+ } else {
533
+ // This Should Not Happen
534
+ global $l10n;
535
+ if (!isset($l10n['wp-useronline'])) {
536
+ useronline_textdomain();
537
+ }
538
+ _e('No User Is Browsing This Page', 'wp-useronline');
539
+ }
540
+ }
541
+
542
+
543
+ ### Function: Get IP Address
544
+ if(!function_exists('get_ipaddress')) {
545
+ function get_ipaddress() {
546
+ if (empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
547
+ $ip_address = $_SERVER["REMOTE_ADDR"];
548
+ } else {
549
+ $ip_address = $_SERVER["HTTP_X_FORWARDED_FOR"];
550
+ }
551
+ if(strpos($ip_address, ',') !== false) {
552
+ $ip_address = explode(',', $ip_address);
553
+ $ip_address = $ip_address[0];
554
+ }
555
+ return $ip_address;
556
+ }
557
+ }
558
+
559
+
560
+ ### Function: Check IP
561
+ function check_ip($ip) {
562
+ $current_user = wp_get_current_user();
563
+ $user_level = intval($current_user->user_level);
564
+ $ip2long = ip2long($ip);
565
+ if($user_level == 10 && ($ip != 'unknown') && $ip == long2ip($ip2long) && $ip2long !== false) {
566
+ return "<span dir=\"ltr\">(<a href=\"http://ws.arin.net/cgi-bin/whois.pl?queryinput=$ip\" title=\"".gethostbyaddr($ip)."\">$ip</a>)</span>";
567
+ }
568
+ }
569
+
570
+
571
+ ### Function: Get User's Country Name/Code
572
+ function get_user_origin($ip) {
573
+ global $wpdb, $cache_ips;
574
+ if (!isset($cache_ips[$ip])) {
575
+ $cache_ips[$ip] = $wpdb->get_row("SELECT c.country, c.code FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('$ip') AND c.code = i.country ORDER BY i.ip DESC LIMIT 1");
576
+ }
577
+ return $cache_ips[$ip];
578
+ }
579
+
580
+
581
+ ### Function: Output User's Country Flag/Name
582
+ function ip2nation_country($ip, $display_countryname = 0) {
583
+ //$country_mirror = 'http://lesterchan.net/wp-content/themes/lesterchan/images/flags';
584
+ $country_mirror = plugins_url('wp-useronline/images/flags');
585
+ $country_imgtype = 'png';
586
+ $origin = get_user_origin($ip);
587
+ $output = '';
588
+ if($origin) {
589
+ $country_code = $origin->code;
590
+ $country_name = $origin->country;
591
+ if($country_name != 'Private') {
592
+ if(@file_exists(WP_PLUGIN_DIR.'/wp-useronline/images/flags/sg.'.$country_imgtype) !== false) {
593
+ $output .= '<img src="'.$country_mirror.'/'.$country_code.'.'.$country_imgtype.'" alt="'.$country_name.'" title="'.$country_name.'" /> ';
594
+ }
595
+ if($display_countryname) {
596
+ $output .= $country_name.' ';
597
+ }
598
+ }
599
+ }
600
+ return $output;
601
+ }
602
+
603
+
604
+ ### Function: Display UserOnline For Admin
605
+ function display_useronline() {
606
+ $useronline_page = useronline_page();
607
+ echo '<div class="wrap">'."\n";
608
+ screen_icon();
609
+ echo '<h2>'.__('Users Online Now', 'wp-useronline').'</h2>'."\n";
610
+ echo $useronline_page;
611
+ echo '</div>'."\n";
612
+ }
613
+
614
+
615
+ ### Function Display UserOnline For Admin's Right Now
616
+ add_action('rightnow_end', 'useronline_rightnow');
617
+ function useronline_rightnow() {
618
+ $total_users = get_useronline_count(false);
619
+ echo '<p>';
620
+ if ($total_users == 1) {
621
+ printf(__('There is <strong><a href="%s">%s user</a></strong> online now.', 'wp-useronline'), admin_url('index.php?page=wp-useronline/wp-useronline.php'), number_format_i18n($total_users));
622
+ } else {
623
+ printf(__('There are a total of <strong><a href="%s">%s users</a></strong> online now.', 'wp-useronline'), admin_url('index.php?page=wp-useronline/wp-useronline.php'), number_format_i18n($total_users));
624
+ }
625
+ echo '<br />';
626
+ get_users_browsing_site();
627
+ echo '.<br />';
628
+ printf(__('Most users ever online were <strong>%s</strong>, on <strong>%s</strong>', 'wp-useronline'), number_format_i18n(get_most_useronline()), get_most_useronline_date());
629
+ echo '</p>'."\n";
630
+ }
631
+
632
+
633
+ ### Function: Short Code For Inserting Users Online Into Page
634
+ add_shortcode('page_useronline', 'useronline_page_shortcode');
635
+ function useronline_page_shortcode($atts) {
636
+ return useronline_page();
637
+ }
638
+
639
+
640
+ ### Function: Format URL
641
+ function format_url($url) {
642
+ $url = str_replace('&', '&amp;', $url);
643
+ $url = str_replace(' ', '+', $url);
644
+ return $url;
645
+ }
646
+
647
+
648
+ ### Function: UserOnline Page
649
+ function useronline_page() {
650
+ global $wpdb;
651
+ // Get The Users Online
652
+ $usersonline = $wpdb->get_results("SELECT * FROM $wpdb->useronline ORDER BY type");
653
+
654
+ // Variables Variables Variables
655
+ $useronline_output = '';
656
+ $members = array();
657
+ $guests = array();
658
+ $bots = array();
659
+ $total_users = 0;
660
+ $total_members = 0;
661
+ $total_guests = 0;
662
+ $total_bots = 0;
663
+ $nicetext_users = '';
664
+ $nicetext_members = '';
665
+ $nicetext_guests = '';
666
+ $nicetext_bots = '';
667
+ $url_front = 'http://'.$_SERVER['SERVER_NAME'];
668
+
669
+ // Process Those User Who Is Online
670
+ if($usersonline) {
671
+ foreach($usersonline as $useronline) {
672
+ switch($useronline->type) {
673
+ case 'member':
674
+ $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)), 'referral' => stripslashes(urldecode($useronline->referral)));
675
+ $total_members++;
676
+ break;
677
+ case 'guest':
678
+ $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)), 'referral' => stripslashes(urldecode($useronline->referral)));
679
+ $total_guests++;
680
+ break;
681
+ case 'bot':
682
+ $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)), 'referral' => stripslashes(urldecode($useronline->referral)));
683
+ $total_bots++;
684
+ break;
685
+ }
686
+ }
687
+ $total_users = ($total_guests+$total_bots+$total_members);
688
+ }
689
+
690
+ // Nice Text For Users
691
+ if($total_users == 1) {
692
+ $nicetext_users = number_format_i18n($total_users).' '.__('User', 'wp-useronline');
693
+ } else {
694
+ $nicetext_users = number_format_i18n($total_users).' '.__('Users', 'wp-useronline');
695
+ }
696
+
697
+ // Nice Text For Members
698
+ if($total_members == 1) {
699
+ $nicetext_members = number_format_i18n($total_members).' '.__('Member', 'wp-useronline');
700
+ } else {
701
+ $nicetext_members = number_format_i18n($total_members).' '.__('Members', 'wp-useronline');
702
+ }
703
+
704
+
705
+ // Nice Text For Guests
706
+ if($total_guests == 1) {
707
+ $nicetext_guests = number_format_i18n($total_guests).' '.__('Guest', 'wp-useronline');
708
+ } else {
709
+ $nicetext_guests = number_format_i18n($total_guests).' '.__('Guests', 'wp-useronline');
710
+ }
711
+
712
+ // Nice Text For Bots
713
+ if($total_bots == 1) {
714
+ $nicetext_bots = number_format_i18n($total_bots).' '.__('Bot', 'wp-useronline');
715
+ } else {
716
+ $nicetext_bots = number_format_i18n($total_bots).' '.__('Bots', 'wp-useronline');
717
+ }
718
+
719
+ // Check Whether WP-Stats Is Activated
720
+ $wp_stats = false;
721
+ if(function_exists('get_totalposts')) {
722
+ $wp_stats = true;
723
+ }
724
+ if ($total_users == 1) {
725
+ $useronline_output .= '<p>'.sprintf(__('There is <strong>%s</strong> online now: <strong>%s</strong>, <strong>%s</strong> and <strong>%s</strong>.', 'wp-useronline'), $nicetext_users, $nicetext_members, $nicetext_guests, $nicetext_bots).'</p>';
726
+ } else {
727
+ $useronline_output .= '<p>'.sprintf(__('There are a total of <strong>%s</strong> online now: <strong>%s</strong>, <strong>%s</strong> and <strong>%s</strong>.', 'wp-useronline'), $nicetext_users, $nicetext_members, $nicetext_guests, $nicetext_bots).'</p>';
728
+ }
729
+ $useronline_output .= '<p>'.sprintf(__('Most users ever online were <strong>%s</strong>, on <strong>%s</strong>', 'wp-useronline'), number_format_i18n(get_most_useronline()), get_most_useronline_date()).'</p>';
730
+ // Print Out Members
731
+ if($total_members > 0) {
732
+ $useronline_output .= '<h2>'.$nicetext_members.' '.__('Online Now', 'wp-useronline').'</h2>'."\n";
733
+ }
734
+ $no=1;
735
+ if($members) {
736
+ foreach($members as $member) {
737
+ $referral_output = '';
738
+ if(!empty($member['referral'])) {
739
+ $referral_output = ' [<a href="'.format_url($member['referral']).'">'.__('referral', 'wp-useronline').'</a>]';
740
+ }
741
+ if($wp_stats) {
742
+ $useronline_output .= '<p><strong>#'.number_format_i18n($no).' - '.useronline_stats_page_link($member['display_name']).'</strong> '.ip2nation_country($member['ip']).check_ip($member['ip']).' '.__('on', 'wp-useronline').' '.mysql2date(sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $member['timestamp'])).'<br />'.$member['location'].' [<a href="'.format_url($member['url']).'">'.__('url', 'wp-useronline').'</a>]'.$referral_output.'</p>'."\n";
743
+ } else {
744
+ $useronline_output .= '<p><strong>#'.number_format_i18n($no).' - '.$member['display_name'].'</strong> '.ip2nation_country($member['ip']).check_ip($member['ip']).' '.__('on', 'wp-useronline').' '.mysql2date(sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $member['timestamp'])).'<br />'.$member['location'].' [<a href="'.format_url($member['url']).'">'.__('url', 'wp-useronline').'</a>]'.$referral_output.'</p>'."\n";
745
+ }
746
+ $no++;
747
+ }
748
+ }
749
+
750
+ // Print Out Guest
751
+ if($total_guests > 0) {
752
+ $useronline_output .= '<h2>'.$nicetext_guests.' '.__('Online Now', 'wp-useronline').'</h2>'."\n";
753
+ }
754
+ $no=1;
755
+ if($guests) {
756
+ foreach($guests as $guest) {
757
+ $referral_output = '';
758
+ if(!empty($guest['referral'])) {
759
+ $referral_output = '[<a href="'.format_url($guest['referral']).'">'.__('referral', 'wp-useronline').'</a>]';
760
+ }
761
+ if($wp_stats) {
762
+ $useronline_output .= '<p><strong>#'.number_format_i18n($no).' - '.useronline_stats_page_link($guest['display_name']).'</strong> '.ip2nation_country($guest['ip']).check_ip($guest['ip']).' '.__('on', 'wp-useronline').' '.mysql2date(sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $guest['timestamp'])).'<br />'.$guest['location'].' [<a href="'.format_url($guest['url']).'">'.__('url', 'wp-useronline').'</a>]'.$referral_output.'</p>'."\n";
763
+ } else {
764
+ $useronline_output .= '<p><strong>#'.number_format_i18n($no).' - '.$guest['display_name'].'</strong> '.ip2nation_country($guest['ip']).check_ip($guest['ip']).' '.__('on', 'wp-useronline').' '.mysql2date(sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $guest['timestamp'])).'<br />'.$guest['location'].' [<a href="'.format_url($guest['url']).'">'.__('url', 'wp-useronline').'</a>]'.$referral_output.'</p>'."\n";
765
+ }
766
+ $no++;
767
+ }
768
+ }
769
+
770
+ // Print Out Bots
771
+ if($total_bots > 0) {
772
+ $useronline_output .= '<h2>'.$nicetext_bots.' '.__('Online Now', 'wp-useronline').'</h2>'."\n";
773
+ }
774
+ $no=1;
775
+ if($bots) {
776
+ foreach($bots as $bot) {
777
+ $useronline_output .= '<p><strong>#'.number_format_i18n($no).' - '.$bot['display_name'].'</strong> '.check_ip($bot['ip']).' '.__('on', 'wp-useronline').' '.mysql2date(sprintf(__('%s @ %s', 'wp-useronline'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $bot['timestamp'])).'<br />'.$bot['location'].' [<a href="'.format_url($bot['url']).'">'.__('url', 'wp-useronline').'</a>]</p>'."\n";
778
+ $no++;
779
+ }
780
+ }
781
+
782
+ // Print Out No One Is Online Now
783
+ if($total_users == 0) {
784
+ $useronline_output .= '<h2>'.__('No One Is Online Now', 'wp-useronline').'</h2>'."\n";
785
+ }
786
+
787
+ // Output UserOnline Page
788
+ return apply_filters('useronline_page', $useronline_output);
789
+ }
790
+
791
+
792
+ ### Function: Stats Page Link
793
+ function useronline_stats_page_link($author) {
794
+ $stats_url = '';
795
+ if(function_exists('stats_page')) {
796
+ $stats_url = get_option('stats_url');
797
+ $author_encode = urlencode($author);
798
+ if(strpos($stats_url, '?') !== false) {
799
+ $stats_url = "$stats_url&amp;stats_author=$author_encode";
800
+ } else {
801
+ $stats_url = "$stats_url?stats_author=$author_encode";
802
+ }
803
+ return '<a href="'.$stats_url.'" title="'.$author.'">'.$author.'</a>';
804
+ }
805
+ return $stats_url;
806
+ }
807
+
808
+
809
+ ### Function: Process AJAX Request
810
+ useronline_ajax();
811
+ function useronline_ajax() {
812
+ global $wpdb, $useronline;
813
+ $mode = trim($_GET['useronline_mode']);
814
+ if(!empty($mode)) {
815
+ header('Content-Type: text/html; charset='.get_option('blog_charset'));
816
+ switch($mode) {
817
+ case 'useronline_count':
818
+ $useronline = intval($wpdb->get_var("SELECT COUNT(*) FROM $wpdb->useronline"));
819
+ get_useronline();
820
+ break;
821
+ case 'useronline_browsingsite':
822
+ get_users_browsing_site();
823
+ break;
824
+ case 'useronline_browsingpage':
825
+ get_users_browsing_page();
826
+ break;
827
+ }
828
+ exit();
829
+ }
830
+ }
831
+
832
+
833
+ ### Function: Plug Into WP-Stats
834
+ if(strpos(get_option('stats_url'), $_SERVER['REQUEST_URI']) || strpos($_SERVER['REQUEST_URI'], 'stats-options.php') || strpos($_SERVER['REQUEST_URI'], 'wp-stats/wp-stats.php')) {
835
+ add_filter('wp_stats_page_admin_plugins', 'useronline_page_admin_general_stats');
836
+ add_filter('wp_stats_page_plugins', 'useronline_page_general_stats');
837
+ }
838
+
839
+
840
+ ### Function: Add WP-UserOnline General Stats To WP-Stats Page Options
841
+ function useronline_page_admin_general_stats($content) {
842
+ $stats_display = get_option('stats_display');
843
+ if($stats_display['useronline'] == 1) {
844
+ $content .= '<input type="checkbox" name="stats_display[]" id="wpstats_useronline" value="useronline" checked="checked" />&nbsp;&nbsp;<label for="wpstats_useronline">'.__('WP-UserOnline', 'wp-useronline').'</label><br />'."\n";
845
+ } else {
846
+ $content .= '<input type="checkbox" name="stats_display[]" id="wpstats_useronline" value="useronline" />&nbsp;&nbsp;<label for="wpstats_useronline">'.__('WP-UserOnline', 'wp-useronline').'</label><br />'."\n";
847
+ }
848
+ return $content;
849
+ }
850
+
851
+
852
+ ### Function: Add WP-UserOnline General Stats To WP-Stats Page
853
+ function useronline_page_general_stats($content) {
854
+ $stats_display = get_option('stats_display');
855
+ if($stats_display['useronline'] == 1) {
856
+ $content .= '<p><strong>'.__('WP-UserOnline', 'wp-useronline').'</strong></p>'."\n";
857
+ $content .= '<ul>'."\n";
858
+ $content .= '<li>'.sprintf(__ngettext('<strong>%s</strong> user online now.', '<strong>%s</strong> users online now.', get_useronline_count(), 'wp-useronline'), number_format_i18n(get_useronline_count())).'</li>'."\n";
859
+ $content .= '<li>'.sprintf(__ngettext('Most users ever online was <strong>%s</strong>.', 'Most users ever online was <strong>%s</strong>.', get_most_useronline(), 'wp-useronline'), number_format_i18n(get_most_useronline())).'</li>'."\n";
860
+ $content .= '<li>'.__('On', 'wp-useronline').' <strong>'.get_most_useronline_date().'</strong>.</li>'."\n";
861
+ $content .= '</ul>'."\n";
862
+ }
863
+ return $content;
864
+ }
865
+
866
+
867
+ ### Function: Create UserOnline Table
868
+ add_action('activate_wp-useronline/wp-useronline.php', 'create_useronline_table');
869
+ function create_useronline_table() {
870
+ global $wpdb;
871
+ useronline_textdomain();
872
+ $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');
873
+ if(@is_file(ABSPATH.'/wp-admin/upgrade-functions.php')) {
874
+ include_once(ABSPATH.'/wp-admin/upgrade-functions.php');
875
+ } elseif(@is_file(ABSPATH.'/wp-admin/includes/upgrade.php')) {
876
+ include_once(ABSPATH.'/wp-admin/includes/upgrade.php');
877
+ } else {
878
+ die('We have problem finding your \'/wp-admin/upgrade-functions.php\' and \'/wp-admin/includes/upgrade.php\'');
879
+ }
880
+ $charset_collate = '';
881
+ if($wpdb->supports_collation()) {
882
+ if(!empty($wpdb->charset)) {
883
+ $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
884
+ }
885
+ if(!empty($wpdb->collate)) {
886
+ $charset_collate .= " COLLATE $wpdb->collate";
887
+ }
888
+ }
889
+ // Drop UserOnline Table
890
+ $wpdb->query("DROP TABLE IF EXISTS $wpdb->useronline");
891
+ // Create UserOnline Table
892
+ $create_table = "CREATE TABLE $wpdb->useronline (".
893
+ " timestamp int(15) NOT NULL default '0',".
894
+ " userid int(10) NOT NULL default '0',".
895
+ " username varchar(20) NOT NULL default '',".
896
+ " displayname varchar(255) NOT NULL default '',".
897
+ " useragent varchar(255) NOT NULL default '',".
898
+ " ip varchar(40) NOT NULL default '',".
899
+ " location varchar(255) NOT NULL default '',".
900
+ " url varchar(255) NOT NULL default '',".
901
+ " type enum('member','guest','bot') NOT NULL default 'guest',".
902
+ " referral varchar(255) NOT NULL default '',".
903
+ " UNIQUE KEY useronline_id (timestamp,username,ip,useragent)) $charset_collate;";
904
+ maybe_create_table($wpdb->useronline, $create_table);
905
+ // Add In Options
906
+ add_option('useronline_most_users', 1, 'Most Users Ever Online Count');
907
+ add_option('useronline_most_timestamp', current_time('timestamp'), 'Most Users Ever Online Date');
908
+ add_option('useronline_timeout', 300, 'Timeout In Seconds');
909
+ add_option('useronline_bots', $bots, 'Bots Name/Useragent');
910
+ // Database Upgrade For WP-UserOnline 2.05
911
+ add_option('useronline_url', site_url('useronline/'), 'UserOnline Page URL');
912
+ // Database Upgrade For WP-UserOnline 2.20
913
+ add_option('useronline_naming', array('user' => __('1 User', 'wp-useronline'), 'users' => __('%USERONLINE_COUNT% Users', 'wp-useronline'), 'member' => __('1 Member', 'wp-useronline'), 'members' => __('%USERONLINE_COUNT% Members', 'wp-useronline'), 'guest' => __('1 Guest', 'wp-useronline'), 'guests' => __('%USERONLINE_COUNT% Guests', 'wp-useronline'), 'bot' => __('1 Bot', 'wp-useronline'), 'bots' => __('%USERONLINE_COUNT% Bots', 'wp-useronline')),'Member(s), Guest(s) or Bot(s)');
914
+ add_option('useronline_template_useronline', '<a href="%USERONLINE_PAGE_URL%" title="%USERONLINE_USERS%"><strong>%USERONLINE_USERS%</strong> '.__('Online', 'wp-useronline').'</a>', 'Useronline Template');
915
+ add_option('useronline_template_browsingsite', array(__(',', 'wp-useronline').' ', __(',', 'wp-useronline').' ', __(',', 'wp-useronline').' ', _c('Users|Template Element', 'wp-useronline').': <strong>%USERONLINE_MEMBER_NAMES%%USERONLINE_GUESTS_SEPERATOR%%USERONLINE_GUESTS%%USERONLINE_BOTS_SEPERATOR%%USERONLINE_BOTS%</strong>'), 'User Browsing Site Template');
916
+ add_option('useronline_template_browsingpage', array(__(',', 'wp-useronline').' ', __(',', 'wp-useronline').' ', __(',', 'wp-useronline').' ', '<strong>%USERONLINE_USERS%</strong> '.__('Browsing This Page.', 'wp-useronline').'<br />'._c('Users|Template Element', 'wp-useronline').': <strong>%USERONLINE_MEMBER_NAMES%%USERONLINE_GUESTS_SEPERATOR%%USERONLINE_GUESTS%%USERONLINE_BOTS_SEPERATOR%%USERONLINE_BOTS%</strong>'), 'User Browsing Site Template');
917
+ }
 
 
 
918
  ?>
wp-useronline.pot CHANGED
@@ -1,18 +1,19 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: WP-UserOnline 2.31\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2008-07-16 03:37+0800\n"
6
- "PO-Revision-Date: 2008-07-16 03:37+0800\n"
7
  "Last-Translator: Lester Chan <lesterchan@gmail.com>\n"
8
  "Language-Team: Lester Chan <lesterchan@gmail.com>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
  "X-Poedit-Country: SINGAPORE\n"
13
- "X-Poedit-KeywordsList: __;_e\n"
14
  "X-Poedit-Basepath: .\n"
15
  "X-Poedit-Language: English\n"
 
16
  "X-Poedit-SearchPath-0: .\n"
17
 
18
  #: useronline-options.php:63
@@ -52,7 +53,7 @@ msgid "No Useronline Option Updated"
52
  msgstr ""
53
 
54
  #: useronline-options.php:85
55
- #: useronline-options.php:379
56
  msgid "UNINSTALL WP-UserOnline"
57
  msgstr ""
58
 
@@ -72,7 +73,7 @@ msgid "Error deleting Setting Key '%s'."
72
  msgstr ""
73
 
74
  #: useronline-options.php:127
75
- #: useronline-options.php:337
76
  msgid "Uninstall WP-UserOnline"
77
  msgstr ""
78
 
@@ -82,183 +83,193 @@ msgid "<a href=\"%s\">Click Here</a> To Finish The Uninstallation And WP-UserOnl
82
  msgstr ""
83
 
84
  #: useronline-options.php:153
85
- #: wp-useronline.php:917
86
  msgid "Online"
87
  msgstr ""
88
 
89
  #: useronline-options.php:160
90
- #: wp-useronline.php:916
91
  msgid "1 User"
92
  msgstr ""
93
 
94
  #: useronline-options.php:161
95
- #: wp-useronline.php:916
96
  msgid "%USERONLINE_COUNT% Users"
97
  msgstr ""
98
 
99
  #: useronline-options.php:162
100
- #: wp-useronline.php:916
101
  msgid "1 Member"
102
  msgstr ""
103
 
104
  #: useronline-options.php:163
105
- #: wp-useronline.php:916
106
  msgid "%USERONLINE_COUNT% Members"
107
  msgstr ""
108
 
109
  #: useronline-options.php:164
110
- #: wp-useronline.php:916
111
  msgid "1 Guest"
112
  msgstr ""
113
 
114
  #: useronline-options.php:165
115
- #: wp-useronline.php:916
116
  msgid "%USERONLINE_COUNT% Guests"
117
  msgstr ""
118
 
119
  #: useronline-options.php:166
120
- #: wp-useronline.php:916
121
  msgid "1 Bot"
122
  msgstr ""
123
 
124
  #: useronline-options.php:167
125
- #: wp-useronline.php:916
126
  msgid "%USERONLINE_COUNT% Bots"
127
  msgstr ""
128
 
 
 
 
 
 
 
 
 
 
 
 
129
  #: useronline-options.php:173
130
  #: useronline-options.php:179
131
- #: wp-useronline.php:698
132
- #: wp-useronline.php:918
133
- #: wp-useronline.php:919
134
- msgid "Users"
135
  msgstr ""
136
 
137
  #: useronline-options.php:179
138
- #: wp-useronline.php:919
139
  msgid "Browsing This Page."
140
  msgstr ""
141
 
142
- #: useronline-options.php:185
143
  #: useronline-options.php:186
 
144
  msgid "Useronline Options"
145
  msgstr ""
146
 
147
- #: useronline-options.php:189
148
  msgid "Time Out"
149
  msgstr ""
150
 
151
- #: useronline-options.php:191
152
  msgid "How long till it will remove the user from the database (In seconds)."
153
  msgstr ""
154
 
155
- #: useronline-options.php:195
156
  msgid "UserOnline URL"
157
  msgstr ""
158
 
159
- #: useronline-options.php:197
160
  msgid "URL To UserOnline Page (leave blank if you do not want to link it to the UserOnline Page)<br />Example: http://www.yoursite.com/blogs/useronline/<br />Example: http://www.yoursite.com/blogs/?page_id=2"
161
  msgstr ""
162
 
163
- #: useronline-options.php:201
164
  msgid "Bots Name/User Agent"
165
  msgstr ""
166
 
167
- #: useronline-options.php:203
168
  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."
169
  msgstr ""
170
 
171
- #: useronline-options.php:211
172
  msgid "Naming Conventions:"
173
  msgstr ""
174
 
175
- #: useronline-options.php:212
176
- #: useronline-options.php:253
177
- #: useronline-options.php:265
178
- #: useronline-options.php:297
179
  msgid "Allowed Variables:"
180
  msgstr ""
181
 
182
- #: useronline-options.php:214
183
- #: useronline-options.php:258
184
- #: useronline-options.php:273
185
- #: useronline-options.php:305
186
  msgid "Restore Default Template"
187
  msgstr ""
188
 
189
- #: useronline-options.php:220
190
  msgid "Singular Form"
191
  msgstr ""
192
 
193
- #: useronline-options.php:221
194
  msgid "Plural Form"
195
  msgstr ""
196
 
197
- #: useronline-options.php:248
198
  msgid "Useronline Templates"
199
  msgstr ""
200
 
201
- #: useronline-options.php:252
202
  msgid "User(s) Online:"
203
  msgstr ""
204
 
205
- #: useronline-options.php:264
206
  msgid "User(s) Browsing Site:"
207
  msgstr ""
208
 
209
- #: useronline-options.php:279
210
- #: useronline-options.php:311
211
- msgid "Member Names Separator"
212
- msgstr ""
213
-
214
  #: useronline-options.php:280
215
  #: useronline-options.php:312
216
- msgid "Guests Separator"
217
  msgstr ""
218
 
219
  #: useronline-options.php:281
220
  #: useronline-options.php:313
 
 
 
 
 
221
  msgid "Bots Separator"
222
  msgstr ""
223
 
224
- #: useronline-options.php:296
225
  msgid "User(s) Browsing Page:"
226
  msgstr ""
227
 
228
- #: useronline-options.php:328
229
  msgid "Save Changes"
230
  msgstr ""
231
 
232
- #: useronline-options.php:339
233
  msgid "Deactivating WP-UserOnline plugin does not remove any data that may have been created, such as the useronline options. To completely remove this plugin, you can uninstall it here."
234
  msgstr ""
235
 
236
- #: useronline-options.php:342
237
  msgid "WARNING:"
238
  msgstr ""
239
 
240
- #: useronline-options.php:343
241
  msgid "Once uninstalled, this cannot be undone. You should use a Database Backup plugin of WordPress to back up all the data first."
242
  msgstr ""
243
 
244
- #: useronline-options.php:346
245
  msgid "The following WordPress Options/Tables will be DELETED:"
246
  msgstr ""
247
 
248
- #: useronline-options.php:351
249
  msgid "WordPress Options"
250
  msgstr ""
251
 
252
- #: useronline-options.php:352
253
  msgid "WordPress Tables"
254
  msgstr ""
255
 
256
- #: useronline-options.php:378
257
  #: wp-useronline-widget.php:73
258
  msgid "Yes"
259
  msgstr ""
260
 
261
- #: useronline-options.php:379
262
  msgid ""
263
  "You Are About To Uninstall WP-UserOnline From WordPress.\\n"
264
  "This Action Is Not Reversible.\\n"
@@ -282,143 +293,153 @@ msgstr ""
282
  msgid "No"
283
  msgstr ""
284
 
285
- #: wp-useronline.php:77
286
- #: wp-useronline.php:848
287
- #: wp-useronline.php:850
288
- #: wp-useronline.php:860
289
  msgid "WP-UserOnline"
290
  msgstr ""
291
 
292
- #: wp-useronline.php:80
293
  msgid "Useronline"
294
  msgstr ""
295
 
296
- #: wp-useronline.php:145
297
  msgid "guest"
298
  msgstr ""
299
 
300
- #: wp-useronline.php:151
301
- #: wp-useronline.php:711
302
  msgid "Guest"
303
  msgstr ""
304
 
305
- #: wp-useronline.php:166
306
  msgid "Blog Archive"
307
  msgstr ""
308
 
309
- #: wp-useronline.php:247
310
- #: wp-useronline.php:278
311
- #: wp-useronline.php:746
312
- #: wp-useronline.php:748
313
- #: wp-useronline.php:766
314
- #: wp-useronline.php:768
315
- #: wp-useronline.php:781
316
  #, php-format
317
  msgid "%s @ %s"
318
  msgstr ""
319
 
320
- #: wp-useronline.php:411
321
  msgid "No User Is Browsing This Site"
322
  msgstr ""
323
 
324
- #: wp-useronline.php:549
325
  msgid "No User Is Browsing This Page"
326
  msgstr ""
327
 
328
- #: wp-useronline.php:613
329
  msgid "Users Online Now"
330
  msgstr ""
331
 
332
- #: wp-useronline.php:625
333
  #, php-format
334
  msgid "There is <strong><a href=\"%s\">%s user</a></strong> online now."
335
  msgstr ""
336
 
337
- #: wp-useronline.php:627
338
  #, php-format
339
  msgid "There are a total of <strong><a href=\"%s\">%s users</a></strong> online now."
340
  msgstr ""
341
 
342
- #: wp-useronline.php:632
343
- #: wp-useronline.php:733
344
  #, php-format
345
  msgid "Most users ever online were <strong>%s</strong>, on <strong>%s</strong>"
346
  msgstr ""
347
 
348
- #: wp-useronline.php:696
349
  msgid "User"
350
  msgstr ""
351
 
352
- #: wp-useronline.php:703
 
 
 
 
353
  msgid "Member"
354
  msgstr ""
355
 
356
- #: wp-useronline.php:705
357
  msgid "Members"
358
  msgstr ""
359
 
360
- #: wp-useronline.php:713
361
  msgid "Guests"
362
  msgstr ""
363
 
364
- #: wp-useronline.php:718
365
  msgid "Bot"
366
  msgstr ""
367
 
368
- #: wp-useronline.php:720
369
  msgid "Bots"
370
  msgstr ""
371
 
372
- #: wp-useronline.php:729
373
  #, php-format
374
  msgid "There is <strong>%s</strong> online now: <strong>%s</strong>, <strong>%s</strong> and <strong>%s</strong>."
375
  msgstr ""
376
 
377
- #: wp-useronline.php:731
378
  #, php-format
379
  msgid "There are a total of <strong>%s</strong> online now: <strong>%s</strong>, <strong>%s</strong> and <strong>%s</strong>."
380
  msgstr ""
381
 
382
- #: wp-useronline.php:736
383
- #: wp-useronline.php:756
384
- #: wp-useronline.php:776
385
  msgid "Online Now"
386
  msgstr ""
387
 
388
- #: wp-useronline.php:743
389
- #: wp-useronline.php:763
390
  msgid "referral"
391
  msgstr ""
392
 
393
- #: wp-useronline.php:746
394
- #: wp-useronline.php:748
395
- #: wp-useronline.php:766
396
- #: wp-useronline.php:768
397
- #: wp-useronline.php:781
398
  msgid "on"
399
  msgstr ""
400
 
401
- #: wp-useronline.php:746
402
- #: wp-useronline.php:748
403
- #: wp-useronline.php:766
404
- #: wp-useronline.php:768
405
- #: wp-useronline.php:781
406
  msgid "url"
407
  msgstr ""
408
 
409
- #: wp-useronline.php:788
410
  msgid "No One Is Online Now"
411
  msgstr ""
412
 
413
- #: wp-useronline.php:862
414
- msgid "user(s) online now."
415
- msgstr ""
 
 
 
416
 
417
- #: wp-useronline.php:863
418
- msgid "Most users ever online was"
419
- msgstr ""
 
 
 
420
 
421
- #: wp-useronline.php:864
422
  msgid "On"
423
  msgstr ""
424
 
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: WP-UserOnline 2.40\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2009-01-04 20:34+0800\n"
6
+ "PO-Revision-Date: 2009-01-04 20:35+0800\n"
7
  "Last-Translator: Lester Chan <lesterchan@gmail.com>\n"
8
  "Language-Team: Lester Chan <lesterchan@gmail.com>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
  "X-Poedit-Country: SINGAPORE\n"
13
+ "X-Poedit-KeywordsList: __;_e;_c;__ngettext:1,2;__ngettext_noop:1,2\n"
14
  "X-Poedit-Basepath: .\n"
15
  "X-Poedit-Language: English\n"
16
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
17
  "X-Poedit-SearchPath-0: .\n"
18
 
19
  #: useronline-options.php:63
53
  msgstr ""
54
 
55
  #: useronline-options.php:85
56
+ #: useronline-options.php:380
57
  msgid "UNINSTALL WP-UserOnline"
58
  msgstr ""
59
 
73
  msgstr ""
74
 
75
  #: useronline-options.php:127
76
+ #: useronline-options.php:338
77
  msgid "Uninstall WP-UserOnline"
78
  msgstr ""
79
 
83
  msgstr ""
84
 
85
  #: useronline-options.php:153
86
+ #: wp-useronline.php:914
87
  msgid "Online"
88
  msgstr ""
89
 
90
  #: useronline-options.php:160
91
+ #: wp-useronline.php:913
92
  msgid "1 User"
93
  msgstr ""
94
 
95
  #: useronline-options.php:161
96
+ #: wp-useronline.php:913
97
  msgid "%USERONLINE_COUNT% Users"
98
  msgstr ""
99
 
100
  #: useronline-options.php:162
101
+ #: wp-useronline.php:913
102
  msgid "1 Member"
103
  msgstr ""
104
 
105
  #: useronline-options.php:163
106
+ #: wp-useronline.php:913
107
  msgid "%USERONLINE_COUNT% Members"
108
  msgstr ""
109
 
110
  #: useronline-options.php:164
111
+ #: wp-useronline.php:913
112
  msgid "1 Guest"
113
  msgstr ""
114
 
115
  #: useronline-options.php:165
116
+ #: wp-useronline.php:913
117
  msgid "%USERONLINE_COUNT% Guests"
118
  msgstr ""
119
 
120
  #: useronline-options.php:166
121
+ #: wp-useronline.php:913
122
  msgid "1 Bot"
123
  msgstr ""
124
 
125
  #: useronline-options.php:167
126
+ #: wp-useronline.php:913
127
  msgid "%USERONLINE_COUNT% Bots"
128
  msgstr ""
129
 
130
+ #: useronline-options.php:170
131
+ #: useronline-options.php:171
132
+ #: useronline-options.php:172
133
+ #: useronline-options.php:176
134
+ #: useronline-options.php:177
135
+ #: useronline-options.php:178
136
+ #: wp-useronline.php:915
137
+ #: wp-useronline.php:916
138
+ msgid ","
139
+ msgstr ""
140
+
141
  #: useronline-options.php:173
142
  #: useronline-options.php:179
143
+ #: wp-useronline.php:915
144
+ #: wp-useronline.php:916
145
+ msgid "Users|Template Element"
 
146
  msgstr ""
147
 
148
  #: useronline-options.php:179
149
+ #: wp-useronline.php:916
150
  msgid "Browsing This Page."
151
  msgstr ""
152
 
 
153
  #: useronline-options.php:186
154
+ #: useronline-options.php:187
155
  msgid "Useronline Options"
156
  msgstr ""
157
 
158
+ #: useronline-options.php:190
159
  msgid "Time Out"
160
  msgstr ""
161
 
162
+ #: useronline-options.php:192
163
  msgid "How long till it will remove the user from the database (In seconds)."
164
  msgstr ""
165
 
166
+ #: useronline-options.php:196
167
  msgid "UserOnline URL"
168
  msgstr ""
169
 
170
+ #: useronline-options.php:198
171
  msgid "URL To UserOnline Page (leave blank if you do not want to link it to the UserOnline Page)<br />Example: http://www.yoursite.com/blogs/useronline/<br />Example: http://www.yoursite.com/blogs/?page_id=2"
172
  msgstr ""
173
 
174
+ #: useronline-options.php:202
175
  msgid "Bots Name/User Agent"
176
  msgstr ""
177
 
178
+ #: useronline-options.php:204
179
  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."
180
  msgstr ""
181
 
182
+ #: useronline-options.php:212
183
  msgid "Naming Conventions:"
184
  msgstr ""
185
 
186
+ #: useronline-options.php:213
187
+ #: useronline-options.php:254
188
+ #: useronline-options.php:266
189
+ #: useronline-options.php:298
190
  msgid "Allowed Variables:"
191
  msgstr ""
192
 
193
+ #: useronline-options.php:215
194
+ #: useronline-options.php:259
195
+ #: useronline-options.php:274
196
+ #: useronline-options.php:306
197
  msgid "Restore Default Template"
198
  msgstr ""
199
 
200
+ #: useronline-options.php:221
201
  msgid "Singular Form"
202
  msgstr ""
203
 
204
+ #: useronline-options.php:222
205
  msgid "Plural Form"
206
  msgstr ""
207
 
208
+ #: useronline-options.php:249
209
  msgid "Useronline Templates"
210
  msgstr ""
211
 
212
+ #: useronline-options.php:253
213
  msgid "User(s) Online:"
214
  msgstr ""
215
 
216
+ #: useronline-options.php:265
217
  msgid "User(s) Browsing Site:"
218
  msgstr ""
219
 
 
 
 
 
 
220
  #: useronline-options.php:280
221
  #: useronline-options.php:312
222
+ msgid "Member Names Separator"
223
  msgstr ""
224
 
225
  #: useronline-options.php:281
226
  #: useronline-options.php:313
227
+ msgid "Guests Separator"
228
+ msgstr ""
229
+
230
+ #: useronline-options.php:282
231
+ #: useronline-options.php:314
232
  msgid "Bots Separator"
233
  msgstr ""
234
 
235
+ #: useronline-options.php:297
236
  msgid "User(s) Browsing Page:"
237
  msgstr ""
238
 
239
+ #: useronline-options.php:329
240
  msgid "Save Changes"
241
  msgstr ""
242
 
243
+ #: useronline-options.php:340
244
  msgid "Deactivating WP-UserOnline plugin does not remove any data that may have been created, such as the useronline options. To completely remove this plugin, you can uninstall it here."
245
  msgstr ""
246
 
247
+ #: useronline-options.php:343
248
  msgid "WARNING:"
249
  msgstr ""
250
 
251
+ #: useronline-options.php:344
252
  msgid "Once uninstalled, this cannot be undone. You should use a Database Backup plugin of WordPress to back up all the data first."
253
  msgstr ""
254
 
255
+ #: useronline-options.php:347
256
  msgid "The following WordPress Options/Tables will be DELETED:"
257
  msgstr ""
258
 
259
+ #: useronline-options.php:352
260
  msgid "WordPress Options"
261
  msgstr ""
262
 
263
+ #: useronline-options.php:353
264
  msgid "WordPress Tables"
265
  msgstr ""
266
 
267
+ #: useronline-options.php:379
268
  #: wp-useronline-widget.php:73
269
  msgid "Yes"
270
  msgstr ""
271
 
272
+ #: useronline-options.php:380
273
  msgid ""
274
  "You Are About To Uninstall WP-UserOnline From WordPress.\\n"
275
  "This Action Is Not Reversible.\\n"
293
  msgid "No"
294
  msgstr ""
295
 
296
+ #: wp-useronline.php:58
297
+ #: wp-useronline.php:844
298
+ #: wp-useronline.php:846
299
+ #: wp-useronline.php:856
300
  msgid "WP-UserOnline"
301
  msgstr ""
302
 
303
+ #: wp-useronline.php:61
304
  msgid "Useronline"
305
  msgstr ""
306
 
307
+ #: wp-useronline.php:126
308
  msgid "guest"
309
  msgstr ""
310
 
311
+ #: wp-useronline.php:132
312
+ #: wp-useronline.php:707
313
  msgid "Guest"
314
  msgstr ""
315
 
316
+ #: wp-useronline.php:147
317
  msgid "Blog Archive"
318
  msgstr ""
319
 
320
+ #: wp-useronline.php:228
321
+ #: wp-useronline.php:259
322
+ #: wp-useronline.php:742
323
+ #: wp-useronline.php:744
324
+ #: wp-useronline.php:762
325
+ #: wp-useronline.php:764
326
+ #: wp-useronline.php:777
327
  #, php-format
328
  msgid "%s @ %s"
329
  msgstr ""
330
 
331
+ #: wp-useronline.php:396
332
  msgid "No User Is Browsing This Site"
333
  msgstr ""
334
 
335
+ #: wp-useronline.php:538
336
  msgid "No User Is Browsing This Page"
337
  msgstr ""
338
 
339
+ #: wp-useronline.php:609
340
  msgid "Users Online Now"
341
  msgstr ""
342
 
343
+ #: wp-useronline.php:621
344
  #, php-format
345
  msgid "There is <strong><a href=\"%s\">%s user</a></strong> online now."
346
  msgstr ""
347
 
348
+ #: wp-useronline.php:623
349
  #, php-format
350
  msgid "There are a total of <strong><a href=\"%s\">%s users</a></strong> online now."
351
  msgstr ""
352
 
353
+ #: wp-useronline.php:628
354
+ #: wp-useronline.php:729
355
  #, php-format
356
  msgid "Most users ever online were <strong>%s</strong>, on <strong>%s</strong>"
357
  msgstr ""
358
 
359
+ #: wp-useronline.php:692
360
  msgid "User"
361
  msgstr ""
362
 
363
+ #: wp-useronline.php:694
364
+ msgid "Users"
365
+ msgstr ""
366
+
367
+ #: wp-useronline.php:699
368
  msgid "Member"
369
  msgstr ""
370
 
371
+ #: wp-useronline.php:701
372
  msgid "Members"
373
  msgstr ""
374
 
375
+ #: wp-useronline.php:709
376
  msgid "Guests"
377
  msgstr ""
378
 
379
+ #: wp-useronline.php:714
380
  msgid "Bot"
381
  msgstr ""
382
 
383
+ #: wp-useronline.php:716
384
  msgid "Bots"
385
  msgstr ""
386
 
387
+ #: wp-useronline.php:725
388
  #, php-format
389
  msgid "There is <strong>%s</strong> online now: <strong>%s</strong>, <strong>%s</strong> and <strong>%s</strong>."
390
  msgstr ""
391
 
392
+ #: wp-useronline.php:727
393
  #, php-format
394
  msgid "There are a total of <strong>%s</strong> online now: <strong>%s</strong>, <strong>%s</strong> and <strong>%s</strong>."
395
  msgstr ""
396
 
397
+ #: wp-useronline.php:732
398
+ #: wp-useronline.php:752
399
+ #: wp-useronline.php:772
400
  msgid "Online Now"
401
  msgstr ""
402
 
403
+ #: wp-useronline.php:739
404
+ #: wp-useronline.php:759
405
  msgid "referral"
406
  msgstr ""
407
 
408
+ #: wp-useronline.php:742
409
+ #: wp-useronline.php:744
410
+ #: wp-useronline.php:762
411
+ #: wp-useronline.php:764
412
+ #: wp-useronline.php:777
413
  msgid "on"
414
  msgstr ""
415
 
416
+ #: wp-useronline.php:742
417
+ #: wp-useronline.php:744
418
+ #: wp-useronline.php:762
419
+ #: wp-useronline.php:764
420
+ #: wp-useronline.php:777
421
  msgid "url"
422
  msgstr ""
423
 
424
+ #: wp-useronline.php:784
425
  msgid "No One Is Online Now"
426
  msgstr ""
427
 
428
+ #: wp-useronline.php:858
429
+ #, php-format
430
+ msgid "<strong>%s</strong> user online now."
431
+ msgid_plural "<strong>%s</strong> users online now."
432
+ msgstr[0] ""
433
+ msgstr[1] ""
434
 
435
+ #: wp-useronline.php:859
436
+ #, php-format
437
+ msgid "Most users ever online was <strong>%s</strong>."
438
+ msgid_plural "Most users ever online was <strong>%s</strong>."
439
+ msgstr[0] ""
440
+ msgstr[1] ""
441
 
442
+ #: wp-useronline.php:860
443
  msgid "On"
444
  msgstr ""
445