This repository has been archived on 2024-06-26. You can view files and clone it, but cannot push or open issues or pull requests.
sakura/app/BBcodeDefinitions/YouTube.php

55 lines
1.1 KiB
PHP
Raw Normal View History

<?php
2016-02-03 23:22:56 +01:00
/**
* Holds the YouTube embed bbcode class.
2016-03-08 18:07:58 -05:00
*
2016-02-03 23:22:56 +01:00
* @package Sakura
*/
namespace Sakura\BBcodeDefinitions;
use JBBCode\CodeDefinition;
use JBBCode\ElementNode;
2016-02-02 22:04:15 +01:00
/**
* YouTube video embedding bbcode for JBBCode
2016-03-08 18:07:58 -05:00
*
2016-02-02 22:04:15 +01:00
* @package Sakura
* @author Julian van de Groep <me@flash.moe>
*/
2015-12-02 09:40:28 -05:00
class YouTube extends CodeDefinition
{
2016-02-02 22:04:15 +01:00
/**
* Constructor.
*/
public function __construct()
{
parent::__construct();
$this->setTagName("youtube");
}
2016-02-02 22:04:15 +01:00
/**
* Compiles the YouTube bbcode to HTML
2016-03-08 18:07:58 -05:00
*
2016-02-02 22:04:15 +01:00
* @param ElementNode $el The JBBCode element node.
2016-03-08 18:07:58 -05:00
*
2016-02-02 22:04:15 +01:00
* @return string The compiled HTML.
*/
public function asHtml(ElementNode $el)
{
$content = "";
2015-12-02 09:40:28 -05:00
foreach ($el->getChildren() as $child) {
$content .= $child->getAsBBCode();
}
$foundMatch = preg_match('/^([A-z0-9=\-]+?)$/i', $content, $matches);
2015-12-02 09:40:28 -05:00
if (!$foundMatch) {
return $el->getAsBBCode();
} else {
2016-03-24 01:40:59 +01:00
return "<iframe width='640' height='390' src='https://www.youtube.com/embed/{$matches[1]}'
frameborder='0' allowfullscreen></iframe>";
}
}
}