자동첨부 애드온의 첨부시점과 gif 컨버팅 모듈의 작동시점이 달라 자동으로 첨부되는 외부 이미지의 경우 mp4로 변환이 되지 못하고 고용량 gif로 남는 문제가 있었습니다. 이는 글 수정을 한번 해주면 해결이 되는데 글 수정시에도 컨버팅이 되는 부분이 있기 때문이죠. 그래서 글을 수정한 효과를 내거나 혹은 글 수정시에 작동하는 모듈의 함수를 애드온에서 실행시켜보고 싶었습니다. 글 작성자가 글을 수정을 해줄 리가 만무하니까요.
기존에 기진곰님께서
제가 드린 정보에 근거해서
해당 모듈의 트리거 함수를 이용해
getController('z_gifconvert')->triggerupdateDocumentAfter($trigger_obj);
이렇게 할 수 있을 거라고 알려주셨습니다.
그런데 저기에 필요한 인자가 무엇인지 알수가 없어서.... 판매자분께 질문을 올려서
실마리를 어느정도 찾을 수 있어 오늘 시도했습니다.(오래 걸려서 답변을... 흑...)
기존 자동첨부 애드온에 코드를 추가했습니다.
if ($called_position === 'before_module_proc' && Context::get('document_srl') && preg_match('/^disp[A-Z][a-z0-9_]+Content(?:View)?$/', $this->act))
{
$document_srl = Context::get('document_srl');
if (!$document_srl) return;
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
$trigger_obj = new stdClass();
$trigger_obj->module_srl =$oDocument->get('module_srl');
$trigger_obj->content = $oDocument->get('content');
$trigger_obj->document_srl = Context::get('document_srl');
getController('z_gifconvert')->triggerupdateDocumentAfter($trigger_obj);
}
대략 이런 코드를 추가했습니다.
와우~ 글 작성 직후 게시글이 열람되면서 저 함수가 작동하여 처리하지 못했던 자동 첨부된 gif 이미지가 mp4로 변환이 되었습니다.
요걸 매번 작동하지 않도록 코드를 조금 추가해서 실제 사용하도록 하던지 해봐야겠네요. 근데 매번 작동해도 큰 문제는 없을 것 같긴 하네요.
- 요건 글 작성 또는 수정 후 2분 까지만 코드가 실행되도록 조건을 거는 것으로 했습니다.
if (time() - strtotime($oDocument->get('last_update')) < 120){
}
댓글이 달릴때도 last_update 타임이 변경되니 새글 작성 기준으로만 해야겠네요.
if (time() - $oDocument->getRegdateTime() < 120)
사족 : 이게 정말 필요한 기능인데 모듈에서 이런 패치가 받아들여지지 않는게 아쉽습니다.