From f8b1c4cfb7a9f55e94751ad89306f7712391c38e Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Sun, 14 Feb 2010 22:07:30 +0000 Subject: [PATCH] Random indentation and code formatting updates. No functional changes. --- includes/AjaxDispatcher.php | 33 +- includes/AjaxFunctions.php | 96 ++-- includes/AjaxResponse.php | 38 +- includes/Article.php | 924 +++++++++++++++++------------------ includes/AutoLoader.php | 1 - includes/Autopromote.php | 1 - includes/BacklinkCache.php | 47 +- includes/BagOStuff.php | 31 +- includes/Block.php | 79 +-- includes/CacheDependency.php | 16 +- includes/Category.php | 70 +-- includes/CategoryPage.php | 85 ++-- includes/Categoryfinder.php | 37 +- 13 files changed, 762 insertions(+), 696 deletions(-) diff --git a/includes/AjaxDispatcher.php b/includes/AjaxDispatcher.php index 9971ad5fab..5bd7cfa48d 100644 --- a/includes/AjaxDispatcher.php +++ b/includes/AjaxDispatcher.php @@ -7,7 +7,7 @@ * Handle ajax requests and send them to the proper handler. */ -if( !(defined( 'MEDIAWIKI' ) && $wgUseAjax ) ) { +if ( !( defined( 'MEDIAWIKI' ) && $wgUseAjax ) ) { die( 1 ); } @@ -33,11 +33,11 @@ class AjaxDispatcher { $this->mode = ""; - if (! empty($_GET["rs"])) { + if ( ! empty( $_GET["rs"] ) ) { $this->mode = "get"; } - if (!empty($_POST["rs"])) { + if ( !empty( $_POST["rs"] ) ) { $this->mode = "post"; } @@ -45,7 +45,7 @@ class AjaxDispatcher { case 'get': $this->func_name = isset( $_GET["rs"] ) ? $_GET["rs"] : ''; - if (! empty($_GET["rsargs"])) { + if ( ! empty( $_GET["rsargs"] ) ) { $this->args = $_GET["rsargs"]; } else { $this->args = array(); @@ -54,7 +54,7 @@ class AjaxDispatcher { case 'post': $this->func_name = isset( $_POST["rs"] ) ? $_POST["rs"] : ''; - if (! empty($_POST["rsargs"])) { + if ( ! empty( $_POST["rsargs"] ) ) { $this->args = $_POST["rsargs"]; } else { $this->args = array(); @@ -65,7 +65,7 @@ class AjaxDispatcher { wfProfileOut( __METHOD__ ); return; # Or we could throw an exception: - #throw new MWException( __METHOD__ . ' called without any data (mode empty).' ); + # throw new MWException( __METHOD__ . ' called without any data (mode empty).' ); } @@ -83,9 +83,10 @@ class AjaxDispatcher { if ( empty( $this->mode ) ) { return; } + wfProfileIn( __METHOD__ ); - if (! in_array( $this->func_name, $wgAjaxExportList ) ) { + if ( ! in_array( $this->func_name, $wgAjaxExportList ) ) { wfDebug( __METHOD__ . ' Bad Request for unknown function ' . $this->func_name . "\n" ); wfHttpError( 400, 'Bad Request', @@ -99,11 +100,11 @@ class AjaxDispatcher { $func = $this->func_name; } try { - $result = call_user_func_array($func, $this->args); + $result = call_user_func_array( $func, $this->args ); if ( $result === false || $result === null ) { - wfDebug( __METHOD__ . ' ERROR while dispatching ' - . $this->func_name . "(" . var_export( $this->args, true ) . "): " + wfDebug( __METHOD__ . ' ERROR while dispatching ' + . $this->func_name . "(" . var_export( $this->args, true ) . "): " . "no data returned\n" ); wfHttpError( 500, 'Internal Error', @@ -111,7 +112,7 @@ class AjaxDispatcher { } else { if ( is_string( $result ) ) { - $result= new AjaxResponse( $result ); + $result = new AjaxResponse( $result ); } $result->sendHeaders(); @@ -120,12 +121,12 @@ class AjaxDispatcher { wfDebug( __METHOD__ . ' dispatch complete for ' . $this->func_name . "\n" ); } - } catch (Exception $e) { - wfDebug( __METHOD__ . ' ERROR while dispatching ' - . $this->func_name . "(" . var_export( $this->args, true ) . "): " - . get_class($e) . ": " . $e->getMessage() . "\n" ); + } catch ( Exception $e ) { + wfDebug( __METHOD__ . ' ERROR while dispatching ' + . $this->func_name . "(" . var_export( $this->args, true ) . "): " + . get_class( $e ) . ": " . $e->getMessage() . "\n" ); - if (!headers_sent()) { + if ( !headers_sent() ) { wfHttpError( 500, 'Internal Error', $e->getMessage() ); } else { diff --git a/includes/AjaxFunctions.php b/includes/AjaxFunctions.php index 1a9adbcaa5..e3180e0ac4 100644 --- a/includes/AjaxFunctions.php +++ b/includes/AjaxFunctions.php @@ -4,7 +4,7 @@ * @ingroup Ajax */ -if( !defined( 'MEDIAWIKI' ) ) { +if ( !defined( 'MEDIAWIKI' ) ) { die( 1 ); } @@ -14,31 +14,31 @@ if( !defined( 'MEDIAWIKI' ) ) { * Modified function from http://pure-essence.net/stuff/code/utf8RawUrlDecode.phps * * @param $source String escaped with Javascript's escape() function - * @param $iconv_to String destination character set will be used as second parameter + * @param $iconv_to String destination character set will be used as second parameter * in the iconv function. Default is UTF-8. * @return string */ -function js_unescape($source, $iconv_to = 'UTF-8') { +function js_unescape( $source, $iconv_to = 'UTF-8' ) { $decodedStr = ''; $pos = 0; - $len = strlen ($source); + $len = strlen ( $source ); - while ($pos < $len) { - $charAt = substr ($source, $pos, 1); - if ($charAt == '%') { + while ( $pos < $len ) { + $charAt = substr ( $source, $pos, 1 ); + if ( $charAt == '%' ) { $pos++; - $charAt = substr ($source, $pos, 1); - if ($charAt == 'u') { + $charAt = substr ( $source, $pos, 1 ); + if ( $charAt == 'u' ) { // we got a unicode character $pos++; - $unicodeHexVal = substr ($source, $pos, 4); - $unicode = hexdec ($unicodeHexVal); - $decodedStr .= code2utf($unicode); + $unicodeHexVal = substr ( $source, $pos, 4 ); + $unicode = hexdec ( $unicodeHexVal ); + $decodedStr .= code2utf( $unicode ); $pos += 4; } else { // we have an escaped ascii character - $hexVal = substr ($source, $pos, 2); - $decodedStr .= chr (hexdec ($hexVal)); + $hexVal = substr ( $source, $pos, 2 ); + $decodedStr .= chr ( hexdec ( $hexVal ) ); $pos += 2; } } else { @@ -47,8 +47,8 @@ function js_unescape($source, $iconv_to = 'UTF-8') { } } - if ($iconv_to != "UTF-8") { - $decodedStr = iconv("UTF-8", $iconv_to, $decodedStr); + if ( $iconv_to != "UTF-8" ) { + $decodedStr = iconv( "UTF-8", $iconv_to, $decodedStr ); } return $decodedStr; @@ -61,16 +61,16 @@ function js_unescape($source, $iconv_to = 'UTF-8') { * @param $num Integer * @return utf8char */ -function code2utf($num){ - if ( $num<128 ) - return chr($num); - if ( $num<2048 ) - return chr(($num>>6)+192).chr(($num&63)+128); - if ( $num<65536 ) - return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128); - if ( $num<2097152 ) - return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128); - return ''; +function code2utf( $num ) { + if ( $num < 128 ) + return chr( $num ); + if ( $num < 2048 ) + return chr( ( $num >> 6 ) + 192 ) . chr( ( $num&63 ) + 128 ); + if ( $num < 65536 ) + return chr( ( $num >> 12 ) + 224 ) . chr( ( ( $num >> 6 )&63 ) + 128 ) . chr( ( $num&63 ) + 128 ); + if ( $num < 2097152 ) + return chr( ( $num >> 18 ) + 240 ) . chr( ( ( $num >> 12 )&63 ) + 128 ) . chr( ( ( $num >> 6 )&63 ) + 128 ) . chr( ( $num&63 ) + 128 ); + return ''; } /** @@ -81,49 +81,49 @@ function code2utf($num){ * respectively, followed by an HTML message to display in the alert box; or * '' on error */ -function wfAjaxWatch($pagename = "", $watch = "") { - if(wfReadOnly()) { +function wfAjaxWatch( $pagename = "", $watch = "" ) { + if ( wfReadOnly() ) { // redirect to action=(un)watch, which will display the database lock // message return ''; } - if('w' !== $watch && 'u' !== $watch) { + if ( 'w' !== $watch && 'u' !== $watch ) { return ''; } $watch = 'w' === $watch; - $title = Title::newFromDBkey($pagename); - if(!$title) { + $title = Title::newFromDBkey( $pagename ); + if ( !$title ) { // Invalid title return ''; } - $article = new Article($title); + $article = new Article( $title ); $watching = $title->userIsWatching(); - if($watch) { - if(!$watching) { - $dbw = wfGetDB(DB_MASTER); + if ( $watch ) { + if ( !$watching ) { + $dbw = wfGetDB( DB_MASTER ); $dbw->begin(); $ok = $article->doWatch(); $dbw->commit(); } } else { - if($watching) { - $dbw = wfGetDB(DB_MASTER); + if ( $watching ) { + $dbw = wfGetDB( DB_MASTER ); $dbw->begin(); $ok = $article->doUnwatch(); $dbw->commit(); } } // Something stopped the change - if( isset($ok) && !$ok ) { + if ( isset( $ok ) && !$ok ) { return ''; } - if( $watch ) { - return ''.wfMsgExt( 'addedwatchtext', array( 'parse' ), $title->getPrefixedText() ); + if ( $watch ) { + return '' . wfMsgExt( 'addedwatchtext', array( 'parse' ), $title->getPrefixedText() ); } else { - return ''.wfMsgExt( 'removedwatchtext', array( 'parse' ), $title->getPrefixedText() ); + return '' . wfMsgExt( 'removedwatchtext', array( 'parse' ), $title->getPrefixedText() ); } } @@ -133,12 +133,12 @@ function wfAjaxWatch($pagename = "", $watch = "") { */ function wfAjaxGetThumbnailUrl( $file, $width, $height ) { $file = wfFindFile( $file ); - + if ( !$file || !$file->exists() ) return null; - + $url = $file->getThumbnail( $width, $height )->url; - + return $url; } @@ -148,11 +148,11 @@ function wfAjaxGetThumbnailUrl( $file, $width, $height ) { */ function wfAjaxGetFileUrl( $file ) { $file = wfFindFile( $file ); - + if ( !$file || !$file->exists() ) return null; - + $url = $file->getUrl(); - + return $url; -} \ No newline at end of file +} diff --git a/includes/AjaxResponse.php b/includes/AjaxResponse.php index 646019d5a6..f74956669a 100644 --- a/includes/AjaxResponse.php +++ b/includes/AjaxResponse.php @@ -4,14 +4,14 @@ * @ingroup Ajax */ -if( !defined( 'MEDIAWIKI' ) ) { +if ( !defined( 'MEDIAWIKI' ) ) { die( 1 ); } /** * Handle responses for Ajax requests (send headers, print * content, that sort of thing) - * + * * @ingroup Ajax */ class AjaxResponse { @@ -45,7 +45,7 @@ class AjaxResponse { $this->mText = ''; $this->mResponseCode = '200 OK'; $this->mLastModified = false; - $this->mContentType= 'application/x-wiki'; + $this->mContentType = 'application/x-wiki'; if ( $text ) { $this->addText( $text ); @@ -95,13 +95,13 @@ class AjaxResponse { header( "Status: " . $this->mResponseCode, true, (int)$n ); } - header ("Content-Type: " . $this->mContentType ); + header ( "Content-Type: " . $this->mContentType ); if ( $this->mLastModified ) { - header ("Last-Modified: " . $this->mLastModified ); + header ( "Last-Modified: " . $this->mLastModified ); } else { - header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); + header ( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" ); } if ( $this->mCacheDuration ) { @@ -110,31 +110,31 @@ class AjaxResponse { # and tell the client to always check with the squid. Otherwise, # tell the client to use a cached copy, without a way to purge it. - if( $wgUseSquid ) { + if ( $wgUseSquid ) { # Expect explicite purge of the proxy cache, but require end user agents # to revalidate against the proxy on each visit. # Surrogate-Control controls our Squid, Cache-Control downstream caches if ( $wgUseESI ) { - header( 'Surrogate-Control: max-age='.$this->mCacheDuration.', content="ESI/1.0"'); + header( 'Surrogate-Control: max-age=' . $this->mCacheDuration . ', content="ESI/1.0"' ); header( 'Cache-Control: s-maxage=0, must-revalidate, max-age=0' ); } else { - header( 'Cache-Control: s-maxage='.$this->mCacheDuration.', must-revalidate, max-age=0' ); + header( 'Cache-Control: s-maxage=' . $this->mCacheDuration . ', must-revalidate, max-age=0' ); } } else { # Let the client do the caching. Cache is not purged. - header ("Expires: " . gmdate( "D, d M Y H:i:s", time() + $this->mCacheDuration ) . " GMT"); - header ("Cache-Control: s-max-age={$this->mCacheDuration},public,max-age={$this->mCacheDuration}"); + header ( "Expires: " . gmdate( "D, d M Y H:i:s", time() + $this->mCacheDuration ) . " GMT" ); + header ( "Cache-Control: s-max-age={$this->mCacheDuration},public,max-age={$this->mCacheDuration}" ); } } else { # always expired, always modified - header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past - header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 - header ("Pragma: no-cache"); // HTTP/1.0 + header ( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); // Date in the past + header ( "Cache-Control: no-cache, must-revalidate" ); // HTTP/1.1 + header ( "Pragma: no-cache" ); // HTTP/1.0 } if ( $this->mVary ) { @@ -156,11 +156,11 @@ class AjaxResponse { wfDebug( "$fname: CACHE DISABLED, NO TIMESTAMP\n" ); return; } - if( !$wgCachePages ) { + if ( !$wgCachePages ) { wfDebug( "$fname: CACHE DISABLED\n", false ); return; } - if( $wgUser->getOption( 'nocache' ) ) { + if ( $wgUser->getOption( 'nocache' ) ) { wfDebug( "$fname: USER DISABLED CACHE\n", false ); return; } @@ -168,7 +168,7 @@ class AjaxResponse { $timestamp = wfTimestamp( TS_MW, $timestamp ); $lastmod = wfTimestamp( TS_RFC2822, max( $timestamp, $wgUser->mTouched, $wgCacheEpoch ) ); - if( !empty( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) ) { + if ( !empty( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) ) { # IE sends sizes after the date like this: # Wed, 20 Aug 2003 06:51:19 GMT; length=5202 # this breaks strtotime(). @@ -177,8 +177,8 @@ class AjaxResponse { $ismodsince = wfTimestamp( TS_MW, $modsinceTime ? $modsinceTime : 1 ); wfDebug( "$fname: -- client send If-Modified-Since: " . $modsince . "\n", false ); wfDebug( "$fname: -- we might send Last-Modified : $lastmod\n", false ); - if( ($ismodsince >= $timestamp ) && $wgUser->validateCache( $ismodsince ) && $ismodsince >= $wgCacheEpoch ) { - ini_set('zlib.output_compression', 0); + if ( ( $ismodsince >= $timestamp ) && $wgUser->validateCache( $ismodsince ) && $ismodsince >= $wgCacheEpoch ) { + ini_set( 'zlib.output_compression', 0 ); $this->setResponseCode( "304 Not Modified" ); $this->disable(); $this->mLastModified = $lastmod; diff --git a/includes/Article.php b/includes/Article.php index f7b126d9ec..c49b290142 100644 --- a/includes/Article.php +++ b/includes/Article.php @@ -16,32 +16,32 @@ class Article { /**@{{ * @private */ - var $mComment = ''; //!< - var $mContent; //!< - var $mContentLoaded = false; //!< - var $mCounter = -1; //!< Not loaded - var $mCurID = -1; //!< Not loaded - var $mDataLoaded = false; //!< - var $mForUpdate = false; //!< - var $mGoodAdjustment = 0; //!< - var $mIsRedirect = false; //!< - var $mLatest = false; //!< - var $mMinorEdit; //!< - var $mOldId; //!< - var $mPreparedEdit = false; //!< Title object if set - var $mRedirectedFrom = null; //!< Title object if set - var $mRedirectTarget = null; //!< Title object if set - var $mRedirectUrl = false; //!< - var $mRevIdFetched = 0; //!< - var $mRevision; //!< - var $mTimestamp = ''; //!< - var $mTitle; //!< - var $mTotalAdjustment = 0; //!< - var $mTouched = '19700101000000'; //!< - var $mUser = -1; //!< Not loaded - var $mUserText = ''; //!< - var $mParserOptions; //!< - var $mParserOutput; //!< + var $mComment = ''; // !< + var $mContent; // !< + var $mContentLoaded = false; // !< + var $mCounter = -1; // !< Not loaded + var $mCurID = -1; // !< Not loaded + var $mDataLoaded = false; // !< + var $mForUpdate = false; // !< + var $mGoodAdjustment = 0; // !< + var $mIsRedirect = false; // !< + var $mLatest = false; // !< + var $mMinorEdit; // !< + var $mOldId; // !< + var $mPreparedEdit = false; // !< Title object if set + var $mRedirectedFrom = null; // !< Title object if set + var $mRedirectTarget = null; // !< Title object if set + var $mRedirectUrl = false; // !< + var $mRevIdFetched = 0; // !< + var $mRevision; // !< + var $mTimestamp = ''; // !< + var $mTitle; // !< + var $mTotalAdjustment = 0; // !< + var $mTouched = '19700101000000'; // !< + var $mUser = -1; // !< Not loaded + var $mUserText = ''; // !< + var $mParserOptions; // !< + var $mParserOutput; // !< /**@}}*/ /** @@ -62,7 +62,7 @@ class Article { $t = Title::newFromID( $id ); # FIXME: doesn't inherit right return $t == null ? null : new self( $t ); - #return $t == null ? null : new static( $t ); // PHP 5.3 + # return $t == null ? null : new static( $t ); // PHP 5.3 } /** @@ -82,19 +82,19 @@ class Article { * @return mixed Title object, or null if this page is not a redirect */ public function getRedirectTarget() { - if( !$this->mTitle || !$this->mTitle->isRedirect() ) + if ( !$this->mTitle || !$this->mTitle->isRedirect() ) return null; - if( !is_null($this->mRedirectTarget) ) + if ( !is_null( $this->mRedirectTarget ) ) return $this->mRedirectTarget; # Query the redirect table $dbr = wfGetDB( DB_SLAVE ); $row = $dbr->selectRow( 'redirect', - array('rd_namespace', 'rd_title'), - array('rd_from' => $this->getID() ), + array( 'rd_namespace', 'rd_title' ), + array( 'rd_from' => $this->getID() ), __METHOD__ ); - if( $row ) { - return $this->mRedirectTarget = Title::makeTitle($row->rd_namespace, $row->rd_title); + if ( $row ) { + return $this->mRedirectTarget = Title::makeTitle( $row->rd_namespace, $row->rd_title ); } # This page doesn't have an entry in the redirect table return $this->mRedirectTarget = $this->insertRedirect(); @@ -108,11 +108,11 @@ class Article { */ public function insertRedirect() { $retval = Title::newFromRedirect( $this->getContent() ); - if( !$retval ) { + if ( !$retval ) { return null; } $dbw = wfGetDB( DB_MASTER ); - $dbw->replace( 'redirect', array('rd_from'), + $dbw->replace( 'redirect', array( 'rd_from' ), array( 'rd_from' => $this->getID(), 'rd_namespace' => $retval->getNamespace(), @@ -141,9 +141,9 @@ class Article { public function followRedirectText( $text ) { $rt = Title::newFromRedirectRecurse( $text ); // recurse through to only get the final target # process if title object is valid and not special:userlogout - if( $rt ) { - if( $rt->getInterwiki() != '' ) { - if( $rt->isLocal() ) { + if ( $rt ) { + if ( $rt->getInterwiki() != '' ) { + if ( $rt->isLocal() ) { // Offsite wikis need an HTTP redirect. // // This can be hard to reverse and may produce loops, @@ -152,13 +152,13 @@ class Article { return $rt->getFullURL( 'rdfrom=' . urlencode( $source ) ); } } else { - if( $rt->getNamespace() == NS_SPECIAL ) { + if ( $rt->getNamespace() == NS_SPECIAL ) { // Gotta handle redirects to special pages differently: // Fill the HTTP response "Location" header and ignore // the rest of the page we're on. // // This can be hard to reverse, so they may be disabled. - if( $rt->isSpecial( 'Userlogout' ) ) { + if ( $rt->isSpecial( 'Userlogout' ) ) { // rolleyes } else { return $rt->getFullURL(); @@ -211,15 +211,15 @@ class Article { public function getContent() { global $wgUser, $wgContLang, $wgOut, $wgMessageCache; wfProfileIn( __METHOD__ ); - if( $this->getID() === 0 ) { + if ( $this->getID() === 0 ) { # If this is a MediaWiki:x message, then load the messages # and return the message value for x. - if( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) { + if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) { # If this is a system message, get the default text. list( $message, $lang ) = $wgMessageCache->figureMessage( $wgContLang->lcfirst( $this->mTitle->getText() ) ); $wgMessageCache->loadAllMessages( $lang ); $text = wfMsgGetKey( $message, false, $lang, false ); - if( wfEmptyMsg( $message, $text ) ) + if ( wfEmptyMsg( $message, $text ) ) $text = ''; } else { $text = wfMsgExt( $wgUser->isLoggedIn() ? 'noarticletext' : 'noarticletextanon', 'parsemag' ); @@ -240,7 +240,7 @@ class Article { */ public function getRawText() { // Check process cache for current revision - if( $this->mContentLoaded && $this->mOldId == 0 ) { + if ( $this->mContentLoaded && $this->mOldId == 0 ) { return $this->mContent; } $rev = Revision::newFromTitle( $this->mTitle ); @@ -292,7 +292,7 @@ class Article { * current revision */ public function getOldID() { - if( is_null( $this->mOldId ) ) { + if ( is_null( $this->mOldId ) ) { $this->mOldId = $this->getOldIDFromRequest(); } return $this->mOldId; @@ -307,23 +307,23 @@ class Article { global $wgRequest; $this->mRedirectUrl = false; $oldid = $wgRequest->getVal( 'oldid' ); - if( isset( $oldid ) ) { + if ( isset( $oldid ) ) { $oldid = intval( $oldid ); - if( $wgRequest->getVal( 'direction' ) == 'next' ) { + if ( $wgRequest->getVal( 'direction' ) == 'next' ) { $nextid = $this->mTitle->getNextRevisionID( $oldid ); - if( $nextid ) { + if ( $nextid ) { $oldid = $nextid; } else { $this->mRedirectUrl = $this->mTitle->getFullURL( 'redirect=no' ); } - } elseif( $wgRequest->getVal( 'direction' ) == 'prev' ) { + } elseif ( $wgRequest->getVal( 'direction' ) == 'prev' ) { $previd = $this->mTitle->getPreviousRevisionID( $oldid ); - if( $previd ) { + if ( $previd ) { $oldid = $previd; } } } - if( !$oldid ) { + if ( !$oldid ) { $oldid = 0; } return $oldid; @@ -333,7 +333,7 @@ class Article { * Load the revision (including text) into this object */ function loadContent() { - if( $this->mContentLoaded ) return; + if ( $this->mContentLoaded ) return; wfProfileIn( __METHOD__ ); # Query variables :P $oldid = $this->getOldID(); @@ -400,13 +400,13 @@ class Article { * @param $data Database row object or "fromdb" */ public function loadPageData( $data = 'fromdb' ) { - if( $data === 'fromdb' ) { + if ( $data === 'fromdb' ) { $dbr = wfGetDB( DB_MASTER ); $data = $this->pageDataFromId( $dbr, $this->getId() ); } $lc = LinkCache::singleton(); - if( $data ) { + if ( $data ) { $lc->addGoodLinkObj( $data->page_id, $this->mTitle, $data->page_len, $data->page_is_redirect ); $this->mTitle->mArticleID = intval( $data->page_id ); @@ -419,7 +419,7 @@ class Article { $this->mIsRedirect = intval( $data->page_is_redirect ); $this->mLatest = intval( $data->page_latest ); } else { - if( is_object( $this->mTitle ) ) { + if ( is_object( $this->mTitle ) ) { $lc->addBadLinkObj( $this->mTitle ); } $this->mTitle->mArticleID = 0; @@ -435,7 +435,7 @@ class Article { * @return string */ function fetchContent( $oldid = 0 ) { - if( $this->mContentLoaded ) { + if ( $this->mContentLoaded ) { return $this->mContent; } @@ -447,31 +447,31 @@ class Article { $d = $oldid ? wfMsgExt( 'missingarticle-rev', array( 'escape' ), $oldid ) : ''; $this->mContent = wfMsgNoTrans( 'missing-article', $t, $d ) ; - if( $oldid ) { + if ( $oldid ) { $revision = Revision::newFromId( $oldid ); - if( is_null( $revision ) ) { - wfDebug( __METHOD__." failed to retrieve specified revision, id $oldid\n" ); + if ( is_null( $revision ) ) { + wfDebug( __METHOD__ . " failed to retrieve specified revision, id $oldid\n" ); return false; } $data = $this->pageDataFromId( $dbr, $revision->getPage() ); - if( !$data ) { - wfDebug( __METHOD__." failed to get page data linked to revision id $oldid\n" ); + if ( !$data ) { + wfDebug( __METHOD__ . " failed to get page data linked to revision id $oldid\n" ); return false; } $this->mTitle = Title::makeTitle( $data->page_namespace, $data->page_title ); $this->loadPageData( $data ); } else { - if( !$this->mDataLoaded ) { + if ( !$this->mDataLoaded ) { $data = $this->pageDataFromTitle( $dbr, $this->mTitle ); - if( !$data ) { - wfDebug( __METHOD__." failed to find page data for title " . $this->mTitle->getPrefixedText() . "\n" ); + if ( !$data ) { + wfDebug( __METHOD__ . " failed to find page data for title " . $this->mTitle->getPrefixedText() . "\n" ); return false; } $this->loadPageData( $data ); } $revision = Revision::newFromId( $this->mLatest ); - if( is_null( $revision ) ) { - wfDebug( __METHOD__." failed to retrieve current page, rev_id {$this->mLatest}\n" ); + if ( is_null( $revision ) ) { + wfDebug( __METHOD__ . " failed to retrieve current page, rev_id {$this->mLatest}\n" ); return false; } } @@ -522,8 +522,8 @@ class Article { * @return Array: options */ protected function getSelectOptions( $options = '' ) { - if( $this->mForUpdate ) { - if( is_array( $options ) ) { + if ( $this->mForUpdate ) { + if ( is_array( $options ) ) { $options[] = 'FOR UPDATE'; } else { $options = 'FOR UPDATE'; @@ -536,7 +536,7 @@ class Article { * @return int Page ID */ public function getID() { - if( $this->mTitle ) { + if ( $this->mTitle ) { return $this->mTitle->getArticleID(); } else { return 0; @@ -566,9 +566,9 @@ class Article { * @return int The view count for the page */ public function getCount() { - if( -1 == $this->mCounter ) { + if ( -1 == $this->mCounter ) { $id = $this->getID(); - if( $id == 0 ) { + if ( $id == 0 ) { $this->mCounter = 0; } else { $dbr = wfGetDB( DB_SLAVE ); @@ -594,7 +594,7 @@ class Article { global $wgUseCommaCount; $token = $wgUseCommaCount ? ',' : '[['; - return $this->mTitle->isContentPage() && !$this->isRedirect($text) && in_string($token,$text); + return $this->mTitle->isContentPage() && !$this->isRedirect( $text ) && in_string( $token, $text ); } /** @@ -604,8 +604,8 @@ class Article { * @return bool */ public function isRedirect( $text = false ) { - if( $text === false ) { - if( $this->mDataLoaded ) { + if ( $text === false ) { + if ( $this->mDataLoaded ) { return $this->mIsRedirect; } // Apparently loadPageData was never called @@ -624,10 +624,10 @@ class Article { */ public function isCurrent() { # If no oldid, this is the current version. - if( $this->getOldID() == 0 ) { + if ( $this->getOldID() == 0 ) { return true; } - return $this->exists() && isset($this->mRevision) && $this->mRevision->isCurrent(); + return $this->exists() && isset( $this->mRevision ) && $this->mRevision->isCurrent(); } /** @@ -635,15 +635,15 @@ class Article { * This isn't necessary for all uses, so it's only done if needed. */ protected function loadLastEdit() { - if( -1 != $this->mUser ) + if ( -1 != $this->mUser ) return; # New or non-existent articles have no user information $id = $this->getID(); - if( 0 == $id ) return; + if ( 0 == $id ) return; $this->mLastRevision = Revision::loadFromPageId( wfGetDB( DB_MASTER ), $id ); - if( !is_null( $this->mLastRevision ) ) { + if ( !is_null( $this->mLastRevision ) ) { $this->mUser = $this->mLastRevision->getUser(); $this->mUserText = $this->mLastRevision->getUserText(); $this->mTimestamp = $this->mLastRevision->getTimestamp(); @@ -655,10 +655,10 @@ class Article { public function getTimestamp() { // Check if the field has been filled by ParserCache::get() - if( !$this->mTimestamp ) { + if ( !$this->mTimestamp ) { $this->loadLastEdit(); } - return wfTimestamp(TS_MW, $this->mTimestamp); + return wfTimestamp( TS_MW, $this->mTimestamp ); } public function getUser() { @@ -691,7 +691,7 @@ class Article { * @param $limit Integer: default 0. * @param $offset Integer: default 0. */ - public function getContributors($limit = 0, $offset = 0) { + public function getContributors( $limit = 0, $offset = 0 ) { # XXX: this is expensive; cache this info somewhere. $dbr = wfGetDB( DB_SLAVE ); @@ -749,19 +749,19 @@ class Article { } # Try client and file cache - if( $oldid === 0 && $this->checkTouched() ) { + if ( $oldid === 0 && $this->checkTouched() ) { global $wgUseETag; - if( $wgUseETag ) { + if ( $wgUseETag ) { $wgOut->setETag( $parserCache->getETag( $this, $parserOptions ) ); } # Is is client cached? - if( $wgOut->checkLastModified( $this->getTouched() ) ) { - wfDebug( __METHOD__.": done 304\n" ); + if ( $wgOut->checkLastModified( $this->getTouched() ) ) { + wfDebug( __METHOD__ . ": done 304\n" ); wfProfileOut( __METHOD__ ); return; # Try file cache - } else if( $wgUseFileCache && $this->tryFileCache() ) { - wfDebug( __METHOD__.": done file cache\n" ); + } else if ( $wgUseFileCache && $this->tryFileCache() ) { + wfDebug( __METHOD__ . ": done file cache\n" ); # tell wgOut that output is taken care of $wgOut->disable(); $this->viewUpdates(); @@ -773,9 +773,9 @@ class Article { $sk = $wgUser->getSkin(); # getOldID may want us to redirect somewhere else - if( $this->mRedirectUrl ) { + if ( $this->mRedirectUrl ) { $wgOut->redirect( $this->mRedirectUrl ); - wfDebug( __METHOD__.": redirecting due to oldid\n" ); + wfDebug( __METHOD__ . ": redirecting due to oldid\n" ); wfProfileOut( __METHOD__ ); return; } @@ -785,8 +785,8 @@ class Article { $wgOut->setPageTitle( $this->mTitle->getPrefixedText() ); # If we got diff in the query, we want to see a diff page instead of the article. - if( !is_null( $wgRequest->getVal( 'diff' ) ) ) { - wfDebug( __METHOD__.": showing diff page\n" ); + if ( !is_null( $wgRequest->getVal( 'diff' ) ) ) { + wfDebug( __METHOD__ . ": showing diff page\n" ); $this->showDiffPage(); wfProfileOut( __METHOD__ ); return; @@ -794,16 +794,16 @@ class Article { # Should the parser cache be used? $useParserCache = $this->useParserCache( $oldid ); - wfDebug( 'Article::view using parser cache: ' . ($useParserCache ? 'yes' : 'no' ) . "\n" ); - if( $wgUser->getOption( 'stubthreshold' ) ) { + wfDebug( 'Article::view using parser cache: ' . ( $useParserCache ? 'yes' : 'no' ) . "\n" ); + if ( $wgUser->getOption( 'stubthreshold' ) ) { wfIncrStats( 'pcache_miss_stub' ); } # For the main page, overwrite the element with the con- # tents of 'pagetitle-view-mainpage' instead of the default (if # that's not empty). - if( $this->mTitle->equals( Title::newMainPage() ) - && ($m=wfMsgForContent( 'pagetitle-view-mainpage' )) !== '' ) + if ( $this->mTitle->equals( Title::newMainPage() ) + && ( $m = wfMsgForContent( 'pagetitle-view-mainpage' ) ) !== '' ) { $wgOut->setHTMLTitle( $m ); } @@ -815,18 +815,18 @@ class Article { # Keep going until $outputDone is set, or we run out of things to do. $pass = 0; $outputDone = false; - while( !$outputDone && ++$pass ){ - switch( $pass ){ + while ( !$outputDone && ++$pass ) { + switch( $pass ) { case 1: wfRunHooks( 'ArticleViewHeader', array( &$this, &$outputDone, &$useParserCache ) ); break; case 2: # Try the parser cache - if( $useParserCache ) { + if ( $useParserCache ) { $this->mParserOutput = $parserCache->get( $this, $parserOptions ); if ( $this->mParserOutput !== false ) { - wfDebug( __METHOD__.": showing parser cache contents\n" ); + wfDebug( __METHOD__ . ": showing parser cache contents\n" ); $wgOut->addParserOutput( $this->mParserOutput ); # Ensure that UI elements requiring revision ID have # the correct version information. @@ -838,16 +838,16 @@ class Article { case 3: $text = $this->getContent(); - if( $text === false || $this->getID() == 0 ) { - wfDebug( __METHOD__.": showing missing article\n" ); + if ( $text === false || $this->getID() == 0 ) { + wfDebug( __METHOD__ . ": showing missing article\n" ); $this->showMissingArticle(); wfProfileOut( __METHOD__ ); return; } # Another whitelist check in case oldid is altering the title - if( !$this->mTitle->userCanRead() ) { - wfDebug( __METHOD__.": denied on secondary read check\n" ); + if ( !$this->mTitle->userCanRead() ) { + wfDebug( __METHOD__ . ": denied on secondary read check\n" ); $wgOut->loginToUse(); $wgOut->output(); $wgOut->disable(); @@ -856,10 +856,10 @@ class Article { } # Are we looking at an old revision - if( $oldid && !is_null( $this->mRevision ) ) { + if ( $oldid && !is_null( $this->mRevision ) ) { $this->setOldSubtitle( $oldid ); if ( !$this->showDeletedRevisionHeader() ) { - wfDebug( __METHOD__.": cannot view deleted revision\n" ); + wfDebug( __METHOD__ . ": cannot view deleted revision\n" ); wfProfileOut( __METHOD__ ); return; } @@ -867,7 +867,7 @@ class Article { if ( $oldid === $this->getLatest() && $this->useParserCache( false ) ) { $this->mParserOutput = $parserCache->get( $this, $parserOptions ); if ( $this->mParserOutput ) { - wfDebug( __METHOD__.": showing parser cache for current rev permalink\n" ); + wfDebug( __METHOD__ . ": showing parser cache for current rev permalink\n" ); $wgOut->addParserOutput( $this->mParserOutput ); $wgOut->setRevisionId( $this->mLatest ); $this->showViewFooter(); @@ -883,12 +883,12 @@ class Article { $wgOut->setRevisionId( $this->getRevIdFetched() ); # Pages containing custom CSS or JavaScript get special treatment - if( $this->mTitle->isCssOrJsPage() || $this->mTitle->isCssJsSubpage() ) { - wfDebug( __METHOD__.": showing CSS/JS source\n" ); + if ( $this->mTitle->isCssOrJsPage() || $this->mTitle->isCssJsSubpage() ) { + wfDebug( __METHOD__ . ": showing CSS/JS source\n" ); $this->showCssOrJsPage(); $outputDone = true; - } else if( $rt = Title::newFromRedirectArray( $text ) ) { - wfDebug( __METHOD__.": showing redirect=no page\n" ); + } else if ( $rt = Title::newFromRedirectArray( $text ) ) { + wfDebug( __METHOD__ . ": showing redirect=no page\n" ); # Viewing a redirect page (e.g. with parameter redirect=no) # Don't append the subtitle if this was an old revision $wgOut->addHTML( $this->viewRedirect( $rt, !$wasRedirected && $this->isCurrent() ) ); @@ -901,7 +901,7 @@ class Article { case 4: # Run the parse, protected by a pool counter - wfDebug( __METHOD__.": doing uncached parse\n" ); + wfDebug( __METHOD__ . ": doing uncached parse\n" ); $key = $parserCache->getKey( $this, $parserOptions ); $poolCounter = PoolCounter::factory( 'Article::view', $key ); $dirtyCallback = $useParserCache ? array( $this, 'tryDirtyCache' ) : false; @@ -945,7 +945,7 @@ class Article { $rcid = $wgRequest->getVal( 'rcid' ); $diffOnly = $wgRequest->getBool( 'diffonly', $wgUser->getOption( 'diffonly' ) ); $purge = $wgRequest->getVal( 'action' ) == 'purge'; - $unhide = $wgRequest->getInt('unhide') == 1; + $unhide = $wgRequest->getInt( 'unhide' ) == 1; $oldid = $this->getOldID(); $de = new DifferenceEngine( $this->mTitle, $oldid, $diff, $rcid, $purge, $unhide ); @@ -955,7 +955,7 @@ class Article { // Needed to get the page's current revision $this->loadPageData(); - if( $diff == 0 || $diff == $this->mLatest ) { + if ( $diff == 0 || $diff == $this->mLatest ) { # Run view updates for current revision only $this->viewUpdates(); } @@ -972,7 +972,7 @@ class Article { global $wgOut; $wgOut->addHTML( wfMsgExt( 'clearyourcache', 'parse' ) ); // Give hooks a chance to customise the output - if( wfRunHooks( 'ShowRawCssJs', array( $this->mContent, $this->mTitle, $wgOut ) ) ) { + if ( wfRunHooks( 'ShowRawCssJs', array( $this->mContent, $this->mTitle, $wgOut ) ) ) { // Wrap the whole lot in a <pre> and don't parse $m = array(); preg_match( '!\.(css|js)$!u', $this->mTitle->getText(), $m ); @@ -1000,32 +1000,32 @@ class Article { * @return Array the policy that should be set * TODO: actions other than 'view' */ - public function getRobotPolicy( $action ){ + public function getRobotPolicy( $action ) { global $wgOut, $wgArticleRobotPolicies, $wgNamespaceRobotPolicies; global $wgDefaultRobotPolicy, $wgRequest; $ns = $this->mTitle->getNamespace(); - if( $ns == NS_USER || $ns == NS_USER_TALK ) { + if ( $ns == NS_USER || $ns == NS_USER_TALK ) { # Don't index user and user talk pages for blocked users (bug 11443) - if( !$this->mTitle->isSubpage() ) { + if ( !$this->mTitle->isSubpage() ) { $block = new Block(); - if( $block->load( $this->mTitle->getText() ) ) { + if ( $block->load( $this->mTitle->getText() ) ) { return array( 'index' => 'noindex', 'follow' => 'nofollow' ); } } } - if( $this->getID() === 0 || $this->getOldID() ) { + if ( $this->getID() === 0 || $this->getOldID() ) { # Non-articles (special pages etc), and old revisions return array( 'index' => 'noindex', 'follow' => 'nofollow' ); - } elseif( $wgOut->isPrintable() ) { + } elseif ( $wgOut->isPrintable() ) { # Discourage indexing of printable versions, but encourage following return array( 'index' => 'noindex', 'follow' => 'follow' ); - } elseif( $wgRequest->getInt('curid') ) { + } elseif ( $wgRequest->getInt( 'curid' ) ) { # For ?curid=x urls, disallow indexing return array( 'index' => 'noindex', 'follow' => 'follow' ); @@ -1034,19 +1034,19 @@ class Article { # Otherwise, construct the policy based on the various config variables. $policy = self::formatRobotPolicy( $wgDefaultRobotPolicy ); - if( isset( $wgNamespaceRobotPolicies[$ns] ) ){ + if ( isset( $wgNamespaceRobotPolicies[$ns] ) ) { # Honour customised robot policies for this namespace $policy = array_merge( $policy, self::formatRobotPolicy( $wgNamespaceRobotPolicies[$ns] ) ); } - if( $this->mTitle->canUseNoindex() && is_object( $this->mParserOutput ) && $this->mParserOutput->getIndexPolicy() ){ + if ( $this->mTitle->canUseNoindex() && is_object( $this->mParserOutput ) && $this->mParserOutput->getIndexPolicy() ) { # __INDEX__ and __NOINDEX__ magic words, if allowed. Incorporates # a final sanity check that we have really got the parser output. $policy = array_merge( $policy, array( 'index' => $this->mParserOutput->getIndexPolicy() ) ); } - if( isset( $wgArticleRobotPolicies[$this->mTitle->getPrefixedText()] ) ){ + if ( isset( $wgArticleRobotPolicies[$this->mTitle->getPrefixedText()] ) ) { # (bug 14900) site config can override user-defined __INDEX__ or __NOINDEX__ $policy = array_merge( $policy, self::formatRobotPolicy( $wgArticleRobotPolicies[$this->mTitle->getPrefixedText()] ) ); @@ -1063,10 +1063,10 @@ class Article { * to already-converted arrays, converts String. * @return associative Array: 'index' => <indexpolicy>, 'follow' => <followpolicy> */ - public static function formatRobotPolicy( $policy ){ - if( is_array( $policy ) ){ + public static function formatRobotPolicy( $policy ) { + if ( is_array( $policy ) ) { return $policy; - } elseif( !$policy ){ + } elseif ( !$policy ) { return array(); } @@ -1074,10 +1074,10 @@ class Article { $policy = array_map( 'trim', $policy ); $arr = array(); - foreach( $policy as $var ){ - if( in_array( $var, array('index','noindex') ) ){ + foreach ( $policy as $var ) { + if ( in_array( $var, array( 'index', 'noindex' ) ) ) { $arr['index'] = $var; - } elseif( in_array( $var, array('follow','nofollow') ) ){ + } elseif ( in_array( $var, array( 'follow', 'nofollow' ) ) ) { $arr['follow'] = $var; } } @@ -1094,10 +1094,10 @@ class Article { $rdfrom = $wgRequest->getVal( 'rdfrom' ); $sk = $wgUser->getSkin(); - if( isset( $this->mRedirectedFrom ) ) { + if ( isset( $this->mRedirectedFrom ) ) { // This is an internally redirected page view. // We'll need a backlink to the source page for navigation. - if( wfRunHooks( 'ArticleViewRedirect', array( &$this ) ) ) { + if ( wfRunHooks( 'ArticleViewRedirect', array( &$this ) ) ) { $redir = $sk->link( $this->mRedirectedFrom, null, @@ -1109,7 +1109,7 @@ class Article { $wgOut->setSubtitle( $s ); // Set the fragment if one was specified in the redirect - if( strval( $this->mTitle->getFragment() ) != '' ) { + if ( strval( $this->mTitle->getFragment() ) != '' ) { $fragment = Xml::escapeJsString( $this->mTitle->getFragmentForURL() ); $wgOut->addInlineScript( "redirectToFragment(\"$fragment\");" ); } @@ -1120,10 +1120,10 @@ class Article { ); return true; } - } elseif( $rdfrom ) { + } elseif ( $rdfrom ) { // This is an externally redirected view, from some other wiki. // If it was reported from a trusted site, supply a backlink. - if( $wgRedirectSources && preg_match( $wgRedirectSources, $rdfrom ) ) { + if ( $wgRedirectSources && preg_match( $wgRedirectSources, $rdfrom ) ) { $redir = $sk->makeExternalLink( $rdfrom, $rdfrom ); $s = wfMsgExt( 'redirectedfrom', array( 'parseinline', 'replaceafter' ), $redir ); $wgOut->setSubtitle( $s ); @@ -1139,7 +1139,7 @@ class Article { */ public function showNamespaceHeader() { global $wgOut; - if( $this->mTitle->isTalkPage() ) { + if ( $this->mTitle->isTalkPage() ) { $msg = wfMsgNoTrans( 'talkpageheader' ); if ( $msg !== '-' && !wfEmptyMsg( 'talkpageheader', $msg ) ) { $wgOut->wrapWikiMsg( "<div class=\"mw-talkpageheader\">\n$1</div>", array( 'talkpageheader' ) ); @@ -1153,8 +1153,8 @@ class Article { public function showViewFooter() { global $wgOut, $wgUseTrackbacks, $wgRequest; # check if we're displaying a [[User talk:x.x.x.x]] anonymous talk page - if( $this->mTitle->getNamespace() == NS_USER_TALK && IP::isValid( $this->mTitle->getText() ) ) { - $wgOut->addWikiMsg('anontalkpagetext'); + if ( $this->mTitle->getNamespace() == NS_USER_TALK && IP::isValid( $this->mTitle->getText() ) ) { + $wgOut->addWikiMsg( 'anontalkpagetext' ); } # If we have been passed an &rcid= parameter, we want to give the user a @@ -1162,7 +1162,7 @@ class Article { $this->showPatrolFooter(); # Trackbacks - if( $wgUseTrackbacks ) { + if ( $wgUseTrackbacks ) { $this->addTrackbacks(); } } @@ -1176,7 +1176,7 @@ class Article { global $wgOut, $wgRequest, $wgUser; $rcid = $wgRequest->getVal( 'rcid' ); - if( !$rcid || !$this->mTitle->exists() || !$this->mTitle->quickUserCan( 'patrol' ) ) { + if ( !$rcid || !$this->mTitle->exists() || !$this->mTitle->quickUserCan( 'patrol' ) ) { return; } @@ -1217,7 +1217,7 @@ class Article { if ( $id == 0 && !$ip ) { # User does not exist $wgOut->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n\$1</div>", array( 'userpage-userdoesnotexist-view', $rootPart ) ); - } else if (User::newFromId($id)->isBlocked()) { # Show log extract if the user is currently blocked + } else if ( User::newFromId( $id )->isBlocked() ) { # Show log extract if the user is currently blocked LogEventsList::showLogExtract( $wgOut, 'block', @@ -1245,7 +1245,7 @@ class Article { # Show error message $oldid = $this->getOldID(); - if( $oldid ) { + if ( $oldid ) { $text = wfMsgNoTrans( 'missing-article', $this->mTitle->getPrefixedText(), wfMsgNoTrans( 'missingarticle-rev', $oldid ) ); @@ -1257,13 +1257,13 @@ class Article { $editErrors = $this->mTitle->getUserPermissionsErrors( 'edit', $wgUser ); $errors = array_merge( $createErrors, $editErrors ); - if ( !count($errors) ) + if ( !count( $errors ) ) $text = wfMsgNoTrans( 'noarticletext' ); else $text = wfMsgNoTrans( 'noarticletext-nopermission' ); } $text = "<div class='noarticletext'>\n$text\n</div>"; - if( !$this->hasViewableContent() ) { + if ( !$this->hasViewableContent() ) { // If there's no backing content, send a 404 Not Found // for better machine handling of broken links. $wgRequest->response()->header( "HTTP/1.x 404 Not Found" ); @@ -1278,24 +1278,24 @@ class Article { */ public function showDeletedRevisionHeader() { global $wgOut, $wgRequest; - if( !$this->mRevision->isDeleted( Revision::DELETED_TEXT ) ) { + if ( !$this->mRevision->isDeleted( Revision::DELETED_TEXT ) ) { // Not deleted return true; } // If the user is not allowed to see it... - if( !$this->mRevision->userCan(Revision::DELETED_TEXT) ) { + if ( !$this->mRevision->userCan( Revision::DELETED_TEXT ) ) { $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", 'rev-deleted-text-permission' ); return false; // If the user needs to confirm that they want to see it... - } else if( $wgRequest->getInt('unhide') != 1 ) { + } else if ( $wgRequest->getInt( 'unhide' ) != 1 ) { # Give explanation and add a link to view the revision... $oldid = intval( $this->getOldID() ); $link = $this->mTitle->getFullUrl( "oldid={$oldid}&unhide=1" ); $msg = $this->mRevision->isDeleted( Revision::DELETED_RESTRICTED ) ? 'rev-suppressed-text-unhide' : 'rev-deleted-text-unhide'; $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1</div>\n", - array($msg,$link) ); + array( $msg, $link ) ); return false; // We are allowed to see... } else { @@ -1349,7 +1349,7 @@ class Article { $options->setIsPrintable( $wgOut->isPrintable() ); $output = $parserCache->getDirty( $this, $options ); if ( $output ) { - wfDebug( __METHOD__.": sending dirty output\n" ); + wfDebug( __METHOD__ . ": sending dirty output\n" ); wfDebugLog( 'dirty', "dirty output " . $parserCache->getKey( $this, $options ) . "\n" ); $wgOut->setSquidMaxage( 0 ); $this->mParserOutput = $output; @@ -1358,7 +1358,7 @@ class Article { return true; } else { wfDebugLog( 'dirty', "dirty missing\n" ); - wfDebug( __METHOD__.": no dirty cache\n" ); + wfDebug( __METHOD__ . ": no dirty cache\n" ); return false; } } @@ -1388,7 +1388,7 @@ class Article { public function viewRedirect( $target, $appendSubtitle = true, $forceKnown = false ) { global $wgOut, $wgContLang, $wgStylePath, $wgUser; # Display redirect - if( !is_array( $target ) ) { + if ( !is_array( $target ) ) { $target = array( $target ); } $imageDir = $wgContLang->getDir(); @@ -1396,13 +1396,13 @@ class Article { $imageUrl2 = $wgStylePath . '/common/images/nextredirect' . $imageDir . '.png'; $alt2 = $wgContLang->isRTL() ? '←' : '→'; // should -> and <- be used instead of entities? - if( $appendSubtitle ) { + if ( $appendSubtitle ) { $wgOut->appendSubtitle( wfMsgHtml( 'redirectpagesub' ) ); } $sk = $wgUser->getSkin(); // the loop prepends the arrow image before the link, so the first case needs to be outside $title = array_shift( $target ); - if( $forceKnown ) { + if ( $forceKnown ) { $link = $sk->link( $title, htmlspecialchars( $title->getFullText() ), @@ -1414,9 +1414,9 @@ class Article { $link = $sk->link( $title, htmlspecialchars( $title->getFullText() ) ); } // automatically append redirect=no to each link, since most of them are redirect pages themselves - foreach( $target as $rt ) { - if( $forceKnown ) { - $link .= '<img src="'.$imageUrl2.'" alt="'.$alt2.' " />' + foreach ( $target as $rt ) { + if ( $forceKnown ) { + $link .= '<img src="' . $imageUrl2 . '" alt="' . $alt2 . ' " />' . $sk->link( $rt, htmlspecialchars( $rt->getFullText() ), @@ -1425,12 +1425,12 @@ class Article { array( 'known', 'noclasses' ) ); } else { - $link .= '<img src="'.$imageUrl2.'" alt="'.$alt2.' " />' + $link .= '<img src="' . $imageUrl2 . '" alt="' . $alt2 . ' " />' . $sk->link( $rt, htmlspecialchars( $rt->getFullText() ) ); } } - return '<img src="'.$imageUrl.'" alt="#REDIRECT " />' . - '<span class="redirectText">'.$link.'</span>'; + return '<img src="' . $imageUrl . '" alt="#REDIRECT " />' . + '<span class="redirectText">' . $link . '</span>'; } @@ -1438,26 +1438,26 @@ class Article { global $wgOut, $wgUser; $dbr = wfGetDB( DB_SLAVE ); $tbs = $dbr->select( 'trackbacks', - array('tb_id', 'tb_title', 'tb_url', 'tb_ex', 'tb_name'), - array('tb_page' => $this->getID() ) + array( 'tb_id', 'tb_title', 'tb_url', 'tb_ex', 'tb_name' ), + array( 'tb_page' => $this->getID() ) ); - if( !$dbr->numRows($tbs) ) return; + if ( !$dbr->numRows( $tbs ) ) return; $tbtext = ""; - while( $o = $dbr->fetchObject($tbs) ) { + while ( $o = $dbr->fetchObject( $tbs ) ) { $rmvtxt = ""; - if( $wgUser->isAllowed( 'trackback' ) ) { - $delurl = $this->mTitle->getFullURL("action=deletetrackback&tbid=" . + if ( $wgUser->isAllowed( 'trackback' ) ) { + $delurl = $this->mTitle->getFullURL( "action=deletetrackback&tbid=" . $o->tb_id . "&token=" . urlencode( $wgUser->editToken() ) ); $rmvtxt = wfMsg( 'trackbackremove', htmlspecialchars( $delurl ) ); } $tbtext .= "\n"; - $tbtext .= wfMsg(strlen($o->tb_ex) ? 'trackbackexcerpt' : 'trackback', + $tbtext .= wfMsg( strlen( $o->tb_ex ) ? 'trackbackexcerpt' : 'trackback', $o->tb_title, $o->tb_url, $o->tb_ex, $o->tb_name, - $rmvtxt); + $rmvtxt ); } $wgOut->wrapWikiMsg( "<div id='mw_trackbacks'>$1</div>\n", array( 'trackbackbox', $tbtext ) ); $this->mTitle->invalidateCache(); @@ -1465,19 +1465,19 @@ class Article { public function deletetrackback() { global $wgUser, $wgRequest, $wgOut; - if( !$wgUser->matchEditToken($wgRequest->getVal('token')) ) { + if ( !$wgUser->matchEditToken( $wgRequest->getVal( 'token' ) ) ) { $wgOut->addWikiMsg( 'sessionfailure' ); return; } $permission_errors = $this->mTitle->getUserPermissionsErrors( 'delete', $wgUser ); - if( count($permission_errors) ) { + if ( count( $permission_errors ) ) { $wgOut->showPermissionsErrorPage( $permission_errors ); return; } $db = wfGetDB( DB_MASTER ); - $db->delete( 'trackbacks', array('tb_id' => $wgRequest->getInt('tbid')) ); + $db->delete( 'trackbacks', array( 'tb_id' => $wgRequest->getInt( 'tbid' ) ) ); $wgOut->addWikiMsg( 'trackbackdeleteok' ); $this->mTitle->invalidateCache(); @@ -1485,7 +1485,7 @@ class Article { public function render() { global $wgOut; - $wgOut->setArticleBodyOnly(true); + $wgOut->setArticleBodyOnly( true ); $this->view(); } @@ -1494,19 +1494,19 @@ class Article { */ public function purge() { global $wgUser, $wgRequest, $wgOut; - if( $wgUser->isAllowed( 'purge' ) || $wgRequest->wasPosted() ) { - if( wfRunHooks( 'ArticlePurge', array( &$this ) ) ) { + if ( $wgUser->isAllowed( 'purge' ) || $wgRequest->wasPosted() ) { + if ( wfRunHooks( 'ArticlePurge', array( &$this ) ) ) { $this->doPurge(); $this->view(); } } else { $action = htmlspecialchars( $wgRequest->getRequestURL() ); - $button = wfMsgExt( 'confirm_purge_button', array('escapenoentities') ); + $button = wfMsgExt( 'confirm_purge_button', array( 'escapenoentities' ) ); $form = "<form method=\"post\" action=\"$action\">\n" . "<input type=\"submit\" name=\"submit\" value=\"$button\" />\n" . "</form>\n"; - $top = wfMsgExt( 'confirm-purge-top', array('parse') ); - $bottom = wfMsgExt( 'confirm-purge-bottom', array('parse') ); + $top = wfMsgExt( 'confirm-purge-top', array( 'parse' ) ); + $bottom = wfMsgExt( 'confirm-purge-bottom', array( 'parse' ) ); $wgOut->setPageTitle( $this->mTitle->getPrefixedText() ); $wgOut->setRobotPolicy( 'noindex,nofollow' ); $wgOut->addHTML( $top . $form . $bottom ); @@ -1521,7 +1521,7 @@ class Article { // Invalidate the cache $this->mTitle->invalidateCache(); - if( $wgUseSquid ) { + if ( $wgUseSquid ) { // Commit the transaction before the purge is sent $dbw = wfGetDB( DB_MASTER ); $dbw->commit(); @@ -1530,9 +1530,9 @@ class Article { $update = SquidUpdate::newSimplePurge( $this->mTitle ); $update->doUpdate(); } - if( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) { + if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) { global $wgMessageCache; - if( $this->getID() == 0 ) { + if ( $this->getID() == 0 ) { $text = false; } else { $text = $this->getRawText(); @@ -1571,7 +1571,7 @@ class Article { ), __METHOD__, 'IGNORE' ); $affected = $dbw->affectedRows(); - if( $affected ) { + if ( $affected ) { $newid = $dbw->insertId(); $this->mTitle->resetArticleId( $newid ); } @@ -1601,7 +1601,7 @@ class Article { $rt = Title::newFromRedirect( $text ); $conditions = array( 'page_id' => $this->getId() ); - if( !is_null( $lastRevision ) ) { + if ( !is_null( $lastRevision ) ) { # An extra check against threads stepping on each other $conditions['page_latest'] = $lastRevision; } @@ -1610,7 +1610,7 @@ class Article { array( /* SET */ 'page_latest' => $revision->getId(), 'page_touched' => $dbw->timestamp(), - 'page_is_new' => ($lastRevision === 0) ? 1 : 0, + 'page_is_new' => ( $lastRevision === 0 ) ? 1 : 0, 'page_is_redirect' => $rt !== null ? 1 : 0, 'page_len' => strlen( $text ), ), @@ -1618,7 +1618,7 @@ class Article { __METHOD__ ); $result = $dbw->affectedRows() != 0; - if( $result ) { + if ( $result ) { $this->updateRedirectOn( $dbw, $rt, $lastRevIsRedirect ); } @@ -1641,10 +1641,10 @@ class Article { // Always update redirects (target link might have changed) // Update/Insert if we don't know if the last revision was a redirect or not // Delete if changing from redirect to non-redirect - $isRedirect = !is_null($redirectTitle); - if($isRedirect || is_null($lastRevIsRedirect) || $lastRevIsRedirect !== $isRedirect) { + $isRedirect = !is_null( $redirectTitle ); + if ( $isRedirect || is_null( $lastRevIsRedirect ) || $lastRevIsRedirect !== $isRedirect ) { wfProfileIn( __METHOD__ ); - if( $isRedirect ) { + if ( $isRedirect ) { // This title is a redirect, Add/Update row in the redirect table $set = array( /* SET */ 'rd_namespace' => $redirectTitle->getNamespace(), @@ -1655,9 +1655,9 @@ class Article { } else { // This is not a redirect, remove row from redirect table $where = array( 'rd_from' => $this->getId() ); - $dbw->delete( 'redirect', $where, __METHOD__); + $dbw->delete( 'redirect', $where, __METHOD__ ); } - if( $this->getTitle()->getNamespace() == NS_FILE ) { + if ( $this->getTitle()->getNamespace() == NS_FILE ) { RepoGroup::singleton()->getLocalRepo()->invalidateImageRedirect( $this->getTitle() ); } wfProfileOut( __METHOD__ ); @@ -1682,8 +1682,8 @@ class Article { 'page_id' => $this->getId(), 'page_latest=rev_id' ), __METHOD__ ); - if( $row ) { - if( wfTimestamp(TS_MW, $row->rev_timestamp) >= $revision->getTimestamp() ) { + if ( $row ) { + if ( wfTimestamp( TS_MW, $row->rev_timestamp ) >= $revision->getTimestamp() ) { wfProfileOut( __METHOD__ ); return false; } @@ -1705,25 +1705,25 @@ class Article { */ public function replaceSection( $section, $text, $summary = '', $edittime = null ) { wfProfileIn( __METHOD__ ); - if( strval( $section ) == '' ) { + if ( strval( $section ) == '' ) { // Whole-page edit; let the whole text through } else { - if( is_null($edittime) ) { + if ( is_null( $edittime ) ) { $rev = Revision::newFromTitle( $this->mTitle ); } else { $dbw = wfGetDB( DB_MASTER ); $rev = Revision::loadFromTimestamp( $dbw, $this->mTitle, $edittime ); } - if( !$rev ) { + if ( !$rev ) { wfDebug( "Article::replaceSection asked for bogus section (page: " . $this->getId() . "; section: $section; edittime: $edittime)\n" ); return null; } $oldtext = $rev->getText(); - if( $section == 'new' ) { + if ( $section == 'new' ) { # Inserting a new section - $subject = $summary ? wfMsgForContent('newsectionheaderdefaultlevel',$summary) . "\n\n" : ''; + $subject = $summary ? wfMsgForContent( 'newsectionheaderdefaultlevel', $summary ) . "\n\n" : ''; $text = strlen( trim( $oldtext ) ) > 0 ? "{$oldtext}\n\n{$subject}{$text}" : "{$subject}{$text}"; @@ -1741,28 +1741,28 @@ class Article { * This function is not deprecated until somebody fixes the core not to use * it. Nevertheless, use Article::doEdit() instead. */ - function insertNewArticle( $text, $summary, $isminor, $watchthis, $suppressRC=false, $comment=false, $bot=false ) { + function insertNewArticle( $text, $summary, $isminor, $watchthis, $suppressRC = false, $comment = false, $bot = false ) { $flags = EDIT_NEW | EDIT_DEFER_UPDATES | EDIT_AUTOSUMMARY | ( $isminor ? EDIT_MINOR : 0 ) | ( $suppressRC ? EDIT_SUPPRESS_RC : 0 ) | ( $bot ? EDIT_FORCE_BOT : 0 ); # If this is a comment, add the summary as headline - if( $comment && $summary != "" ) { - $text = wfMsgForContent('newsectionheaderdefaultlevel',$summary) . "\n\n".$text; + if ( $comment && $summary != "" ) { + $text = wfMsgForContent( 'newsectionheaderdefaultlevel', $summary ) . "\n\n" . $text; } $this->doEdit( $text, $summary, $flags ); $dbw = wfGetDB( DB_MASTER ); - if($watchthis) { - if(!$this->mTitle->userIsWatching()) { + if ( $watchthis ) { + if ( !$this->mTitle->userIsWatching() ) { $dbw->begin(); $this->doWatch(); $dbw->commit(); } } else { - if( $this->mTitle->userIsWatching() ) { + if ( $this->mTitle->userIsWatching() ) { $dbw->begin(); $this->doUnwatch(); $dbw->commit(); @@ -1780,19 +1780,19 @@ class Article { ( $forceBot ? EDIT_FORCE_BOT : 0 ); $status = $this->doEdit( $text, $summary, $flags ); - if( !$status->isOK() ) { + if ( !$status->isOK() ) { return false; } $dbw = wfGetDB( DB_MASTER ); - if( $watchthis ) { - if(!$this->mTitle->userIsWatching()) { + if ( $watchthis ) { + if ( !$this->mTitle->userIsWatching() ) { $dbw->begin(); $this->doWatch(); $dbw->commit(); } } else { - if( $this->mTitle->userIsWatching() ) { + if ( $this->mTitle->userIsWatching() ) { $dbw->begin(); $this->doUnwatch(); $dbw->commit(); @@ -1860,47 +1860,47 @@ class Article { global $wgUser, $wgDBtransactions, $wgUseAutomaticEditSummaries; # Low-level sanity check - if( $this->mTitle->getText() == '' ) { + if ( $this->mTitle->getText() == '' ) { throw new MWException( 'Something is trying to edit an article with an empty title' ); } wfProfileIn( __METHOD__ ); - $user = is_null($user) ? $wgUser : $user; + $user = is_null( $user ) ? $wgUser : $user; $status = Status::newGood( array() ); # Load $this->mTitle->getArticleID() and $this->mLatest if it's not already $this->loadPageData(); - if( !($flags & EDIT_NEW) && !($flags & EDIT_UPDATE) ) { + if ( !( $flags & EDIT_NEW ) && !( $flags & EDIT_UPDATE ) ) { $aid = $this->mTitle->getArticleID(); - if( $aid ) { + if ( $aid ) { $flags |= EDIT_UPDATE; } else { $flags |= EDIT_NEW; } } - if( !wfRunHooks( 'ArticleSave', array( &$this, &$user, &$text, &$summary, + if ( !wfRunHooks( 'ArticleSave', array( &$this, &$user, &$text, &$summary, $flags & EDIT_MINOR, null, null, &$flags, &$status ) ) ) { wfDebug( __METHOD__ . ": ArticleSave hook aborted save!\n" ); wfProfileOut( __METHOD__ ); - if( $status->isOK() ) { - $status->fatal( 'edit-hook-aborted'); + if ( $status->isOK() ) { + $status->fatal( 'edit-hook-aborted' ); } return $status; } # Silently ignore EDIT_MINOR if not allowed - $isminor = ( $flags & EDIT_MINOR ) && $user->isAllowed('minoredit'); + $isminor = ( $flags & EDIT_MINOR ) && $user->isAllowed( 'minoredit' ); $bot = $flags & EDIT_FORCE_BOT; $oldtext = $this->getRawText(); // current revision $oldsize = strlen( $oldtext ); # Provide autosummaries if one is not provided and autosummaries are enabled. - if( $wgUseAutomaticEditSummaries && $flags & EDIT_AUTOSUMMARY && $summary == '' ) { + if ( $wgUseAutomaticEditSummaries && $flags & EDIT_AUTOSUMMARY && $summary == '' ) { $summary = $this->getAutosummary( $oldtext, $text, $flags ); } @@ -1910,13 +1910,13 @@ class Article { $dbw = wfGetDB( DB_MASTER ); $now = wfTimestampNow(); - $this->mTimestamp=$now; + $this->mTimestamp = $now; - if( $flags & EDIT_UPDATE ) { + if ( $flags & EDIT_UPDATE ) { # Update article, but only if changed. $status->value['new'] = false; # Make sure the revision is either completely inserted or not inserted at all - if( !$wgDBtransactions ) { + if ( !$wgDBtransactions ) { $userAbort = ignore_user_abort( true ); } @@ -1924,14 +1924,14 @@ class Article { $changed = ( strcmp( $text, $oldtext ) != 0 ); - if( $changed ) { + if ( $changed ) { $this->mGoodAdjustment = (int)$this->isCountable( $text ) - (int)$this->isCountable( $oldtext ); $this->mTotalAdjustment = 0; - if( !$this->mLatest ) { + if ( !$this->mLatest ) { # Article gone missing - wfDebug( __METHOD__.": EDIT_UPDATE specified but article doesn't exist\n" ); + wfDebug( __METHOD__ . ": EDIT_UPDATE specified but article doesn't exist\n" ); $status->fatal( 'edit-gone-missing' ); wfProfileOut( __METHOD__ ); return $status; @@ -1959,29 +1959,29 @@ class Article { # creates a window where concurrent edits can cause an ignored edit conflict. $ok = $this->updateRevisionOn( $dbw, $revision, $this->mLatest ); - if( !$ok ) { + if ( !$ok ) { /* Belated edit conflict! Run away!! */ $status->fatal( 'edit-conflict' ); # Delete the invalid revision if the DB is not transactional - if( !$wgDBtransactions ) { + if ( !$wgDBtransactions ) { $dbw->delete( 'revision', array( 'rev_id' => $revisionId ), __METHOD__ ); } $revisionId = 0; $dbw->rollback(); } else { global $wgUseRCPatrol; - wfRunHooks( 'NewRevisionFromEditComplete', array($this, $revision, $baseRevId, $user) ); + wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, $baseRevId, $user ) ); # Update recentchanges - if( !( $flags & EDIT_SUPPRESS_RC ) ) { + if ( !( $flags & EDIT_SUPPRESS_RC ) ) { # Mark as patrolled if the user can do so - $patrolled = $wgUseRCPatrol && $this->mTitle->userCan('autopatrol'); + $patrolled = $wgUseRCPatrol && $this->mTitle->userCan( 'autopatrol' ); # Add RC row to the DB $rc = RecentChange::notifyEdit( $now, $this->mTitle, $isminor, $user, $summary, $this->mLatest, $this->getTimestamp(), $bot, '', $oldsize, $newsize, $revisionId, $patrolled ); # Log auto-patrolled edits - if( $patrolled ) { + if ( $patrolled ) { PatrolLog::record( $rc, true ); } } @@ -1998,11 +1998,11 @@ class Article { $this->mTitle->invalidateCache(); } - if( !$wgDBtransactions ) { + if ( !$wgDBtransactions ) { ignore_user_abort( $userAbort ); } // Now that ignore_user_abort is restored, we can respond to fatal errors - if( !$status->isOK() ) { + if ( !$status->isOK() ) { wfProfileOut( __METHOD__ ); return $status; } @@ -2028,7 +2028,7 @@ class Article { # This will return false if the article already exists $newid = $this->insertOn( $dbw ); - if( $newid === false ) { + if ( $newid === false ) { $dbw->rollback(); $status->fatal( 'edit-already-exists' ); wfProfileOut( __METHOD__ ); @@ -2051,17 +2051,17 @@ class Article { # Update the page record with revision data $this->updateRevisionOn( $dbw, $revision, 0 ); - wfRunHooks( 'NewRevisionFromEditComplete', array($this, $revision, false, $user) ); + wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, false, $user ) ); # Update recentchanges - if( !( $flags & EDIT_SUPPRESS_RC ) ) { + if ( !( $flags & EDIT_SUPPRESS_RC ) ) { global $wgUseRCPatrol, $wgUseNPPatrol; # Mark as patrolled if the user can do so - $patrolled = ($wgUseRCPatrol || $wgUseNPPatrol) && $this->mTitle->userCan('autopatrol'); + $patrolled = ( $wgUseRCPatrol || $wgUseNPPatrol ) && $this->mTitle->userCan( 'autopatrol' ); # Add RC row to the DB $rc = RecentChange::notifyNew( $now, $this->mTitle, $isminor, $user, $summary, $bot, - '', strlen($text), $revisionId, $patrolled ); + '', strlen( $text ), $revisionId, $patrolled ); # Log auto-patrolled edits - if( $patrolled ) { + if ( $patrolled ) { PatrolLog::record( $rc, true ); } } @@ -2079,7 +2079,7 @@ class Article { } # Do updates right now unless deferral was requested - if( !( $flags & EDIT_DEFER_UPDATES ) ) { + if ( !( $flags & EDIT_DEFER_UPDATES ) ) { wfDoUpdates(); } @@ -2111,9 +2111,9 @@ class Article { */ public function doRedirect( $noRedir = false, $sectionAnchor = '', $extraQuery = '' ) { global $wgOut; - if( $noRedir ) { + if ( $noRedir ) { $query = 'redirect=no'; - if( $extraQuery ) + if ( $extraQuery ) $query .= "&$query"; } else { $query = $extraQuery; @@ -2129,38 +2129,38 @@ class Article { $wgOut->setRobotPolicy( 'noindex,nofollow' ); # If we haven't been given an rc_id value, we can't do anything - $rcid = (int) $wgRequest->getVal('rcid'); - $rc = RecentChange::newFromId($rcid); - if( is_null($rc) ) { + $rcid = (int) $wgRequest->getVal( 'rcid' ); + $rc = RecentChange::newFromId( $rcid ); + if ( is_null( $rc ) ) { $wgOut->showErrorPage( 'markedaspatrollederror', 'markedaspatrollederrortext' ); return; } - #It would be nice to see where the user had actually come from, but for now just guess + # It would be nice to see where the user had actually come from, but for now just guess $returnto = $rc->getAttribute( 'rc_type' ) == RC_NEW ? 'Newpages' : 'Recentchanges'; $return = SpecialPage::getTitleFor( $returnto ); $dbw = wfGetDB( DB_MASTER ); $errors = $rc->doMarkPatrolled(); - if( in_array(array('rcpatroldisabled'), $errors) ) { + if ( in_array( array( 'rcpatroldisabled' ), $errors ) ) { $wgOut->showErrorPage( 'rcpatroldisabled', 'rcpatroldisabledtext' ); return; } - if( in_array(array('hookaborted'), $errors) ) { + if ( in_array( array( 'hookaborted' ), $errors ) ) { // The hook itself has handled any output return; } - if( in_array(array('markedaspatrollederror-noautopatrol'), $errors) ) { + if ( in_array( array( 'markedaspatrollederror-noautopatrol' ), $errors ) ) { $wgOut->setPageTitle( wfMsg( 'markedaspatrollederror' ) ); $wgOut->addWikiMsg( 'markedaspatrollederror-noautopatrol' ); $wgOut->returnToMain( false, $return ); return; } - if( !empty($errors) ) { + if ( !empty( $errors ) ) { $wgOut->showPermissionsErrorPage( $errors ); return; } @@ -2176,15 +2176,15 @@ class Article { */ public function watch() { global $wgUser, $wgOut; - if( $wgUser->isAnon() ) { + if ( $wgUser->isAnon() ) { $wgOut->showErrorPage( 'watchnologin', 'watchnologintext' ); return; } - if( wfReadOnly() ) { + if ( wfReadOnly() ) { $wgOut->readOnlyPage(); return; } - if( $this->doWatch() ) { + if ( $this->doWatch() ) { $wgOut->setPagetitle( wfMsg( 'addedwatch' ) ); $wgOut->setRobotPolicy( 'noindex,nofollow' ); $wgOut->addWikiMsg( 'addedwatchtext', $this->mTitle->getPrefixedText() ); @@ -2198,12 +2198,12 @@ class Article { */ public function doWatch() { global $wgUser; - if( $wgUser->isAnon() ) { + if ( $wgUser->isAnon() ) { return false; } - if( wfRunHooks('WatchArticle', array(&$wgUser, &$this)) ) { + if ( wfRunHooks( 'WatchArticle', array( &$wgUser, &$this ) ) ) { $wgUser->addWatch( $this->mTitle ); - return wfRunHooks('WatchArticleComplete', array(&$wgUser, &$this)); + return wfRunHooks( 'WatchArticleComplete', array( &$wgUser, &$this ) ); } return false; } @@ -2213,15 +2213,15 @@ class Article { */ public function unwatch() { global $wgUser, $wgOut; - if( $wgUser->isAnon() ) { + if ( $wgUser->isAnon() ) { $wgOut->showErrorPage( 'watchnologin', 'watchnologintext' ); return; } - if( wfReadOnly() ) { + if ( wfReadOnly() ) { $wgOut->readOnlyPage(); return; } - if( $this->doUnwatch() ) { + if ( $this->doUnwatch() ) { $wgOut->setPagetitle( wfMsg( 'removedwatch' ) ); $wgOut->setRobotPolicy( 'noindex,nofollow' ); $wgOut->addWikiMsg( 'removedwatchtext', $this->mTitle->getPrefixedText() ); @@ -2235,12 +2235,12 @@ class Article { */ public function doUnwatch() { global $wgUser; - if( $wgUser->isAnon() ) { + if ( $wgUser->isAnon() ) { return false; } - if( wfRunHooks('UnwatchArticle', array(&$wgUser, &$this)) ) { + if ( wfRunHooks( 'UnwatchArticle', array( &$wgUser, &$this ) ) ) { $wgUser->removeWatch( $this->mTitle ); - return wfRunHooks('UnwatchArticleComplete', array(&$wgUser, &$this)); + return wfRunHooks( 'UnwatchArticleComplete', array( &$wgUser, &$this ) ); } return false; } @@ -2290,7 +2290,7 @@ class Article { return false; } - if( !$cascade ) { + if ( !$cascade ) { $cascade = false; } @@ -2302,17 +2302,17 @@ class Article { $current = array(); $updated = Article::flattenRestrictions( $limit ); $changed = false; - foreach( $restrictionTypes as $action ) { - if( isset( $expiry[$action] ) ) { + foreach ( $restrictionTypes as $action ) { + if ( isset( $expiry[$action] ) ) { # Get current restrictions on $action $aLimits = $this->mTitle->getRestrictions( $action ); $current[$action] = implode( '', $aLimits ); # Are any actual restrictions being dealt with here? - $aRChanged = count($aLimits) || !empty($limit[$action]); + $aRChanged = count( $aLimits ) || !empty( $limit[$action] ); # If something changed, we need to log it. Checking $aRChanged # assures that "unprotecting" a page that is not protected does # not log just because the expiry was "changed". - if( $aRChanged && $this->mTitle->mRestrictionsExpiry[$action] != $expiry[$action] ) { + if ( $aRChanged && $this->mTitle->mRestrictionsExpiry[$action] != $expiry[$action] ) { $changed = true; } } @@ -2320,19 +2320,19 @@ class Article { $current = Article::flattenRestrictions( $current ); - $changed = ($changed || $current != $updated ); - $changed = $changed || ($updated && $this->mTitle->areRestrictionsCascading() != $cascade); + $changed = ( $changed || $current != $updated ); + $changed = $changed || ( $updated && $this->mTitle->areRestrictionsCascading() != $cascade ); $protect = ( $updated != '' ); # If nothing's changed, do nothing - if( $changed ) { - if( wfRunHooks( 'ArticleProtect', array( &$this, &$wgUser, $limit, $reason ) ) ) { + if ( $changed ) { + if ( wfRunHooks( 'ArticleProtect', array( &$this, &$wgUser, $limit, $reason ) ) ) { $dbw = wfGetDB( DB_MASTER ); # Prepare a null revision to be added to the history $modified = $current != '' && $protect; - if( $protect ) { + if ( $protect ) { $comment_type = $modified ? 'modifiedarticleprotection' : 'protectedarticle'; } else { $comment_type = 'unprotectedarticle'; @@ -2343,27 +2343,27 @@ class Article { # Otherwise, people who cannot normally protect can "protect" pages via transclusion $editrestriction = isset( $limit['edit'] ) ? array( $limit['edit'] ) : $this->mTitle->getRestrictions( 'edit' ); # The schema allows multiple restrictions - if(!in_array('protect', $editrestriction) && !in_array('sysop', $editrestriction)) + if ( !in_array( 'protect', $editrestriction ) && !in_array( 'sysop', $editrestriction ) ) $cascade = false; $cascade_description = ''; - if( $cascade ) { - $cascade_description = ' ['.wfMsgForContent('protect-summary-cascade').']'; + if ( $cascade ) { + $cascade_description = ' [' . wfMsgForContent( 'protect-summary-cascade' ) . ']'; } - if( $reason ) + if ( $reason ) $comment .= ": $reason"; $editComment = $comment; $encodedExpiry = array(); $protect_description = ''; - foreach( $limit as $action => $restrictions ) { - if ( !isset($expiry[$action]) ) + foreach ( $limit as $action => $restrictions ) { + if ( !isset( $expiry[$action] ) ) $expiry[$action] = 'infinite'; - $encodedExpiry[$action] = Block::encodeExpiry($expiry[$action], $dbw ); - if( $restrictions != '' ) { + $encodedExpiry[$action] = Block::encodeExpiry( $expiry[$action], $dbw ); + if ( $restrictions != '' ) { $protect_description .= "[$action=$restrictions] ("; - if( $encodedExpiry[$action] != 'infinity' ) { + if ( $encodedExpiry[$action] != 'infinity' ) { $protect_description .= wfMsgForContent( 'protect-expiring', $wgContLang->timeanddate( $expiry[$action], false, false ) , $wgContLang->date( $expiry[$action], false, false ) , @@ -2374,20 +2374,20 @@ class Article { $protect_description .= ') '; } } - $protect_description = trim($protect_description); + $protect_description = trim( $protect_description ); - if( $protect_description && $protect ) + if ( $protect_description && $protect ) $editComment .= " ($protect_description)"; - if( $cascade ) + if ( $cascade ) $editComment .= "$cascade_description"; # Update restrictions table - foreach( $limit as $action => $restrictions ) { - if($restrictions != '' ) { - $dbw->replace( 'page_restrictions', array(array('pr_page', 'pr_type')), + foreach ( $limit as $action => $restrictions ) { + if ( $restrictions != '' ) { + $dbw->replace( 'page_restrictions', array( array( 'pr_page', 'pr_type' ) ), array( 'pr_page' => $id, 'pr_type' => $action, 'pr_level' => $restrictions, - 'pr_cascade' => ($cascade && $action == 'edit') ? 1 : 0, + 'pr_cascade' => ( $cascade && $action == 'edit' ) ? 1 : 0, 'pr_expiry' => $encodedExpiry[$action] ), __METHOD__ ); } else { $dbw->delete( 'page_restrictions', array( 'pr_page' => $id, @@ -2411,14 +2411,14 @@ class Article { ), 'Article::protect' ); - wfRunHooks( 'NewRevisionFromEditComplete', array($this, $nullRevision, $latest, $wgUser) ); + wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $nullRevision, $latest, $wgUser ) ); wfRunHooks( 'ArticleProtectComplete', array( &$this, &$wgUser, $limit, $reason ) ); # Update the protection log $log = new LogPage( 'protect' ); - if( $protect ) { - $params = array($protect_description,$cascade ? 'cascade' : ''); - $log->addEntry( $modified ? 'modify' : 'protect', $this->mTitle, trim( $reason), $params ); + if ( $protect ) { + $params = array( $protect_description, $cascade ? 'cascade' : '' ); + $log->addEntry( $modified ? 'modify' : 'protect', $this->mTitle, trim( $reason ), $params ); } else { $log->addEntry( 'unprotect', $this->mTitle, $reason ); } @@ -2436,13 +2436,13 @@ class Article { * @return String */ protected static function flattenRestrictions( $limit ) { - if( !is_array( $limit ) ) { + if ( !is_array( $limit ) ) { throw new MWException( 'Article::flattenRestrictions given non-array restriction set' ); } $bits = array(); ksort( $limit ); - foreach( $limit as $action => $restrictions ) { - if( $restrictions != '' ) { + foreach ( $limit as $action => $restrictions ) { + if ( $restrictions != '' ) { $bits[] = "$action=$restrictions"; } } @@ -2458,7 +2458,7 @@ class Article { $dbw = wfGetDB( DB_MASTER ); // Get the last revision $rev = Revision::newFromTitle( $this->mTitle ); - if( is_null( $rev ) ) + if ( is_null( $rev ) ) return false; // Get the article's contents @@ -2466,9 +2466,9 @@ class Article { $blank = false; // If the page is blank, use the text from the previous revision, // which can only be blank if there's a move/import/protect dummy revision involved - if( $contents == '' ) { + if ( $contents == '' ) { $prev = $rev->getPrevious(); - if( $prev ) { + if ( $prev ) { $contents = $prev->getText(); $blank = true; } @@ -2477,11 +2477,11 @@ class Article { // Find out if there was only one contributor // Only scan the last 20 revisions $res = $dbw->select( 'revision', 'rev_user_text', - array( 'rev_page' => $this->getID(), $dbw->bitAnd('rev_deleted', Revision::DELETED_USER) . ' = 0' ), + array( 'rev_page' => $this->getID(), $dbw->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' ), __METHOD__, array( 'LIMIT' => 20 ) ); - if( $res === false ) + if ( $res === false ) // This page has no revisions, which is very weird return false; @@ -2489,8 +2489,8 @@ class Article { $row = $dbw->fetchObject( $res ); $onlyAuthor = $row->rev_user_text; // Try to find a second contributor - foreach( $res as $row ) { - if( $row->rev_user_text != $onlyAuthor ) { + foreach ( $res as $row ) { + if ( $row->rev_user_text != $onlyAuthor ) { $onlyAuthor = false; break; } @@ -2498,18 +2498,18 @@ class Article { $dbw->freeResult( $res ); // Generate the summary with a '$1' placeholder - if( $blank ) { + if ( $blank ) { // The current revision is blank and the one before is also // blank. It's just not our lucky day $reason = wfMsgForContent( 'exbeforeblank', '$1' ); } else { - if( $onlyAuthor ) + if ( $onlyAuthor ) $reason = wfMsgForContent( 'excontentauthor', '$1', $onlyAuthor ); else $reason = wfMsgForContent( 'excontent', '$1' ); } - if( $reason == '-' ) { + if ( $reason == '-' ) { // Allow these UI messages to be blanked out cleanly return ''; } @@ -2518,7 +2518,7 @@ class Article { $contents = preg_replace( "/[\n\r]/", ' ', $contents ); // Calculate the maximum amount of chars to get // Max content length = max comment length - length of the comment (excl. $1) - '...' - $maxLength = 255 - (strlen( $reason ) - 2) - 3; + $maxLength = 255 - ( strlen( $reason ) - 2 ) - 3; $contents = $wgContLang->truncate( $contents, $maxLength ); // Remove possible unfinished links $contents = preg_replace( '/\[\[([^\]]*)\]?$/', '$1', $contents ); @@ -2542,10 +2542,10 @@ class Article { $reason = $this->DeleteReasonList; - if( $reason != 'other' && $this->DeleteReason != '' ) { + if ( $reason != 'other' && $this->DeleteReason != '' ) { // Entry from drop down menu + additional comment $reason .= wfMsgForContent( 'colon-separator' ) . $this->DeleteReason; - } elseif( $reason == 'other' ) { + } elseif ( $reason == 'other' ) { $reason = $this->DeleteReason; } # Flag to hide all contents of the archived revisions @@ -2554,7 +2554,7 @@ class Article { # This code desperately needs to be totally rewritten # Read-only check... - if( wfReadOnly() ) { + if ( wfReadOnly() ) { $wgOut->readOnlyPage(); return; } @@ -2562,7 +2562,7 @@ class Article { # Check permissions $permission_errors = $this->mTitle->getUserPermissionsErrors( 'delete', $wgUser ); - if( count( $permission_errors ) > 0 ) { + if ( count( $permission_errors ) > 0 ) { $wgOut->showPermissionsErrorPage( $permission_errors ); return; } @@ -2573,7 +2573,7 @@ class Article { $dbw = wfGetDB( DB_MASTER ); $conds = $this->mTitle->pageCond(); $latest = $dbw->selectField( 'page', 'page_latest', $conds, __METHOD__ ); - if( $latest === false ) { + if ( $latest === false ) { $wgOut->showFatalError( Html::rawElement( 'div', @@ -2592,18 +2592,18 @@ class Article { # Hack for big sites $bigHistory = $this->isBigDeletion(); - if( $bigHistory && !$this->mTitle->userCan( 'bigdelete' ) ) { + if ( $bigHistory && !$this->mTitle->userCan( 'bigdelete' ) ) { global $wgLang, $wgDeleteRevisionsLimit; $wgOut->wrapWikiMsg( "<div class='error'>\n$1</div>\n", array( 'delete-toobig', $wgLang->formatNum( $wgDeleteRevisionsLimit ) ) ); return; } - if( $confirm ) { + if ( $confirm ) { $this->doDelete( $reason, $suppress ); - if( $wgRequest->getCheck( 'wpWatch' ) && $wgUser->isLoggedIn() ) { + if ( $wgRequest->getCheck( 'wpWatch' ) && $wgUser->isLoggedIn() ) { $this->doWatch(); - } elseif( $this->mTitle->userIsWatching() ) { + } elseif ( $this->mTitle->userIsWatching() ) { $this->doUnwatch(); } return; @@ -2611,10 +2611,10 @@ class Article { // Generate deletion reason $hasHistory = false; - if( !$reason ) $reason = $this->generateReason($hasHistory); + if ( !$reason ) $reason = $this->generateReason( $hasHistory ); // If the page has a history, insert a warning - if( $hasHistory && !$confirm ) { + if ( $hasHistory && !$confirm ) { global $wgLang; $skin = $wgUser->getSkin(); $revisions = $this->estimateRevisionCount(); @@ -2623,7 +2623,7 @@ class Article { wfMsgHtml( 'word-separator' ) . $skin->historyLink() . '</strong>' ); - if( $bigHistory ) { + if ( $bigHistory ) { global $wgDeleteRevisionsLimit; $wgOut->wrapWikiMsg( "<div class='error'>\n$1</div>\n", array( 'delete-warning-toobig', $wgLang->formatNum( $wgDeleteRevisionsLimit ) ) ); @@ -2638,7 +2638,7 @@ class Article { */ public function isBigDeletion() { global $wgDeleteRevisionsLimit; - if( $wgDeleteRevisionsLimit ) { + if ( $wgDeleteRevisionsLimit ) { $revCount = $this->estimateRevisionCount(); return $revCount > $wgDeleteRevisionsLimit; } @@ -2651,7 +2651,7 @@ class Article { public function estimateRevisionCount() { $dbr = wfGetDB( DB_SLAVE ); // For an exact count... - //return $dbr->selectField( 'revision', 'COUNT(*)', + // return $dbr->selectField( 'revision', 'COUNT(*)', // array( 'rev_page' => $this->getId() ), __METHOD__ ); return $dbr->estimateRowCount( 'revision', '*', array( 'rev_page' => $this->getId() ), __METHOD__ ); @@ -2681,12 +2681,12 @@ class Article { 'LIMIT' => $num ) ) ); - if( !$res ) { + if ( !$res ) { wfProfileOut( __METHOD__ ); return array(); } $row = $db->fetchObject( $res ); - if( $continue == 2 && $revLatest && $row->rev_id != $revLatest ) { + if ( $continue == 2 && $revLatest && $row->rev_id != $revLatest ) { $db = wfGetDB( DB_MASTER ); $continue--; } else { @@ -2724,7 +2724,7 @@ class Article { wfRunHooks( 'ArticleConfirmDelete', array( $this, $wgOut, &$reason ) ); - if( $wgUser->isAllowed( 'suppressrevision' ) ) { + if ( $wgUser->isAllowed( 'suppressrevision' ) ) { $suppress = "<tr id=\"wpDeleteSuppressRow\" name=\"wpDeleteSuppressRow\"> <td></td> <td class='mw-input'><strong>" . @@ -2767,7 +2767,7 @@ class Article { "</td> </tr>"; # Dissalow watching is user is not logged in - if( $wgUser->isLoggedIn() ) { + if ( $wgUser->isLoggedIn() ) { $form .= " <tr> <td></td> @@ -2791,7 +2791,7 @@ class Article { Xml::hidden( 'wpEditToken', $wgUser->editToken() ) . Xml::closeElement( 'form' ); - if( $wgUser->isAllowed( 'editinterface' ) ) { + if ( $wgUser->isAllowed( 'editinterface' ) ) { $skin = $wgUser->getSkin(); $title = Title::makeTitle( NS_MEDIAWIKI, 'Deletereason-dropdown' ); $link = $skin->link( @@ -2820,8 +2820,8 @@ class Article { $id = $this->mTitle->getArticleID( GAID_FOR_UPDATE ); $error = ''; - if( wfRunHooks('ArticleDelete', array(&$this, &$wgUser, &$reason, &$error)) ) { - if( $this->doDeleteArticle( $reason, $suppress, $id ) ) { + if ( wfRunHooks( 'ArticleDelete', array( &$this, &$wgUser, &$reason, &$error ) ) ) { + if ( $this->doDeleteArticle( $reason, $suppress, $id ) ) { $deleted = $this->mTitle->getPrefixedText(); $wgOut->setPagetitle( wfMsg( 'actioncomplete' ) ); @@ -2831,10 +2831,10 @@ class Article { $wgOut->addWikiMsg( 'deletedtext', $deleted, $loglink ); $wgOut->returnToMain( false ); - wfRunHooks('ArticleDeleteComplete', array(&$this, &$wgUser, $reason, $id)); + wfRunHooks( 'ArticleDeleteComplete', array( &$this, &$wgUser, $reason, $id ) ); } } else { - if( $error == '' ) { + if ( $error == '' ) { $wgOut->showFatalError( Html::rawElement( 'div', @@ -2863,22 +2863,22 @@ class Article { global $wgUseSquid, $wgDeferredUpdateList; global $wgUseTrackbacks; - wfDebug( __METHOD__."\n" ); + wfDebug( __METHOD__ . "\n" ); $dbw = wfGetDB( DB_MASTER ); $ns = $this->mTitle->getNamespace(); $t = $this->mTitle->getDBkey(); $id = $id ? $id : $this->mTitle->getArticleID( GAID_FOR_UPDATE ); - if( $t == '' || $id == 0 ) { + if ( $t == '' || $id == 0 ) { return false; } - $u = new SiteStatsUpdate( 0, 1, -(int)$this->isCountable( $this->getRawText() ), -1 ); + $u = new SiteStatsUpdate( 0, 1, - (int)$this->isCountable( $this->getRawText() ), -1 ); array_push( $wgDeferredUpdateList, $u ); // Bitfields to further suppress the content - if( $suppress ) { + if ( $suppress ) { $bitfield = 0; // This should be 15... $bitfield |= Revision::DELETED_TEXT; @@ -2926,9 +2926,9 @@ class Article { $dbw->delete( 'page_restrictions', array ( 'pr_page' => $id ), __METHOD__ ); # Now that it's safely backed up, delete it - $dbw->delete( 'page', array( 'page_id' => $id ), __METHOD__); + $dbw->delete( 'page', array( 'page_id' => $id ), __METHOD__ ); $ok = ( $dbw->affectedRows() > 0 ); // getArticleId() uses slave, could be laggy - if( !$ok ) { + if ( !$ok ) { $dbw->rollback(); return false; } @@ -2936,16 +2936,16 @@ class Article { # Fix category table counts $cats = array(); $res = $dbw->select( 'categorylinks', 'cl_to', array( 'cl_from' => $id ), __METHOD__ ); - foreach( $res as $row ) { - $cats []= $row->cl_to; + foreach ( $res as $row ) { + $cats [] = $row->cl_to; } $this->updateCategoryCounts( array(), $cats ); # If using cascading deletes, we can skip some explicit deletes - if( !$dbw->cascadingDeletes() ) { + if ( !$dbw->cascadingDeletes() ) { $dbw->delete( 'revision', array( 'rev_page' => $id ), __METHOD__ ); - if($wgUseTrackbacks) + if ( $wgUseTrackbacks ) $dbw->delete( 'trackbacks', array( 'tb_page' => $id ), __METHOD__ ); # Delete outgoing links @@ -2959,15 +2959,15 @@ class Article { } # If using cleanup triggers, we can skip some manual deletes - if( !$dbw->cleanupTriggers() ) { + if ( !$dbw->cleanupTriggers() ) { # Clean up recentchanges entries... $dbw->delete( 'recentchanges', - array( 'rc_type != '.RC_LOG, + array( 'rc_type != ' . RC_LOG, 'rc_namespace' => $this->mTitle->getNamespace(), 'rc_title' => $this->mTitle->getDBkey() ), __METHOD__ ); $dbw->delete( 'recentchanges', - array( 'rc_type != '.RC_LOG, 'rc_cur_id' => $id ), + array( 'rc_type != ' . RC_LOG, 'rc_cur_id' => $id ), __METHOD__ ); } @@ -3019,17 +3019,17 @@ class Article { $rollbackErrors = $this->mTitle->getUserPermissionsErrors( 'rollback', $wgUser ); $errors = array_merge( $editErrors, wfArrayDiff2( $rollbackErrors, $editErrors ) ); - if( !$wgUser->matchEditToken( $token, array( $this->mTitle->getPrefixedText(), $fromP ) ) ) + if ( !$wgUser->matchEditToken( $token, array( $this->mTitle->getPrefixedText(), $fromP ) ) ) $errors[] = array( 'sessionfailure' ); - if( $wgUser->pingLimiter( 'rollback' ) || $wgUser->pingLimiter() ) { + if ( $wgUser->pingLimiter( 'rollback' ) || $wgUser->pingLimiter() ) { $errors[] = array( 'actionthrottledtext' ); } # If there were errors, bail out now - if( !empty( $errors ) ) + if ( !empty( $errors ) ) return $errors; - return $this->commitRollback($fromP, $summary, $bot, $resultDetails); + return $this->commitRollback( $fromP, $summary, $bot, $resultDetails ); } /** @@ -3041,31 +3041,31 @@ class Article { * ly if you want to use custom permissions checks. If you don't, use * doRollback() instead. */ - public function commitRollback($fromP, $summary, $bot, &$resultDetails) { + public function commitRollback( $fromP, $summary, $bot, &$resultDetails ) { global $wgUseRCPatrol, $wgUser, $wgLang; $dbw = wfGetDB( DB_MASTER ); - if( wfReadOnly() ) { + if ( wfReadOnly() ) { return array( array( 'readonlytext' ) ); } # Get the last editor $current = Revision::newFromTitle( $this->mTitle ); - if( is_null( $current ) ) { + if ( is_null( $current ) ) { # Something wrong... no page? - return array(array('notanarticle')); + return array( array( 'notanarticle' ) ); } $from = str_replace( '_', ' ', $fromP ); # User name given should match up with the top revision. # If the user was deleted then $from should be empty. - if( $from != $current->getUserText() ) { + if ( $from != $current->getUserText() ) { $resultDetails = array( 'current' => $current ); - return array(array('alreadyrolled', - htmlspecialchars($this->mTitle->getPrefixedText()), - htmlspecialchars($fromP), - htmlspecialchars($current->getUserText()) - )); + return array( array( 'alreadyrolled', + htmlspecialchars( $this->mTitle->getPrefixedText() ), + htmlspecialchars( $fromP ), + htmlspecialchars( $current->getUserText() ) + ) ); } # Get the last edit not by this guy... @@ -3080,25 +3080,25 @@ class Article { array( 'USE INDEX' => 'page_timestamp', 'ORDER BY' => 'rev_timestamp DESC' ) ); - if( $s === false ) { + if ( $s === false ) { # No one else ever edited this page - return array(array('cantrollback')); - } else if( $s->rev_deleted & REVISION::DELETED_TEXT || $s->rev_deleted & REVISION::DELETED_USER ) { + return array( array( 'cantrollback' ) ); + } else if ( $s->rev_deleted & REVISION::DELETED_TEXT || $s->rev_deleted & REVISION::DELETED_USER ) { # Only admins can see this text - return array(array('notvisiblerev')); + return array( array( 'notvisiblerev' ) ); } $set = array(); - if( $bot && $wgUser->isAllowed('markbotedits') ) { + if ( $bot && $wgUser->isAllowed( 'markbotedits' ) ) { # Mark all reverted edits as bot $set['rc_bot'] = 1; } - if( $wgUseRCPatrol ) { + if ( $wgUseRCPatrol ) { # Mark all reverted edits as patrolled $set['rc_patrolled'] = 1; } - if( count($set) ) { + if ( count( $set ) ) { $dbw->update( 'recentchanges', $set, array( /* WHERE */ 'rc_cur_id' => $current->getPage(), @@ -3110,8 +3110,8 @@ class Article { # Generate the edit summary if necessary $target = Revision::newFromId( $s->rev_id ); - if( empty( $summary ) ) { - if( $from == '' ) { // no public user name + if ( empty( $summary ) ) { + if ( $from == '' ) { // no public user name $summary = wfMsgForContent( 'revertpage-nouser' ); } else { $summary = wfMsgForContent( 'revertpage' ); @@ -3121,22 +3121,22 @@ class Article { # Allow the custom summary to use the same args as the default message $args = array( $target->getUserText(), $from, $s->rev_id, - $wgLang->timeanddate(wfTimestamp(TS_MW, $s->rev_timestamp), true), - $current->getId(), $wgLang->timeanddate($current->getTimestamp()) + $wgLang->timeanddate( wfTimestamp( TS_MW, $s->rev_timestamp ), true ), + $current->getId(), $wgLang->timeanddate( $current->getTimestamp() ) ); $summary = wfMsgReplaceArgs( $summary, $args ); # Save $flags = EDIT_UPDATE; - if( $wgUser->isAllowed('minoredit') ) + if ( $wgUser->isAllowed( 'minoredit' ) ) $flags |= EDIT_MINOR; - if( $bot && ($wgUser->isAllowed('markbotedits') || $wgUser->isAllowed('bot')) ) + if ( $bot && ( $wgUser->isAllowed( 'markbotedits' ) || $wgUser->isAllowed( 'bot' ) ) ) $flags |= EDIT_FORCE_BOT; # Actually store the edit $status = $this->doEdit( $target->getText(), $summary, $flags, $target->getId() ); - if( !empty( $status->value['revision'] ) ) { + if ( !empty( $status->value['revision'] ) ) { $revId = $status->value['revision']->getId(); } else { $revId = false; @@ -3168,18 +3168,18 @@ class Article { $details ); - if( in_array( array( 'actionthrottledtext' ), $result ) ) { + if ( in_array( array( 'actionthrottledtext' ), $result ) ) { $wgOut->rateLimited(); return; } - if( isset( $result[0][0] ) && ( $result[0][0] == 'alreadyrolled' || $result[0][0] == 'cantrollback' ) ) { + if ( isset( $result[0][0] ) && ( $result[0][0] == 'alreadyrolled' || $result[0][0] == 'cantrollback' ) ) { $wgOut->setPageTitle( wfMsg( 'rollbackfailed' ) ); $errArray = $result[0]; $errMsg = array_shift( $errArray ); $wgOut->addWikiMsgArray( $errMsg, $errArray ); - if( isset( $details['current'] ) ){ + if ( isset( $details['current'] ) ) { $current = $details['current']; - if( $current->getComment() != '' ) { + if ( $current->getComment() != '' ) { $wgOut->addWikiMsgArray( 'editcomment', array( $wgUser->getSkin()->formatComment( $current->getComment() ) ), array( 'replaceafter' ) ); } @@ -3189,19 +3189,19 @@ class Article { # Display permissions errors before read-only message -- there's no # point in misleading the user into thinking the inability to rollback # is only temporary. - if( !empty( $result ) && $result !== array( array( 'readonlytext' ) ) ) { + if ( !empty( $result ) && $result !== array( array( 'readonlytext' ) ) ) { # array_diff is completely broken for arrays of arrays, sigh. Re- # move any 'readonlytext' error manually. $out = array(); - foreach( $result as $error ) { - if( $error != array( 'readonlytext' ) ) { - $out []= $error; + foreach ( $result as $error ) { + if ( $error != array( 'readonlytext' ) ) { + $out [] = $error; } } $wgOut->showPermissionsErrorPage( $out ); return; } - if( $result == array( array( 'readonlytext' ) ) ) { + if ( $result == array( array( 'readonlytext' ) ) ) { $wgOut->readOnlyPage(); return; } @@ -3222,7 +3222,7 @@ class Article { $wgOut->addHTML( wfMsgExt( 'rollback-success', array( 'parse', 'replaceafter' ), $old, $new ) ); $wgOut->returnToMain( false, $this->mTitle ); - if( !$wgRequest->getBool( 'hidediff', false ) && !$wgUser->getBoolOption( 'norollbackdiff', false ) ) { + if ( !$wgRequest->getBool( 'hidediff', false ) && !$wgUser->getBoolOption( 'norollbackdiff', false ) ) { $de = new DifferenceEngine( $this->mTitle, $current->getId(), $newId, false, true ); $de->showDiff( '', '' ); } @@ -3238,7 +3238,7 @@ class Article { return; } # Don't update page view counters on views from bot users (bug 14044) - if( !$wgDisableCounters && !$wgUser->isAllowed('bot') && $this->getID() ) { + if ( !$wgDisableCounters && !$wgUser->isAllowed( 'bot' ) && $this->getID() ) { Article::incViewCount( $this->getID() ); $u = new SiteStatsUpdate( 1, 0, 0 ); array_push( $wgDeferredUpdateList, $u ); @@ -3251,8 +3251,8 @@ class Article { * Prepare text which is about to be saved. * Returns a stdclass with source, pst and output members */ - public function prepareTextForEdit( $text, $revid=null ) { - if( $this->mPreparedEdit && $this->mPreparedEdit->newText == $text && $this->mPreparedEdit->revid == $revid) { + public function prepareTextForEdit( $text, $revid = null ) { + if ( $this->mPreparedEdit && $this->mPreparedEdit->newText == $text && $this->mPreparedEdit->revid == $revid ) { // Already prepared return $this->mPreparedEdit; } @@ -3289,7 +3289,7 @@ class Article { # Parse the text # Be careful not to double-PST: $text is usually already PST-ed once - if( !$this->mPreparedEdit || $this->mPreparedEdit->output->getFlag( 'vary-revision' ) ) { + if ( !$this->mPreparedEdit || $this->mPreparedEdit->output->getFlag( 'vary-revision' ) ) { wfDebug( __METHOD__ . ": No prepared edit or vary-revision is set...\n" ); $editInfo = $this->prepareTextForEdit( $text, $newid ); } else { @@ -3298,7 +3298,7 @@ class Article { } # Save it to the parser cache - if( $wgEnableParserCache ) { + if ( $wgEnableParserCache ) { $popts = $this->getParserOptions(); $parserCache = ParserCache::singleton(); $parserCache->save( $editInfo->output, $this, $popts ); @@ -3310,8 +3310,8 @@ class Article { wfRunHooks( 'ArticleEditUpdates', array( &$this, &$editInfo, $changed ) ); - if( wfRunHooks( 'ArticleEditUpdatesDeleteFromRecentchanges', array( &$this ) ) ) { - if( 0 == mt_rand( 0, 99 ) ) { + if ( wfRunHooks( 'ArticleEditUpdatesDeleteFromRecentchanges', array( &$this ) ) ) { + if ( 0 == mt_rand( 0, 99 ) ) { // Flush old entries from the `recentchanges` table; we do this on // random requests so as to avoid an increase in writes for no good reason global $wgRCMaxAge; @@ -3327,7 +3327,7 @@ class Article { $title = $this->mTitle->getPrefixedDBkey(); $shortTitle = $this->mTitle->getDBkey(); - if( 0 == $id ) { + if ( 0 == $id ) { wfProfileOut( __METHOD__ ); return; } @@ -3341,24 +3341,24 @@ class Article { # Don't do this if $changed = false otherwise some idiot can null-edit a # load of user talk pages and piss people off, nor if it's a minor edit # by a properly-flagged bot. - if( $this->mTitle->getNamespace() == NS_USER_TALK && $shortTitle != $wgUser->getTitleKey() && $changed + if ( $this->mTitle->getNamespace() == NS_USER_TALK && $shortTitle != $wgUser->getTitleKey() && $changed && !( $minoredit && $wgUser->isAllowed( 'nominornewtalk' ) ) ) { - if( wfRunHooks('ArticleEditUpdateNewTalk', array( &$this ) ) ) { + if ( wfRunHooks( 'ArticleEditUpdateNewTalk', array( &$this ) ) ) { $other = User::newFromName( $shortTitle, false ); - if( !$other ) { - wfDebug( __METHOD__.": invalid username\n" ); - } elseif( User::isIP( $shortTitle ) ) { + if ( !$other ) { + wfDebug( __METHOD__ . ": invalid username\n" ); + } elseif ( User::isIP( $shortTitle ) ) { // An anonymous user $other->setNewtalk( true ); - } elseif( $other->isLoggedIn() ) { + } elseif ( $other->isLoggedIn() ) { $other->setNewtalk( true ); } else { - wfDebug( __METHOD__. ": don't need to notify a nonexistent user\n" ); + wfDebug( __METHOD__ . ": don't need to notify a nonexistent user\n" ); } } } - if( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) { + if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) { $wgMessageCache->replace( $shortTitle, $text ); } @@ -3392,15 +3392,15 @@ class Article { public function setOldSubtitle( $oldid = 0 ) { global $wgLang, $wgOut, $wgUser, $wgRequest; - if( !wfRunHooks( 'DisplayOldSubtitle', array( &$this, &$oldid ) ) ) { + if ( !wfRunHooks( 'DisplayOldSubtitle', array( &$this, &$oldid ) ) ) { return; } - $unhide = $wgRequest->getInt('unhide') == 1 && - $wgUser->matchEditToken( $wgRequest->getVal('token'), $oldid ); + $unhide = $wgRequest->getInt( 'unhide' ) == 1 && + $wgUser->matchEditToken( $wgRequest->getVal( 'token' ), $oldid ); # Cascade unhide param in links for easy deletion browsing $extraParams = array(); - if( $wgRequest->getVal('unhide') ) { + if ( $wgRequest->getVal( 'unhide' ) ) { $extraParams['unhide'] = 1; } $revision = Revision::newFromId( $oldid ); @@ -3484,8 +3484,8 @@ class Article { $cdel = ''; // User can delete revisions or view deleted revisions... $canHide = $wgUser->isAllowed( 'deleterevision' ); - if( $canHide || ($revision->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { - if( !$revision->userCan( Revision::DELETED_RESTRICTED ) ) { + if ( $canHide || ( $revision->getVisibility() && $wgUser->isAllowed( 'deletedhistory' ) ) ) { + if ( !$revision->userCan( Revision::DELETED_RESTRICTED ) ) { $cdel = $sk->revDeleteLinkDisabled( $canHide ); // rev was hidden from Sysops } else { $query = array( @@ -3493,7 +3493,7 @@ class Article { 'target' => $this->mTitle->getPrefixedDbkey(), 'ids' => $oldid ); - $cdel = $sk->revDeleteLink( $query, $revision->isDeleted(File::DELETED_RESTRICTED), $canHide ); + $cdel = $sk->revDeleteLink( $query, $revision->isDeleted( File::DELETED_RESTRICTED ), $canHide ); } $cdel .= ' '; } @@ -3543,20 +3543,20 @@ class Article { */ protected function tryFileCache() { static $called = false; - if( $called ) { + if ( $called ) { wfDebug( "Article::tryFileCache(): called twice!?\n" ); return false; } $called = true; - if( $this->isFileCacheable() ) { + if ( $this->isFileCacheable() ) { $cache = new HTMLFileCache( $this->mTitle ); - if( $cache->isFileCacheGood( $this->mTouched ) ) { + if ( $cache->isFileCacheGood( $this->mTouched ) ) { wfDebug( "Article::tryFileCache(): about to load file\n" ); $cache->loadFromFileCache(); return true; } else { wfDebug( "Article::tryFileCache(): starting buffer\n" ); - ob_start( array(&$cache, 'saveToFileCache' ) ); + ob_start( array( &$cache, 'saveToFileCache' ) ); } } else { wfDebug( "Article::tryFileCache(): not cacheable\n" ); @@ -3570,10 +3570,10 @@ class Article { */ public function isFileCacheable() { $cacheable = false; - if( HTMLFileCache::useFileCache() ) { + if ( HTMLFileCache::useFileCache() ) { $cacheable = $this->getID() && !$this->mRedirectedFrom; // Extension may have reason to disable file caching on some pages. - if( $cacheable ) { + if ( $cacheable ) { $cacheable = wfRunHooks( 'IsFileCacheable', array( &$this ) ); } } @@ -3585,7 +3585,7 @@ class Article { * */ public function checkTouched() { - if( !$this->mDataLoaded ) { + if ( !$this->mDataLoaded ) { $this->loadPageData(); } return !$this->mIsRedirect; @@ -3596,7 +3596,7 @@ class Article { */ public function getTouched() { # Ensure that page data has been loaded - if( !$this->mDataLoaded ) { + if ( !$this->mDataLoaded ) { $this->loadPageData(); } return $this->mTouched; @@ -3606,7 +3606,7 @@ class Article { * Get the page_latest field */ public function getLatest() { - if( !$this->mDataLoaded ) { + if ( !$this->mDataLoaded ) { $this->loadPageData(); } return (int)$this->mLatest; @@ -3634,7 +3634,7 @@ class Article { $revision->insertOn( $dbw ); $this->updateRevisionOn( $dbw, $revision ); - wfRunHooks( 'NewRevisionFromEditComplete', array($this, $revision, false, $wgUser) ); + wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, false, $wgUser ) ); wfProfileOut( __METHOD__ ); } @@ -3653,7 +3653,7 @@ class Article { $hitcounterTable = $dbw->tableName( 'hitcounter' ); $acchitsTable = $dbw->tableName( 'acchits' ); - if( $wgHitcounterUpdateFreq <= 1 ) { + if ( $wgHitcounterUpdateFreq <= 1 ) { $dbw->query( "UPDATE $pageTable SET page_counter = page_counter + 1 WHERE page_id = $id" ); return; } @@ -3663,34 +3663,34 @@ class Article { $dbw->query( "INSERT INTO $hitcounterTable (hc_id) VALUES ({$id})" ); - $checkfreq = intval( $wgHitcounterUpdateFreq/25 + 1 ); - if( (rand() % $checkfreq != 0) or ($dbw->lastErrno() != 0) ){ + $checkfreq = intval( $wgHitcounterUpdateFreq / 25 + 1 ); + if ( ( rand() % $checkfreq != 0 ) or ( $dbw->lastErrno() != 0 ) ) { # Most of the time (or on SQL errors), skip row count check $dbw->ignoreErrors( $oldignore ); return; } - $res = $dbw->query("SELECT COUNT(*) as n FROM $hitcounterTable"); + $res = $dbw->query( "SELECT COUNT(*) as n FROM $hitcounterTable" ); $row = $dbw->fetchObject( $res ); $rown = intval( $row->n ); - if( $rown >= $wgHitcounterUpdateFreq ){ + if ( $rown >= $wgHitcounterUpdateFreq ) { wfProfileIn( 'Article::incViewCount-collect' ); $old_user_abort = ignore_user_abort( true ); $dbType = $dbw->getType(); $dbw->lockTables( array(), array( 'hitcounter' ), __METHOD__, false ); $tabletype = $dbType == 'mysql' ? "ENGINE=HEAP " : ''; - $dbw->query( "CREATE TEMPORARY TABLE $acchitsTable $tabletype AS ". - "SELECT hc_id,COUNT(*) AS hc_n FROM $hitcounterTable ". + $dbw->query( "CREATE TEMPORARY TABLE $acchitsTable $tabletype AS " . + "SELECT hc_id,COUNT(*) AS hc_n FROM $hitcounterTable " . 'GROUP BY hc_id', __METHOD__ ); $dbw->delete( 'hitcounter', '*', __METHOD__ ); $dbw->unlockTables( __METHOD__ ); - if( $dbType == 'mysql' ) { - $dbw->query( "UPDATE $pageTable,$acchitsTable SET page_counter=page_counter + hc_n ". + if ( $dbType == 'mysql' ) { + $dbw->query( "UPDATE $pageTable,$acchitsTable SET page_counter=page_counter + hc_n " . 'WHERE page_id = hc_id', __METHOD__ ); } else { - $dbw->query( "UPDATE $pageTable SET page_counter=page_counter + hc_n ". + $dbw->query( "UPDATE $pageTable SET page_counter=page_counter + hc_n " . "FROM $acchitsTable WHERE page_id = hc_id", __METHOD__ ); } $dbw->query( "DROP TABLE $acchitsTable", __METHOD__ ); @@ -3714,7 +3714,7 @@ class Article { */ public static function onArticleCreate( $title ) { # Update existence markers on article/talk tabs... - if( $title->isTalkPage() ) { + if ( $title->isTalkPage() ) { $other = $title->getSubjectPage(); } else { $other = $title->getTalkPage(); @@ -3730,7 +3730,7 @@ class Article { public static function onArticleDelete( $title ) { global $wgMessageCache; # Update existence markers on article/talk tabs... - if( $title->isTalkPage() ) { + if ( $title->isTalkPage() ) { $other = $title->getSubjectPage(); } else { $other = $title->getTalkPage(); @@ -3745,16 +3745,16 @@ class Article { HTMLFileCache::clearFileCache( $title ); # Messages - if( $title->getNamespace() == NS_MEDIAWIKI ) { + if ( $title->getNamespace() == NS_MEDIAWIKI ) { $wgMessageCache->replace( $title->getDBkey(), false ); } # Images - if( $title->getNamespace() == NS_FILE ) { + if ( $title->getNamespace() == NS_FILE ) { $update = new HTMLCacheUpdate( $title, 'imagelinks' ); $update->doUpdate(); } # User talk pages - if( $title->getNamespace() == NS_USER_TALK ) { + if ( $title->getNamespace() == NS_USER_TALK ) { $user = User::newFromName( $title->getText(), false ); $user->setNewtalk( false ); } @@ -3799,7 +3799,7 @@ class Article { public function info() { global $wgLang, $wgOut, $wgAllowPageInfo, $wgUser; - if( !$wgAllowPageInfo ) { + if ( !$wgAllowPageInfo ) { $wgOut->showErrorPage( 'nosuchaction', 'nosuchactiontext' ); return; } @@ -3810,9 +3810,9 @@ class Article { $wgOut->setPageTitleActionText( wfMsg( 'info_short' ) ); $wgOut->setSubtitle( wfMsgHtml( 'infosubtitle' ) ); - if( !$this->mTitle->exists() ) { + if ( !$this->mTitle->exists() ) { $wgOut->addHTML( '<div class="noarticletext">' ); - if( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) { + if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) { // This doesn't quite make sense; the user is asking for // information about the _page_, not the message... -- RC $wgOut->addHTML( htmlspecialchars( wfMsgWeirdKey( $this->mTitle->getText() ) ) ); @@ -3838,14 +3838,14 @@ class Article { $pageInfo = $this->pageCountInfo( $page ); $talkInfo = $this->pageCountInfo( $page->getTalkPage() ); - $wgOut->addHTML( "<ul><li>" . wfMsg("numwatchers", $wgLang->formatNum( $numwatchers ) ) . '</li>' ); - $wgOut->addHTML( "<li>" . wfMsg('numedits', $wgLang->formatNum( $pageInfo['edits'] ) ) . '</li>'); - if( $talkInfo ) { - $wgOut->addHTML( '<li>' . wfMsg("numtalkedits", $wgLang->formatNum( $talkInfo['edits'] ) ) . '</li>'); + $wgOut->addHTML( "<ul><li>" . wfMsg( "numwatchers", $wgLang->formatNum( $numwatchers ) ) . '</li>' ); + $wgOut->addHTML( "<li>" . wfMsg( 'numedits', $wgLang->formatNum( $pageInfo['edits'] ) ) . '</li>' ); + if ( $talkInfo ) { + $wgOut->addHTML( '<li>' . wfMsg( "numtalkedits", $wgLang->formatNum( $talkInfo['edits'] ) ) . '</li>' ); } - $wgOut->addHTML( '<li>' . wfMsg("numauthors", $wgLang->formatNum( $pageInfo['authors'] ) ) . '</li>' ); - if( $talkInfo ) { - $wgOut->addHTML( '<li>' . wfMsg('numtalkauthors', $wgLang->formatNum( $talkInfo['authors'] ) ) . '</li>' ); + $wgOut->addHTML( '<li>' . wfMsg( "numauthors", $wgLang->formatNum( $pageInfo['authors'] ) ) . '</li>' ); + if ( $talkInfo ) { + $wgOut->addHTML( '<li>' . wfMsg( 'numtalkauthors', $wgLang->formatNum( $talkInfo['authors'] ) ) . '</li>' ); } $wgOut->addHTML( '</ul>' ); } @@ -3860,7 +3860,7 @@ class Article { */ public function pageCountInfo( $title ) { $id = $title->getArticleId(); - if( $id == 0 ) { + if ( $id == 0 ) { return false; } $dbr = wfGetDB( DB_SLAVE ); @@ -3891,7 +3891,7 @@ class Article { public function getUsedTemplates() { $result = array(); $id = $this->mTitle->getArticleID(); - if( $id == 0 ) { + if ( $id == 0 ) { return array(); } $dbr = wfGetDB( DB_SLAVE ); @@ -3899,8 +3899,8 @@ class Article { array( 'tl_namespace', 'tl_title' ), array( 'tl_from' => $id ), __METHOD__ ); - if( $res !== false ) { - foreach( $res as $row ) { + if ( $res !== false ) { + foreach ( $res as $row ) { $result[] = Title::makeTitle( $row->tl_namespace, $row->tl_title ); } } @@ -3917,17 +3917,17 @@ class Article { public function getHiddenCategories() { $result = array(); $id = $this->mTitle->getArticleID(); - if( $id == 0 ) { + if ( $id == 0 ) { return array(); } $dbr = wfGetDB( DB_SLAVE ); $res = $dbr->select( array( 'categorylinks', 'page_props', 'page' ), array( 'cl_to' ), array( 'cl_from' => $id, 'pp_page=page_id', 'pp_propname' => 'hiddencat', - 'page_namespace' => NS_CATEGORY, 'page_title=cl_to'), + 'page_namespace' => NS_CATEGORY, 'page_title=cl_to' ), __METHOD__ ); - if( $res !== false ) { - foreach( $res as $row ) { + if ( $res !== false ) { + foreach ( $res as $row ) { $result[] = Title::makeTitle( NS_CATEGORY, $row->cl_to ); } } @@ -3948,24 +3948,24 @@ class Article { # Redirect autosummaries $ot = Title::newFromRedirect( $oldtext ); $rt = Title::newFromRedirect( $newtext ); - if( is_object( $rt ) && ( !is_object( $ot ) || !$rt->equals( $ot ) || $ot->getFragment() != $rt->getFragment() ) ) { + if ( is_object( $rt ) && ( !is_object( $ot ) || !$rt->equals( $ot ) || $ot->getFragment() != $rt->getFragment() ) ) { return wfMsgForContent( 'autoredircomment', $rt->getFullText() ); } # New page autosummaries - if( $flags & EDIT_NEW && strlen( $newtext ) ) { + if ( $flags & EDIT_NEW && strlen( $newtext ) ) { # If they're making a new article, give its text, truncated, in the summary. global $wgContLang; $truncatedtext = $wgContLang->truncate( - str_replace("\n", ' ', $newtext), + str_replace( "\n", ' ', $newtext ), max( 0, 200 - strlen( wfMsgForContent( 'autosumm-new' ) ) ) ); return wfMsgForContent( 'autosumm-new', $truncatedtext ); } # Blanking autosummaries - if( $oldtext != '' && $newtext == '' ) { + if ( $oldtext != '' && $newtext == '' ) { return wfMsgForContent( 'autosumm-blank' ); - } elseif( strlen( $oldtext ) > 10 * strlen( $newtext ) && strlen( $newtext ) < 500) { + } elseif ( strlen( $oldtext ) > 10 * strlen( $newtext ) && strlen( $newtext ) < 500 ) { # Removing more than 90% of the article global $wgContLang; $truncatedtext = $wgContLang->truncate( @@ -4006,25 +4006,25 @@ class Article { $parserOptions = $this->getParserOptions(); } - $time = -wfTime(); + $time = - wfTime(); $this->mParserOutput = $wgParser->parse( $text, $this->mTitle, $parserOptions, true, true, $this->getRevIdFetched() ); $time += wfTime(); # Timing hack - if( $time > 3 ) { + if ( $time > 3 ) { wfDebugLog( 'slow-parse', sprintf( "%-5.2f %s", $time, - $this->mTitle->getPrefixedDBkey())); + $this->mTitle->getPrefixedDBkey() ) ); } - if( $wgEnableParserCache && $cache && $this && $this->mParserOutput->getCacheTime() != -1 ) { + if ( $wgEnableParserCache && $cache && $this && $this->mParserOutput->getCacheTime() != -1 ) { $parserCache = ParserCache::singleton(); $parserCache->save( $this->mParserOutput, $this, $parserOptions ); } // Make sure file cache is not used on uncacheable content. // Output that has magic words in it can still use the parser cache // (if enabled), though it will generally expire sooner. - if( $this->mParserOutput->getCacheTime() == -1 || $this->mParserOutput->containsOldMagic() ) { + if ( $this->mParserOutput->getCacheTime() == -1 || $this->mParserOutput->containsOldMagic() ) { $wgUseFileCache = false; } $this->doCascadeProtectionUpdates( $this->mParserOutput ); @@ -4045,7 +4045,7 @@ class Article { } protected function doCascadeProtectionUpdates( $parserOutput ) { - if( !$this->isCurrent() || wfReadOnly() || !$this->mTitle->areRestrictionsCascading() ) { + if ( !$this->isCurrent() || wfReadOnly() || !$this->mTitle->areRestrictionsCascading() ) { return; } @@ -4068,7 +4068,7 @@ class Article { __METHOD__ ); global $wgContLang; - foreach( $res as $row ) { + foreach ( $res as $row ) { $tlTemplates["{$row->tl_namespace}:{$row->tl_title}"] = true; } @@ -4084,7 +4084,7 @@ class Article { # Note that we simulate array_diff_key in PHP <5.0.x $templates_diff = array_diff_key( $poTemplates, $tlTemplates ); - if( count( $templates_diff ) > 0 ) { + if ( count( $templates_diff ) > 0 ) { # Whee, link updates time. $u = new LinksUpdate( $this->mTitle, $parserOutput, false ); $u->doUpdate(); @@ -4110,12 +4110,12 @@ class Article { # # Sometimes I wish we had INSERT ... ON DUPLICATE KEY UPDATE. $insertCats = array_merge( $added, $deleted ); - if( !$insertCats ) { + if ( !$insertCats ) { # Okay, nothing to do return; } $insertRows = array(); - foreach( $insertCats as $cat ) { + foreach ( $insertCats as $cat ) { $insertRows[] = array( 'cat_id' => $dbw->nextSequenceValue( 'category_cat_id_seq' ), 'cat_title' => $cat @@ -4125,15 +4125,15 @@ class Article { $addFields = array( 'cat_pages = cat_pages + 1' ); $removeFields = array( 'cat_pages = cat_pages - 1' ); - if( $ns == NS_CATEGORY ) { + if ( $ns == NS_CATEGORY ) { $addFields[] = 'cat_subcats = cat_subcats + 1'; $removeFields[] = 'cat_subcats = cat_subcats - 1'; - } elseif( $ns == NS_FILE ) { + } elseif ( $ns == NS_FILE ) { $addFields[] = 'cat_files = cat_files + 1'; $removeFields[] = 'cat_files = cat_files - 1'; } - if( $added ) { + if ( $added ) { $dbw->update( 'category', $addFields, @@ -4141,7 +4141,7 @@ class Article { __METHOD__ ); } - if( $deleted ) { + if ( $deleted ) { $dbw->update( 'category', $removeFields, @@ -4164,7 +4164,7 @@ class Article { $this->exists() && $oldid === null; - wfDebug( __METHOD__.': using parser cache: ' . ( $useParserCache ? 'yes' : 'no' ) . "\n" ); + wfDebug( __METHOD__ . ': using parser cache: ' . ( $useParserCache ? 'yes' : 'no' ) . "\n" ); if ( $wgUser->getOption( 'stubthreshold' ) ) { wfIncrStats( 'pcache_miss_stub' ); } diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 9f0adfbc8f..45816347ab 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -1,5 +1,4 @@ <?php - /* This defines autoloading handler for whole MediaWiki framework */ # Locations of core classes diff --git a/includes/Autopromote.php b/includes/Autopromote.php index 9b22a7b3ff..c0adff43a4 100644 --- a/includes/Autopromote.php +++ b/includes/Autopromote.php @@ -1,5 +1,4 @@ <?php - /** * This class checks if user can get extra rights * because of conditions specified in $wgAutopromote diff --git a/includes/BacklinkCache.php b/includes/BacklinkCache.php index e44514597c..53f92dd958 100644 --- a/includes/BacklinkCache.php +++ b/includes/BacklinkCache.php @@ -1,10 +1,9 @@ <?php - /** * Class for fetching backlink lists, approximate backlink counts and partitions. * Instances of this class should typically be fetched with $title->getBacklinkCache(). * - * Ideally you should only get your backlinks from here when you think there is some + * Ideally you should only get your backlinks from here when you think there is some * advantage in caching them. Otherwise it's just a waste of memory. */ class BacklinkCache { @@ -56,9 +55,10 @@ class BacklinkCache { wfProfileIn( __METHOD__ ); $fromField = $this->getPrefix( $table ) . '_from'; + if ( $startId || $endId ) { // Partial range, not cached - wfDebug( __METHOD__.": from DB (uncacheable range)\n" ); + wfDebug( __METHOD__ . ": from DB (uncacheable range)\n" ); $conds = $this->getConditions( $table ); // Use the from field in the condition rather than the joined page_id, // because databases are stupid and don't necessarily propagate indexes. @@ -68,9 +68,9 @@ class BacklinkCache { if ( $endId ) { $conds[] = "$fromField <= " . intval( $endId ); } - $res = $this->getDB()->select( + $res = $this->getDB()->select( array( $table, 'page' ), - array( 'page_namespace', 'page_title', 'page_id'), + array( 'page_namespace', 'page_title', 'page_id' ), $conds, __METHOD__, array( @@ -83,8 +83,8 @@ class BacklinkCache { } if ( !isset( $this->fullResultCache[$table] ) ) { - wfDebug( __METHOD__.": from DB\n" ); - $res = $this->getDB()->select( + wfDebug( __METHOD__ . ": from DB\n" ); + $res = $this->getDB()->select( array( $table, 'page' ), array( 'page_namespace', 'page_title', 'page_id' ), $this->getConditions( $table ), @@ -111,6 +111,7 @@ class BacklinkCache { 'templatelinks' => 'tl', 'redirect' => 'rd', ); + if ( isset( $prefixes[$table] ) ) { return $prefixes[$table]; } else { @@ -123,6 +124,7 @@ class BacklinkCache { */ protected function getConditions( $table ) { $prefix = $this->getPrefix( $table ); + switch ( $table ) { case 'pagelinks': case 'templatelinks': @@ -134,13 +136,13 @@ class BacklinkCache { ); break; case 'imagelinks': - $conds = array( + $conds = array( 'il_to' => $this->title->getDBkey(), 'page_id=il_from' ); break; case 'categorylinks': - $conds = array( + $conds = array( 'cl_to' => $this->title->getDBkey(), 'page_id=cl_from', ); @@ -158,10 +160,12 @@ class BacklinkCache { if ( isset( $this->fullResultCache[$table] ) ) { return $this->fullResultCache[$table]->numRows(); } + if ( isset( $this->partitionCache[$table] ) ) { $entry = reset( $this->partitionCache[$table] ); return $entry['numRows']; } + $titleArray = $this->getLinks( $table ); return $titleArray->count(); } @@ -178,26 +182,33 @@ class BacklinkCache { public function partition( $table, $batchSize ) { // Try cache if ( isset( $this->partitionCache[$table][$batchSize] ) ) { - wfDebug( __METHOD__.": got from partition cache\n" ); + wfDebug( __METHOD__ . ": got from partition cache\n" ); return $this->partitionCache[$table][$batchSize]['batches']; } + $this->partitionCache[$table][$batchSize] = false; $cacheEntry =& $this->partitionCache[$table][$batchSize]; // Try full result cache if ( isset( $this->fullResultCache[$table] ) ) { $cacheEntry = $this->partitionResult( $this->fullResultCache[$table], $batchSize ); - wfDebug( __METHOD__.": got from full result cache\n" ); + wfDebug( __METHOD__ . ": got from full result cache\n" ); return $cacheEntry['batches']; } + // Try memcached global $wgMemc; - $memcKey = wfMemcKey( 'backlinks', md5( $this->title->getPrefixedDBkey() ), - $table, $batchSize ); + $memcKey = wfMemcKey( + 'backlinks', + md5( $this->title->getPrefixedDBkey() ), + $table, + $batchSize + ); $memcValue = $wgMemc->get( $memcKey ); + if ( is_array( $memcValue ) ) { $cacheEntry = $memcValue; - wfDebug( __METHOD__.": got from memcached $memcKey\n" ); + wfDebug( __METHOD__ . ": got from memcached $memcKey\n" ); return $cacheEntry['batches']; } // Fetch from database @@ -205,17 +216,18 @@ class BacklinkCache { $cacheEntry = $this->partitionResult( $this->fullResultCache[$table], $batchSize ); // Save to memcached $wgMemc->set( $memcKey, $cacheEntry, self::CACHE_EXPIRY ); - wfDebug( __METHOD__.": got from database\n" ); + wfDebug( __METHOD__ . ": got from database\n" ); return $cacheEntry['batches']; } - /** + /** * Partition a DB result with backlinks in it into batches */ protected function partitionResult( $res, $batchSize ) { $batches = array(); $numRows = $res->numRows(); $numBatches = ceil( $numRows / $batchSize ); + for ( $i = 0; $i < $numBatches; $i++ ) { if ( $i == 0 ) { $start = false; @@ -225,6 +237,7 @@ class BacklinkCache { $row = $res->fetchObject(); $start = $row->page_id; } + if ( $i == $numBatches - 1 ) { $end = false; } else { @@ -236,7 +249,7 @@ class BacklinkCache { # Sanity check order if ( $start && $end && $start > $end ) { - throw new MWException( __METHOD__.': Internal error: query result out of order' ); + throw new MWException( __METHOD__ . ': Internal error: query result out of order' ); } $batches[] = array( $start, $end ); diff --git a/includes/BagOStuff.php b/includes/BagOStuff.php index d940028b5d..afd52a0f6f 100644 --- a/includes/BagOStuff.php +++ b/includes/BagOStuff.php @@ -54,7 +54,7 @@ abstract class BagOStuff { abstract public function get( $key ); /** - * Set an item. + * Set an item. * @param $key string * @param $value mixed * @param $exptime int Either an interval in seconds or a unix timestamp for expiry @@ -87,9 +87,11 @@ abstract class BagOStuff { /* Better performance can likely be got with custom written versions */ public function get_multi( $keys ) { $out = array(); + foreach ( $keys as $key ) { $out[$key] = $this->get( $key ); } + return $out; } @@ -140,7 +142,7 @@ abstract class BagOStuff { } public function decr( $key, $value = 1 ) { - return $this->incr( $key, -$value ); + return $this->incr( $key, - $value ); } public function debug( $text ) { @@ -160,7 +162,6 @@ abstract class BagOStuff { } } - /** * Functional versions! * This is a test of the interface, mainly. It stores things in an associative @@ -254,10 +255,10 @@ class SqlBagOStuff extends BagOStuff { $this->debug( "get: key has expired, deleting" ); try { $db->begin(); - # Put the expiry time in the WHERE condition to avoid deleting a + # Put the expiry time in the WHERE condition to avoid deleting a # newly-inserted value - $db->delete( 'objectcache', - array( + $db->delete( 'objectcache', + array( 'keyname' => $key, 'exptime' => $row->exptime ), __METHOD__ ); @@ -284,8 +285,8 @@ class SqlBagOStuff extends BagOStuff { try { $db->begin(); $db->delete( 'objectcache', array( 'keyname' => $key ), __METHOD__ ); - $db->insert( 'objectcache', - array( + $db->insert( 'objectcache', + array( 'keyname' => $key, 'value' => $db->encodeBlob( $this->serialize( $value ) ), 'exptime' => $encExpiry @@ -458,7 +459,7 @@ class SqlBagOStuff extends BagOStuff { /** * Backwards compatibility alias */ -class MediaWikiBagOStuff extends SqlBagOStuff {} +class MediaWikiBagOStuff extends SqlBagOStuff { } /** * This is a wrapper for Turck MMCache's shared memory functions. @@ -533,14 +534,13 @@ class APCBagOStuff extends BagOStuff { $info = apc_cache_info( 'user' ); $list = $info['cache_list']; $keys = array(); - foreach( $list as $entry ) { + foreach ( $list as $entry ) { $keys[] = $entry['info']; } return $keys; } } - /** * This is a wrapper for eAccelerator's shared memory functions. * @@ -624,13 +624,12 @@ class XCacheBagOStuff extends BagOStuff { xcache_unset( $key ); return true; } - } /** - * Cache that uses DBA as a backend. - * Slow due to the need to constantly open and close the file to avoid holding - * writer locks. Intended for development use only, as a memcached workalike + * Cache that uses DBA as a backend. + * Slow due to the need to constantly open and close the file to avoid holding + * writer locks. Intended for development use only, as a memcached workalike * for systems that don't have it. * * @ingroup Cache @@ -669,7 +668,7 @@ class DBABagOStuff extends BagOStuff { return array( unserialize( substr( $blob, 11 ) ), intval( substr( $blob, 0, 10 ) ) - ); + ); } } diff --git a/includes/Block.php b/includes/Block.php index 8e96e0903d..74a3b58094 100644 --- a/includes/Block.php +++ b/includes/Block.php @@ -34,7 +34,7 @@ class Block { $this->mUser = $user; $this->mBy = $by; $this->mReason = $reason; - $this->mTimestamp = wfTimestamp(TS_MW,$timestamp); + $this->mTimestamp = wfTimestamp( TS_MW, $timestamp ); $this->mAuto = $auto; $this->mAnonOnly = $anonOnly; $this->mCreateAccount = $createAccount; @@ -54,7 +54,7 @@ class Block { * Load a block from the database, using either the IP address or * user ID. Tries the user ID first, and if that doesn't work, tries * the address. - * + * * @param $address String: IP address of user/anon * @param $user Integer: user id of user * @param $killExpired Boolean: delete expired blocks on load @@ -130,6 +130,7 @@ class Block { */ protected function &getDBOptions( &$options ) { global $wgAntiLockFlags; + if ( $this->mForUpdate || $this->mFromMaster ) { $db = wfGetDB( DB_MASTER ); if ( !$this->mForUpdate || ( $wgAntiLockFlags & ALF_NO_BLOCK_LOCK ) ) { @@ -180,12 +181,13 @@ class Block { if ( $address ) { $conds = array( 'ipb_address' => $address, 'ipb_auto' => 0 ); $res = $db->resultObject( $db->select( 'ipblocks', '*', $conds, __METHOD__, $options ) ); + if ( $this->loadFromResult( $res, $killExpired ) ) { if ( $user && $this->mAnonOnly ) { # Block is marked anon-only # Whitelist this IP address against autoblocks and range blocks # (but not account creation blocks -- bug 13611) - if( !$this->mCreateAccount ) { + if ( !$this->mCreateAccount ) { $this->clear(); } return false; @@ -199,7 +201,7 @@ class Block { if ( $this->loadRange( $address, $killExpired, $user ) ) { if ( $user && $this->mAnonOnly ) { # Respect account creation blocks on logged-in users -- bug 13611 - if( !$this->mCreateAccount ) { + if ( !$this->mCreateAccount ) { $this->clear(); } return false; @@ -211,10 +213,13 @@ class Block { # Try autoblock if ( $address ) { $conds = array( 'ipb_address' => $address, 'ipb_auto' => 1 ); + if ( $user ) { $conds['ipb_anon_only'] = 0; } + $res = $db->resultObject( $db->select( 'ipblocks', '*', $conds, __METHOD__, $options ) ); + if ( $this->loadFromResult( $res, $killExpired ) ) { return true; } @@ -234,6 +239,7 @@ class Block { */ protected function loadFromResult( ResultWrapper $res, $killExpired = true ) { $ret = false; + if ( 0 != $res->numRows() ) { # Get first block $row = $res->fetchObject(); @@ -274,6 +280,7 @@ class Block { */ public function loadRange( $address, $killExpired = true, $user = 0 ) { $iaddr = IP::toHex( $address ); + if ( $iaddr === false ) { # Invalid address return false; @@ -309,7 +316,7 @@ class Block { public function initFromRow( $row ) { $this->mAddress = $row->ipb_address; $this->mReason = $row->ipb_reason; - $this->mTimestamp = wfTimestamp(TS_MW,$row->ipb_timestamp); + $this->mTimestamp = wfTimestamp( TS_MW, $row->ipb_timestamp ); $this->mUser = $row->ipb_user; $this->mBy = $row->ipb_by; $this->mAuto = $row->ipb_auto; @@ -321,17 +328,19 @@ class Block { $this->mHideName = $row->ipb_deleted; $this->mId = $row->ipb_id; $this->mExpiry = self::decodeExpiry( $row->ipb_expiry ); + if ( isset( $row->user_name ) ) { $this->mByName = $row->user_name; } else { $this->mByName = $row->ipb_by_text; } + $this->mRangeStart = $row->ipb_range_start; $this->mRangeEnd = $row->ipb_range_end; } /** - * Once $mAddress has been set, get the range they came from. + * Once $mAddress has been set, get the range they came from. * Wrapper for IP::parseRange */ protected function initialiseRange() { @@ -352,6 +361,7 @@ class Block { if ( wfReadOnly() ) { return false; } + if ( !$this->mId ) { throw new MWException( "Block::delete() now requires that the mId member be filled\n" ); } @@ -377,8 +387,9 @@ class Block { # Don't collide with expired blocks Block::purgeExpired(); - $ipb_id = $dbw->nextSequenceValue('ipblocks_ipb_id_seq'); - $dbw->insert( 'ipblocks', + $ipb_id = $dbw->nextSequenceValue( 'ipblocks_ipb_id_seq' ); + $dbw->insert( + 'ipblocks', array( 'ipb_id' => $ipb_id, 'ipb_address' => $this->mAddress, @@ -386,7 +397,7 @@ class Block { 'ipb_by' => $this->mBy, 'ipb_by_text' => $this->mByName, 'ipb_reason' => $this->mReason, - 'ipb_timestamp' => $dbw->timestamp($this->mTimestamp), + 'ipb_timestamp' => $dbw->timestamp( $this->mTimestamp ), 'ipb_auto' => $this->mAuto, 'ipb_anon_only' => $this->mAnonOnly, 'ipb_create_account' => $this->mCreateAccount, @@ -397,7 +408,9 @@ class Block { 'ipb_deleted' => $this->mHideName, 'ipb_block_email' => $this->mBlockEmail, 'ipb_allow_usertalk' => $this->mAllowUsertalk - ), 'Block::insert', array( 'IGNORE' ) + ), + 'Block::insert', + array( 'IGNORE' ) ); $affected = $dbw->affectedRows(); @@ -417,13 +430,14 @@ class Block { $this->validateBlockParams(); - $dbw->update( 'ipblocks', + $dbw->update( + 'ipblocks', array( 'ipb_user' => $this->mUser, 'ipb_by' => $this->mBy, 'ipb_by_text' => $this->mByName, 'ipb_reason' => $this->mReason, - 'ipb_timestamp' => $dbw->timestamp($this->mTimestamp), + 'ipb_timestamp' => $dbw->timestamp( $this->mTimestamp ), 'ipb_auto' => $this->mAuto, 'ipb_anon_only' => $this->mAnonOnly, 'ipb_create_account' => $this->mCreateAccount, @@ -433,13 +447,15 @@ class Block { 'ipb_range_end' => $this->mRangeEnd, 'ipb_deleted' => $this->mHideName, 'ipb_block_email' => $this->mBlockEmail, - 'ipb_allow_usertalk' => $this->mAllowUsertalk ), + 'ipb_allow_usertalk' => $this->mAllowUsertalk + ), array( 'ipb_id' => $this->mId ), - 'Block::update' ); + 'Block::update' + ); return $dbw->affectedRows(); } - + /** * Make sure all the proper members are set to sane values * before adding/updating a block @@ -459,8 +475,8 @@ class Block { if ( !$this->mUser && $this->mAnonOnly ) { $this->mBlockEmail = 0; } - if( !$this->mByName ) { - if( $this->mBy ) { + if ( !$this->mByName ) { + if ( $this->mBy ) { $this->mByName = User::whoIs( $this->mBy ); } else { global $wgUser; @@ -481,7 +497,7 @@ class Block { # - stolen shamelessly from CheckUser_body.php if ( $this->mEnableAutoblock && $this->mUser ) { - wfDebug("Doing retroactive autoblocks for " . $this->mAddress . "\n"); + wfDebug( "Doing retroactive autoblocks for " . $this->mAddress . "\n" ); $options = array( 'ORDER BY' => 'rc_timestamp DESC' ); $conds = array( 'rc_user_text' => $this->mAddress ); @@ -500,7 +516,7 @@ class Block { if ( !$dbr->numRows( $res ) ) { # No results, don't autoblock anything - wfDebug("No IP found to retroactively autoblock\n"); + wfDebug( "No IP found to retroactively autoblock\n" ); } else { while ( $row = $dbr->fetchObject( $res ) ) { if ( $row->rc_ip ) @@ -528,9 +544,9 @@ class Block { $wgMemc->set( $key, $lines, 3600 * 24 ); } - wfDebug("Checking the autoblock whitelist..\n"); + wfDebug( "Checking the autoblock whitelist..\n" ); - foreach( $lines as $line ) { + foreach ( $lines as $line ) { # List items only if ( substr( $line, 0, 1 ) !== '*' ) { continue; @@ -539,11 +555,11 @@ class Block { $wlEntry = substr( $line, 1 ); $wlEntry = trim( $wlEntry ); - wfDebug("Checking $ip against $wlEntry..."); + wfDebug( "Checking $ip against $wlEntry..." ); # Is the IP in this range? if ( IP::isInRange( $ip, $wlEntry ) ) { - wfDebug(" IP $ip matches $wlEntry, not autoblocking\n"); + wfDebug( " IP $ip matches $wlEntry, not autoblocking\n" ); return true; } else { wfDebug( " No match\n" ); @@ -570,8 +586,8 @@ class Block { if ( Block::isWhitelistedFromAutoblocks( $autoblockIP ) ) { return; } - - ## Allow hooks to cancel the autoblock. + + # # Allow hooks to cancel the autoblock. if ( !wfRunHooks( 'AbortAutoblock', array( $autoblockIP, &$this ) ) ) { wfDebug( "Autoblock aborted by hook.\n" ); return false; @@ -612,7 +628,7 @@ class Block { $ipblock->mAllowUsertalk = $this->mAllowUsertalk; # If the user is already blocked with an expiry date, we don't # want to pile on top of that! - if( $this->mExpiry ) { + if ( $this->mExpiry ) { $ipblock->mExpiry = min( $this->mExpiry, Block::getAutoblockExpiry( $this->mTimestamp ) ); } else { $ipblock->mExpiry = Block::getAutoblockExpiry( $this->mTimestamp ); @@ -661,7 +677,7 @@ class Block { } /** - * Update the timestamp on autoblocks. + * Update the timestamp on autoblocks. */ public function updateTimestamp() { if ( $this->mAuto ) { @@ -727,7 +743,7 @@ class Block { /** * Encode expiry for DB * - * @param $expiry String: timestamp for expiry, or + * @param $expiry String: timestamp for expiry, or * @param $db Database object * @return String */ @@ -809,7 +825,7 @@ class Block { /** * Get a value to insert into expiry field of the database when infinite expiry - * is desired. In principle this could be DBMS-dependant, but currently all + * is desired. In principle this could be DBMS-dependant, but currently all * supported DBMS's support the string "infinity", so we just use that. * * @return String @@ -829,10 +845,10 @@ class Block { public static function formatExpiry( $encoded_expiry ) { static $msg = null; - if( is_null( $msg ) ) { + if ( is_null( $msg ) ) { $msg = array(); $keys = array( 'infiniteblock', 'expiringblock' ); - foreach( $keys as $key ) { + foreach ( $keys as $key ) { $msg[$key] = wfMsgHtml( $key ); } } @@ -859,6 +875,7 @@ class Block { $expiry = 'infinity'; } else { $expiry = strtotime( $expiry_input ); + if ( $expiry < 0 || $expiry === false ) { return false; } diff --git a/includes/CacheDependency.php b/includes/CacheDependency.php index 9b5ab452ed..11e707380d 100644 --- a/includes/CacheDependency.php +++ b/includes/CacheDependency.php @@ -1,5 +1,4 @@ <?php - /** * This class stores an arbitrary value along with its dependencies. * Users should typically only use DependencyWrapper::getFromCache(), rather @@ -108,7 +107,7 @@ abstract class CacheDependency { /** * Hook to perform any expensive pre-serialize loading of dependency values. */ - function loadDependencyValues() {} + function loadDependencyValues() { } } /** @@ -213,6 +212,7 @@ class TitleDependency extends CacheDependency { function isExpired() { $touched = $this->getTitle()->getTouched(); + if ( $this->touched === false ) { if ( $touched === false ) { # Still missing @@ -251,6 +251,7 @@ class TitleListDependency extends CacheDependency { function calculateTimestamps() { # Initialise values to false $timestamps = array(); + foreach ( $this->getLinkBatch()->data as $ns => $dbks ) { if ( count( $dbks ) > 0 ) { $timestamps[$ns] = array(); @@ -264,9 +265,13 @@ class TitleListDependency extends CacheDependency { if ( count( $timestamps ) ) { $dbr = wfGetDB( DB_SLAVE ); $where = $this->getLinkBatch()->constructSet( 'page', $dbr ); - $res = $dbr->select( 'page', + $res = $dbr->select( + 'page', array( 'page_namespace', 'page_title', 'page_touched' ), - $where, __METHOD__ ); + $where, + __METHOD__ + ); + while ( $row = $dbr->fetchObject( $res ) ) { $timestamps[$row->page_namespace][$row->page_title] = $row->page_touched; } @@ -283,7 +288,7 @@ class TitleListDependency extends CacheDependency { } function getLinkBatch() { - if ( !isset( $this->linkBatch ) ){ + if ( !isset( $this->linkBatch ) ) { $this->linkBatch = new LinkBatch; $this->linkBatch->setArray( $this->timestamps ); } @@ -295,6 +300,7 @@ class TitleListDependency extends CacheDependency { foreach ( $this->timestamps as $ns => $dbks ) { foreach ( $dbks as $dbk => $oldTimestamp ) { $newTimestamp = $newTimestamps[$ns][$dbk]; + if ( $oldTimestamp === false ) { if ( $newTimestamp === false ) { # Still missing diff --git a/includes/Category.php b/includes/Category.php index e0a356350b..e9ffaecfca 100644 --- a/includes/Category.php +++ b/includes/Category.php @@ -1,6 +1,6 @@ <?php /** - * Category objects are immutable, strictly speaking. If you call methods that change the database, + * Category objects are immutable, strictly speaking. If you call methods that change the database, * like to refresh link counts, the objects will be appropriately reinitialized. * Member variables are lazy-initialized. * @@ -18,21 +18,21 @@ class Category { /** Counts of membership (cat_pages, cat_subcats, cat_files) */ private $mPages = null, $mSubcats = null, $mFiles = null; - private function __construct() {} + private function __construct() { } /** * Set up all member variables using a database query. * @return bool True on success, false on failure. */ protected function initialize() { - if ( $this->mName === null && $this->mTitle ) + if ( $this->mName === null && $this->mTitle ) $this->mName = $title->getDBkey(); - if( $this->mName === null && $this->mID === null ) { - throw new MWException( __METHOD__.' has both names and IDs null' ); - } elseif( $this->mID === null ) { + if ( $this->mName === null && $this->mID === null ) { + throw new MWException( __METHOD__ . ' has both names and IDs null' ); + } elseif ( $this->mID === null ) { $where = array( 'cat_title' => $this->mName ); - } elseif( $this->mName === null ) { + } elseif ( $this->mName === null ) { $where = array( 'cat_id' => $this->mID ); } else { # Already initialized @@ -45,7 +45,8 @@ class Category { $where, __METHOD__ ); - if( !$row ) { + + if ( !$row ) { # Okay, there were no contents. Nothing to initialize. if ( $this->mTitle ) { # If there is a title object but no record in the category table, treat this as an empty category @@ -60,6 +61,7 @@ class Category { return false; # Fail } } + $this->mID = $row->cat_id; $this->mName = $row->cat_title; $this->mPages = $row->cat_pages; @@ -69,7 +71,7 @@ class Category { # (bug 13683) If the count is negative, then 1) it's obviously wrong # and should not be kept, and 2) we *probably* don't have to scan many # rows to obtain the correct figure, so let's risk a one-time recount. - if( $this->mPages < 0 || $this->mSubcats < 0 || $this->mFiles < 0 ) { + if ( $this->mPages < 0 || $this->mSubcats < 0 || $this->mFiles < 0 ) { $this->refreshCounts(); } @@ -86,7 +88,8 @@ class Category { public static function newFromName( $name ) { $cat = new self(); $title = Title::makeTitleSafe( NS_CATEGORY, $name ); - if( !is_object( $title ) ) { + + if ( !is_object( $title ) ) { return false; } @@ -126,7 +129,7 @@ class Category { /** * Factory function, for constructing a Category object from a result set * - * @param $row result set row, must contain the cat_xxx fields. If the fields are null, + * @param $row result set row, must contain the cat_xxx fields. If the fields are null, * the resulting Category object will represent an empty category if a title object * was given. If the fields are null and no title was given, this method fails and returns false. * @param $title optional title object for the category represented by the given row. @@ -137,8 +140,7 @@ class Category { $cat = new self(); $cat->mTitle = $title; - - # NOTE: the row often results from a LEFT JOIN on categorylinks. This may result in + # NOTE: the row often results from a LEFT JOIN on categorylinks. This may result in # all the cat_xxx fields being null, if the category page exists, but nothing # was ever added to the category. This case should be treated linke an empty # category, if possible. @@ -169,12 +171,16 @@ class Category { /** @return mixed DB key name, or false on failure */ public function getName() { return $this->getX( 'mName' ); } + /** @return mixed Category ID, or false on failure */ public function getID() { return $this->getX( 'mID' ); } + /** @return mixed Total number of member pages, or false on failure */ public function getPageCount() { return $this->getX( 'mPages' ); } + /** @return mixed Number of subcategories, or false on failure */ public function getSubcatCount() { return $this->getX( 'mSubcats' ); } + /** @return mixed Number of member files, or false on failure */ public function getFileCount() { return $this->getX( 'mFiles' ); } @@ -182,9 +188,9 @@ class Category { * @return mixed The Title for this category, or false on failure. */ public function getTitle() { - if( $this->mTitle ) return $this->mTitle; - - if( !$this->initialize() ) { + if ( $this->mTitle ) return $this->mTitle; + + if ( !$this->initialize() ) { return false; } @@ -204,13 +210,19 @@ class Category { $conds = array( 'cl_to' => $this->getName(), 'cl_from = page_id' ); $options = array( 'ORDER BY' => 'cl_sortkey' ); - if( $limit ) $options[ 'LIMIT' ] = $limit; - if( $offset !== '' ) $conds[] = 'cl_sortkey > ' . $dbr->addQuotes( $offset ); + + if ( $limit ) { + $options[ 'LIMIT' ] = $limit; + } + + if ( $offset !== '' ) { + $conds[] = 'cl_sortkey > ' . $dbr->addQuotes( $offset ); + } return TitleArray::newFromResult( $dbr->select( array( 'page', 'categorylinks' ), - array( 'page_id', 'page_namespace','page_title', 'page_len', + array( 'page_id', 'page_namespace', 'page_title', 'page_len', 'page_is_redirect', 'page_latest' ), $conds, __METHOD__, @@ -221,10 +233,10 @@ class Category { /** Generic accessor */ private function getX( $key ) { - if( !$this->initialize() ) { + if ( !$this->initialize() ) { return false; } - return $this->{$key}; + return $this-> { $key } ; } /** @@ -233,14 +245,14 @@ class Category { * @return bool True on success, false on failure */ public function refreshCounts() { - if( wfReadOnly() ) { + if ( wfReadOnly() ) { return false; } $dbw = wfGetDB( DB_MASTER ); $dbw->begin(); # Note, we must use names for this, since categorylinks does. - if( $this->mName === null ) { - if( !$this->initialize() ) { + if ( $this->mName === null ) { + if ( !$this->initialize() ) { return false; } } else { @@ -249,15 +261,17 @@ class Category { $seqVal = $dbw->nextSequenceValue( 'category_cat_id_seq' ); $dbw->insert( 'category', - array( 'cat_id' => $seqVal, - 'cat_title' => $this->mName ), + array( + 'cat_id' => $seqVal, + 'cat_title' => $this->mName + ), __METHOD__, 'IGNORE' ); } - $cond1 = $dbw->conditional( 'page_namespace='.NS_CATEGORY, 1, 'NULL' ); - $cond2 = $dbw->conditional( 'page_namespace='.NS_FILE, 1, 'NULL' ); + $cond1 = $dbw->conditional( 'page_namespace=' . NS_CATEGORY, 1, 'NULL' ); + $cond2 = $dbw->conditional( 'page_namespace=' . NS_FILE, 1, 'NULL' ); $result = $dbw->selectRow( array( 'categorylinks', 'page' ), array( 'COUNT(*) AS pages', diff --git a/includes/CategoryPage.php b/includes/CategoryPage.php index 362fbde97d..56f85faabe 100644 --- a/includes/CategoryPage.php +++ b/includes/CategoryPage.php @@ -5,7 +5,7 @@ * */ -if( !defined( 'MEDIAWIKI' ) ) +if ( !defined( 'MEDIAWIKI' ) ) die( 1 ); /** @@ -20,7 +20,7 @@ class CategoryPage extends Article { if ( isset( $diff ) && $diffOnly ) return Article::view(); - if( !wfRunHooks( 'CategoryPageView', array( &$this ) ) ) + if ( !wfRunHooks( 'CategoryPageView', array( &$this ) ) ) return; if ( NS_CATEGORY == $this->mTitle->getNamespace() ) { @@ -33,18 +33,17 @@ class CategoryPage extends Article { $this->closeShowCategory(); } } - + /** * Don't return a 404 for categories in use. */ function hasViewableContent() { - if( parent::hasViewableContent() ) { + if ( parent::hasViewableContent() ) { return true; } else { $cat = Category::newFromTitle( $this->mTitle ); return $cat->getId() != 0; } - } function openShowCategory() { @@ -99,7 +98,7 @@ class CategoryViewer { $this->getPagesSection() . $this->getImageSection(); - if( $r == '' ) { + if ( $r == '' ) { // If there is no category content to display, only // show the top part of the navigation links. // FIXME: cannot be completely suppressed because it @@ -118,7 +117,7 @@ class CategoryViewer { } wfProfileOut( __METHOD__ ); - return $wgContLang->convert($r); + return $wgContLang->convert( $r ); } function clearCategoryState() { @@ -126,7 +125,7 @@ class CategoryViewer { $this->articles_start_char = array(); $this->children = array(); $this->children_start_char = array(); - if( $this->showGallery ) { + if ( $this->showGallery ) { $this->gallery = new ImageGallery(); $this->gallery->setHideBadImages(); } @@ -149,7 +148,7 @@ class CategoryViewer { } /** - * Add a subcategory to the internal lists, using a title object + * Add a subcategory to the internal lists, using a title object * @deprecated kept for compatibility, please use addSubcategoryObject instead */ function addSubcategory( $title, $sortkey, $pageLength ) { @@ -175,7 +174,7 @@ class CategoryViewer { function getSubcategorySortChar( $title, $sortkey ) { global $wgContLang; - if( $title->getPrefixedText() == $sortkey ) { + if ( $title->getPrefixedText() == $sortkey ) { $firstChar = $wgContLang->firstChar( $title->getDBkey() ); } else { $firstChar = $wgContLang->firstChar( $sortkey ); @@ -189,7 +188,7 @@ class CategoryViewer { */ function addImage( Title $title, $sortkey, $pageLength, $isRedirect = false ) { if ( $this->showGallery ) { - if( $this->flip ) { + if ( $this->flip ) { $this->gallery->insert( $title ); } else { $this->gallery->add( $title ); @@ -218,7 +217,7 @@ class CategoryViewer { } function finaliseCategoryState() { - if( $this->flip ) { + if ( $this->flip ) { $this->children = array_reverse( $this->children ); $this->children_start_char = array_reverse( $this->children_start_char ); $this->articles = array_reverse( $this->articles ); @@ -228,16 +227,17 @@ class CategoryViewer { function doCategoryQuery() { $dbr = wfGetDB( DB_SLAVE, 'category' ); - if( $this->from != '' ) { + if ( $this->from != '' ) { $pageCondition = 'cl_sortkey >= ' . $dbr->addQuotes( $this->from ); $this->flip = false; - } elseif( $this->until != '' ) { + } elseif ( $this->until != '' ) { $pageCondition = 'cl_sortkey < ' . $dbr->addQuotes( $this->until ); $this->flip = true; } else { $pageCondition = '1 = 1'; $this->flip = false; } + $res = $dbr->select( array( 'page', 'categorylinks', 'category' ), array( 'page_title', 'page_namespace', 'page_len', 'page_is_redirect', 'cl_sortkey', @@ -253,8 +253,9 @@ class CategoryViewer { $count = 0; $this->nextPage = null; - while( $x = $dbr->fetchObject ( $res ) ) { - if( ++$count > $this->limit ) { + + while ( $x = $dbr->fetchObject ( $res ) ) { + if ( ++$count > $this->limit ) { // We've reached the one extra which shows that there are // additional pages to be had. Stop here... $this->nextPage = $x->cl_sortkey; @@ -263,10 +264,10 @@ class CategoryViewer { $title = Title::makeTitle( $x->page_namespace, $x->page_title ); - if( $title->getNamespace() == NS_CATEGORY ) { + if ( $title->getNamespace() == NS_CATEGORY ) { $cat = Category::newFromRow( $x, $title ); $this->addSubcategoryObject( $cat, $x->cl_sortkey, $x->page_len ); - } elseif( $this->showGallery && $title->getNamespace() == NS_FILE ) { + } elseif ( $this->showGallery && $title->getNamespace() == NS_FILE ) { $this->addImage( $title, $x->cl_sortkey, $x->page_len, $x->page_is_redirect ); } else { $this->addPage( $title, $x->cl_sortkey, $x->page_len, $x->page_is_redirect ); @@ -287,7 +288,8 @@ class CategoryViewer { $rescnt = count( $this->children ); $dbcnt = $this->cat->getSubcatCount(); $countmsg = $this->getCountMessage( $rescnt, $dbcnt, 'subcat' ); - if( $rescnt > 0 ) { + + if ( $rescnt > 0 ) { # Showing subcategories $r .= "<div id=\"mw-subcategories\">\n"; $r .= '<h2>' . wfMsg( 'subcategories' ) . "</h2>\n"; @@ -312,7 +314,7 @@ class CategoryViewer { $rescnt = count( $this->articles ); $countmsg = $this->getCountMessage( $rescnt, $dbcnt, 'article' ); - if( $rescnt > 0 ) { + if ( $rescnt > 0 ) { $r = "<div id=\"mw-pages\">\n"; $r .= '<h2>' . wfMsg( 'category_header', $ti ) . "</h2>\n"; $r .= $countmsg; @@ -323,7 +325,7 @@ class CategoryViewer { } function getImageSection() { - if( $this->showGallery && ! $this->gallery->isEmpty() ) { + if ( $this->showGallery && ! $this->gallery->isEmpty() ) { $dbcnt = $this->cat->getFileCount(); $rescnt = $this->gallery->count(); $countmsg = $this->getCountMessage( $rescnt, $dbcnt, 'file' ); @@ -337,9 +339,9 @@ class CategoryViewer { } function getCategoryBottom() { - if( $this->until != '' ) { + if ( $this->until != '' ) { return $this->pagingLinks( $this->title, $this->nextPage, $this->until, $this->limit ); - } elseif( $this->nextPage != '' || $this->from != '' ) { + } elseif ( $this->nextPage != '' || $this->from != '' ) { return $this->pagingLinks( $this->title, $this->from, $this->nextPage, $this->limit ); } else { return ''; @@ -359,7 +361,7 @@ class CategoryViewer { function formatList( $articles, $articles_start_char, $cutoff = 6 ) { if ( count ( $articles ) > $cutoff ) { return $this->columnList( $articles, $articles_start_char ); - } elseif ( count($articles) > 0) { + } elseif ( count( $articles ) > 0 ) { // for short lists of articles in categories. return $this->shortList( $articles, $articles_start_char ); } @@ -384,7 +386,7 @@ class CategoryViewer { function columnList( $articles, $articles_start_char ) { $columns = array_combine( $articles, $articles_start_char ); # Split into three columns - $columns = array_chunk( $columns, ceil( count( $columns )/3 ), true /* preserve keys */ ); + $columns = array_chunk( $columns, ceil( count( $columns ) / 3 ), true /* preserve keys */ ); $ret = '<table width="100%"><tr valign="top"><td>'; $prevchar = null; @@ -435,10 +437,10 @@ class CategoryViewer { */ function shortList( $articles, $articles_start_char ) { $r = '<h3>' . htmlspecialchars( $articles_start_char[0] ) . "</h3>\n"; - $r .= '<ul><li>'.$articles[0].'</li>'; - for ($index = 1; $index < count($articles); $index++ ) + $r .= '<ul><li>' . $articles[0] . '</li>'; + for ( $index = 1; $index < count( $articles ); $index++ ) { - if ($articles_start_char[$index] != $articles_start_char[$index - 1]) + if ( $articles_start_char[$index] != $articles_start_char[$index - 1] ) { $r .= "</ul><h3>" . htmlspecialchars( $articles_start_char[$index] ) . "</h3>\n<ul>"; } @@ -464,7 +466,8 @@ class CategoryViewer { $limitText = $wgLang->formatNum( $limit ); $prevLink = wfMsgExt( 'prevn', array( 'escape', 'parsemag' ), $limitText ); - if( $first != '' ) { + + if ( $first != '' ) { $prevQuery = $query; $prevQuery['until'] = $first; $prevLink = $sk->linkKnown( @@ -474,8 +477,10 @@ class CategoryViewer { $prevQuery ); } + $nextLink = wfMsgExt( 'nextn', array( 'escape', 'parsemag' ), $limitText ); - if( $last != '' ) { + + if ( $last != '' ) { $lastQuery = $query; $lastQuery['from'] = $last; $nextLink = $sk->linkKnown( @@ -516,12 +521,14 @@ class CategoryViewer { # know the right figure. # 3) We have no idea. $totalrescnt = count( $this->articles ) + count( $this->children ) + - ($this->showGallery ? $this->gallery->count() : 0); - if($dbcnt == $rescnt || (($totalrescnt == $this->limit || $this->from - || $this->until) && $dbcnt > $rescnt)){ + ( $this->showGallery ? $this->gallery->count() : 0 ); + + if ( $dbcnt == $rescnt || ( ( $totalrescnt == $this->limit || $this->from + || $this->until ) && $dbcnt > $rescnt ) ) + { # Case 1: seems sane. $totalcnt = $dbcnt; - } elseif($totalrescnt < $this->limit && !$this->from && !$this->until){ + } elseif ( $totalrescnt < $this->limit && !$this->from && !$this->until ) { # Case 2: not sane, but salvageable. Use the number of results. # Since there are fewer than 200, we can also take this opportunity # to refresh the incorrect category table entry -- which should be @@ -530,10 +537,14 @@ class CategoryViewer { $this->cat->refreshCounts(); } else { # Case 3: hopeless. Don't give a total count at all. - return wfMsgExt("category-$type-count-limited", 'parse', + return wfMsgExt( "category-$type-count-limited", 'parse', $wgLang->formatNum( $rescnt ) ); } - return wfMsgExt( "category-$type-count", 'parse', $wgLang->formatNum( $rescnt ), - $wgLang->formatNum( $totalcnt ) ); + return wfMsgExt( + "category-$type-count", + 'parse', + $wgLang->formatNum( $rescnt ), + $wgLang->formatNum( $totalcnt ) + ); } } diff --git a/includes/Categoryfinder.php b/includes/Categoryfinder.php index 325630d543..5ac8a9be81 100644 --- a/includes/Categoryfinder.php +++ b/includes/Categoryfinder.php @@ -22,7 +22,6 @@ * */ class Categoryfinder { - var $articles = array(); # The original article IDs passed to the seed function var $deadend = array(); # Array of DBKEY category names for categories that don't have a page var $parents = array(); # Array of [ID => array()] @@ -53,7 +52,7 @@ class Categoryfinder { $this->targets = array(); foreach ( $categories as $c ) { $ct = Title::makeTitleSafe( NS_CATEGORY, $c ); - if( $ct ) { + if ( $ct ) { $c = $ct->getDBkey(); $this->targets[$c] = $c; } @@ -73,6 +72,7 @@ class Categoryfinder { # Now check if this applies to the individual articles $ret = array(); + foreach ( $this->articles as $article ) { $conds = $this->targets; if ( $this->check( $article, $conds ) ) { @@ -92,14 +92,20 @@ class Categoryfinder { */ function check( $id , &$conds, $path = array() ) { // Check for loops and stop! - if( in_array( $id, $path ) ) + if ( in_array( $id, $path ) ) { return false; + } + $path[] = $id; # Shortcut (runtime paranoia): No contitions=all matched - if ( count( $conds ) == 0 ) return true; + if ( count( $conds ) == 0 ) { + return true; + } - if ( !isset( $this->parents[$id] ) ) return false; + if ( !isset( $this->parents[$id] ) ) { + return false; + } # iterate through the parents foreach ( $this->parents[$id] as $p ) { @@ -127,7 +133,7 @@ class Categoryfinder { # No sub-parent continue ; } - $done = $this->check( $this->name2id[$pname], $conds,$path ); + $done = $this->check( $this->name2id[$pname], $conds, $path ); if ( $done || count( $conds ) == 0 ) { # Subparents have done it! return true; @@ -143,10 +149,10 @@ class Categoryfinder { # Find all parents of the article currently in $this->next $layer = array(); $res = $this->dbr->select( - /* FROM */ 'categorylinks', - /* SELECT */ '*', - /* WHERE */ array( 'cl_from' => $this->next ), - __METHOD__ . "-1" + /* FROM */ 'categorylinks', + /* SELECT */ '*', + /* WHERE */ array( 'cl_from' => $this->next ), + __METHOD__ . "-1" ); while ( $o = $this->dbr->fetchObject( $res ) ) { $k = $o->cl_to ; @@ -159,6 +165,7 @@ class Categoryfinder { # Ignore those we already have if ( in_array ( $k , $this->deadend ) ) continue; + if ( isset ( $this->name2id[$k] ) ) continue; # Hey, new category! @@ -170,10 +177,10 @@ class Categoryfinder { # Find the IDs of all category pages in $layer, if they exist if ( count ( $layer ) > 0 ) { $res = $this->dbr->select( - /* FROM */ 'page', - /* SELECT */ array( 'page_id', 'page_title' ), - /* WHERE */ array( 'page_namespace' => NS_CATEGORY , 'page_title' => $layer ), - __METHOD__ . "-2" + /* FROM */ 'page', + /* SELECT */ array( 'page_id', 'page_title' ), + /* WHERE */ array( 'page_namespace' => NS_CATEGORY , 'page_title' => $layer ), + __METHOD__ . "-2" ); while ( $o = $this->dbr->fetchObject( $res ) ) { $id = $o->page_id; @@ -190,4 +197,4 @@ class Categoryfinder { } } -} # END OF CLASS "Categoryfinder" +} -- 2.20.1