summaryrefslogtreecommitdiffstats
path: root/vendor/fguillot/picofeed/lib/PicoFeed/Generator/YoutubeContentGenerator.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/fguillot/picofeed/lib/PicoFeed/Generator/YoutubeContentGenerator.php')
-rw-r--r--vendor/fguillot/picofeed/lib/PicoFeed/Generator/YoutubeContentGenerator.php67
1 files changed, 67 insertions, 0 deletions
diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Generator/YoutubeContentGenerator.php b/vendor/fguillot/picofeed/lib/PicoFeed/Generator/YoutubeContentGenerator.php
new file mode 100644
index 000000000..198090d4f
--- /dev/null
+++ b/vendor/fguillot/picofeed/lib/PicoFeed/Generator/YoutubeContentGenerator.php
@@ -0,0 +1,67 @@
+<?php
+
+namespace PicoFeed\Generator;
+
+use PicoFeed\Base;
+use PicoFeed\Parser\Item;
+
+/**
+ * Youtube Content Generator
+ *
+ * @package PicoFeed\Generator
+ * @author Frederic Guillot
+ */
+class YoutubeContentGenerator extends Base implements ContentGeneratorInterface
+{
+ /**
+ * Execute Content Generator
+ *
+ * @access public
+ * @param Item $item
+ * @return boolean
+ */
+ public function execute(Item $item)
+ {
+ if ($item->hasNamespace('yt')) {
+ return $this->generateHtmlFromXml($item);
+ }
+
+ return $this->generateHtmlFromUrl($item);
+ }
+
+ /**
+ * Generate HTML
+ *
+ * @access public
+ * @param Item $item
+ * @return boolean
+ */
+ private function generateHtmlFromXml(Item $item)
+ {
+ $videoId = $item->getTag('yt:videoId');
+
+ if (! empty($videoId)) {
+ $item->setContent('<iframe width="560" height="315" src="//www.youtube.com/embed/'.$videoId[0].'" frameborder="0"></iframe>');
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Generate HTML from item URL
+ *
+ * @access public
+ * @param Item $item
+ * @return bool
+ */
+ public function generateHtmlFromUrl(Item $item)
+ {
+ if (preg_match('/youtube\.com\/watch\?v=(.*)/', $item->getUrl(), $matches)) {
+ $item->setContent('<iframe width="560" height="315" src="//www.youtube.com/embed/'.$matches[1].'" frameborder="0"></iframe>');
+ return true;
+ }
+
+ return false;
+ }
+}