/** * @param $textarea_id * * @return array */ public function encode($textarea_id) { $config = parent::loadConfig(__DIR__); $code = "<img src='{$this->image_path}/mmssrc.gif' alt='" . _XOOPS_FORM_ALTMMS . "' title='" . _XOOPS_FORM_ALTMMS . "' '" . "' onclick='xoopsCodeMms(\"{$textarea_id}\",\"" . htmlspecialchars(_XOOPS_FORM_ENTERMMSURL, ENT_QUOTES) . "\",\"" . htmlspecialchars(_XOOPS_FORM_ALT_ENTERHEIGHT, ENT_QUOTES) . "\",\"" . htmlspecialchars(_XOOPS_FORM_ALT_ENTERWIDTH, ENT_QUOTES) . "\");' onmouseover='style.cursor=\"hand\"'/> "; $javascript = <<<EOH function xoopsCodeMms(id,enterMmsPhrase, enterMmsHeightPhrase, enterMmsWidthPhrase) { var selection = xoopsGetSelect(id); if (selection.length > 0) { var selection="mms://"+selection; var text = selection; } else { var text = prompt(enterMmsPhrase+" mms or http", "mms://"); } var domobj = xoopsGetElementById(id); if (text.length > 0 && text != "mms://") { var text2 = prompt(enterMmsWidthPhrase, "480"); var text3 = prompt(enterMmsHeightPhrase, "330"); var result = "[mms="+text2+","+text3+"]" + text + "[/mms]"; xoopsInsertText(domobj, result); } domobj.focus(); } EOH; return array($code, $javascript); }
/** * @param $textarea_id * * @return array */ function encode($textarea_id) { $config = parent::loadConfig(dirname(__FILE__)); $code = "<img src='{$this->image_path}/youtube.gif' alt='" . _XOOPS_FORM_ALTYOUTUBE . "' title='" . _XOOPS_FORM_ALTYOUTUBE . "' '" . "' onclick='xoopsCodeYoutube(\"{$textarea_id}\",\"" . htmlspecialchars(_XOOPS_FORM_ENTERYOUTUBEURL, ENT_QUOTES) . "\",\"" . htmlspecialchars(_XOOPS_FORM_ALT_ENTERHEIGHT, ENT_QUOTES) . "\",\"" . htmlspecialchars(_XOOPS_FORM_ALT_ENTERWIDTH, ENT_QUOTES) . "\");' onmouseover='style.cursor=\"hand\"'/> "; $javascript = <<<EOH function xoopsCodeYoutube(id, enterFlashPhrase, enterFlashHeightPhrase, enterFlashWidthPhrase) { var selection = xoopsGetSelect(id); if (selection.length > 0) { var text = selection; } else { var text = prompt(enterFlashPhrase, ""); } var domobj = xoopsGetElementById(id); if (text.length > 0) { var text2 = prompt(enterFlashWidthPhrase, "425"); var text3 = prompt(enterFlashHeightPhrase, "350"); var result = "[youtube="+text2+","+text3+"]" + text + "[/youtube]"; xoopsInsertText(domobj, result); } domobj.focus(); } EOH; return array($code, $javascript); }
/** * @param string $url * @param int $width * @param int $height * @return string */ public static function decode($url, $width, $height) { $config = parent::loadConfig(__DIR__); if ((empty($width) || empty($height)) && !empty($config['detect_dimension'])) { if (!($dimension = @getimagesize($url))) { return "<a href='{$url}' rel='external' title=''>{$url}</a>"; } if (!empty($width)) { $height = $dimension[1] * $width / $dimension[0]; } else { if (!empty($height)) { $width = $dimension[0] * $height / $dimension[1]; } else { list($width, $height) = array($dimension[0], $dimension[1]); } } } $rp = "<object width='{$width}' height='{$height}' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0'>"; $rp .= "<param name='movie' value='{$url}'>"; $rp .= "<param name='QUALITY' value='high'>"; $rp .= "<PARAM NAME='bgcolor' VALUE='#FFFFFF'>"; $rp .= "<param name='wmode' value='transparent'>"; $rp .= "<embed src='{$url}' width='{$width}' height='{$height}' quality='high' bgcolor='#FFFFFF' wmode='transparent' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash'></embed>"; $rp .= "</object>"; return $rp; }
function encode($textarea_id) { $config = parent::loadConfig(dirname(__FILE__)); $code = "<img src='{$this->image_path}/rtspimg.gif' alt='" . _XOOPS_FORM_ALTRTSP . "' onclick='xoopsCodeRtsp(\"{$textarea_id}\",\"" . htmlspecialchars(_XOOPS_FORM_ENTERRTSPURL, ENT_QUOTES) . "\",\"" . htmlspecialchars(_XOOPS_FORM_ENTERHEIGHT, ENT_QUOTES) . "\",\"" . htmlspecialchars(_XOOPS_FORM_ENTERWIDTH, ENT_QUOTES) . "\");' onmouseover='style.cursor=\"hand\"'/> "; $javascript = <<<EOH function xoopsCodeRtsp(id,enterRtspPhrase, enterRtspHeightPhrase, enterRtspWidthPhrase){ var selection = xoopsGetSelect(id); if (selection.length > 0) { var selection = "rtsp://"+selection; var text = selection; } else { var text = prompt(enterRtspPhrase+" Rtsp or http", "Rtsp://"); } var domobj = xoopsGetElementById(id); if ( text.length > 0 && text!="rtsp://") { var text2 = prompt(enterRtspWidthPhrase, "480"); var text3 = prompt(enterRtspHeightPhrase, "330"); var result = "[rtsp="+text2+","+text3+"]" + text + "[/rtsp]"; xoopsInsertText(domobj, result); } domobj.focus(); } EOH; return array($code, $javascript); }
/** * @return string */ public static function decode($url, $width, $height) { $config = parent::loadConfig(__DIR__); if (empty($url) || empty($config['link'])) { return $url; } $charset = !empty($config['charset']) ? $config['charset'] : "UTF-8"; $ret = "<a href='" . sprintf($config['link'], urlencode(XoopsLocale::convert_encoding($url, $charset))) . "' rel='external' title=''>{$text}</a>"; return $ret; }
function decode($text) { $config = parent::loadConfig(dirname(__FILE__)); if (empty($text) || empty($config['link'])) { return $text; } $charset = !empty($config['charset']) ? $config['charset'] : "UTF-8"; xoops_load('xoopslocal'); $ret = "<a href='" . sprintf($config['link'], urlencode(XoopsLocal::convert_encoding($text, $charset))) . "' rel='external' title=''>{$text}</a>"; return $ret; }
/** * @param $match * * @return string */ public static function myCallback($match) { $url = $match[1] . $match[2]; $config = parent::loadConfig(__DIR__); if (!preg_match("/^http[s]?:\\/\\/(www\\.)?soundcloud\\.com\\/(.*)/i", $url, $matches)) { trigger_error("Not matched: {$url}", E_USER_WARNING); return ''; } $code = '<object height="81" width="100%"><param name="movie" ' . 'value="http://player.soundcloud.com/player.swf?url=' . $url . '&g=bb">' . '</param><param name="allowscriptaccess" value="always"></param>' . '<embed allowscriptaccess="always" height="81" ' . 'src="http://player.soundcloud.com/player.swf?url=' . $url . '&g=bb" type="application/x-shockwave-flash" width="100%"></embed></object>' . '<a href="' . $url . '">' . $url . '</a>'; return $code; }
function load(&$ts, $text, $force = false) { global $xoopsUser, $xoopsConfig, $xoopsUserIsAdmin; if (empty($force) && $xoopsUserIsAdmin) { return $text; } // Built-in fitlers for XSS scripts // To be improved $text = $ts->filterXss($text); if (xoops_load("purifier", "framework")) { $text = XoopsPurifier::purify($text); return $text; } $tags = array(); $search = array(); $replace = array(); $config = parent::loadConfig(dirname(__FILE__)); if (!empty($config["patterns"])) { foreach ($config["patterns"] as $pattern) { if (empty($pattern['search'])) { continue; } $search[] = $pattern['search']; $replace[] = $pattern['replace']; } } if (!empty($config["tags"])) { $tags = array_map("trim", $config["tags"]); } // Set embedded tags $tags[] = "SCRIPT"; $tags[] = "VBSCRIPT"; $tags[] = "JAVASCRIPT"; foreach ($tags as $tag) { $search[] = "/<" . $tag . "[^>]*?>.*?<\\/" . $tag . ">/si"; $replace[] = " [!" . strtoupper($tag) . " FILTERED!] "; } // Set meta refresh tag $search[] = "/<META[^>\\/]*HTTP-EQUIV=(['\"])?REFRESH(\\1)[^>\\/]*?\\/>/si"; $replace[] = ""; // Sanitizing scripts in IMG tag //$search[]= "/(<IMG[\s]+[^>\/]*SOURCE=)(['\"])?(.*)(\\2)([^>\/]*?\/>)/si"; //$replace[]=""; // Set iframe tag $search[] = "/<IFRAME[^>\\/]*SRC=(['\"])?([^>\\/]*)(\\1)[^>\\/]*?\\/>/si"; $replace[] = " [!IFRAME FILTERED! \\2] "; $search[] = "/<IFRAME[^>]*?>([^<]*)<\\/IFRAME>/si"; $replace[] = " [!IFRAME FILTERED! \\1] "; // action $text = preg_replace($search, $replace, $text); return $text; }
function load(&$ts, $source, $language) { $config = parent::loadConfig(dirname(__FILE__)); if (empty($config['highlight'])) { return "<pre>{$source}</pre>"; } if ($config['highlight'] == 'geshi') { $language = str_replace('=', '', $language); $language = $language ? $language : $config['language']; $language = strtolower($language); if ($source = MytsSyntaxhighlight::geshi($source, $language)) { return $source; } } $source = MytsSyntaxhighlight::php($source); return $source; }
/** * @param MyTextSanitizer $ts * @param string $source * @param string $language * @return bool|mixed|string */ public function load(MyTextSanitizer &$ts, $source, $language) { $config = parent::loadConfig(__DIR__); if (empty($config['highlight'])) { return "<pre>{$source}</pre>"; } $source = $ts->undoHtmlSpecialChars($source); $source = stripslashes($source); if ($config['highlight'] == 'geshi') { $language = str_replace('=', '', $language); $language = $language ? $language : $config['language']; $language = strtolower($language); if ($source2 = MytsSyntaxhighlight::geshi($source, $language)) { return $source2; } } $source = MytsSyntaxhighlight::php($source); return $source; }
/** * @param MyTextSanitizer $ts * @param $text * @return mixed|string */ public function load(MyTextSanitizer &$ts, $text, array $paramsConf = null) { static $censorConf; $xoops = Xoops::getInstance(); if (!empty($paramsConf)) { $censorConf = $paramsConf; } if (!isset($censorConf)) { $censorConf = $xoops->getConfigs(); $config = parent::loadConfig(__DIR__); //merge and allow config override $censorConf = array_merge($censorConf, $config); } if (empty($censorConf['censor_enable'])) { return $text; } if (empty($censorConf['censor_words'])) { return $text; } if (!empty($censorConf['censor_admin']) && !$xoops->userIsAdmin) { return $text; } $replacement = empty($censorConf['censor_replace']) ? '!!censured!!' : $censorConf['censor_replace']; if (is_array($censorConf['censor_words'])) { foreach ($censorConf['censor_words'] as $bad) { $bad = trim($bad); if (!empty($bad)) { if (false === strpos($text, $bad)) { continue; } if (!empty($censorConf['censor_terminate'])) { trigger_error("Censor words found", E_USER_ERROR); $text = ''; return $text; } $patterns[] = "/(^|[^0-9a-z_]){$bad}([^0-9a-z_]|\$)/siU"; $replacements[] = "\\1{$replacement}\\2"; $text = preg_replace($patterns, $replacements, $text); } } } return $text; }
function load(&$ts, $text, $force = false) { global $xoopsUser, $xoopsConfig, $xoopsUserIsAdmin; static $censorConf; if (empty($force) && $xoopsUserIsAdmin) { return $text; } if (!isset($censorConf)) { $config_handler =& xoops_gethandler('config'); $censorConf = $config_handler->getConfigsByCat(XOOPS_CONF_CENSOR); if (empty($censorConf['censor_enable']) || empty($censorConf['censor_words'])) { $censorConf['censor_string'] = ""; } else { $config = parent::loadConfig(dirname(__FILE__)); $censorConf = array_merge($config, $censorConf); } } if (empty($censorConf['censor_words'])) { return $text; } $replacement = $censorConf['censor_replace']; foreach ($censorConf['censor_words'] as $bad) { $bad = trim($bad); if (!empty($bad)) { if (false === strpos($text, $bad)) { continue; } if (!empty($censorConf['censor_terminate'])) { trigger_error("Censor words found", E_USER_ERROR); $text = ''; return $text; } $patterns[] = "/(^|[^0-9a-z_]){$bad}([^0-9a-z_]|\$)/siU"; $replacements[] = "\\1{$replacement}\\2"; $text = preg_replace($patterns, $replacements, $text); } } return $text; }
/** * @param $ts * @param $text * * @return mixed|string */ public function load($ts, $text) { static $censorConf; if (!isset($censorConf)) { $config_handler = xoops_getHandler('config'); $censorConf = $config_handler->getConfigsByCat(XOOPS_CONF_CENSOR); $config = parent::loadConfig(__DIR__); //merge and allow config override $censorConf = array_merge($censorConf, $config); } if (empty($censorConf['censor_enable'])) { return $text; } if (empty($censorConf['censor_words'])) { return $text; } if (empty($censorConf['censor_admin']) && $GLOBALS['xoopsUserIsAdmin']) { return $text; } $replacement = $censorConf['censor_replace']; foreach ($censorConf['censor_words'] as $bad) { $bad = trim($bad); if (!empty($bad)) { if (false === strpos($text, $bad)) { continue; } if (!empty($censorConf['censor_terminate'])) { trigger_error('Censor words found', E_USER_ERROR); $text = ''; return $text; } $patterns[] = "/(^|[^0-9a-z_]){$bad}([^0-9a-z_]|\$)/siU"; $replacements[] = "\\1{$replacement}\\2"; $text = preg_replace($patterns, $replacements, $text); } } return $text; }
/** * @return string */ public function displayFlash() { if (!defined('MYTEXTSANITIZER_EXTENDED_MEDIA')) { include_once PUBLISHER_ROOT_PATH . '/include/media.textsanitizer.php'; } $media_ts = MyTextSanitizerExtension::getInstance(); return $media_ts->_displayFlash($this->getFileUrl()); }
/** * @param string $name * @return array */ public function loadConfig($name = null) { if (!empty($name)) { return MyTextSanitizerExtension::loadConfig($name); } $config_default = (include $this->path_basic . '/config.php'); $config_custom = array(); if (XoopsLoad::fileExists($file = $this->path_basic . '/config.custom.php')) { $config_custom = (include $file); } return $this->mergeConfig($config_default, $config_custom); }
function loadConfig($name = null) { if (!empty($name)) { return MyTextSanitizerExtension::loadConfig($name); } $config_default = (include "{$this->path_basic}/config.php"); $config_custom = @(include "{$this->path_basic}/config.custom.php"); return $this->mergeConfig($config_default, $config_custom); }