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