<?php namespace Isekai\Widgets; use Html; class ExtraFontWidget { public static function create($text, $params, \Parser $parser, \PPFrame $frame){ $existsFonts = $parser->extIsekaiWidgetsCache->get('extraFonts', INF, []); $content = $text = $parser->recursiveTagParse($text, $frame); if (empty($params['name'])) { return '<span class="error">' . wfMessage('isekai-font-error-invalid-params')->parse() . '</span>' . $content; } $fontName = 'extra-' . $params['name']; if (preg_match('/[`~!@#$%^&*()+=<>?:"{}|,.\/;\'\\\\\[\]]\r\n/', $fontName)) { return '<span class="error">' . wfMessage('isekai-font-error-font-name-invalid')->parse() . '</span>' . $content; } $existsFonts = $parser->extIsekaiWidgetsCache->get('extraFonts', INF, []); if (!isset($existsFonts[$fontName])) { return '<span class="error">' . wfMessage('isekai-font-error-font-not-imported', $params['name'])->parse() . '</span>' . $content; } $fontId = $existsFonts[$fontName]; return [ Html::rawElement('span', [ 'class' => 'isekai-extra-font font-' . $fontId, ], $content), "markerType" => 'nowiki' ]; } }