|
|
(18 intermediate revisions by 4 users not shown) |
Line 1: |
Line 1: |
− | <?php
| + | {{svn|extensions|MediaWiki/CurrentUsers/CurrentUsers.php}} |
− | # Extension:CurrentUsers{{Category:Extensions|CurrentUsers}}{{php}}
| + | [[Category:Extensions|CurrentUsers]] |
− | # - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
| |
− | # - Author: [http://www.organicdesign.co.nz/nad User:Nad]{{Category:Extensions created with Template:Extension}}
| |
− | # - Started: 2007-07-25
| |
− | | |
− | if (!defined('MEDIAWIKI')) die('Not an entry point.');
| |
− | | |
− | define('CURRENTUSERS_VERSION','1.0.1, 2007-07-26');
| |
− | | |
− | $wgCurrentUsersMagic = 'currentusers';
| |
− | $wgCurrentUsersTemplate = 'CurrentUsers';
| |
− | $wgCurrentUsersTimeout = 60;
| |
− | | |
− | $wgExtensionFunctions[] = 'wfSetupCurrentUsers';
| |
− | $wgHooks['LanguageGetMagic'][] = 'wfCurrentUsersLanguageGetMagic';
| |
− | | |
− | $wgExtensionCredits['parserhook'][] = array(
| |
− | 'name' => 'CurrentUsers',
| |
− | 'author' => '[http://www.organicdesign.co.nz/nad User:Nad]',
| |
− | 'description' => 'Allows a list of currently active users to be embedded into a page using a template',
| |
− | 'url' => 'http://www.mediawiki.org/wiki/Extension:CurrentUsers',
| |
− | 'version' => CURRENTUSERS_VERSION
| |
− | );
| |
− | | |
− | # Called from $wgExtensionFunctions array when initialising extensions
| |
− | function wfSetupCurrentUsers() {
| |
− | global $wgUser,$wgParser,$wgCurrentUsers,$wgCurrentUsersTimeout,$wgCurrentUsersMagic;
| |
− | $wgParser->setFunctionHook($wgCurrentUsersMagic,'wfCurrentUsersMagic');
| |
− | $file = dirname(__FILE__).'/CurrentUsers.txt';
| |
− | $data = file($file);
| |
− | $h = strftime('%H');
| |
− | $m = strftime('%M');
| |
− | $user = $wgUser->getUserPage()->getText();
| |
− | $wgCurrentUsers = array("$h:$m:$user");
| |
− | $now = ($h==0?24:$h)*60+$m;
| |
− | foreach ($data as $item) {
| |
− | list($h,$m,$u) = split(':',trim($item));
| |
− | if ($u != '' && $u != $user && $now-$h*60-$m < $wgCurrentUsersTimeout) $wgCurrentUsers[] = "$h:$m:$u";
| |
− | }
| |
− | file_put_contents($file,join("\n",$wgCurrentUsers));
| |
− | }
| |
− | | |
− | # Needed in MediaWiki >1.8.0 for magic word hooks to work properly
| |
− | function wfCurrentUsersLanguageGetMagic(&$magicWords,$langCode = 0) {
| |
− | global $wgCurrentUsersMagic;
| |
− | $magicWords[$wgCurrentUsersMagic] = array(0,$wgCurrentUsersMagic);
| |
− | return true;
| |
− | }
| |
− | | |
− | function wfCurrentUsersMagic(&$parser) {
| |
− | global $wgCurrentUsers,$wgCurrentUsersTemplate;
| |
− | $parser->disableCache();
| |
− | $users = '';
| |
− | $guests = 0;
| |
− | foreach ($wgCurrentUsers as $item) {
| |
− | list($h,$m,$u) = split(':',$item);
| |
− | if (ereg("^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+$",$u)) $guests++;
| |
− | else $users .= "{"."{"."$wgCurrentUsersTemplate|$h:$m|$u|}"."}\n";
| |
− | }
| |
− | if ($guests) $users .= "{"."{"."$wgCurrentUsersTemplate|Guests||$guests}"."}\n";
| |
− | return $users;
| |
− | }
| |
− | ?>
| |