<?
/**********************************************
* 파일명: plugin.post.PathRewrite.php
* 설  명: Path Rewrite Plugin for SkyTemplate
* 버  젼: v1.0.3
* 작성자: 하늘아부지 (daddy@withsky.net)
***********************************************/

    function PathRewrite(&$compiler, $var, $pattern="")
    {
        $src = &$compiler->Code[$var];
        $file = &$compiler->File[$var];

		// 경로 찾기
        if (!preg_match("/^:\/\//", $file) || (preg_match("/^\//", $file) && strpos($file, dirname($_SERVER['PHP_SELF'])) !== 0)) {
            $file = str_replace(array("\\", PathRewriteGetWebRoot()), array("/", ""), realpath($file));
        }
        $path = implode("/", array_slice(explode("/", $file), 0, -1)); // URL등에서 dirname() 오동작해서 이렇게 처리함 ^^;
        if (preg_match("/^(\/~[^\/]+)/", dirname($_SERVER['PHP_SELF']), $match)) $path = $match[1].$path;

        $from = $pattern ? $pattern : "/([='\\\"])(\.\/|image\/|images\/|img\/)/i";
        $to = "\\1$path/\\2";

        $src = preg_replace($from, $to, $src);
		//$src = preg_replace("/(\/\.\/|\/\/)/", "/", $src);
    }

    function PathRewriteGetWebRoot()
    {
        $nowReal = str_replace("\\", "/", realpath("."));
        $nowVirtual = preg_replace("/^\/~[^\/]+/", "", dirname($_SERVER['PHP_SELF']));

		if ($nowVirtual == "/") {
			$rootReal = $nowReal;
		} else {
			$pos = strrpos($nowReal, $nowVirtual);
			if (is_int($pos)) {
				$rootReal = substr($nowReal, 0, $pos);
			} else {
				$depth = count(explode("/", $nowVirtual)) - 1;
				$rootReal = implode("/", array_slice(explode("/", $nowReal), 0, -$depth));
			}
		}
        return $rootReal;
    }
?>