Rewrite srcset in feeds to absolute urls (#585)

This commit is contained in:
onli 2019-02-09 15:10:36 +01:00
parent 4445926033
commit 1b518e5b46

View File

@ -18,13 +18,20 @@ class serendipity_event_responsiveimages extends serendipity_event
$propbag->add('description', PLUGIN_EVENT_RESPONSIVE_DESC); $propbag->add('description', PLUGIN_EVENT_RESPONSIVE_DESC);
$propbag->add('stackable', false); $propbag->add('stackable', false);
$propbag->add('author', 'Serendipity Team'); $propbag->add('author', 'Serendipity Team');
$propbag->add('version', '0.4'); $propbag->add('version', '0.5');
$propbag->add('requirements', array( $propbag->add('requirements', array(
'serendipity' => '2.2', 'serendipity' => '2.2',
)); ));
$propbag->add('cachable_events', array('frontend_display' => true)); $propbag->add('cachable_events', array('frontend_display' => true));
$propbag->add('event_hooks', array('frontend_display' => true, $propbag->add('event_hooks', array('frontend_display' => true,
'backend_media_makethumb' => true 'backend_media_makethumb' => true,
'frontend_display:unknown:per-entry' => true,
'frontend_display:opml-1.0:per_entry' => true,
'frontend_display:rss-0.91:per_entry' => true,
'frontend_display:rss-1.0:per_entry' => true,
'frontend_display:rss-2.0:per_entry' => true,
'frontend_display:atom-0.3:per_entry' => true,
'frontend_display:atom-1.0:per_entry' => true,
)); ));
$propbag->add('groups', array('MARKUP')); $propbag->add('groups', array('MARKUP'));
@ -118,6 +125,22 @@ class serendipity_event_responsiveimages extends serendipity_event
} }
break; break;
case 'frontend_display:unknown:per-entry':
case 'frontend_display:opml-1.0:per_entry':
case 'frontend_display:rss-0.91:per_entry':
case 'frontend_display:rss-1.0:per_entry':
case 'frontend_display:rss-2.0:per_entry':
case 'frontend_display:atom-0.3:per_entry':
case 'frontend_display:atom-1.0:per_entry':
// We need to rewrite relative srcsets to absolute urls in the RSS feed, otherwise images won't be shown
$pattern = '@srcset=(["\'][^"\']+)@i';
$eventData['feed_body'] = preg_replace_callback($pattern, function($matches) {
global $serendipity;
$matches[1] = str_ireplace('"' . $serendipity['serendipityHTTPPath'], '"' . $serendipity['baseURL'], $matches[1]);
$matches[1] = str_ireplace(',' . $serendipity['serendipityHTTPPath'], ',' . $serendipity['baseURL'], $matches[1]);
return 'srcset=' . $matches[1];
}, $eventData['feed_body']);
break;
default: default:
return false; return false;