라우터 기능 추가

router 클래스를 추가하여 동적으로 rewrite rule을 추가할 수 있도록 수정했습니다.

module trigger나 애드온에서 rewrite rule을 추가할 수 있습니다.

ModuleHandler가 실행되기 전에 호출되기 때문에, 새로운 xml 스펙은 추가하지 않았습니다.

사용법은 아래와 같습니다.

<b>애드온</b>

<?php
if(!defined('__XE__')) exit;

if($called_position == 'before_router_init')
{
    $oRouter->add('([a-zA-Z0-9_]+)/write', array('mid' => '$1', 'act', 'dispBoardWrite'));
}
?>

<b>모듈</b>

모듈에서 사용 시 트리거 등록
$oModuleController->insertTrigger('router.init', 'test', 'controller', 'triggerRouterTest', 'before');

controller에서 rewrite rule 추가
<?php
class testController extends test
{

    public function triggerRouterTest(&$oRouter)
    {
        // mid/write 형식의 URL을 인식하도록
        $oRouter->add('([a-zA-Z0-9_]+)/write', array('mid' => '$1', 'act', 'dispBoardWrite'));

        $mid = Context::get('mid');
        $act = Context::get('act');
        $is_feed = ($act == 'rss' || $act == 'atom') ? TRUE : FALSE;

        // Context::getUrl()에서 mid/write 형식의 URL을 생성할 수 있도록 map 추가
        if($is_feed)
        {
            $oRouter->setMap('act.mid', "$mid/$act");
        }
        else
        {
            $oRouter->setMap('act.mid', ($act == 'dispBoardWrite') ? "$mid/write" : '');
        }
    }
}