Hashar has uploaded a new change for review.
https://gerrit.wikimedia.org/r/49924
Change subject: convert FakeTitle to use __call(Static)
......................................................................
convert FakeTitle to use __call(Static)
FakeTitle is supposed to throw an exception whenever one use one of the
Title public method on it. We had a long list of methods which was most
probably not in sync with the Title class and did not catch any static
calls.
This patch:
- maintains the old error() method for potential back compatibility
issue, it now uses a new static method throwErrors().
- inserts the function name in the exception message
- catches any methods (both objects and context)
Change-Id: Ic9aa0dce1d603a61756615acc6cac5fb35593601
---
M includes/FakeTitle.php
1 file changed, 20 insertions(+), 113 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core
refs/changes/24/49924/1
diff --git a/includes/FakeTitle.php b/includes/FakeTitle.php
index efa213f..3716b4a 100644
--- a/includes/FakeTitle.php
+++ b/includes/FakeTitle.php
@@ -24,118 +24,25 @@
* Fake title class that triggers an error if any members are called
*/
class FakeTitle extends Title {
- function error() { throw new MWException( "Attempt to call member
function of FakeTitle\n" ); }
- function isLocal() { $this->error(); }
- function isTrans() { $this->error(); }
- function getText() { $this->error(); }
- function getPartialURL() { $this->error(); }
- function getDBkey() { $this->error(); }
- function getNamespace() { $this->error(); }
- function getNsText() { $this->error(); }
- function getUserCaseDBKey() { $this->error(); }
- function getSubjectNsText() { $this->error(); }
- function getTalkNsText() { $this->error(); }
- function canTalk() { $this->error(); }
- function getInterwiki() { $this->error(); }
- function getFragment() { $this->error(); }
- function getFragmentForURL() { $this->error(); }
- function getDefaultNamespace() { $this->error(); }
- function getIndexTitle() { $this->error(); }
- function getPrefixedDBkey() { $this->error(); }
- function getPrefixedText() { $this->error(); }
- function getFullText() { $this->error(); }
- function getBaseText() { $this->error(); }
- function getSubpageText() { $this->error(); }
- function getSubpageUrlForm() { $this->error(); }
- function getPrefixedURL() { $this->error(); }
- function getFullURL( $query = '', $variant = false ) { $this->error(); }
- function getLocalURL( $query = '', $variant = false ) { $this->error();
}
- function getLinkURL( $query = array(), $variant = false ) {
$this->error(); }
- function escapeLocalURL( $query = '', $query2 = false ) {
$this->error(); }
- function escapeFullURL( $query = '', $query2 = false ) {
$this->error(); }
- function getInternalURL( $query = '', $variant = false ) {
$this->error(); }
- function getEditURL() { $this->error(); }
- function getEscapedText() { $this->error(); }
- function isExternal() { $this->error(); }
- function isSemiProtected( $action = 'edit' ) { $this->error(); }
- function isProtected( $action = '' ) { $this->error(); }
- function isConversionTable() { $this->error(); }
- function userIsWatching() { $this->error(); }
- function quickUserCan( $action, $user = null ) { $this->error(); }
- function isNamespaceProtected( User $user ) { $this->error(); }
- function userCan( $action, $user = null, $doExpensiveQueries = true ) {
$this->error(); }
- function getUserPermissionsErrors( $action, $user, $doExpensiveQueries
= true, $ignoreErrors = array() ) { $this->error(); }
- function updateTitleProtection( $create_perm, $reason, $expiry ) {
$this->error(); }
- function deleteTitleProtection() { $this->error(); }
- function isMovable() { $this->error(); }
- function userCanRead() { $this->error(); }
- function isTalkPage() { $this->error(); }
- function isSubpage() { $this->error(); }
- function hasSubpages() { $this->error(); }
- function getSubpages( $limit = -1 ) { $this->error(); }
- function isCssJsSubpage() { $this->error(); }
- function isCssOrJsPage() { $this->error(); }
- function getSkinFromCssJsSubpage() { $this->error(); }
- function isCssSubpage() { $this->error(); }
- function isJsSubpage() { $this->error(); }
- function userCanEditCssSubpage() { $this->error(); }
- function userCanEditJsSubpage() { $this->error(); }
- function isCascadeProtected() { $this->error(); }
- function getCascadeProtectionSources( $get_pages = true ) {
$this->error(); }
- function areRestrictionsCascading() { $this->error(); }
- function loadRestrictionsFromRows( $rows, $oldFashionedRestrictions =
null ) { $this->error(); }
- function loadRestrictions( $res = null ) { $this->error(); }
- function getRestrictions( $action ) { $this->error(); }
- function getRestrictionExpiry( $action ) { $this->error(); }
- function isDeleted() { $this->error(); }
- function isDeletedQuick() { $this->error(); }
- function getArticleID( $flags = 0 ) { $this->error(); }
- function isRedirect( $flags = 0 ) { $this->error(); }
- function getLength( $flags = 0 ) { $this->error(); }
- function getLatestRevID( $flags = 0 ) { $this->error(); }
- function resetArticleID( $newid ) { $this->error(); }
- function invalidateCache() { $this->error(); }
- function getTalkPage() { $this->error(); }
- function setFragment( $fragment ) { $this->error(); }
- function getSubjectPage() { $this->error(); }
- function getLinksTo( $options = array(), $table = 'pagelinks', $prefix
= 'pl' ) { $this->error(); }
- function getTemplateLinksTo( $options = array() ) { $this->error(); }
- function getBrokenLinksFrom() { $this->error(); }
- function getSquidURLs() { $this->error(); }
- function purgeSquid() { $this->error(); }
- function moveNoAuth( &$nt ) { $this->error(); }
- function isValidMoveOperation( &$nt, $auth = true, $reason = '' ) {
$this->error(); }
- function moveTo( &$nt, $auth = true, $reason = '', $createRedirect =
true ) { $this->error(); }
- function moveSubpages( $nt, $auth = true, $reason = '', $createRedirect
= true ) { $this->error(); }
- function isSingleRevRedirect() { $this->error(); }
- function isValidMoveTarget( $nt ) { $this->error(); }
- function isWatchable() { $this->error(); }
- function getParentCategories() { $this->error(); }
- function getParentCategoryTree( $children = array() ) { $this->error();
}
- function pageCond() { $this->error(); }
- function getPreviousRevisionID( $revId, $flags = 0 ) { $this->error(); }
- function getNextRevisionID( $revId, $flags = 0 ) { $this->error(); }
- function getFirstRevision( $flags = 0 ) { $this->error(); }
- function isNewPage() { $this->error(); }
- function getEarliestRevTime( $flags = 0 ) { $this->error(); }
- function countRevisionsBetween( $old, $new ) { $this->error(); }
- function equals( Title $title ) { $this->error(); }
- function exists() { $this->error(); }
- function isAlwaysKnown() { $this->error(); }
- function isKnown() { $this->error(); }
- function canExist() { $this->error(); }
- function touchLinks() { $this->error(); }
- function getTouched( $db = null ) { $this->error(); }
- function getNotificationTimestamp( $user = null ) { $this->error(); }
- function getNamespaceKey( $prepend = 'nstab-' ) { $this->error(); }
- function isSpecialPage() { $this->error(); }
- function isSpecial( $name ) { $this->error(); }
- function fixSpecialName() { $this->error(); }
- function isContentPage() { $this->error(); }
- function getRedirectsHere( $ns = null ) { $this->error(); }
- function isValidRedirectTarget() { $this->error(); }
- function getBacklinkCache() { $this->error(); }
- function canUseNoindex() { $this->error(); }
- function getRestrictionTypes() { $this->error(); }
+ /**
+ * Back compatibility error function
+ */
+ public function error( $fname = '') {
+ self::throwError($fname);
+ }
+
+ protected static function throwError($fname) {
+ throw new MWException(
+ "Attempt to call member function '$fname' of
FakeTitle\n" );
+ }
+
+ public function __call($fname, $args) {
+ $args; # unused
+ self::throwError( $fname );
+ }
+ public static function __callStatic($fname, $args) {
+ $args; # unused
+ self::throwError( $fname );
+ }
}
--
To view, visit https://gerrit.wikimedia.org/r/49924
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic9aa0dce1d603a61756615acc6cac5fb35593601
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Hashar <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits