질문/조언질답게시판

외부 이미지를 첨부하게 해주는 이미지 자동 첨부 애드온의 첨부 시점이 코어에서 첨부파일을 컨트롤 하는 시점과 달라서 애로사항이 생기는 경우가 있는데요.

 

번뜩 생각 났던게 그럼 트리거?? 라는 것을 이용하면 되는거 아닌가? 라는 생각이 들었습니다.

 

현재 실제 이미지 처리는 별도 파일에서 처리하고 해당 파일을 필요한 시점에 로딩하는 방식으로 되어있습니다. 그래서 이 특정 시점을 트리커를 이용하게 하고 이미지 처리하는 함수가 있는 파일의 코드는 그대로 사용이 가능할까? 라는 궁금증이 생겼습니다.

 

https://github.com/poesis/xe-autoattach/blob/master/autoattach.addon.php#L19

 

여기 애드온 실행 시점을 

 

https://github.com/conory/rx-addon-required_nickname/blob/master/required_nickname.addon.php#L15

애드온에서 트리거를 사용하는 것의 예제를 보여주려고 만들어주셨던 애드온에서 처럼 트리거 사용으로 변경

 

문서 신규,수정 댓글 신규,수정 의 트리거를 사용하게 코드를 분리해서 동일한 코드를 작성해 준다면...

 

물론 트리거가 뭔지 아직 잘 몰라서 제가 직접 하지는 못할 것 같긴 하지만 궁금해졌네요.

 

  • profile
    네 트리거 이용하면 $obj으로 인자값 받아올 수 있는데 $obj->document_srl 으로 처리한다면 동일한 효과를 내겠네요.

    after시점에서 실행되도록하면 될 것 같네요.
  • profile profile
    addon.php 파일만 수정하면 될 것 같으면 시간내서 시도한번 해봐야 겠습니다. 현재로서는 역부족....
  • profile profile

    저기에서는 글쓰기 혹은 글수정만 구분한뒤 함수만 호출하니 저것을 트리거 시점으로 간단하게 바꿔주시면 되요.

  • profile profile

    getController('module')->addTriggerFunction('document.insertDocument', 'after', function($oModule) use($addon_info)
    {
        if(!preg_match('/^proc[A-Z][a-z0-9_]+Insert(Document)$/', $this->act, $matches))
        {
            return;
        }
        if ($addon_info->new_documents !== 'N')
        {
            include_once dirname(__FILE__) . '/autoattach.class.php';
            XEAutoAttachAddon::setConfig($addon_info);
            XEAutoAttachAddon::procDocument($this->get('document_srl'), true);
        }
    });

     

    예제 애드온 보고 이정도 고쳐봤는데요...  

    use($addon_info)  요건 뭐로 대체 해야 할까요???

     

     

    $this->get('document_srl') 이부분도 그냥 두어도 되는건지....

     

     

    기진곰님 댓글 중

    getController('module')->addTriggerFunction('document.insertDocument', 'before', function($args) {
        // 처리
        return $args;
    });

     

    이런 댓글도 보이네요.