jenkins-bot has submitted this change and it was merged.
Change subject: Removed $wgZeroDisableImages dependency
......................................................................
Removed $wgZeroDisableImages dependency
* Allows for config-based image showing logic
* Added caching for Zero check & config
Change-Id: Ic623359a989b02784b652643d9dcf46c89bc06da
---
M includes/PageRenderingHooks.php
1 file changed, 65 insertions(+), 56 deletions(-)
Approvals:
Dr0ptp4kt: Verified; Looks good to me, approved
jenkins-bot: Verified
diff --git a/includes/PageRenderingHooks.php b/includes/PageRenderingHooks.php
index 47e2248..1c329b7 100644
--- a/includes/PageRenderingHooks.php
+++ b/includes/PageRenderingHooks.php
@@ -30,8 +30,8 @@
* @return bool
*/
public static function onGetMobileUrl( &$subdomainTokenReplacement ) {
- global $wgZeroDisableImages;
- if ( self::isZeroRequest() && $wgZeroDisableImages === 1 ) {
+ // TODO: logic check
+ if ( self::isZeroRequest() && self::disableImages() ) {
$subdomainTokenReplacement = 'zero.';
}
return true;
@@ -46,9 +46,10 @@
* @return bool
*/
public static function onBeforePageDisplay( &$out, &$options ) {
- global $wgRequest, $wgConf,
$wgEnableZeroRatedMobileAccessTesting, $wgZeroDisableImages;
+ global $wgRequest, $wgConf,
$wgEnableZeroRatedMobileAccessTesting;
wfProfileIn( __METHOD__ );
+ // FIXME BUG -- why do we need master on every requests?!
$DB = wfGetDB( DB_MASTER );
$DBName = $DB->getDBname();
/** @noinspection PhpUnusedLocalVariableInspection */
@@ -69,17 +70,9 @@
$out->addModules( 'mobile.zero.scripts' );
$isFilePage = $out->getTitle()->inNamespace( NS_FILE );
+ $config = self::getConfig();
- // Allow URL override of the X-CS parameter for testing purposes
- $carrierId = $wgRequest->getVal( 'X-CS' );
- if ( $carrierId === null ) {
- $carrierId = $wgRequest->getHeader( 'X-CS' );
- }
- if ( $carrierId === '(null)' || !$carrierId ) {
- $carrierId = null;
- }
-
- $renderBanner = $carrierId !== null ||
$wgRequest->getFuzzyBool( 'renderZeroRatedBanner' );
+ $renderBanner = $config !== null || $wgRequest->getFuzzyBool(
'renderZeroRatedBanner' );
if ( !$renderBanner && self::isZeroRequest() &&
!$wgRequest->getFuzzyBool( 'renderZeroRatedLandingPage' ) ) {
$out->addHTML( self::renderUnknownCarrier() );
wfProfileOut( __METHOD__ );
@@ -98,7 +91,7 @@
$renderWarning = false;
if ( $isFilePage ) {
- $renderWarning = true;
+ $renderWarning = $config === null ||
!$config['showImages'];
} else {
$renderWarningFlag = $wgRequest->getVal(
'renderwarning' );
if ( $renderWarningFlag === 'yes' ) {
@@ -106,18 +99,10 @@
}
}
- if ( $renderBanner ) {
- $config = self::lookupCarrier( $carrierId );
- if ( $config !== null ) {
- if ( $isFilePage && $config['showImages'] ) {
- $renderWarning = false;
- }
- $options = array();
- $options['toggle_view_desktop'] =
'&renderZeroRatedBanner=true&renderwarning=yes&returnto=';
- $options['supported_languages'] =
$config['showLangs'];
- }
- } else {
- $config = null;
+ if ( $renderBanner && $config !== null ) {
+ $options = array();
+ $options['toggle_view_desktop'] =
'&renderZeroRatedBanner=true&renderwarning=yes&returnto=';
+ $options['supported_languages'] = $config['showLangs'];
}
if ( $renderBanner && $renderWarning && $acceptBilling !==
'yes' ) {
@@ -128,17 +113,11 @@
$output = self::renderZeroRedirect();
$out->clearHTML();
$out->setPageTitle( null );
- } elseif ( $renderBanner && isset( $config['name'] ) ) {
- // FIXME: ^^ config[name] ?
- if ( $wgZeroDisableImages === 1 ) {
- $forceClickToViewImages = true;
- $wgRequest->response()->header( 'X-Images: no'
);
- } else {
- $forceClickToViewImages =
$wgRequest->getFuzzyBool( 'forceClickToViewImages' );
- $wgRequest->response()->header( 'X-Images: yes'
);
- }
+ } elseif ( $renderBanner ) {
+ $imgHeader = self::disableImages() ? 'X-Images: no' :
'X-Images: yes';
+ $wgRequest->response()->header( $imgHeader );
$html = $out->getHTML();
- $parsedHtml = self::parseLinksForZeroQueryString(
$config, $html, $isFilePage, $forceClickToViewImages );
+ $parsedHtml = self::parseLinksForZeroQueryString(
$config, $html, $isFilePage );
$out->clearHTML();
$out->addHTML( $parsedHtml );
$output = self::renderBanner( $config );
@@ -312,7 +291,7 @@
* @return string
*/
private static function renderSpecialPage( $config ) {
- global $wgRequest, $wgZeroDisableImages;
+ global $wgRequest;
$output = '';
$languageNames = Language::fetchLanguageNames();
@@ -328,7 +307,7 @@
if ( !array_key_exists( $languageCode,
$languageNames ) ) {
continue;
}
- $langUrlFormat = $wgZeroDisableImages === 1 ?
self::$formatZeroUrl : self::$formatMobileUrl;
+ $langUrlFormat = self::disableImages() ?
self::$formatZeroUrl : self::$formatMobileUrl;
$languageLink = Html::element( 'a',
array( 'id' => 'lang_' . $languageCode,
'href' => sprintf(
$langUrlFormat, $languageCode ) ),
@@ -354,7 +333,7 @@
$freeLangs = $config['whitelistedLangs'];
foreach ( $languageNames as $languageCode => $languageName ) {
$isFree = ( 0 === count( $freeLangs ) || in_array(
$languageCode, $freeLangs ) );
- if ( !$isFree || $wgZeroDisableImages !== 1 ) {
+ if ( !$isFree || !self::disableImages() ) {
// send user to the m subdomain
$languageUrl = sprintf( self::$formatMobileUrl,
$languageCode );
if ( !$isFree ) {
@@ -437,25 +416,41 @@
/**
- * Returns information about carrier
- *
- * @param String $carrierId: carrier ID e.g., "250-99"
+ * Returns cached carrier configuration based on X-CS header or query
parameter
* @return array|null Carrier configuration or null if it doesn't exist
or is disabled
*/
- private static function lookupCarrier( $carrierId ) {
+ private static function getConfig() {
+
+ // Cached configuration array or null if missing or disabled.
+ static $config = false;
+ if ( $config !== false ) {
+ return $config;
+ }
+
wfProfileIn( __METHOD__ );
+ global $wgRequest;
$config = null;
- $store = new CarrierConfigStore( $carrierId );
- $text = $store->get();
- if ( $text !== null ) {
- $conf = new CarrierConfig( $text );
- if ( !$conf->isError() ) {
- $config = $conf->getData();
- if ( !$config['enabled'] ) {
- // If the configuration is disabled,
pretend like it doesn't exist
- $config = null;
+ // Allow URL override of the X-CS parameter for testing purposes
+ $id = $wgRequest->getVal( 'X-CS' );
+ if ( $id === null ) {
+ $id = $wgRequest->getHeader( 'X-CS' );
+ }
+ if ( $id === '(null)' || !$id ) {
+ $id = null;
+ }
+ if ( $id !== null ) {
+ $store = new CarrierConfigStore( $id );
+ $text = $store->get();
+ if ( $text !== null ) {
+ $conf = new CarrierConfig( $text );
+ if ( !$conf->isError() ) {
+ $config = $conf->getData();
+ if ( !$config['enabled'] ) {
+ // If the configuration is
disabled, pretend like it doesn't exist
+ $config = null;
+ }
}
}
}
@@ -471,10 +466,9 @@
* @param array $config
* @param String $html: Html of current page
* @param bool $isFilePage
- * @param bool $forceClickToViewImages
* @return String
*/
- private static function parseLinksForZeroQueryString( $config, $html,
$isFilePage, $forceClickToViewImages ) {
+ private static function parseLinksForZeroQueryString( $config, $html,
$isFilePage ) {
wfProfileIn( __METHOD__ );
$html = mb_convert_encoding( $html, 'HTML-ENTITIES', "UTF-8" );
libxml_use_internal_errors( true );
@@ -487,7 +481,7 @@
$xpath = new DOMXpath( $doc );
- if ( !$isFilePage && $forceClickToViewImages ) {
+ if ( !$isFilePage && self::disableImages() ) {
$tagToReplace = 'img';
$tagToReplaceNodes = $doc->getElementsByTagName(
$tagToReplace );
$tagToReplaceNodesCollection = array();
@@ -582,11 +576,26 @@
* @return bool
*/
private static function isZeroRequest() {
- return isset( $_SERVER['HTTP_X_SUBDOMAIN'] ) &&
$_SERVER['HTTP_X_SUBDOMAIN'] === 'ZERO';
+ static $isZero = null;
+ if ( $isZero === null ) {
+ $isZero = isset( $_SERVER['HTTP_X_SUBDOMAIN'] ) &&
$_SERVER['HTTP_X_SUBDOMAIN'] === 'ZERO';
+ }
+ return $isZero;
+ }
+
+
+ /**
+ * This is a placeholder function to replace $wgZeroDisableImages which
seems to always be 1 for Zero
+ * @return bool
+ */
+ private static function disableImages() {
+ // TODO? FIXME? Probably need to check the config as well
+ return self::isZeroRequest();
}
public function getVersion() {
+ // TODO? Delete this?
return __CLASS__ . ': $Id$';
}
}
--
To view, visit https://gerrit.wikimedia.org/r/63420
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ic623359a989b02784b652643d9dcf46c89bc06da
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ZeroRatedMobileAccess
Gerrit-Branch: master
Gerrit-Owner: Yurik <[email protected]>
Gerrit-Reviewer: Dr0ptp4kt <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits