Ejegg has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/276218

Change subject: Enable fail page without adapter instance
......................................................................

Enable fail page without adapter instance

When an adapter constructor bombs out, the page can still use this
method to get a semi-appropriate fail page.

Bug: T129376
Change-Id: Ia39d816fb22ab7244206e0bcd7f250ed71ee2990
---
M gateway_common/ResultPages.php
1 file changed, 32 insertions(+), 12 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/DonationInterface 
refs/changes/18/276218/1

diff --git a/gateway_common/ResultPages.php b/gateway_common/ResultPages.php
index 3800c54..8688d4a 100644
--- a/gateway_common/ResultPages.php
+++ b/gateway_common/ResultPages.php
@@ -11,7 +11,10 @@
        public static function getThankYouPage( GatewayAdapter $adapter, 
$extraParams = array() ) {
                $page = $adapter::getGlobal( "ThankYouPage" );
                if ( $page ) {
-                       $page = self::appendLanguageAndMakeURL( $page, $adapter 
);
+                       $page = self::appendLanguageAndMakeURL(
+                               $page,
+                               $adapter->getData_Unstaged_Escaped( 'language' )
+                       );
                }
                $extraParams['country'] = $adapter->getData_Unstaged_Escaped( 
'country' );
                return wfAppendQuery( $page, $extraParams );
@@ -19,33 +22,48 @@
 
        /**
         * Get the URL for a page to show donors after a failed donation
-        * @param GatewayAdapter $adapter
+        * @param GatewayAdapter|string $adapter instance of GatewayAdapter, or 
class name
         * @return string
         */
-       public static function getFailPage( GatewayAdapter $adapter ) {
+       public static function getFailPage( $adapter ) {
                // Prefer RapidFail.
                if ( $adapter::getGlobal( 'RapidFail' ) ) {
-                       $data = $adapter->getData_Unstaged_Escaped();
+                       if ( is_string( $adapter ) ) {
+                               $data = array(
+                                       'gateway' => $adapter::getIdentifier(),
+                                       'payment_method' => '',
+                                       'payment_submethod' => '',
+                               );
+                               $retryData = array();
+                       } else {
+                               $data = $adapter->getData_Unstaged_Escaped();
+                               $retryData = $adapter->getRetryData();
+                       }
 
                        // choose which fail page to go for.
                        try {
                                $fail_ffname = 
GatewayFormChooser::getBestErrorForm( $data['gateway'], 
$data['payment_method'], $data['payment_submethod'] );
-                               return 
GatewayFormChooser::buildPaymentsFormURL( $fail_ffname, 
$adapter->getRetryData() );
+                               return 
GatewayFormChooser::buildPaymentsFormURL( $fail_ffname, $retryData );
                        } catch ( Exception $e ) {
-                               $logger = DonationLoggerFactory::getLogger( 
$adapter );
+                               $logAdapter = is_string( $adapter ) ? null : 
$adapter;
+                               $logger = DonationLoggerFactory::getLogger( 
$logAdapter );
                                $logger->error( 'Cannot determine best error 
form. ' . $e->getMessage() );
                        }
                }
                $page = $adapter::getGlobal( 'FailPage' );
+               if ( is_string( $adapter ) ) {
+                       $language = WmfFramework::getLanguageCode();
+               } else {
+                       $language = $adapter->getData_Unstaged_Escaped( 
'language' );
+               }
                if ( filter_var( $page, FILTER_VALIDATE_URL ) ) {
-                       return self::appendLanguageAndMakeURL( $page, $adapter 
);
+                       return self::appendLanguageAndMakeURL( $page, $language 
);
                }
 
                // FIXME: either add Special:FailPage to avoid depending on 
wiki content,
                // or update the content on payments to be consistent with the 
/lang
                // format of ThankYou pages so we can use 
appendLanguageAndMakeURL here.
                $failTitle = Title::newFromText( $page );
-               $language = $adapter->getData_Unstaged_Escaped( 'language' );
                $url = wfAppendQuery( $failTitle->getFullURL(), array( 
'uselang' => $language ) );
 
                return $url;
@@ -61,7 +79,10 @@
                if ( empty( $cancelPage ) ) {
                        return '';
                }
-               return self::appendLanguageAndMakeURL( $cancelPage, $adapter );
+               return self::appendLanguageAndMakeURL(
+                       $cancelPage,
+                       $adapter->getData_Unstaged_Escaped( 'language' )
+               );
        }
 
        /**
@@ -70,11 +91,10 @@
         * appended onto the end.
         * @param string $url Either a wiki page title, or a URL to an external 
wiki
         * page title.
-        * @param GatewayAdapter $adapter
+        * @param $language
         * @return string A URL
         */
-       protected static function appendLanguageAndMakeURL( $url, 
GatewayAdapter $adapter ) {
-               $language = $adapter->getData_Unstaged_Escaped( 'language' );
+       protected static function appendLanguageAndMakeURL( $url, $language ) {
                // make sure we don't already have the language in there...
                $dirs = explode('/', $url);
                if ( !is_array( $dirs ) || !in_array( $language, $dirs ) ) {

-- 
To view, visit https://gerrit.wikimedia.org/r/276218
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia39d816fb22ab7244206e0bcd7f250ed71ee2990
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/DonationInterface
Gerrit-Branch: master
Gerrit-Owner: Ejegg <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to