웹마스터 팁

카르마님의 외부이미지 저장 애드온을 가지고 사용중인데요.

기존 본문에 있는 이미지를 적용하기 위해서는 일부러 수정을 눌렀다가 저장을 해야 적용이 되는 불편한 점이 있었습니다.

오늘 푸시아님의 도움으로 편하게 본문을 읽어도 바로 외부이미지 저장기법이 적동되도록 수정하는데 성공했습니다.

원 애드온 소스는 카르마님의 사이트에 있구요.

저는 변경된 소스만 공유하도록 하겠습니다. ^^



<?php
    if(!defined("__ZBXE__")) exit();
 
    /**
     * @outimage.addon.php
     * @author 카르마(http://www.wildgreen.co.kr)
     *
     **/
 
    $oDocumentModel = &getModel('document');
 
    $act_arr = array('dispBoardContent','dispBodexContent','dispTextyle','dispBodexContentView','dispBoardContentView');
    $document_act = array('dispBoardContent','procBoardInsertDocument','procBodexInsertDocument');
    $comment_act = array('procBoardInsertComment','procBodexInsertComment');
     
    $ri_avoid_domain = explode(',', $addon_info->ri_avoid_domain);
    array_push($ri_avoid_domain,$_SERVER['HTTP_HOST']);
    require_once('./addons/auto_outimage/auto_outimage.func.php');
 
    if($addon_info->ri_permanent_get =='Y') {
        if($called_position == 'after_module_proc' && in_array($this->act,$document_act) ) {
            $var = $this->variables;
            $document_srl = Context::get('document_srl');;
            if(!$document_srl) return;
            $module_info = $oModuleModel->getModuleInfoByDocumentSrl($document_srl);
            $args->document_srl = $document_srl;
            $output =  executeQuery('document.getDocument', $args);
            $content = $output->data->content;
            //$oDocument = $oDocumentModel->getDocument($document_srl);
            //$content = $oDocument->getContent(false,false,false,false);
            $upload_target_srl = $document_srl;
            $oFileController = &getController('file');
 
            $contImg = extractImage($content);
            if(count($contImg)) {
                $replace = $content;
                foreach($contImg as $src) {
                    $ri_localfile = geRitLocalFile($src,$ri_avoid_domain,'N');
                    if(strcmp($src,$ri_localfile)==true)
                    {
                        $url = parse_url($ri_localfile);
                        $path_parts = pathinfo($url['path']);
                        $file_info['name']=$path_parts['basename'];
                        $file_info['tmp_name']=$ri_localfile;
                        $file_obj = $oFileController->insertFile($file_info,$module_info->module_srl,$upload_target_srl,0,true);
                        if(@$file_obj->variables['uploaded_filename']!=null) $replace = str_replace($src,$file_obj->variables['uploaded_filename'],$replace);
                        @unlink($ri_localfile);
                    }
                }
                $obj->module_srl = $module_info->module_srl;
                $obj->content = $replace;
                $obj->document_srl = $document_srl;
                executeQuery('addons.auto_outimage.updateDocument', $obj);
            }
        } elseif($addon_info->ri_comment_get != 'N' && $called_position == 'after_module_proc' && in_array($this->act,$comment_act)) {
            $var = $this->variables;
            $document_srl = $var[document_srl];
            $module_info = $oModuleModel->getModuleInfoByDocumentSrl($document_srl);
            $comment_srl = $var[comment_srl];
            if(!$comment_srl) return;
            $oCommentModel = &getModel('comment');
            $comment = $oCommentModel->getComment($comment_srl);
            $content = $comment->getContent(false,false,false,false);
             
            $upload_target_srl = $comment_srl;
            $oFileController = &getController('file');
 
            $contImg = extractImage($content);
            if(count($contImg)) {
                foreach($contImg as $src) {
                    $ri_localfile = geRitLocalFile($src,$ri_avoid_domain,'N');
                    if(strcmp($src,$ri_localfile)==true)
                    {
                        $url = parse_url($ri_localfile);
                        $path_parts = pathinfo($url['path']);
                        $file_info['name']=$path_parts['basename'];
                        $file_info['tmp_name']=$ri_localfile;
                        $file_obj = $oFileController->insertFile($file_info,$module_info->module_srl,$upload_target_srl,0,true);
                        if(@$file_obj->variables['uploaded_filename']!=null) $replace = str_replace($src,$file_obj->variables['uploaded_filename'],$replace);
                        @unlink($ri_localfile);
                    }
                }
                $obj->module_srl = $module_info->module_srl;
                $obj->content = $content;
                $obj->comment_srl = $comment_srl;
                $output = executeQuery('addons.auto_outimage.updateComment', $obj);
            }
        }
    } else {
     
    $document_srl = Context::get('document_srl');
    if(!$document_srl) return;
    $current_module_info = Context::get('current_module_info');
     
    $oView = &getView($current_module_info->module);
    $act = $oView->act;
     
    if($_COOKIE['mobile'] || in_array($act,$act_arr) && $called_position == 'before_display_content') {
         
        $oDocument = $oDocumentModel->getDocument($document_srl);
        $content = $oDocument->getContent(false,false,false,false);
        $_comment_list = $oDocument->getComments();
 
        $contImg = extractImage($content);
        if(count($contImg)) {
            $replace = $content;
            foreach($contImg as $src) {
                $ri_localfile = geRitLocalFile($src,$ri_avoid_domain,$addon_info->ri_permanent_get);
                $replace = str_replace($src,$ri_localfile,$replace);
            }
            $output = str_replace($content,$replace,$output);
        }
 
        if($addon_info->ri_comment_get == 'Y' && $oDocument->getCommentCount()) {
            $pattern_comments_area = '/<div class="comment_[0-9]+_[0-9]+ xe_content">(.*?)<!--AfterComment\([0-9]+,[0-9]+\)-->/is';
            preg_match_all($pattern_comments_area, $output,$match);
            if(!count($match[0])) return;
            foreach ($match[0] as $comment) {
                $list = extractImage($comment);
                if(count($list)) {
                    $repcom = $comment;
                    foreach($list as $rfile) {
                        $ri_localfile = geRitLocalFile($rfile,$ri_avoid_domain,$addon_info->ri_permanent_get);
                        $repcom = str_replace($rfile,$ri_localfile,$repcom);
                    }
                    $output = str_replace($comment,$repcom,$output);
                }
            }
 
        }
    }
    }
?>

제목 글쓴이 날짜
XE 루트로 옮기기 완벽 가이드 [/xe/ 로부터 벗어나자!] ver 1.1 [107] file LI-NA 2013.02.26
제로보드 4 -> xe 신버전으로 마이그레이션 경험담 [4] file 윤안젤로 2013.02.28
XE 루트로 접속하기 (이동 필요없음) [12] 모앱 2013.03.03
회원가입시 유저가 비공개 설정하기 [1] file 모앱 2013.03.03
데이타베이스 복제를 하면 속도가 8%정도 빨라짐 가을풍경 2013.03.03
지식인 모듈 기본스킨에서 카테고리 선택 안 해도 질문이 등록되는 버그 수정법 sejin7940 2013.03.12
xe 속도 엄청 빨라집니다. [4] 투투투쓰리 2013.03.12
팝업 모듈에서, 사이트 전체에 팝업 띄우는 방법 모르시는 분들을 위해 ^^; [2] sejin7940 2013.03.13
1.7 버전의 새로워진 사이트맵(메뉴편집)에 적응해보자! [8] file EnuX 2013.03.15
외부이미지 저장 애드온을 본문을 읽으면 작동하도록 하자!! 1.7.3적용 [18] 하얀마법 2013.03.16
회원가입 확장 모듈 1.7.X 및 모바일에서 사용가능하도록 [10] file hhgyu 2013.03.18
Sketchbook5 레이아웃과 관리자메뉴 충돌 해결 [2] file YJSoft 2013.03.20
팝업모듈 사용시 슬라이드js와 충돌문제 [2] 꿈틀잉 2013.03.21
요약 책갈피 경량판 sns 링크 버튼 디자인 보완 [1] file 웹플러스7 2013.03.21
팝업모듈에서 jQuery 충돌 해결 - 팝업창이 안뜰때. [5] file 똑디 2013.03.22
재미있는 조건문 팁 두 가지. [2] 엘카 2013.03.23
nginx에서 짧은 주소가 동작하지 않는 경우 해결 [3] Gunmania 2013.03.24
XE 1.5.X , 1.7.X 용 nginx rewrite [4] Root 2013.03.24
외부 이미지 저장 애드온 [7] file samsara 2013.03.26
[팁]포럼 모듈 인용글 박스 문제 해결 - 1.7.3 기준 [5] socialskyo 2013.03.27