<?php

/*
  iframe.inc.php v1.0 on 2004/05/09 by ino_mori
  iframe.inc.php v1.1 on 2004/06/22 modified by sonots
  iframe.inc.php v1.2 on 2004/07/08 modified by sonots
*/

global $iframe_accept_regurl;
global $iframe_accept_url;
//正規表現による指定。ホスト許可などに使用。
//正規表現なので本当は \. にすべき。www.google.co.jp はそのURLだけ。pukiwiki.org はホスト全体を許可。
$iframe_accept_regurl = '^http://www.google.co.jp$|^http://pukiwiki.org'; 
//ただの文字列マッチ。常にこちらを使用した方が安全。日本語を使用する場合はURLエンコードしておくこと。
$iframe_accept_url = array(
'http://pukiwiki.org/index.php?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fiframe.inc.php',
);

function plugin_iframe_inline()
{
	if (!func_num_args())
	{
		return 'no argument(s).';
	}
	return plugin_iframe_body(func_get_args());
}

function plugin_iframe_convert()
{
	if (!func_num_args())
	{
		return 'no argument(s).';
	}
	return plugin_iframe_body(func_get_args());
}

function plugin_iframe_body($args)
{
	global $html_transitional;
	global $iframe_accept_regurl;
	global $iframe_accept_url;
	$url = array_shift($args);
	if(!ereg($iframe_accept_regurl,$url))
	{
		$match = FALSE;
		foreach($iframe_accept_url as $value)
		{
			if($value == $url)
			{
				$match = TRUE;
			}
		}
		if(!$match)
		{
			return "not accepted.";
		}
	}
	$url = htmlspecialchars($url); 
	$params = array(
		'iewidth'    => FALSE,
		'ieheight'   => FALSE,
		'width' => FALSE,
		'height' => FALSE,
		'_args'   => array(),
	);
	array_walk($args, 'iframe_check_arg', &$params);
	if (ereg("MSIE (3|4|5|6)", HTTP_USER_AGENT))
	{
		$html_transitional = TRUE;
		$class=" class=\"object_ie\"";
		if($params['iewidth'] != FALSE) $params['width'] = $params['iewidth'];
		if($params['ieheight'] != FALSE) $params['height'] = $params['ieheight'];
		$size = $params['width'] != FALSE ? " width=\"".$params['width']."\"" : '';
		$size .= $params['height'] != FALSE ? " height=\"".$params['height']."\"" : '';
		return <<<HTML
<iframe frameborder="0"${class}${size} src="$url">
Please see here by browsers dealing with iframe tag.<br />
Go to <a href="$url">$url</a>
</iframe>
HTML;
	}
	else
	{
		$class=" class=\"object_others\"";
		$size = $params['width'] != FALSE ? " width=\"".$params['width']."\"" : '';
		$size .= $params['height'] != FALSE ? " height=\"".$params['height']."\"" : '';
		return <<<HTML
<object${class}${size} data="$url" type="text/html">
Please see here by browsers dealing with object tag.<br />
Go to <a href="$url">$url</a>
</object>
HTML;
	}
}
//オプションを解析する
function iframe_check_arg($val, $key, &$params)
{
	if ($val == '')
	{
		return;
	}
	$lowval = strtolower($val); //trim はあえてしません。
	foreach (array_keys($params) as $key)
	{
		if (strpos($lowval, $key) === 0)
		{
			$lowval = ereg_replace("^$key=",'',$lowval);
			$lowval = htmlspecialchars($lowval);
			$params[$key] = $lowval;
			return;
		}
	}
	$params['_args'][] = $val;
}
?>
