addFilteredHTML($webmention);
}
/**
* Listen for the updated event.
*
* @param WebMention $webmention
* @return void
*/
public function updated(WebMention $webmention)
{
$this->addFilteredHTML($webmention);
}
/**
* Filter the HTML in a reply webmention.
*
* @param WebMention The WebMention model
* @return void
*/
private function addFilteredHTML(WebMention $webmention)
{
$mf2 = json_decode($webmention->mf2);
if (isset($mf2['items'][0]['properties']['content'][0]['html'])) {
$mf2['items'][0]['properties']['content'][0]['html_purified'] = $this->useHTMLPurifier(
$mf2['items'][0]['properties']['content'][0]['html']
);
}
$webmention->mf2 = json_encode($mf2);
$webmetion->save();
}
/**
* Set up and use HTMLPurifer on some HTML.
*
* @param string The HTML to be processed
* @return string The processed HTML
*/
private function useHTMLPurifier($html)
{
$config = HTMLPurifier_Config::createDefault();
$config->set('Cache.SerializerPath', storage_path() . '/HTMLPurifier');
$purifier = new HTMLPurifier($config);
return $purifier->purify($html);
}
}