* Create a new Title from text, such as what one would find in a link. De-
* codes any HTML entities in the text.
*
- * @param string $text The link text; spaces, prefixes, and an
+ * @param string|null $text The link text; spaces, prefixes, and an
* initial ':' indicating the main namespace are accepted.
* @param int $defaultNamespace The namespace to use if none is specified
* by a prefix. If you want to force a specific namespace even if
public static function newFromText( $text, $defaultNamespace = NS_MAIN ) {
if ( is_object( $text ) ) {
throw new InvalidArgumentException( '$text must be a string.' );
- } elseif ( !is_string( $text ) ) {
+ }
+ if ( $text !== null && !is_string( $text ) ) {
wfDebugLog( 'T76305', wfGetAllCallers( 5 ) );
- wfWarn(
- __METHOD__ . ': $text must be a string. ' .
- 'This will throw an InvalidArgumentException in future.',
- 2
- );
+ return null;
+ }
+ if ( $text === null ) {
+ return null;
}
try {
*/
public static function newFromTextThrow( $text, $defaultNamespace = NS_MAIN ) {
if ( is_object( $text ) ) {
- throw new MWException( 'Title::newFromTextThrow given an object' );
+ throw new MWException( '$text must be a string, given an object' );
}
$cache = self::getTitleCache();
* @param string $title Database key form
* @param string $fragment The link fragment (after the "#")
* @param string $interwiki Interwiki prefix
- * @return Title The new object, or null on an error
+ * @return Title|null The new object, or null on an error
*/
public static function makeTitleSafe( $ns, $title, $fragment = '', $interwiki = '' ) {
if ( !MWNamespace::exists( $ns ) ) {
*/
public function getNsText() {
if ( $this->isExternal() ) {
- // This probably shouldn't even happen. ohh man, oh yuck.
- // But for interwiki transclusion it sometimes does.
- // Shit. Shit shit shit.
- //
+ // This probably shouldn't even happen,
+ // but for interwiki transclusion it sometimes does.
// Use the canonical namespaces if possible to try to
// resolve a foreign namespace.
if ( MWNamespace::exists( $this->mNamespace ) ) {
* Deprecated for public use, use Title::makeTitle() with fragment parameter.
* Still in active use privately.
*
+ * @private
* @param string $fragment Text
*/
public function setFragment( $fragment ) {
* - secure : does cheap and expensive checks, using the master as needed
* @param array $ignoreErrors Array of Strings Set this to a list of message keys
* whose corresponding errors may be ignored.
- * @return array Array of arguments to wfMessage to explain permissions problems.
+ * @return array Array of arrays of the arguments to wfMessage to explain permissions problems.
*/
public function getUserPermissionsErrors(
$action, $user, $rigor = 'secure', $ignoreErrors = array()
// Remove the errors being ignored.
foreach ( $errors as $index => $error ) {
- $error_key = is_array( $error ) ? $error[0] : $error;
+ $errKey = is_array( $error ) ? $error[0] : $error;
- if ( in_array( $error_key, $ignoreErrors ) ) {
+ if ( in_array( $errKey, $ignoreErrors ) ) {
+ unset( $errors[$index] );
+ }
+ if ( $errKey instanceof MessageSpecifier && in_array( $errKey->getKey(), $ignoreErrors ) ) {
unset( $errors[$index] );
}
}
} elseif ( $result !== '' && is_string( $result ) ) {
// A string representing a message-id
$errors[] = array( $result );
+ } elseif ( $result instanceof MessageSpecifier ) {
+ // A message specifier representing an error
+ $errors[] = array( $result );
} elseif ( $result === false ) {
// a generic "We don't want them to do that"
$errors[] = array( 'badaccess-group0' );
/**
* Updates page_touched for this page; called from LinksUpdate.php
*
- * @param integer $purgeTime TS_MW timestamp [optional]
+ * @param string $purgeTime [optional] TS_MW timestamp
* @return bool True if the update succeeded
*/
public function invalidateCache( $purgeTime = null ) {
* on the number of links. Typically called on create and delete.
*/
public function touchLinks() {
- $u = new HTMLCacheUpdate( $this, 'pagelinks' );
- $u->doUpdate();
-
+ DeferredUpdates::addUpdate( new HTMLCacheUpdate( $this, 'pagelinks' ) );
if ( $this->getNamespace() == NS_CATEGORY ) {
- $u = new HTMLCacheUpdate( $this, 'categorylinks' );
- $u->doUpdate();
+ DeferredUpdates::addUpdate( new HTMLCacheUpdate( $this, 'categorylinks' ) );
}
}