container = $container;
}
public function getFilters()
{
return array(
'bbdecode' => new \Twig_Filter_Method($this, 'bbdecode', array(
'is_safe' => array('html'),
)),
);
}
public function bbdecode($sentence)
{
$sentence = htmlspecialchars($sentence, ENT_NOQUOTES);
$sentence = str_replace(array("\r\n", "\n", "\r"), "
", $sentence);
$sentence = preg_replace('/\\[u\\](.*?)\\[\\/u\\]/im', '\\1', $sentence);
$sentence = preg_replace('/\\[b\\](.*?)\\[\\/b\\]/im', '\\1', $sentence);
$sentence = preg_replace('/\\[i\\](.*?)\\[\\/i\\]/im', '\\1', $sentence);
while (preg_match('/\\[img( (ns|name)="[^"]+"){1,}\\]/i', $sentence, $m, PREG_OFFSET_CAPTURE))
{
$start = $m[0][1];
$len = strlen($m[0][0]);
$full_tag = $m[0][0];
$ns = (preg_match('/ ns="([^"]+)"/', $full_tag, $ns)) ? trim($ns[1]) : '';
$name = (preg_match('/ name="([^"]+)"/', $full_tag, $name)) ? trim($name[1]) : '';
if ($name == '')
{
$sentence = substr_replace($sentence, 'Hibás kép', $start, $len);
}
else
{
// TODO: Thumbnailing!
$sentence = substr_replace($sentence, '', $start, $len);
}
}
while (preg_match('/\\[link( (url)="[^"]+"){1,}\\](?P.*?)\\[\\/link\\]/i', $sentence, $m, PREG_OFFSET_CAPTURE))
{
$start = $m[0][1];
$len = strlen($m[0][0]);
$full_tag = $m[0][0];
$url = (preg_match('/ url="([^"]+)"/', $full_tag, $url)) ? trim($url[1]) : '';
$content = '';
if (array_key_exists('content', $m))
{
$content = trim($m['content'][0]);
}
if (($url == '') || ($content == ''))
{
$sentence = substr_replace($sentence, 'Hibás link', $start, $len);
}
else
{
$sentence = substr_replace($sentence, '' . $content . '', $start, $len);
}
}
return $sentence;
}
public function getName()
{
return 'twig_bb';
}
}