aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/bbcode.php1
-rwxr-xr-xinclude/oembed.php29
2 files changed, 30 insertions, 0 deletions
diff --git a/include/bbcode.php b/include/bbcode.php
index 66b63d395..66bf6b5ec 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -12,6 +12,7 @@ require_once('include/hubloc.php');
function tryoembed($match) {
$url = ((count($match) == 2) ? $match[1] : $match[2]);
+
$o = oembed_fetch_url($url);
if ($o->type == 'error')
diff --git a/include/oembed.php b/include/oembed.php
index a11a64eec..e50d34c7d 100755
--- a/include/oembed.php
+++ b/include/oembed.php
@@ -2,6 +2,35 @@
function oembed_replacecb($matches){
$embedurl=$matches[1];
+
+ // implements a personal embed white/black list for logged in members
+ if(local_channel()) {
+ if(($x = get_pconfig(local_channel(),'system','embed_deny'))) {
+ $l = explode("\n",$x);
+ if($l) {
+ foreach($l as $ll) {
+ if(trim($ll) && strpos($embedurl,trim($ll)) !== false)
+ return '<a href="' . $embedurl . '">' . $embedurl . '</a>';
+ }
+ }
+ }
+ if(($x = get_pconfig(local_channel(),'system','embed_allow'))) {
+ $found = false;
+ $l = explode("\n",$x);
+ if($l) {
+ foreach($l as $ll) {
+ if(trim($ll) && strpos($embedurl,trim($ll)) !== false) {
+ $found = true;
+ break;
+ }
+ }
+ }
+ if(! $found) {
+ return '<a href="' . $embedurl . '">' . $embedurl . '</a>';
+ }
+ }
+ }
+
$j = oembed_fetch_url($embedurl);
$s = oembed_format_object($j);
return $s;