고용량인 효율이 낮은 GIF 에니메이션 파일을 MP4로 변환해 주는 유료 모듈인 GIF CONVERT PRO의 경우 글 작성,수정시에 gif 에니메이션 파일을 작은 용량의 MP4로 변환을 해줍니다.
물론 라이믹스의 기본 기능에도 MP4 변환 기능이 있어 유료 모듈을 구입할 필요는 없지만 원본을 유지해주는 기능등이 제공되고 있어 구입하여 사용하거나 혹은 라이믹스 기본 기능으로 제공되기 전에 구입해서 사용하시는 분들이 계실 것입니다.
참고로 이 자료는 암호화되어 제공되어 개발자의 적극적인 기능개선 패치 등이 이루어지지 않으면 기능개선이나 버그패치 등을 사용자가 할 수 없는 구조라 구입은 추천하지 않습니다.
이미 구입하신 분들께 자동첨부 애드온으로 첨부된 GIF 파일이 고용량 GIF파일로 남고 MP4로 변환되지 못하는 문제를 모듈에서 패치가 반영되지 않아 애드온으로 해결하는 팁을 제공해 드리려고 합니다.
외부의 글을 복사해서 붙여넣기 하면서 gif 움짤을 함께 복사해 온 경우 자동첨부 애드온을 사용해서 본서버로 업로드 하려는 운영자가 많을 겁니다. 외부 이미지를 사이트 서버에 첨부하지 않으면 원 게시글이 삭제되면 해당 이미지는 보이지 않게 되기 때문인데요.
그래서 자동첨부 애드온을 사용해서 그리고 gif도 첨부를 선택했기 때문에 발생되는 문제이기 때문에 자동첨부 애드온에서 추가적인 작업을 해주도록 코드를 추가해 주는게 제일 좋은 선택입니다.
addons/autoattach/autoattach.addon.php
위 파일을 열어사 파일의 하단에 아래의 코드를 넣어주세요.
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); $have_file_list = $oDocument->getUploadedFiles(); if ($have_file_list && time() - $oDocument->getRegdateTime() < 120) { $content = $oDocument->get('content'); if (preg_match_all('@<img\s[^>]*?src=(\'[^\']+\'|"[^"]+"|[^\'"\r\n\t\x20>]+)[^>]*?>@i', $content, $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { if (strpos($match[0], 'data-autoattach="success"') !== false && stripos($match[1], 'gif') !== false) { $auto_gif = true; break; } } } if ($auto_gif) { $trigger_obj = new stdClass(); $trigger_obj->module_srl =$oDocument->get('module_srl'); $trigger_obj->content = $content; $trigger_obj->document_srl = Context::get('document_srl'); getController('z_gifconvert')->triggerupdateDocumentAfter($trigger_obj); } } }
불필요하게 함수를 작동시키는 것에 대한 방지책이 몇가지 들어가 있습니다. 물론 매번 함수가 작동되어도 큰 문제는 될 것은 없지만 그래도 필요할때만 동작하도록 해보았습니다.
1.첨부가 없다면 동작하지 않습니다.
2.첨부가 있는 게시글이라면 글 작성 직후 2분 동안만 작동합니다.
- 코드에서 120(초)을 변경하면 글 작성 후 원하는 시간 동안 계속 작동하게 할 수 있습니다.
- 글 작성자가 글 작성 직후 해당 게시글을 열람하게 되므로 사실은 글 작성자에 의해서 변환이 바로 되게 됩니다. 그래서 작동 시간을 120초로 제한해도 무방합니다.
3.첨부가 있고 글이 작성된지 2분이 지나지 않은 상태라면 이제 첨부파일 중에 자동첨부 애드온으로 첨부 성공한 gif 가 있는지 확인합니다. gif 가 없고 다른 파일만 있다면 이때도 함수를 동작시키지 않습니다.
if (strpos($match[0], 'data-autoattach="success"') !== false && stripos($match[1], 'gif') !== false)
위 코드는 최초 작성에서 변경된 부분이 있습니다. 확인해 보세요. gif 확장자 확인시 대소문자 구분을 하지 않기 위해서 stripos($match[1], 'gif') !== false 이부분이 변경되었습니다.