FU r102105, escaped the quotes.
[toast/cookiecaptcha.git] / ConfirmEdit.php
index d632fb869988234a10ff817c7b74556630e0d245..8a18a844966b185fd705e1954b14742eba5d4b1b 100644 (file)
@@ -1,10 +1,12 @@
 <?php
 
 /**
- * Experimental captcha plugin framework.
- * Not intended as a real production captcha system; derived classes
- * can extend the base to produce their fancy images in place of the
- * text-based test output here.
+ * ConfirmEdit MediaWiki extension.
+ *
+ * This is a framework that holds a variety of CAPTCHA tools. The
+ * default one, 'SimpleCaptcha', is not intended as a production-
+ * level CAPTCHA system, and another one of the options provided
+ * should be used in its place for any real usages.
  *
  * Copyright (C) 2005-2007 Brion Vibber <brion@wikimedia.org>
  * http://www.mediawiki.org/
  *
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
  *
- * @addtogroup Extensions
+ * @file
+ * @ingroup Extensions
  */
 
 if ( !defined( 'MEDIAWIKI' ) ) {
@@ -35,10 +38,11 @@ global $wgExtensionFunctions, $wgGroupPermissions;
 
 $wgExtensionFunctions[] = 'confirmEditSetup';
 $wgExtensionCredits['other'][] = array(
+       'path' => __FILE__,
        'name' => 'ConfirmEdit',
-       'author' => 'Brion Vibber',
+       'author' => array( 'Brion Vibber', '...' ),
        'url' => 'http://www.mediawiki.org/wiki/Extension:ConfirmEdit',
-       'description' => 'Simple captcha implementation',
+       'version' => '1.1',
        'descriptionmsg' => 'captcha-desc',
 );
 
@@ -87,14 +91,15 @@ $wgCaptchaClass = 'SimpleCaptcha';
  */
 $wgCaptchaTriggers = array();
 $wgCaptchaTriggers['edit']          = false; // Would check on every edit
-$wgCaptchaTriggers['create']           = false; // Check on page creation.
+$wgCaptchaTriggers['create']        = false; // Check on page creation.
+$wgCaptchaTriggers['sendemail']     = false; // Special:Emailuser
 $wgCaptchaTriggers['addurl']        = true;  // Check on edits that add URLs
 $wgCaptchaTriggers['createaccount'] = true;  // Special:Userlogin&type=signup
 $wgCaptchaTriggers['badlogin']      = true;  // Special:Userlogin after failure
 
 /**
  * You may wish to apply special rules for captcha triggering on some namespaces.
- * $wgCaptchaTriggersOnNamespace[<namespace id>][<trigger>] forces an always on / 
+ * $wgCaptchaTriggersOnNamespace[<namespace id>][<trigger>] forces an always on /
  * always off configuration with that trigger for the given namespace.
  * Leave unset to use the global options ($wgCaptchaTriggers).
  *
@@ -102,9 +107,9 @@ $wgCaptchaTriggers['badlogin']      = true;  // Special:Userlogin after failure
  */
 $wgCaptchaTriggersOnNamespace = array();
 
-#Example:
-#$wgCaptchaTriggersOnNamespace[NS_TALK]['create'] = false; //Allow creation of talk pages without captchas.
-#$wgCaptchaTriggersOnNamespace[NS_PROJECT]['edit'] = true; //Show captcha whenever editing Project pages.
+# Example:
+# $wgCaptchaTriggersOnNamespace[NS_TALK]['create'] = false; //Allow creation of talk pages without captchas.
+# $wgCaptchaTriggersOnNamespace[NS_PROJECT]['edit'] = true; //Show captcha whenever editing Project pages.
 
 /**
  * Indicate how to store per-session data required to match up the
@@ -147,6 +152,13 @@ $wgCaptchaBadLoginExpiration = 5 * 60;
 global $ceAllowConfirmedEmail;
 $ceAllowConfirmedEmail = false;
 
+/**
+ * Number of bad login attempts before triggering the captcha.  0 means the
+ * captcha is presented on the first login.
+ */
+global $wgCaptchaBadLoginAttempts;
+$wgCaptchaBadLoginAttempts = 3;
+
 /**
  * Regex to whitelist URLs to known-good sites...
  * For instance:
@@ -167,10 +179,11 @@ $wgCaptchaWhitelist = false;
 $wgCaptchaRegexes = array();
 
 /** Register special page */
-$wgSpecialPages['Captcha'] = array( /*class*/'CaptchaSpecialPage', /*name*/'Captcha' );
+$wgSpecialPages['Captcha'] = 'CaptchaSpecialPage';
 
 $wgConfirmEditIP = dirname( __FILE__ );
 $wgExtensionMessagesFiles['ConfirmEdit'] = "$wgConfirmEditIP/ConfirmEdit.i18n.php";
+$wgExtensionAliasesFiles['ConfirmEdit'] = "$wgConfirmEditIP/ConfirmEdit.alias.php";
 
 if ( defined( 'MW_SUPPORTS_EDITFILTERMERGED' ) ) {
        $wgHooks['EditFilterMerged'][] = 'ConfirmEditHooks::confirmEditMerged';
@@ -182,31 +195,33 @@ $wgHooks['AbortNewAccount'][] = 'ConfirmEditHooks::confirmUserCreate';
 $wgHooks['LoginAuthenticateAudit'][] = 'ConfirmEditHooks::triggerUserLogin';
 $wgHooks['UserLoginForm'][] = 'ConfirmEditHooks::injectUserLogin';
 $wgHooks['AbortLogin'][] = 'ConfirmEditHooks::confirmUserLogin';
+$wgHooks['EmailUserForm'][] = 'ConfirmEditHooks::injectEmailUser';
+$wgHooks['EmailUser'][] = 'ConfirmEditHooks::confirmEmailUser';
 # Register API hook
 $wgHooks['APIEditBeforeSave'][] = 'ConfirmEditHooks::confirmEditAPI';
 
-$wgAutoloadClasses['ConfirmEditHooks'] 
-       = $wgAutoloadClasses['SimpleCaptcha'] 
-       = $wgAutoloadClasses['CaptchaSessionStore']
-       = $wgAutoloadClasses['CaptchaCacheStore']
-       = $wgAutoloadClasses['CaptchaSpecialPage']
-       = "$wgConfirmEditIP/ConfirmEdit_body.php";
+$wgAutoloadClasses['ConfirmEditHooks'] = "$wgConfirmEditIP/ConfirmEditHooks.php";
+$wgAutoloadClasses['Captcha']= "$wgConfirmEditIP/Captcha.php";
+$wgAutoloadClasses['SimpleCaptcha']= "$wgConfirmEditIP/Captcha.php";
+$wgAutoloadClasses['CaptchaStore']= "$wgConfirmEditIP/CaptchaStore.php";
+$wgAutoloadClasses['CaptchaSessionStore']= "$wgConfirmEditIP/CaptchaStore.php";
+$wgAutoloadClasses['CaptchaCacheStore']= "$wgConfirmEditIP/CaptchaStore.php";
+$wgAutoloadClasses['CaptchaSpecialPage'] = "$wgConfirmEditIP/ConfirmEditHooks.php";
+$wgAutoloadClasses['HTMLCaptchaField']= "$wgConfirmEditIP/HTMLCaptchaField.php";
 
 /**
  * Set up $wgWhitelistRead
  */
 function confirmEditSetup() {
        global $wgGroupPermissions, $wgCaptchaTriggers;
-       if( !$wgGroupPermissions['*']['read'] && $wgCaptchaTriggers['badlogin'] ) {
+       if ( !$wgGroupPermissions['*']['read'] && $wgCaptchaTriggers['badlogin'] ) {
                // We need to ensure that the captcha interface is accessible
                // so that unauthenticated users can actually get in after a
                // mistaken password typing.
                global $wgWhitelistRead;
-               $image = Title::makeTitle( NS_SPECIAL, 'Captcha/image' );
-               $help = Title::makeTitle( NS_SPECIAL, 'Captcha/help' );
+               $image = SpecialPage::getTitleFor( 'Captcha', 'image' );
+               $help = SpecialPage::getTitleFor( 'Captcha', 'help' );
                $wgWhitelistRead[] = $image->getPrefixedText();
                $wgWhitelistRead[] = $help->getPrefixedText();
        }
 }
-
-