%PDF- %PDF-
Direktori : /home/komfo908/www/suporte/_old/inc/htmlpurifier/custom/ |
Current File : /home/komfo908/www/suporte/_old/inc/htmlpurifier/custom/heskIframe.php |
<?php /** * * This file is part of HESK - PHP Help Desk Software. * * (c) Copyright Klemen Stirn. All rights reserved. * https://www.hesk.com * * For the full copyright and license agreement information visit * https://www.hesk.com/eula.php * */ /** * Based on: http://sachachua.com/blog/2011/08/drupal-html-purifier-embedding-iframes-youtube/ * Iframe filter that does some primitive whitelisting in a somewhat recognizable and tweakable way */ class HTMLPurifier_Filter_HeskIframe extends HTMLPurifier_Filter { public $name = 'HeskIframe'; /** * * @param string $html * @param HTMLPurifier_Config $config * @param HTMLPurifier_Context $context * @return string */ public function preFilter($html, $config, $context) { $html = preg_replace('#<iframe#i', '<img class="HeskIframe"', $html); $html = preg_replace('#</iframe>#i', '</img>', $html); return $html; } /** * * @param string $html * @param HTMLPurifier_Config $config * @param HTMLPurifier_Context $context * @return string */ public function postFilter($html, $config, $context) { $post_regex = '#<img class="HeskIframe"([^>]+?)/?>#'; return preg_replace_callback($post_regex, array($this, 'postFilterCallback'), $html); } /** * * @param array $matches * @return string */ protected function postFilterCallback($matches) { // Domain Whitelist $youTubeMatch = preg_match('#src="https?://www.youtube(-nocookie)?.com/#i', $matches[1]); $vimeoMatch = preg_match('#src="https?://player.vimeo.com/#i', $matches[1]); if ($youTubeMatch || $vimeoMatch) { $extra = ' frameborder="0"'; if ($youTubeMatch) { $extra .= ' allowfullscreen'; } elseif ($vimeoMatch) { $extra .= ' webkitAllowFullScreen mozallowfullscreen allowFullScreen'; } return '<iframe ' . $matches[1] . $extra . '></iframe>'; } else { return ''; } } }