Index: branches/REL1_17/extensions/LiquidThreads/classes/Thread.php |
— | — | @@ -1543,14 +1543,7 @@ |
1544 | 1544 | } |
1545 | 1545 | } |
1546 | 1546 | |
1547 | | - $testTitle = Title::makeTitleSafe( NS_LQT_THREAD, 'test' ); |
1548 | | - if ( ! $testTitle->userCan( 'create' ) || |
1549 | | - ! $testTitle->userCan( 'edit' ) ) |
1550 | | - { |
1551 | | - return false; |
1552 | | - } |
1553 | | - |
1554 | | - return true; |
| 1547 | + return self::canUserCreateThreads( $user ); |
1555 | 1548 | } |
1556 | 1549 | |
1557 | 1550 | public static function canUserPost( $user, $talkpage ) { |
— | — | @@ -1562,14 +1555,20 @@ |
1563 | 1556 | } |
1564 | 1557 | } |
1565 | 1558 | |
1566 | | - $testTitle = Title::makeTitleSafe( NS_LQT_THREAD, 'test' ); |
1567 | | - if ( ! $testTitle->userCan( 'create' ) || |
1568 | | - ! $testTitle->userCan( 'edit' ) ) |
1569 | | - { |
1570 | | - return false; |
| 1559 | + return self::canUserCreateThreads( $user ); |
| 1560 | + } |
| 1561 | + |
| 1562 | + // Generally, not some specific page |
| 1563 | + public static function canUserCreateThreads( $user ) { |
| 1564 | + $userText = $user->getName(); |
| 1565 | + |
| 1566 | + static $canCreateNew = null; |
| 1567 | + if ( !isset( $canCreateNew[$userText] ) ) { |
| 1568 | + $title = Title::makeTitleSafe( NS_LQT_THREAD, 'Test title for LQT thread creation check' ); |
| 1569 | + $canCreateNew[$userText] = $title->userCan( 'create' ) && $title->userCan( 'edit' ); |
1571 | 1570 | } |
1572 | 1571 | |
1573 | | - return true; |
| 1572 | + return $canCreateNew[$userText]; |
1574 | 1573 | } |
1575 | 1574 | |
1576 | 1575 | public function signature() { |
Index: branches/REL1_17/extensions/LiquidThreads/lqt.js |
— | — | @@ -102,7 +102,8 @@ |
103 | 103 | var talkpage = $j(this).attr('lqt_talkpage'); |
104 | 104 | var params = {'talkpage' : talkpage, 'method' : 'talkpage_new_thread' }; |
105 | 105 | |
106 | | - var container = $j('.lqt-new-thread' ).data('lqt-talkpage', talkpage); |
| 106 | + var container = $j('.lqt-new-thread' ); |
| 107 | + container.data('lqt-talkpage', talkpage); |
107 | 108 | |
108 | 109 | liquidThreads.injectEditForm( params, container ); |
109 | 110 | liquidThreads.currentReplyThread = 0; |
Property changes on: branches/REL1_17/extensions/LiquidThreads/lqt.js |
___________________________________________________________________ |
Added: svn:mergeinfo |
110 | 111 | Merged /trunk/extensions/LiquidThreads/lqt.js:r57390,79817,80008 |
Index: branches/REL1_17/extensions/CentralAuth/ApiQueryGlobalUserInfo.php |
— | — | @@ -141,6 +141,7 @@ |
142 | 142 | 'prop' => array( |
143 | 143 | 'Which properties to get:', |
144 | 144 | ' groups - Get a list of global groups this user belongs to', |
| 145 | + ' rights - Get a list of global rights this user has', |
145 | 146 | ' merged - Get a list of merged accounts', |
146 | 147 | ' unattached - Get a list of unattached accounts' |
147 | 148 | ), |
Index: branches/REL1_17/phase3/skins/common/shared.css |
— | — | @@ -794,6 +794,13 @@ |
795 | 795 | border: solid 2px white; |
796 | 796 | display: -moz-inline-box; |
797 | 797 | } |
| 798 | + |
| 799 | +ul.gallery, li.gallerybox { |
| 800 | + display: inline-block; |
| 801 | + zoom: 1; |
| 802 | + *display: inline; |
| 803 | +} |
| 804 | + |
798 | 805 | ul.gallery { |
799 | 806 | margin: 2px; |
800 | 807 | padding: 2px; |
— | — | @@ -801,12 +808,6 @@ |
802 | 809 | display: block; |
803 | 810 | } |
804 | 811 | |
805 | | -ul.gallery, li.gallerybox { |
806 | | - display: inline-block; |
807 | | - zoom: 1; |
808 | | - *display: inline; |
809 | | -} |
810 | | - |
811 | 812 | li.gallerycaption { |
812 | 813 | font-weight: bold; |
813 | 814 | text-align: center; |
Property changes on: branches/REL1_17/phase3/skins/common/shared.css |
___________________________________________________________________ |
Added: svn:mergeinfo |
814 | 815 | Merged /branches/sqlite/skins/common/shared.css:r58211-58321 |
815 | 816 | Merged /trunk/phase3/skins/common/shared.css:r78232 |
816 | 817 | Merged /branches/new-installer/phase3/skins/common/shared.css:r43664-66004 |
817 | 818 | Merged /branches/REL1_15/phase3/skins/common/shared.css:r51646 |
Index: branches/REL1_17/phase3/includes/parser/Parser.php |
— | — | @@ -317,18 +317,11 @@ |
318 | 318 | } |
319 | 319 | |
320 | 320 | /** |
321 | | - * A page get its title converted except: |
322 | | - * a) Language conversion is globally disabled |
323 | | - * b) Title convert is globally disabled |
324 | | - * c) The page is a redirect page |
325 | | - * d) User request with a "linkconvert" set to "no" |
326 | | - * e) A "nocontentconvert" magic word has been set |
327 | | - * f) A "notitleconvert" magic word has been set |
328 | | - * g) User sets "noconvertlink" in his/her preference |
329 | | - * |
330 | | - * Note that if a user tries to set a title in a conversion |
331 | | - * rule but content conversion was not done, then the parser |
332 | | - * won't pick it up. This is probably expected behavior. |
| 321 | + * A converted title will be provided in the output object if title and |
| 322 | + * content conversion are enabled, the article text does not contain |
| 323 | + * a conversion-suppressing double-underscore tag, and no |
| 324 | + * {{DISPLAYTITLE:...}} is present. DISPLAYTITLE takes precedence over |
| 325 | + * automatic link conversion. |
333 | 326 | */ |
334 | 327 | if ( !( $wgDisableLangConversion |
335 | 328 | || $wgDisableTitleConversion |
Property changes on: branches/REL1_17/phase3/includes/parser/Parser.php |
___________________________________________________________________ |
Added: svn:mergeinfo |
336 | 329 | Merged /branches/new-installer/phase3/includes/parser/Parser.php:r43664-66004 |
337 | 330 | Merged /branches/wmf-deployment/includes/parser/Parser.php:r53381 |
338 | 331 | Merged /branches/REL1_15/phase3/includes/parser/Parser.php:r51646 |
339 | 332 | Merged /branches/sqlite/includes/parser/Parser.php:r58211-58321 |
340 | 333 | Merged /trunk/phase3/includes/parser/Parser.php:r79732,79785 |
Index: branches/REL1_17/phase3/includes/WatchlistEditor.php |
— | — | @@ -213,7 +213,7 @@ |
214 | 214 | FROM {$watchlist} LEFT JOIN {$page} ON ( wl_namespace = page_namespace |
215 | 215 | AND wl_title = page_title ) WHERE wl_user = {$uid}"; |
216 | 216 | if ( ! $dbr->implicitOrderby() ) { |
217 | | - $sql .= " ORDER BY wl_title"; |
| 217 | + $sql .= " ORDER BY wl_namespace, wl_title"; |
218 | 218 | } |
219 | 219 | $res = $dbr->query( $sql, __METHOD__ ); |
220 | 220 | if( $res && $dbr->numRows( $res ) > 0 ) { |
Property changes on: branches/REL1_17/phase3/includes/WatchlistEditor.php |
___________________________________________________________________ |
Added: svn:mergeinfo |
221 | 221 | Merged /branches/new-installer/phase3/includes/WatchlistEditor.php:r43664-66004 |
222 | 222 | Merged /branches/wmf-deployment/includes/WatchlistEditor.php:r53381 |
223 | 223 | Merged /branches/REL1_15/phase3/includes/WatchlistEditor.php:r51646 |
224 | 224 | Merged /branches/sqlite/includes/WatchlistEditor.php:r58211-58321 |
225 | 225 | Merged /trunk/phase3/includes/WatchlistEditor.php:r79732,79864 |
Index: branches/REL1_17/phase3/includes/OutputPage.php |
— | — | @@ -23,7 +23,7 @@ |
24 | 24 | var $mLastModified = '', $mETag = false; |
25 | 25 | var $mCategoryLinks = array(), $mCategories = array(), $mLanguageLinks = array(); |
26 | 26 | |
27 | | - var $mScripts = '', $mLinkColours, $mPageLinkTitle = '', $mHeadItems = array(); |
| 27 | + var $mScripts = '', $mInlineStyles = '', $mLinkColours, $mPageLinkTitle = '', $mHeadItems = array(); |
28 | 28 | var $mModules = array(), $mModuleScripts = array(), $mModuleStyles = array(), $mModuleMessages = array(); |
29 | 29 | var $mResourceLoader; |
30 | 30 | var $mInlineMsg = array(); |
— | — | @@ -2274,12 +2274,9 @@ |
2275 | 2275 | |
2276 | 2276 | $ret .= implode( "\n", array( |
2277 | 2277 | $this->getHeadLinks( $sk ), |
2278 | | - $this->buildCssLinks(), |
2279 | | - $this->getHeadItems(), |
| 2278 | + $this->buildCssLinks( $sk ), |
| 2279 | + $this->getHeadItems() |
2280 | 2280 | ) ); |
2281 | | - if ( $sk->usercss ) { |
2282 | | - $ret .= Html::inlineStyle( $sk->usercss ); |
2283 | | - } |
2284 | 2281 | |
2285 | 2282 | if ( $wgUseTrackbacks && $this->isArticleRelated() ) { |
2286 | 2283 | $ret .= $this->getTitle()->trackbackRDF(); |
— | — | @@ -2630,28 +2627,6 @@ |
2631 | 2628 | } |
2632 | 2629 | } |
2633 | 2630 | |
2634 | | - // Split the styles into three groups |
2635 | | - $styles = array( 'other' => array(), 'user' => array(), 'site' => array() ); |
2636 | | - $resourceLoader = $this->getResourceLoader(); |
2637 | | - foreach ( $this->getModuleStyles() as $name ) { |
2638 | | - $group = $resourceLoader->getModule( $name )->getGroup(); |
2639 | | - // Modules in groups named "other" or anything different than "user" or "site" will |
2640 | | - // be placed in the "other" group |
2641 | | - $styles[isset( $style[$group] ) ? $group : 'other'][] = $name; |
2642 | | - } |
2643 | | - |
2644 | | - // We want site and user styles to override dynamically added styles from modules, but we want |
2645 | | - // dynamically added styles to override statically added styles from other modules. So the order |
2646 | | - // has to be other, dynamic, site, user |
2647 | | - // Add statically added styles for other modules |
2648 | | - $tags[] = $this->makeResourceLoaderLink( $sk, $styles['other'], 'styles' ); |
2649 | | - // Add marker tag to mark the place where the client-side loader should inject dynamic styles |
2650 | | - // We use a <meta> tag with a made-up name for this because that's valid HTML |
2651 | | - $tags[] = Html::element( 'meta', array( 'name' => 'ResourceLoaderDynamicStyles', 'content' => '' ) ); |
2652 | | - // Add site and user styles |
2653 | | - $tags[] = $this->makeResourceLoaderLink( |
2654 | | - $sk, array_merge( $styles['site'], $styles['user'] ), 'styles' |
2655 | | - ); |
2656 | 2631 | return implode( "\n", $tags ); |
2657 | 2632 | } |
2658 | 2633 | |
— | — | @@ -2702,15 +2677,42 @@ |
2703 | 2678 | * @param $style_css Mixed: inline CSS |
2704 | 2679 | */ |
2705 | 2680 | public function addInlineStyle( $style_css ){ |
2706 | | - $this->mScripts .= Html::inlineStyle( $style_css ); |
| 2681 | + $this->mInlineStyles .= Html::inlineStyle( $style_css ); |
2707 | 2682 | } |
2708 | 2683 | |
2709 | 2684 | /** |
2710 | 2685 | * Build a set of <link>s for the stylesheets specified in the $this->styles array. |
2711 | 2686 | * These will be applied to various media & IE conditionals. |
| 2687 | + * @param $sk Skin object |
2712 | 2688 | */ |
2713 | | - public function buildCssLinks() { |
2714 | | - return implode( "\n", $this->buildCssLinksArray() ); |
| 2689 | + public function buildCssLinks( $sk ) { |
| 2690 | + $ret = ''; |
| 2691 | + // Add ResourceLoader styles |
| 2692 | + // Split the styles into three groups |
| 2693 | + $styles = array( 'other' => array(), 'user' => array(), 'site' => array() ); |
| 2694 | + $resourceLoader = $this->getResourceLoader(); |
| 2695 | + foreach ( $this->getModuleStyles() as $name ) { |
| 2696 | + $group = $resourceLoader->getModule( $name )->getGroup(); |
| 2697 | + // Modules in groups named "other" or anything different than "user" or "site" will |
| 2698 | + // be placed in the "other" group |
| 2699 | + $styles[isset( $styles[$group] ) ? $group : 'other'][] = $name; |
| 2700 | + } |
| 2701 | + |
| 2702 | + // We want site and user styles to override dynamically added styles from modules, but we want |
| 2703 | + // dynamically added styles to override statically added styles from other modules. So the order |
| 2704 | + // has to be other, dynamic, site, user |
| 2705 | + // Add statically added styles for other modules |
| 2706 | + $ret .= $this->makeResourceLoaderLink( $sk, $styles['other'], 'styles' ); |
| 2707 | + // Add normal styles added through addStyle()/addInlineStyle() here |
| 2708 | + $ret .= implode( "\n", $this->buildCssLinksArray() ) . $this->mInlineStyles; |
| 2709 | + // Add marker tag to mark the place where the client-side loader should inject dynamic styles |
| 2710 | + // We use a <meta> tag with a made-up name for this because that's valid HTML |
| 2711 | + $ret .= Html::element( 'meta', array( 'name' => 'ResourceLoaderDynamicStyles', 'content' => '' ) ); |
| 2712 | + // Add site and user styles |
| 2713 | + $ret .= $this->makeResourceLoaderLink( |
| 2714 | + $sk, array_merge( $styles['site'], $styles['user'] ), 'styles' |
| 2715 | + ); |
| 2716 | + return $ret; |
2715 | 2717 | } |
2716 | 2718 | |
2717 | 2719 | public function buildCssLinksArray() { |
Property changes on: branches/REL1_17/phase3/includes/OutputPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
2718 | 2720 | Merged /trunk/phase3/includes/OutputPage.php:r79732 |
Index: branches/REL1_17/phase3/includes/resourceloader/ResourceLoader.php |
— | — | @@ -155,7 +155,7 @@ |
156 | 156 | $cache->set( $key, $result ); |
157 | 157 | } catch ( Exception $exception ) { |
158 | 158 | // Return exception as a comment |
159 | | - $result = "/*\n{$exception->__toString()}\n*/"; |
| 159 | + $result = "/*\n{$exception->__toString()}\n*/\n"; |
160 | 160 | } |
161 | 161 | |
162 | 162 | wfProfileOut( __METHOD__ ); |
— | — | @@ -293,7 +293,7 @@ |
294 | 294 | ob_start(); |
295 | 295 | |
296 | 296 | wfProfileIn( __METHOD__ ); |
297 | | - $response = ''; |
| 297 | + $exceptions = ''; |
298 | 298 | |
299 | 299 | // Split requested modules into two groups, modules and missing |
300 | 300 | $modules = array(); |
— | — | @@ -324,7 +324,7 @@ |
325 | 325 | $this->preloadModuleInfo( array_keys( $modules ), $context ); |
326 | 326 | } catch( Exception $e ) { |
327 | 327 | // Add exception to the output as a comment |
328 | | - $response .= "/*\n{$e->__toString()}\n*/"; |
| 328 | + $exceptions .= "/*\n{$e->__toString()}\n*/\n"; |
329 | 329 | } |
330 | 330 | |
331 | 331 | wfProfileIn( __METHOD__.'-getModifiedTime' ); |
— | — | @@ -342,7 +342,7 @@ |
343 | 343 | $mtime = max( $mtime, $module->getModifiedTime( $context ) ); |
344 | 344 | } catch ( Exception $e ) { |
345 | 345 | // Add exception to the output as a comment |
346 | | - $response .= "/*\n{$e->__toString()}\n*/"; |
| 346 | + $exceptions .= "/*\n{$e->__toString()}\n*/\n"; |
347 | 347 | } |
348 | 348 | } |
349 | 349 | |
— | — | @@ -389,12 +389,15 @@ |
390 | 390 | } |
391 | 391 | |
392 | 392 | // Generate a response |
393 | | - $response .= $this->makeModuleResponse( $context, $modules, $missing ); |
| 393 | + $response = $this->makeModuleResponse( $context, $modules, $missing ); |
| 394 | + |
| 395 | + // Prepend comments indicating exceptions |
| 396 | + $response = $exceptions . $response; |
394 | 397 | |
395 | 398 | // Capture any PHP warnings from the output buffer and append them to the |
396 | 399 | // response in a comment if we're in debug mode. |
397 | 400 | if ( $context->getDebug() && strlen( $warnings = ob_get_contents() ) ) { |
398 | | - $response .= "/*\n$warnings\n*/"; |
| 401 | + $response = "/*\n$warnings\n*/\n" . $response; |
399 | 402 | } |
400 | 403 | |
401 | 404 | // Remove the output buffer and output the response |
— | — | @@ -416,18 +419,19 @@ |
417 | 420 | array $modules, $missing = array() ) |
418 | 421 | { |
419 | 422 | $out = ''; |
| 423 | + $exceptions = ''; |
420 | 424 | if ( $modules === array() && $missing === array() ) { |
421 | 425 | return '/* No modules requested. Max made me put this here */'; |
422 | 426 | } |
423 | 427 | |
424 | 428 | // Pre-fetch blobs |
425 | 429 | if ( $context->shouldIncludeMessages() ) { |
426 | | - //try { |
| 430 | + try { |
427 | 431 | $blobs = MessageBlobStore::get( $this, $modules, $context->getLanguage() ); |
428 | | - //} catch ( Exception $e ) { |
| 432 | + } catch ( Exception $e ) { |
429 | 433 | // Add exception to the output as a comment |
430 | | - // $out .= "/*\n{$e->__toString()}\n*/"; |
431 | | - //} |
| 434 | + $exceptions .= "/*\n{$e->__toString()}\n*/\n"; |
| 435 | + } |
432 | 436 | } else { |
433 | 437 | $blobs = array(); |
434 | 438 | } |
— | — | @@ -476,7 +480,7 @@ |
477 | 481 | } |
478 | 482 | } catch ( Exception $e ) { |
479 | 483 | // Add exception to the output as a comment |
480 | | - $out .= "/*\n{$e->__toString()}\n*/"; |
| 484 | + $exceptions .= "/*\n{$e->__toString()}\n*/\n"; |
481 | 485 | |
482 | 486 | // Register module as missing |
483 | 487 | $missing[] = $name; |
— | — | @@ -501,12 +505,12 @@ |
502 | 506 | } |
503 | 507 | |
504 | 508 | if ( $context->getDebug() ) { |
505 | | - return $out; |
| 509 | + return $exceptions . $out; |
506 | 510 | } else { |
507 | 511 | if ( $context->getOnly() === 'styles' ) { |
508 | | - return $this->filter( 'minify-css', $out ); |
| 512 | + return $exceptions . $this->filter( 'minify-css', $out ); |
509 | 513 | } else { |
510 | | - return $this->filter( 'minify-js', $out ); |
| 514 | + return $exceptions . $this->filter( 'minify-js', $out ); |
511 | 515 | } |
512 | 516 | } |
513 | 517 | } |
Property changes on: branches/REL1_17/phase3/includes/resourceloader/ResourceLoader.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
514 | 518 | Merged /trunk/phase3/includes/resourceloader/ResourceLoader.php:r79732,79891,79900 |
Index: branches/REL1_17/phase3/includes/resourceloader/ResourceLoaderFileModule.php |
— | — | @@ -464,12 +464,13 @@ |
465 | 465 | } |
466 | 466 | $styles = self::collateFilePathListByOption( $styles, 'media', 'all' ); |
467 | 467 | foreach ( $styles as $media => $files ) { |
| 468 | + $uniqueFiles = array_unique( $files ); |
468 | 469 | $styles[$media] = implode( |
469 | 470 | "\n", |
470 | 471 | array_map( |
471 | 472 | array( $this, 'readStyleFile' ), |
472 | | - array_unique( $files ), |
473 | | - array( $flip ) |
| 473 | + $uniqueFiles, |
| 474 | + array_fill( 0, count( $uniqueFiles ), $flip ) |
474 | 475 | ) |
475 | 476 | ); |
476 | 477 | } |
Index: branches/REL1_17/phase3/includes/SkinTemplate.php |
— | — | @@ -218,7 +218,7 @@ |
219 | 219 | $tpl->set( 'xhtmlnamespaces', $wgXhtmlNamespaces ); |
220 | 220 | $tpl->set( 'html5version', $wgHtml5Version ); |
221 | 221 | $tpl->set( 'headlinks', $out->getHeadLinks( $this ) ); |
222 | | - $tpl->set( 'csslinks', $out->buildCssLinks() ); |
| 222 | + $tpl->set( 'csslinks', $out->buildCssLinks( $this ) ); |
223 | 223 | |
224 | 224 | if( $wgUseTrackbacks && $out->isArticleRelated() ) { |
225 | 225 | $tpl->set( 'trackbackhtml', $out->getTitle()->trackbackRDF() ); |
Index: branches/REL1_17/phase3/includes/MessageBlobStore.php |
— | — | @@ -210,7 +210,7 @@ |
211 | 211 | do { |
212 | 212 | $updates = self::getUpdatesForMessage( $key, $updates ); |
213 | 213 | |
214 | | - foreach ( $updates as $key => $update ) { |
| 214 | + foreach ( $updates as $k => $update ) { |
215 | 215 | // Update the row on the condition that it |
216 | 216 | // didn't change since we fetched it by putting |
217 | 217 | // the timestamp in the WHERE clause. |
— | — | @@ -230,7 +230,7 @@ |
231 | 231 | // fear of getting into an infinite loop |
232 | 232 | if ( !( $success && $dbw->affectedRows() == 0 ) ) { |
233 | 233 | // Not conflicted |
234 | | - unset( $updates[$key] ); |
| 234 | + unset( $updates[$k] ); |
235 | 235 | } |
236 | 236 | } |
237 | 237 | } while ( count( $updates ) ); |
Property changes on: branches/REL1_17/phase3/includes/MessageBlobStore.php |
___________________________________________________________________ |
Added: svn:mergeinfo |
238 | 238 | Merged /branches/sqlite/includes/MessageBlobStore.php:r58211-58321 |
239 | 239 | Merged /trunk/phase3/includes/MessageBlobStore.php:r79722,79732 |
240 | 240 | Merged /branches/new-installer/phase3/includes/MessageBlobStore.php:r43664-66004 |
241 | 241 | Merged /branches/wmf-deployment/includes/MessageBlobStore.php:r53381 |
242 | 242 | Merged /branches/REL1_15/phase3/includes/MessageBlobStore.php:r51646 |
Index: branches/REL1_17/phase3/img_auth.php |
— | — | @@ -43,11 +43,12 @@ |
44 | 44 | if( !$path ) { |
45 | 45 | wfForbidden( 'img-auth-accessdenied', 'img-auth-nopathinfo' ); |
46 | 46 | } |
| 47 | + $path = "/$path"; |
47 | 48 | } else { |
48 | 49 | $path = $_SERVER['PATH_INFO']; |
49 | 50 | } |
50 | 51 | |
51 | | -$filename = realpath( $wgUploadDirectory . '/' . $path ); |
| 52 | +$filename = realpath( $wgUploadDirectory . $path ); |
52 | 53 | $realUpload = realpath( $wgUploadDirectory ); |
53 | 54 | |
54 | 55 | // Basic directory traversal check |
Property changes on: branches/REL1_17/phase3/img_auth.php |
___________________________________________________________________ |
Added: svn:mergeinfo |
55 | 56 | Merged /branches/REL1_15/phase3/img_auth.php:r51646 |
56 | 57 | Merged /branches/sqlite/img_auth.php:r58211-58321 |
57 | 58 | Merged /trunk/phase3/img_auth.php:r78253 |
58 | 59 | Merged /branches/new-installer/phase3/img_auth.php:r43664-66004 |