diff --git a/includes/Partials/Tagline.php b/includes/Partials/Tagline.php index 2f68acc6..903c1cdf 100644 --- a/includes/Partials/Tagline.php +++ b/includes/Partials/Tagline.php @@ -1,144 +1,144 @@ -. - * - * @file - * @ingroup Skins - */ - -declare( strict_types=1 ); - -namespace MediaWiki\Skins\Citizen\Partials; - -use MediaWiki\MediaWikiServices; -use Title; -use User; -use Wikimedia\IPUtils; - -/** - * Tagline partial of Skin Citizen - */ -final class Tagline extends Partial { - - /** - * Get tagline message - * - * @return string - */ - public function getTagline() { - $skin = $this->skin; - $out = $this->out; - $title = $this->title; - - $shortdesc = $out->getProperty( 'shortdesc' ); - $tagline = ''; - - if ( $title ) { - // Use short description if there is any - // from Extension:ShortDescription - if ( $shortdesc ) { - $tagline = $shortdesc; - } else { - $namespaceText = $title->getNsText(); - // Check if namespaceText exists - // Return null if main namespace or not defined - if ( $namespaceText ) { - $msg = $skin->msg( 'citizen-tagline-ns-' . strtolower( $namespaceText ) ); - // Use custom message if exists - if ( !$msg->isDisabled() ) { - $tagline = $msg->text(); - } else { - if ( $title->isSpecialPage() ) { - // No tagline if special page - $tagline = ''; - } elseif ( $title->isTalkPage() ) { - // Use generic talk page message if talk page - $tagline = $skin->msg( 'citizen-tagline-ns-talk' )->text(); - - } elseif ( $title->inNamespace( NS_USER ) && !$title->isSubpage() ) { - // Build user tagline if it is a top-level user page - $tagline = $this->buildUserTagline( $title ); - } else { - // Fallback to site tagline - $tagline = $skin->msg( 'tagline' )->text(); - } - } - } else { - $tagline = $skin->msg( 'tagline' )->text(); - } - } - } - - // Apply language variant conversion - if ( !empty( $tagline ) ) { - $services = MediaWikiServices::getInstance(); - $langConv = $services - ->getLanguageConverterFactory() - ->getLanguageConverter( $services->getContentLanguage() ); - $tagline = $langConv->convert( $tagline ); - } - - return $tagline; - } - - /** - * Return user tagline message - * - * @param Title $title - * @return string - */ - private function buildUserTagline( $title ) { - $user = $this->buildPageUserObject( $title ); - if ( $user ) { - $editCount = $user->getEditCount(); - if ( $editCount ) { - $skin = $this->skin; - // TODO: Figure out a waw to get registration duration, - // like Langauge::getHumanTimestamp() - //$registration = $user->getRegistration(); - $msgEditCount = $skin->msg( 'usereditcount' ) - ->numParams( sprintf( '%s', number_format( $editCount, 0 ) ) ); - return $msgEditCount; - } - } - return null; - } - - /** - * Return new User object based on username or IP address. - * Based on MinervaNeue - * - * @param Title $title - * @return User|null - */ - private function buildPageUserObject( $title ) { - $titleText = $title->getText(); - $user = $this->user; - - if ( IPUtils::isIPAddress( $titleText ) ) { - return $user->newFromAnyId( null, $titleText, null ); - } - - $pageUserId = $user->idFromName( $titleText ); - if ( $pageUserId ) { - return $user->newFromId( $pageUserId ); - } - - return null; - } -} +. + * + * @file + * @ingroup Skins + */ + +declare( strict_types=1 ); + +namespace MediaWiki\Skins\Citizen\Partials; + +use MediaWiki\MediaWikiServices; +use Title; +use User; +use Wikimedia\IPUtils; + +/** + * Tagline partial of Skin Citizen + */ +final class Tagline extends Partial { + + /** + * Get tagline message + * + * @return string + */ + public function getTagline() { + $skin = $this->skin; + $out = $this->out; + $title = $this->title; + + $shortdesc = $out->getProperty( 'shortdesc' ); + $tagline = ''; + + if ( $title ) { + // Use short description if there is any + // from Extension:ShortDescription + if ( $shortdesc ) { + $tagline = $shortdesc; + } else { + $namespaceText = $title->getNsText(); + // Check if namespaceText exists + // Return null if main namespace or not defined + if ( $namespaceText ) { + $msg = $skin->msg( 'citizen-tagline-ns-' . strtolower( $namespaceText ) ); + // Use custom message if exists + if ( !$msg->isDisabled() ) { + $tagline = $msg->text(); + } else { + if ( $title->isSpecialPage() ) { + // No tagline if special page + $tagline = ''; + } elseif ( $title->isTalkPage() ) { + // Use generic talk page message if talk page + $tagline = $skin->msg( 'citizen-tagline-ns-talk' )->text(); + + } elseif ( $title->inNamespace( NS_USER ) && !$title->isSubpage() ) { + // Build user tagline if it is a top-level user page + $tagline = $this->buildUserTagline( $title ); + } else { + // Fallback to site tagline + $tagline = $skin->msg( 'tagline' )->text(); + } + } + } else { + $tagline = $skin->msg( 'tagline' )->text(); + } + } + } + + // Apply language variant conversion + if ( !empty( $tagline ) ) { + $services = MediaWikiServices::getInstance(); + $langConv = $services + ->getLanguageConverterFactory() + ->getLanguageConverter( $services->getContentLanguage() ); + $tagline = $langConv->convert( $tagline ); + } + + return $tagline; + } + + /** + * Return user tagline message + * + * @param Title $title + * @return string + */ + private function buildUserTagline( $title ) { + $user = $this->buildPageUserObject( $title ); + if ( $user ) { + $editCount = $user->getEditCount(); + if ( $editCount ) { + $skin = $this->skin; + // TODO: Figure out a waw to get registration duration, + // like Langauge::getHumanTimestamp() + //$registration = $user->getRegistration(); + $msgEditCount = $skin->msg( 'usereditcount' ) + ->numParams( sprintf( '%s', number_format( $editCount, 0 ) ) ); + return $msgEditCount; + } + } + return null; + } + + /** + * Return new User object based on username or IP address. + * Based on MinervaNeue + * + * @param Title $title + * @return User|null + */ + private function buildPageUserObject( $title ) { + $titleText = $title->getText(); + $user = $this->user; + + if ( IPUtils::isIPAddress( $titleText ) ) { + return $user->newFromAnyId( null, $titleText, null ); + } + + $pageUserId = $user->idFromName( $titleText ); + if ( $pageUserId ) { + return $user->newFromId( $pageUserId ); + } + + return null; + } +}