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