. * * @file * @ingroup Skins */ declare( strict_types=1 ); namespace MediaWiki\Skins\Citizen\Partials; use MediaWiki\MediaWikiServices; use MediaWiki\Title\Title; use MWTimestamp; use SpecialPage; 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->parse(); } 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' )->parse(); } elseif ( ( $title->inNamespace( NS_USER ) || ( defined( 'NS_USER_WIKI' ) && $title->inNamespace( NS_USER_WIKI ) ) || ( defined( 'NS_USER_WIKI' ) && $title->inNamespace( NS_USER_PROFILE ) ) ) && !$title->isSubpage() ) { // Build user tagline if it is a top-level user page $tagline = $this->buildUserTagline( $title ); } elseif ( !$skin->msg( 'citizen-tagline' )->isDisabled() ) { $tagline = $skin->msg( 'citizen-tagline' )->parse(); } else { // Fallback to site tagline $tagline = $skin->msg( 'tagline' )->text(); } } } elseif ( !$skin->msg( 'citizen-tagline' )->isDisabled() ) { $tagline = $skin->msg( 'citizen-tagline' )->parse(); } 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 ) { $skin = $this->skin; $tagline = '