From: Chad Horohoe Date: Wed, 4 Jun 2008 13:15:02 +0000 (+0000) Subject: Implement User::isUserActive(). Potentially very useful for bugs 13225 and 13585... X-Git-Tag: 1.31.0-rc.0~47175 X-Git-Url: http://git.cyclocoop.org/%24action?a=commitdiff_plain;h=bfbf6d8a354a861c34b42d2d864b9f026d333705;p=lhc%2Fweb%2Fwiklou.git Implement User::isUserActive(). Potentially very useful for bugs 13225 and 13585. Thanks to Aaron for his help on getting this right. --- diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 5ba98eb3ee..39edd0962f 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -49,6 +49,9 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN (default 100) with the new subpage-move functionality of Special:Movepage * Hooks display in Special:Version is now disabled by default, use $wgSpecialVersionShowHooks = true; to enable it. +* $wgActiveUserEditcount sets the number of edits that must be performed over + a certain number of days to be considered active +* $wgActiveUserDays is that number of days === New features in 1.13 === @@ -135,6 +138,9 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN * (bug 14263) Show a diff of the revert on rollback notification page. * (bug 13434) Show a warning when hash identical files exist * Sidebar is now cached for all languages +* The User class now contains a public function called isActiveUser. Figures + out if a user is active based on at least $wgActiveUserEditcount number of + edits in the last $wgActiveUserDays days. === Bug fixes in 1.13 === diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 26ec50ba9a..bb4b5a576c 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -1280,6 +1280,14 @@ $wgAvailableRights = array(); */ $wgDeleteRevisionsLimit = 0; +/** + * Used to figure out if a user is "active" or not. User::isActiveUser() + * sees if a user has made at least $wgActiveUserEditcount number of edits + * within the last $wgActiveUserDays days. + */ +$wgActiveUserEditcount = 30; +$wgActiveUserDays = 30; + # Proxy scanner settings # diff --git a/includes/User.php b/includes/User.php index 5a36eea029..c5cc282979 100644 --- a/includes/User.php +++ b/includes/User.php @@ -2445,6 +2445,29 @@ class User { function isNewbie() { return !$this->isAllowed( 'autoconfirmed' ); } + + /** + * Is the user active? We check to see if they've made at least + * X number of edits in the last Y days. + * + * @return bool true if the user is active, false if not + */ + public function isActiveUser() { + global $wgActiveUserEditcount, $wgActiveUserDays; + $dbr = wfGetDB( DB_SLAVE ); + + // Stolen without shame from RC + $cutoff_unixtime = time() - ( $wgActiveUserDays * 86400 ); + $cutoff_unixtime = $cutoff_unixtime - ( $cutoff_unixtime % 86400 ); + $oldTime = $dbr->timestamp ( $cutoff_unixtime ); + + $res = $dbr->select( 'revision', '1', + array( 'rev_user_text' => $this->getName(), "rev_timestamp $oldTime "), + __METHOD__, + array('LIMIT' => $wgActiveUserEditcount ) ); + + return $dbr->rumRows($res) == $wgActiveUserEditcount ? true : false; + } /** * Check to see if the given clear-text password is one of the accepted passwords