From: Ben Sherratt <redacted>
Date: Thu, 14 Mar 2024 12:00:28 +0000 (+0000)
Subject: added youtube embeds
X-Git-Url: https://git.bts.cx/cx.git/commitdiff_plain/c42685eb41e003f7702d473c739564d64f1a133f?ds=sidebyside

added youtube embeds
---

diff --git a/cx/lib/markdown.php b/cx/lib/markdown.php
index 00d46c2..771b947 100644
--- a/cx/lib/markdown.php
+++ b/cx/lib/markdown.php
@@ -6,7 +6,8 @@ cx_require('third_party', 'parsedown', 'Parsedown.php');
 
 class ExtendedParsedown extends Parsedown {
 	public function __construct() {
-		$this->InlineTypes['{'][]= 'BlogImage';
+		$this->InlineTypes['{'][] = 'BlogImage';
+		$this->InlineTypes['{'][] = 'Youtube';
 		$this->inlineMarkerList .= '{';
 	}
 
@@ -33,6 +34,35 @@ class ExtendedParsedown extends Parsedown {
 			);
 		}
 	}
+
+	protected function inlineYoutube($excerpt) {
+		if (preg_match('/^{yt:([^}]+)}/', $excerpt['text'], $matches)) {
+			$video_id = $matches[1];
+
+			if ($video_id == null) {
+				return;
+			}
+
+			return array(
+				'extent' => strlen($matches[0]) + 1, 
+				'element' => array(
+					'name' => 'iframe',
+					'text' => '',
+					'attributes' => array(
+						'id' => "ytplayer",
+						'type' => "text/html",
+						'width' => "640",
+						'height' => "360",
+						'src' => "https://www.youtube.com/embed/" . $video_id,
+						'frameborder' => "0",
+						'loading' => "lazy",
+						'referrerpolicy' => "no-referrer",
+						'sandbox' => "allow-same-origin allow-scripts",
+					),
+				),
+			);
+		}
+	}
 }
 
 function cx_markdown_generate_html($markdown) {