I'm learning how to work with PHPBB extensions.
I'm developing an extension that recives players of a team and a tactic and should display de lineup of that team in the correct format.
Example of usage:
Code: Select all
[lineup tactica=443 alineacion=Unai Simón, Ander Capa, Yeray Álvarez, Iñigo Martínez, Mikel Balenziaga, Dani García, Unai López, Alex Berenguer, Iker Muniain, Iñaki Williams, Raúl García][/lineup]
Code: Select all
<div class="lineup"><div class="defenders">Unai Simón, Ander Capa, Yeray Álvarez, Iñigo Martínez</div><div class="midfielders"> Mikel Balenziaga, Dani García, Unai López, Alex Berenguer</div><div class="forwards"> Iker Muniain, Iñaki Williams, Raúl García</div></div>
Code: Select all
<?php
namespace bizkaitarra\lineup\event;
use s9e\TextFormatter\Configurator;
use s9e\TextFormatter\Configurator\Items\Template;
use s9e\TextFormatter\Parser\Tag;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class listener implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
'core.text_formatter_s9e_configure_after' => 'configure_lineup'
];
}
public function configure_lineup($event)
{
/** @var Configurator $configurator */
$configurator = $event['configurator'];
$template = new Template('<div class="lineup1" data-tactica="{@tactica}">{@alineacion}</div>');
$template->isNormalized(true);
$configurator->BBCodes->addCustom(
'[lineup tactica={NUMBER} alineacion={TEXT}][/lineup]',
$template
);
/** @var Tag $lineupTag */
$lineupTag = $configurator->tags['lineup'];
$lineupTag->filterChain->append(__CLASS__ . '::filter_lineup');
}
public static function filter_lineup(Tag $tag)
{
$tactica = $tag->getAttribute('tactica');
$alineacion = $tag->getAttribute('alineacion');
$jugadores = explode(",", trim($alineacion));
$output = self::generate_lineup($tactica, $jugadores);
// Para almacenar el contenido generado
$tag->setAttribute('alineacion', $output);
return true;
}
private static function generate_lineup($tactica, $jugadores)
{
// Procesa los jugadores y distribúyelos según la táctica
$html = '<div class="lineup">';
// Ejemplo simple de procesamiento basado en la táctica
// Necesitarás implementar el procesamiento adecuado según la táctica
$html .= '<div class="defenders">' . implode(', ', array_slice($jugadores, 0, 4)) . '</div>';
$html .= '<div class="midfielders">' . implode(', ', array_slice($jugadores, 4, 4)) . '</div>';
$html .= '<div class="forwards">' . implode(', ', array_slice($jugadores, 8, 3)) . '</div>';
$html .= '</div>';
return $html;
}
}
The problem is that the HTML is not interpreted, is writen as if it was an string in the forum message.
How could I make these to be interpreted as HTML?