package cn.newgxu.bbs.common.filter.ubb;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cn.newgxu.bbs.common.filter.AbstractBaseFilter;
import cn.newgxu.bbs.common.filter.Filter;
/**
*
* @author polly
* @since 4.0.0
* @version $Revision 1.1$
*/
public class FlashFilter extends AbstractBaseFilter {
private static final String FLASH_PATTERN_STRING = "\\[flash=(.+?),(.+?)\\](.+?)\\[\\/flash\\]";
private static final String FLASH_APPEND_1 = "<br><object classid=\"clsid:"
+ "D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\" http://download"
+ ".macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version="
+ "6,0,29,0\" width=\"";
private static final String FLASH_APPEND_2 = "\" height=\"";
private static final String FLASH_APPEND_3 = "\"><param name=\"movie\" "
+ "value=\"";
private static final String FLASH_APPEND_4 = "\"><param name=\"wmode\" value=\"transparent\" /><param name=\"quality\" "
+ "value=\"high\"><embed src=\"";
private static final String FLASH_APPEND_5 = "\" width=\"";
private static final String FLASH_APPEND_6 = "\" height=\"";
private static final String FLASH_APPEND_7 = "\" quality=\"high\" "
+ "pluginspage=\"http://www.macromedia.com/go/getflashplayer\" "
+ "type=\"application/x-shockwave-flash\"></embed></object><br>";
public FlashFilter(Filter filter) {
super(filter);
}
public String convert(String input) {
try {
return flashConverter(input);
} catch (Exception e) {
return input;
}
}
private String flashConverter(String input) throws Exception {
Pattern pattern = Pattern.compile(FLASH_PATTERN_STRING, 2);
Matcher matcher = pattern.matcher(input);
StringBuffer stringbuffer = new StringBuffer();
for (boolean flag = matcher.find(); flag; flag = matcher.find()) {
matcher.appendReplacement(
stringbuffer,
FLASH_APPEND_1 + matcher.group(1) + FLASH_APPEND_2
+ matcher.group(2) + FLASH_APPEND_3
+ matcher.group(3) + FLASH_APPEND_4
+ matcher.group(3) + FLASH_APPEND_5
+ matcher.group(1) + FLASH_APPEND_6
+ matcher.group(2) + FLASH_APPEND_7);
}
matcher.appendTail(stringbuffer);
return stringbuffer.toString();
}
}