Extension talk:WhosOnline/Archive 1
Add topicAdminSettings.sample
[edit]You are talking about a file AdminSettings.sample. Where is it? --ThorstenStaerk 10:49, 4 January 2012 (UTC)
Swap installation step 2 and 3
[edit]Running update.php to create db-tables only makes sense if WhosOnline already IS included in LocalSettings.php. Step 2 and step 3 could be swapped in the article to achieve this.
Users/Installers: Don't forget the prefix
[edit]In case your wiki uses a prefix (e.g. "mw") for the database tables, change the first line of the SQL instruction into something like:
CREATE TABLE `mw_online` ( .....
Other than that:
- This extension works fine with Mediwiki version 1.12.0
- If you want to make a quicklink from the sidebar, edit MediaWiki:Sidebar and add something like:
** Special:WhosOnline|Who is online
- Daniel / edutechwiki.unige.ch
List visitors?
[edit]I would use this extensions since it's stable and hasn't got the UNIQ problem but as a special page it's not very useful. I think most users want to integrate the stats on Main Page or another exisiting page. E.g. Guests: 75, Users (2): Bob, Paul. WHat brings me to the next point. Ignoring the anonymous visitors is what makes me ignore this extension ;)
- Btw: Works fine in 1.12 for me as well --Subfader 13:12, 12 May 2008 (UTC)
- Thanks for this nice extension!
Works also fine in my 1.12 without any fiddling, but Subfader is right: connectable to a "$footerlinks" in "MyModifiedSkin.php" it would be even better. Difficult to implement? --michael 10:00, 16 May 2008 (UTC)
- I also agree with Subfader. My wish list is integrable throughout the wiki and accounting for guests.
- +1 for this. Best, MarkDilley
Having problem with sql table
[edit]I can't seem to add the sql table.
After entering this: CREATE TABLE mw_online (`userid` int(5) NOT NULL default '0',`username` varchar(255) NOT NULL default ,`timestamp` char(14) NOT NULL default , PRIMARY KEY USING HASH (`userid`, `username`),INDEX USING BTREE (`timestamp`)) TYPE=MEMORY;
I get this response -bash: syntax error near unexpected token `('
I think it's to do with the INDEX USING BTREE (`timestamp`) section.
Any ideas how to fix this?
Thanks
--LizK 09:23, 20 August 2008 (UTC)
- No idea, sorry.
- Assuming you have the extension files in
$IP/extensions/WhosOnline
, why don't youcd extensions/WhosOnline
, editwhosonline.sql
with your favorite text editor (nano, vim etc.), replace$wgDBprefix
with mw_ and then runmysql -u [your mysql username here] -p [database name here] < whosonline.sql
? That's a lot easier (for me, anyway) than copying and pasting stuff. :) --Sayuri 13:54, 20 August 2008 (UTC)
For $wgDBprefix, do I remove the /* */ that surrounds them too? Thanks. Fader 23:51, 26 March 2009 (UTC)
- Ok, so this is a really old thread, but I wanted to comment that I got the .sql file to load by changing
TYPE=MEMORY
toENGINE=MEMORY
.
Allow inclusion of the page
[edit]This patch allows inclusion of the Special page, in a similar way to Special:Newpages (eg. {{:Special:WhosOnline}}
). If you use {{:Special:WhosOnline/10/shownav}}
it will only show 10 users and will have the navigation controls.
Edit WhosOnlineSpecialPage.php and change line 79:
class SpecialWhosOnline extends SpecialPage {
to
class SpecialWhosOnline extends IncludableSpecialPage {
Then go to line 111 and change the rest of the execute() function from
$pager = new PagerWhosOnline();
$body = $pager->getBody();
$wgOut->addHTML($pager->getNavigationBar());
$wgOut->addHTML('<ul>'.$body.'</ul>');
to
$pager = new PagerWhosOnline();
$shownavigation = ! $this->including();
if ( $para ) {
$bits = preg_split( '/\s*,\s*/', trim( $para ) );
foreach ( $bits as $bit ) {
if ( 'shownav' == $bit )
$shownavigation = true;
if ( is_numeric( $bit ) )
$pager->mLimit = $bit;
$m = array();
if ( preg_match( '/^limit=(\d+)$/', $bit, $m ) )
$pager->mLimit = intval($m[1]);
}
}
$body = $pager->getBody();
if ($shownavigation)
$wgOut->addHTML($pager->getNavigationBar());
$wgOut->addHTML('<ul>'.$body.'</ul>');
- Wow, that works fine, Dude! Thanks a lot :-) -- Tommy us Kölle 13:59, 11 December 2009 (UTC)
- I've applied this patch in r88591. --Jack Phoenix (Contact) 18:10, 22 May 2011 (UTC)
I liked this one
[edit]I liked the idea behind this extension, so I modified it a little to do more of what I wanted:
Can show partial IP addresses or 'Guest', page last viewed, and keeps active users at the top of the list, with updated page info.
WhosOnline list becomes more like this:
- Ace - Special:WhosOnline
- Guest - Wiki_Top_Ten
Example of 'Guest' view mode: http://www.gshi.org/wiki/Special:WhosOnline
See WhosOnline files for info and all-done file setup with version-agreeing files: http://www.gshi.org/ugetab/Wiki/
Hack to make it work with postgres
[edit]I had to change the create table script so that the php code would work with a postgres database:
CREATE TABLE online
(
userid bigint NOT NULL DEFAULT 0,
username character varying(255) NOT NULL DEFAULT ''::character varying,
"timestamp" bigint NOT NULL,
CONSTRAINT online_pk PRIMARY KEY (userid, username)
)
WITH (OIDS=FALSE);
ALTER TABLE online OWNER TO mediawiki;
-- Index: timestamp_idx
-- DROP INDEX timestamp_idx;
CREATE INDEX timestamp_idx
ON online
USING btree
("timestamp");
The biggest change was the type of timestamp from character to bigint.
I also had to change the php file WhosOnlineSpecialPage.php
on line 107 so that it would look like this:
$db->delete('online', array('timestamp < '.$old.''), __METHOD__);
Notice all I did was remove the double-quotes. Postgres thought it should be looking for a table.
Strange Issue
[edit]I have just upgraded my mediawiki from 1.9.2 to latest 1.15.1, and also installed the whosonline page, I get a strange error that each time I view the page, it is adding my user ? i.e. I have mulitple listings of my user in the page, how can I stop these duplicates ?
Many thanks
Mark
--Mark 09:20, 20 January 2010 (UTC)This is still happening, does anyone know how I can stop duplicates appearing ? Many thanks
Redlinks for users
[edit]Could you implement a feature which would display the links to the userpages as redlinks if they don't exist, like everywhere else in the wiki?--188.100.208.194 19:03, 21 June 2010 (UTC)
Special:WhosOnline
shows no items
[edit]The Special:WhosOnline
page shows no items when I visit it. I've to refresh it to show even myself. This is with v1.15.3 of mw and v1.15.x of the extension. --164.54.212.14 17:05, 28 June 2010 (UTC)
Special:WhosOnline shows only max. 50 users
[edit]The Special:WhosOnline page shows only max. 50 users. The Navigation (next 50|previous 50) doesn't work. Choose limit of 100 doesnt work, too. It stays at 50. My MediaWiki: 1.16.1. 77.1.95.212 18:14, 4 September 2011 (UTC)
- A couple of issues are causing this. The below code snippets are from WhosOnlineSpecialPage.php.
- First, in the function __construct, the limit is always being set to default, if even if you select something else. To fix, change this:
function __construct() {
parent::__construct();
$this->mLimit = $this->mDefaultLimit;
}
- To this:
function __construct() {
parent::__construct();
if (!isset($this->mLimit)) {
$this->mLimit = $this->mDefaultLimit;
}
}
- Next, find the function countUsersOnline(). Change this:
wfProfileIn(__METHOD__);
$row = $this->mDb->selectRow('online', 'count(*) as cnt', 'userid != 0', __METHOD__);
$users = (int) $row->cnt;
wfProfileOut(__METHOD__);
- To this:
global $wgWhosOnlineShowAnons;
wfProfileIn(__METHOD__);
$row = $this->mDb->selectRow('online', 'count(*) as cnt',
$wgWhosOnlineShowAnons ? array() : array('userid != 0'), __METHOD__);
$users = (int) $row->cnt;
wfProfileOut(__METHOD__);
- I hope this works for you!
Exclude bots/spiders ???
[edit]Is there anyway to exclude bots/spiders form visitors list? (I have enabled $wgWhosOnlineShowAnons to show anonymous users) -- Thucproa1 (talk) 12:17, 16 February 2012 (UTC)
Modify
[edit]{{:Special:WhosOnline}}
,{{:Special:WhosOnline/10/shownav}}
.- 대문 페이지에 에디트하면, 아이피 목록이 나타나므로, '현재접속자:' . $total_guests . '명'으로 표시, 링크를 통해서 목록을 보여주게 수정.
class SpecialWhosOnline extends IncludableSpecialPage {
public function __construct() {
parent::__construct( 'WhosOnline' );
}
// get list of logged-in users being online
protected function getAnonsOnline() {
wfProfileIn( __METHOD__ );
$dbr = wfGetDB( DB_SLAVE );
$row = $dbr->selectRow(
'online',
'COUNT(*) AS cnt',
'userid = 0',
__METHOD__
);
$guests = (int) $row->cnt;
wfProfileOut( __METHOD__ );
return $guests;
}
public function execute( $para ) {
global $wgOut, $wgDBname, $wgRequest, $wgTitle;
$db = wfGetDB( DB_MASTER );
$db->selectDB( $wgDBname );
$old = gmdate( 'YmdHis', time() - 3600 );
$db->delete( 'online', array( 'timestamp < "' . $old . '"' ), __METHOD__ );
$this->setHeaders();
##### some guests ###########################
if ($wgRequest->getText( 'guests' ) == 'veiw' ) {
return $this->GuestsVeiw();
}
$LocalPageUrl = '';
$LocalPageUrl = $wgTitle->getFullURL();
$total_guests = $this->getAnonsOnline();
$wgOut->addHTML( '* <a href="'.$LocalPageUrl.'?guests=veiw' . '">' . '현재접속자:' . $total_guests . '명' . '</a>' );
}
###### GuestsVeiw function ###############################
function GuestsVeiw() {
global $wgOut;
$pager = new PagerWhosOnline();
$showNavigation = !$this->including();
if ( $para ) {
$bits = preg_split( '/\s*,\s*/', trim( $para ) );
foreach ( $bits as $bit ) {
if ( $bit == 'shownav' ) {
$showNavigation = true;
}
if ( is_numeric( $bit ) ) {
$pager->mLimit = $bit;
}
$m = array();
if ( preg_match( '/^limit=(\d+)$/', $bit, $m ) ) {
$pager->mLimit = intval( $m[1] );
}
}
}
if ( $showNavigation ) {
$wgOut->addHTML( $pager->getNavigationBar() );
}
$body = $pager->getBody();
$wgOut->addHTML('<ol style="list-style-type:decimal;color:#555">' . $body . '</ol>');
return;
}
}
- $para variable is what?
$wgOut->addHTML( $para );
- Values are not displayed.