. * * @file * @ingroup Skins */ declare( strict_types=1 ); namespace MediaWiki\Skins\Citizen\Partials; use Exception; use MediaWiki\MainConfigNames; use MediaWiki\MediaWikiServices; final class Metadata extends Partial { /** * Adds metadata to the output page */ public function addMetadata() { // Theme color $this->out->addMeta( 'theme-color', $this->getConfigValue( 'CitizenThemeColor' ) ?? '' ); // Generate webapp manifest $this->addManifest(); } /** * Adds the manifest if: * * Enabled in 'CitizenEnableManifest' * * User has read access (i.e. not a private wiki) * Manifest link will be empty if wfExpandUrl throws an exception. */ private function addManifest() { if ( $this->getConfigValue( 'CitizenEnableManifest' ) !== true || $this->getConfigValue( MainConfigNames::GroupPermissions )['*']['read'] !== true ) { return; } try { $href = MediaWikiServices::getInstance()->getUrlUtils() ->expand( wfAppendQuery( wfScript( 'api' ), [ 'action' => 'webapp-manifest' ] ), PROTO_RELATIVE ); } catch ( Exception $e ) { $href = ''; } $this->out->addLink( [ 'rel' => 'manifest', 'href' => $href, ] ); } }