Page MenuHomePhabricator
Paste P2373

Hard-coded PHP VE blacklist
ActivePublic

Authored by Jdforrester-WMF on Dec 4 2015, 12:48 AM.
Tags
None
Referenced Files
F3046068: Hard-coded PHP VE blacklist
Feb 24 2016, 5:27 AM
Subscribers
None
<?
dislikedUserAgent(
$this->getRequest()->getHeader( 'User-agent' ),
ConfigFactory::getDefaultInstance()->makeConfig( 'visualeditor' )->get( 'VisualEditorBrowserBlacklist' )
);
function dislikedUserAgent( $userAgent, $blacklist ) {
$userAgent = strtolower( $userAgent );
// MSIE <= 9
if ( strpos( $userAgent, 'msie' ) && preg_split( '/msie/', $userAgent )[ 1 ] <= 9 ) {
return true;
}
// Firefox <= 14
if ( strpos( $userAgent, 'firefox/' ) && preg_split( '/firefox\//', $userAgent )[ 1 ] <= 14 ) {
return true;
}
// Safari <= 6
if ( strpos( $userAgent, 'safari/' ) && preg_split( '/version\//', $userAgent )[ 1 ] <= 6 ) {
return true;
}
// Opera <= 11
if (
(
strpos( $userAgent, 'opera/' ) &&
(
( strpos( $userAgent, 'version/' ) && preg_split( '/version\//', $userAgent )[ 1 ] <= 11 ) ||
( !strpos( $userAgent, 'version/' ) && preg_split( '/opera\//', $userAgent )[ 1 ] <= 9 ) ||
)
) ||
(
strpos( $userAgent, 'opera ' ) && preg_split( '/ opera /', $userAgent )[ 1 ] < 10 )
)
) {
return true;
}
// Android < 4
if ( strpos( $userAgent, 'android' ) && preg_split( '/android /', $userAgent )[ 1 ] < 4 ) {
return true;
}
// BlackBerry
if ( strpos( $userAgent, 'blackberry' ) ) {
return true;
}
// WebOS
if ( strpos( $userAgent, 'webos' ) ) {
return true;
}
// PlayStation
if ( strpos( $userAgent, 'playstation' ) ) {
return true;
}
// Symbian
if ( strpos( $userAgent, 'symbianos' ) || strpos( $userAgent, 'series60' ) ) {
return true;
}
// NetFront
if ( strpos( $userAgent, 'netfront' ) ) {
return true;
}
// OperaMini
if ( strpos( $userAgent, 'opera mini' ) ) {
return true;
}
return false;
}