질문/조언질답게시판
Extra Form
PHP PHP 7.2
CMS Rhymix 2.x

if($act == 'procFileDownload' && $called_position == 'after_module_proc'){

파일다운로드 직후 코드가 작동되길 기대합니다.

}

 

그런데 저 조건으로는 다운로드를 해도 코드가 진행되지 않는데요.

조건에 문제가 있는건지 아니면 다운로드 직후는 애드온에서 작동 시점을 잡을 수 없는 건지 궁금합니다.

  • profile

    https://github.com/rhymix/rhymix/blob/be1fbc9d65ec59cabc554706365ba7d7144e7d11/modules/file/file.controller.php#L397
    https://github.com/rhymix/rhymix/blob/be1fbc9d65ec59cabc554706365ba7d7144e7d11/modules/file/file.controller.php#L546


    XE/라이믹스에서 파일 다운로드는 procFileDownload -> procFileOutput 순으로 진행됩니다.

    두 act 모두 after_module_proc 시점 애드온이 실행되기전 함수 내부에서 exit()로 종료해 버리므로 해당 시점의 애드온은 실행되지 않습니다.

  • profile profile
    if($this->act != 'procFileDownload' && $called_position == 'before_module_init')

    이렇게 했을때 유일하게 코드가 작동하는데 이 경우는 실제 다운로드가 잘 되었는지 실패했는지 파악이 안될 것 같은데 애드온은 방법이 하나도 없는 거겠죠?
  • profile profile
    procFileOutput에서 before_module_proc을 하는 것이
    애드온이든 모듈이든 끼어들 수 있는 가장 마지막 시점인 것 같습니다.
    여기까지 왔다면 다운로드 권한 체크, 다운로드 횟수 카운팅도 모두 끝났고
    실제로 파일 내용을 전송하는 것만 남았습니다.
  • profile profile
    감사합니다. 테스트 해보겠습니다.
  • profile profile
    해당지점이 실제 다운로드 숫자와 일치하고 작동도 잘되고 좋네요.