r112027 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r112026‎ | r112027 | r112028 >
Date:17:29, 21 February 2012
Author:reedy
Status:ok
Tags:
Comment:
Modified paths:
  • /branches/REL1_19/phase3 (modified) (history)
  • /branches/REL1_19/phase3/includes (modified) (history)
  • /branches/REL1_19/phase3/includes/Setup.php (modified) (history)
  • /branches/REL1_19/phase3/includes/UserMailer.php (modified) (history)
  • /branches/REL1_19/phase3/includes/resourceloader/ResourceLoaderUserOptionsModule.php (modified) (history)
  • /branches/REL1_19/phase3/includes/resourceloader/ResourceLoaderUserTokensModule.php (modified) (history)
  • /branches/REL1_19/phase3/resources/mediawiki/mediawiki.js (modified) (history)
  • /branches/REL1_19/phase3/resources/mediawiki/mediawiki.user.js (modified) (history)
  • /branches/REL1_19/phase3/skins/simple/main.css (modified) (history)

Diff [purge]

Index: branches/REL1_19/phase3/skins/simple/main.css
@@ -375,6 +375,10 @@
376376 display: none;
377377 }
378378
 379+#footer {
 380+ padding-left: 11.8em;
 381+}
 382+
379383 #n-portal,
380384 #n-currentevents,
381385 #n-help,
Index: branches/REL1_19/phase3/includes/resourceloader/ResourceLoaderUserTokensModule.php
@@ -60,11 +60,4 @@
6161 public function getGroup() {
6262 return 'private';
6363 }
64 -
65 - /**
66 - * @return array
67 - */
68 - public function getDependencies() {
69 - return array( 'mediawiki.user' );
70 - }
7164 }
Index: branches/REL1_19/phase3/includes/resourceloader/ResourceLoaderUserOptionsModule.php
@@ -85,11 +85,4 @@
8686 public function getGroup() {
8787 return 'private';
8888 }
89 -
90 - /**
91 - * @return array
92 - */
93 - public function getDependencies() {
94 - return array( 'mediawiki.user' );
95 - }
9689 }
Index: branches/REL1_19/phase3/includes/Setup.php
@@ -361,7 +361,10 @@
362362 $wgCookieSecure = ( substr( $wgServer, 0, 6 ) === 'https:' );
363363 }
364364
365 -if ( $wgDebugToolbar ) {
 365+// Disable MWDebug for command line mode, this prevents MWDebug from eating up
 366+// all the memory from logging SQL queries on maintenance scripts
 367+global $wgCommandLineMode;
 368+if ( $wgDebugToolbar && !$wgCommandLineMode ) {
366369 MWDebug::init();
367370 }
368371
@@ -410,7 +413,6 @@
411414 }
412415
413416 # Useful debug output
414 -global $wgCommandLineMode;
415417 if ( $wgCommandLineMode ) {
416418 $wgRequest = new FauxRequest( array() );
417419
Index: branches/REL1_19/phase3/includes/UserMailer.php
@@ -162,29 +162,52 @@
163163
164164 wfDebug( __METHOD__ . ': sending mail to ' . implode( ', ', $to ) . "\n" );
165165
166 - $dest = array();
 166+ # Make sure we have at least one address
 167+ $has_address = false;
167168 foreach ( $to as $u ) {
168169 if ( $u->address ) {
169 - $dest[] = $u->address;
 170+ $has_address = true;
 171+ break;
170172 }
171173 }
172 - if ( count( $dest ) == 0 ) {
 174+ if ( !$has_address ) {
173175 return Status::newFatal( 'user-mail-no-addy' );
174176 }
175177
 178+ # Forge email headers
 179+ # -------------------
 180+ #
 181+ # WARNING
 182+ #
 183+ # DO NOT add To: or Subject: headers at this step. They need to be
 184+ # handled differently depending upon the mailer we are going to use.
 185+ #
 186+ # To:
 187+ # PHP mail() first argument is the mail receiver. The argument is
 188+ # used as a recipient destination and as a To header.
 189+ #
 190+ # PEAR mailer has a recipient argument which is only used to
 191+ # send the mail. If no To header is given, PEAR will set it to
 192+ # to 'undisclosed-recipients:'.
 193+ #
 194+ # NOTE: To: is for presentation, the actual recipient is specified
 195+ # by the mailer using the Rcpt-To: header.
 196+ #
 197+ # Subject:
 198+ # PHP mail() second argument to pass the subject, passing a Subject
 199+ # as an additional header will result in a duplicate header.
 200+ #
 201+ # PEAR mailer should be passed a Subject header.
 202+ #
 203+ # -- hashar 20120218
 204+
176205 $headers['From'] = $from->toString();
177206 $headers['Return-Path'] = $from->address;
178 - if ( count( $to ) == 1 ) {
179 - $headers['To'] = $to[0]->toString();
180 - } else {
181 - $headers['To'] = 'undisclosed-recipients:;';
182 - }
183207
184208 if ( $replyto ) {
185209 $headers['Reply-To'] = $replyto->toString();
186210 }
187211
188 - $headers['Subject'] = self::quotedPrintable( $subject );
189212 $headers['Date'] = date( 'r' );
190213 $headers['MIME-Version'] = '1.0';
191214 $headers['Content-type'] = ( is_null( $contentType ) ?
@@ -202,6 +225,10 @@
203226 }
204227
205228 if ( is_array( $wgSMTP ) ) {
 229+ #
 230+ # PEAR MAILER
 231+ #
 232+
206233 if ( function_exists( 'stream_resolve_include_path' ) ) {
207234 $found = stream_resolve_include_path( 'Mail.php' );
208235 } else {
@@ -223,9 +250,20 @@
224251 }
225252
226253 wfDebug( "Sending mail via PEAR::Mail\n" );
227 - $chunks = array_chunk( $dest, $wgEnotifMaxRecips );
 254+
 255+ $headers['Subject'] = self::quotedPrintable( $subject );
 256+
 257+ # When sending only to one recipient, shows it its email using To:
 258+ if ( count( $to ) == 1 ) {
 259+ $headers['To'] = $to[0]->toString();
 260+ }
 261+
 262+ # Split jobs since SMTP servers tends to limit the maximum
 263+ # number of possible recipients.
 264+ $chunks = array_chunk( $to, $wgEnotifMaxRecips );
228265 foreach ( $chunks as $chunk ) {
229266 $status = self::sendWithPear( $mail_object, $chunk, $headers, $body );
 267+ # FIXME : some chunks might be sent while others are not!
230268 if ( !$status->isOK() ) {
231269 wfRestoreWarnings();
232270 return $status;
@@ -234,6 +272,10 @@
235273 wfRestoreWarnings();
236274 return Status::newGood();
237275 } else {
 276+ #
 277+ # PHP mail()
 278+ #
 279+
238280 # Line endings need to be different on Unix and Windows due to
239281 # the bug described at http://trac.wordpress.org/ticket/2603
240282 if ( wfIsWindows() ) {
@@ -243,6 +285,9 @@
244286 $endl = "\n";
245287 }
246288
 289+ if( count($to) > 1 ) {
 290+ $headers['To'] = 'undisclosed-recipients:;';
 291+ }
247292 $headers = self::arrayToHeaderString( $headers, $endl );
248293
249294 wfDebug( "Sending mail via internal mail() function\n" );
@@ -253,7 +298,7 @@
254299 set_error_handler( 'UserMailer::errorHandler' );
255300
256301 $safeMode = wfIniGetBool( 'safe_mode' );
257 - foreach ( $dest as $recip ) {
 302+ foreach ( $to as $recip ) {
258303 if ( $safeMode ) {
259304 $sent = mail( $recip, self::quotedPrintable( $subject ), $body, $headers );
260305 } else {
Property changes on: branches/REL1_19/phase3/includes
___________________________________________________________________
Modified: svn:mergeinfo
261306 Merged /trunk/phase3/includes:r111695,111697,111832,112021
Index: branches/REL1_19/phase3/resources/mediawiki/mediawiki.user.js
@@ -7,7 +7,7 @@
88 /**
99 * User object
1010 */
11 - function User() {
 11+ function User( options, tokens ) {
1212
1313 /* Private Members */
1414
@@ -15,9 +15,9 @@
1616
1717 /* Public Members */
1818
19 - this.options = new mw.Map();
 19+ this.options = options || new mw.Map();
2020
21 - this.tokens = new mw.Map();
 21+ this.tokens = tokens || new mw.Map();
2222
2323 /* Public Methods */
2424
@@ -176,6 +176,8 @@
177177 };
178178 }
179179
180 - mw.user = new User();
 180+ // Extend the skeleton mw.user from mediawiki.js
 181+ // This is kind of ugly but we're stuck with this for b/c reasons
 182+ mw.user = new User( mw.user.options, mw.user.tokens );
181183
182184 })(jQuery);
\ No newline at end of file
Index: branches/REL1_19/phase3/resources/mediawiki/mediawiki.js
@@ -648,17 +648,21 @@
649649
650650 done = true;
651651
652 - // Handle memory leak in IE
653 - script.onload = script.onreadystatechange = null;
654 -
655652 callback();
656653
657 - if ( script.parentNode ) {
658 - script.parentNode.removeChild( script );
659 - }
660 -
661 - // Dereference the script
662 - script = undefined;
 654+ // Handle memory leak in IE. This seems to fail in
 655+ // IE7 sometimes (Permission Denied error when
 656+ // accessing script.parentNode) so wrap it in
 657+ // a try catch.
 658+ try {
 659+ script.onload = script.onreadystatechange = null;
 660+ if ( script.parentNode ) {
 661+ script.parentNode.removeChild( script );
 662+ }
 663+
 664+ // Dereference the script
 665+ script = undefined;
 666+ } catch ( e ) { }
663667 }
664668 };
665669 }
@@ -1419,7 +1423,13 @@
14201424 return s;
14211425 }
14221426 };
1423 - })()
 1427+ })(),
 1428+
 1429+ // Skeleton user object. mediawiki.user.js extends this
 1430+ user: {
 1431+ options: new Map(),
 1432+ tokens: new Map()
 1433+ }
14241434 };
14251435
14261436 })( jQuery );
Property changes on: branches/REL1_19/phase3
___________________________________________________________________
Modified: svn:mergeinfo
14271437 Merged /trunk/phase3:r111580,111695,111697,111832,112021

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r111580Bug 34397: align footer so that it doesn't overlap with sidebar in Simple skinrobla20:44, 15 February 2012
r111695Since I'm sick of all the mw.user-induced problems, break the dependency betw...catrope22:51, 16 February 2012
r111697Move the IE memory leak prevention voodoo together to after the callback, and...catrope22:56, 16 February 2012
r111832(bug 34421) duplicate Subject / wrong To: headers in mail...hashar15:34, 18 February 2012
r112021Followup r105123, fix for MWDebug logging SQL queries on command line modejohnduhart16:48, 21 February 2012

Status & tagging log