[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 3 class MathCaptcha extends SimpleCaptcha { 4 5 /** Validate a captcha response */ 6 function keyMatch( $answer, $info ) { 7 return (int)$answer == (int)$info['answer']; 8 } 9 10 function addCaptchaAPI( &$resultArr ) { 11 list( $sum, $answer ) = $this->pickSum(); 12 $index = $this->storeCaptcha( array( 'answer' => $answer ) ); 13 $resultArr['captcha']['type'] = 'math'; 14 $resultArr['captcha']['mime'] = 'text/tex'; 15 $resultArr['captcha']['id'] = $index; 16 $resultArr['captcha']['question'] = $sum; 17 } 18 19 /** Produce a nice little form */ 20 function getForm() { 21 list( $sum, $answer ) = $this->pickSum(); 22 $index = $this->storeCaptcha( array( 'answer' => $answer ) ); 23 24 $form = '<table><tr><td>' . $this->fetchMath( $sum ) . '</td>'; 25 $form .= '<td>' . Html::input( 'wpCaptchaWord', false, false, array( 'tabindex' => '1', 'autocomplete' => 'off', 'required' ) ) . '</td></tr></table>'; 26 $form .= Html::hidden( 'wpCaptchaId', $index ); 27 return $form; 28 } 29 30 /** Pick a random sum */ 31 function pickSum() { 32 $a = mt_rand( 0, 100 ); 33 $b = mt_rand( 0, 10 ); 34 $op = mt_rand( 0, 1 ) ? '+' : '-'; 35 $sum = "{$a} {$op} {$b} = "; 36 $ans = $op == '+' ? ( $a + $b ) : ( $a - $b ); 37 return array( $sum, $ans ); 38 } 39 40 /** Fetch the math */ 41 function fetchMath( $sum ) { 42 if ( class_exists( 'MathRenderer' ) ) { 43 $math = MathRenderer::getRenderer( $sum, array(), MW_MATH_PNG ); 44 } else { 45 throw new MWException( 'MathCaptcha requires the Math extension for MediaWiki versions 1.18 and above.' ); 46 } 47 $html = $math->render(); 48 return preg_replace( '/alt=".*?"/', '', $html ); 49 } 50 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |