Q&A

카르마님의 이미지 프로세서 모듈을 이용해 이미지 사이즈를 대폭 줄였는데요..

 

 

카르마님의 이미지 자동첨부 애드온을 사용중인데,

이용시 이미지당 <br>태그 식으로 띄어서 입력이 되는데

 

2장이나 3장씩 나열하고 띄울수도 있을까요?

<?php
/**
 * @auto_image addon
 * @author karma <soonj@nate.com>
 * @brief Auto Intert Image
 */

if(!defined("__ZBXE__")) exit();

/* 우선은 board와 boardex만 지원합니다. 기타보드는 아래 act 부분에 해당 act를 추가하십시요.*/
//본문 이미지 삽입이 작동할 act
$document_act = array('procBoardInsertDocument','procBodexInsertDocument');
//댓글 이미지 삽입이 작동할 act
$comment_act = array('procBoardInsertComment','procBodexInsertComment');

//$msg_autoinsert = "자동삽입된 이미지입니다.";
//$msg_autoprint = "자동출력된 이미지입니다.";
$align=$addon_info->align;
if($align) {
$p = "<p class=\"auto_insert\">";
$ep="</p>";
} else $p=$ep="";
if(!isset($addon_info->image_margin)) $addon_info->image_margin =2;
$style = "style=\"padding:".$addon_info->image_margin."px 0;\"";
require_once('./addons/auto_image/auto_image.func.php');


//본문 강제삽입
if($addon_info->insert_mode !='N' && $called_position == 'after_module_proc' && in_array($this->act,$document_act) ) {
$oFileModel = &getModel('file');
$var = $this->variables;
$document_srl = $var[document_srl];

$args->document_srl = $document_srl;
$output =  executeQuery('document.getDocument', $args);
$content = $output->data->content;
$title = $output->data->title;
$files = $oFileModel->getFiles($document_srl);

if(count($files)) {
$target_list = getTargetImg($content,$files);
if(count($target_list)) {
if($addon_info->insert_sequence =='Y') krsort($target_list);
$obj->document_srl = $document_srl;
foreach($target_list as $key=>$val) {
$content = $p."<img src=\"".$val->uploaded_filename."\" alt=\"".$val->source_filename." : ".$title."\" title=\"".$val->source_filename." : ".$title."\" $style>".$ep.$content;
}
$obj->content = $content;
$output = executeQuery('addons.auto_image.updateDocument', $obj);

}
}
}
// 댓글 강제삽입 
elseif($addon_info->insert_mode !='N' && $addon_info->comment_auto_insert =='Y' && $called_position == 'after_module_proc' && in_array($this->act,$comment_act)) {

$oFileModel = &getModel('file');
$var = $this->variables;
$document_srl = $var[document_srl];
$args->document_srl = $document_srl;
$contentoutput =  executeQuery('document.getDocument', $args);
$title = $contentoutput->data->title;
$comment_srl = $var[comment_srl];
if(!$comment_srl) return;
$args->comment_srl = $comment_srl;
    $output =  executeQuery('comment.getComment', $args);
    $content = $output->data->content;


$files = $oFileModel->getFiles($comment_srl);

if(count($files)) {
$target_list = getTargetImg($content,$files);
if(count($target_list)) {
if($addon_info->insert_sequence =='Y') krsort($target_list);
$obj->parent_srl = $document_srl;
foreach($target_list as $key=>$val) {
$content = $p."<img src=\"".$val->uploaded_filename."\" alt=\"".$val->source_filename." : ".$title."\" title=\"".$val->source_filename." : ".$title."\" $style>".$ep.$content;
}
$obj->content = $content;
$obj->comment_srl = $comment_srl;
$output = executeQuery('addons.auto_image.updateComment', $obj);
}
}
}

//여기부터 강제출력
elseif($addon_info->insert_mode !='Y' && $called_position == "before_display_content") {
$pattern_documents_area = '/<div class="document_[0-9]+_[0-9]+ xe_content">(.*?)<!--AfterDocument\([0-9]+,[0-9]+\)-->/is';
$pattern1 ='/<div class="document_[0-9]+_[0-9]+ xe_content">/is';
$pattern2='/<!--AfterDocument\([0-9]+,[0-9]+\)-->/is';

$siteUrl = preg_replace('/\/\/$/','/',Context::getDefaultUrl().'/');

if(preg_match($pattern_documents_area, $output,$match)) {
$text =$match[0];
preg_match($pattern1,$text,$matches);
$ds=$matches[0];
$ds=substr(substr($ds,21),0,-13);
$dos=explode('_',$ds);
$args->document_srl = intval($dos[0]);
if(!$args->document_srl) return;

$args->module_srl = $dos[1];
$oFileModel = &getModel('file');

$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($args->document_srl);
$content = $oDocument->getContent(false,false,false,false);
$title = $oDocument->getTitleText();

$files = $oFileModel->getFiles($args->document_srl);
$target_list = getTargetImg($content,$files);

if(count($files) && count($target_list)) {
$ai = null;
if($addon_info->insert_sequence =='Y') krsort($target_list);
foreach($target_list as $key=>$val) {
if(preg_match('/^./i',$val->uploaded_filename)) $path = substr($val->uploaded_filename,2);
else $path = $val->uploaded_filename;
$img = "<img src=\"".$siteUrl.$path."\" alt=\"".$title." : ".$val->source_filename."\" title=\"".$title." : ".$val->source_filename."\" />";
if($align) $img ="<p class=\"auto_insert\">".$img."</p>";
$ai[]="\njQuery('.document_".$args->document_srl."_".$args->module_srl."').prepend('".$img."');";
}
if(count($ai))  {
$js = "<script type=\"text/javascript\"> ".implode(' ',$ai)."\n</script>";
Context::addHtmlFooter($js);
}
}
}

//댓글 강제출력
if($addon_info->comment_auto_insert =='Y') {
$ci = array();
$pattern_comments_area = '/<div class="comment_[0-9]+_[0-9]+ xe_content">(.*?)<!--AfterComment\([0-9]+,[0-9]+\)-->/is';
$pattern3 ='/<div class="comment_[0-9]+_[0-9]+ xe_content">/is';
$pattern4='/<!--AfterComment\([0-9]+,[0-9]+\)-->/is';
$oFileModel = &getModel('file');
$oCommentModel = &getModel('comment');

preg_match_all($pattern_comments_area, $output,$match);
if(!count($match[0])) return;
foreach ($match[0] as $comment) {
preg_match($pattern3,$comment,$matches);
$ds=$matches[0];
$ds=substr(substr($ds,20),0,-13);
$dos=explode('_',$ds);
$comment_srl = intval($dos[0]);
$args->module_srl = $dos[1];
$comment = $oCommentModel->getComment($comment_srl);
$content = $comment->getContent(false,false,false,false);

$files = $oFileModel->getFiles($comment_srl);

if(count($files)) {
$target_list = getTargetImg($content,$files);
if(count($target_list)) {
if($addon_info->insert_sequence =='Y') krsort($target_list);
$obj->parent_srl = $args->document_srl;
foreach($target_list as $key=>$val) {
if(preg_match('/^./i',$val->uploaded_filename)) $path = substr($val->uploaded_filename,2);
else $path = $val->uploaded_filename;
$img = "<img src=\"".$siteUrl.$path."\" alt=\"".$title." : ".$val->source_filename."\" title=\"".$title." : ".$val->source_filename."\" />";
if($align) $img ="<p class=\"auto_insert\">".$img."</p>";
$ci[]="\njQuery('.comment_".$comment_srl."_".$args->module_srl."').prepend('".$img."');";
}
}
}
}
if(count($ci))  {
$cjs = "<script type=\"text/javascript\"> ".implode(' ',$ci)."\n</script>";
Context::addHtmlFooter($cjs);
}
}

$css = sprintf('<style type="text/css"> .xe_content img{padding:0;margin:0;} .xe_content img{padding:%spx 0;} .xe_content .auto_insert {text-align:%s;} </style>',$addon_info->image_margin,$align);
Context::addHtmlHeader($css);
}

?>

 

<?php
if(!defined("__ZBXE__")) exit();

function getTargetImg($content,$files){
if(!count($files)) return array();
$content = strip_tags($content,'<img>');
preg_match_all('@<img\s[^>]*src\s*=\s*(["\'])([^\s>]+?)\1@i', $content, $temp_src); 
$inserted = array();
foreach($temp_src[2] as $val) {
$fn = substr(strrchr($val,'/'),1);
$inserted[] = $fn;
}
$pic = null;
foreach($files as $key => $file) {
$sfn = substr(strrchr($file->uploaded_filename,'/'),1);
if(!preg_match("/\.(jpg|png|jpeg|gif)$/i",$sfn)) continue;
$uploaded = rawurlencode($sfn);
$uploaded1 =urlencode($sfn);
if(!in_array($sfn,$inserted) && !in_array($uploaded,$inserted) && !in_array($uploaded1,$inserted) && file_exists($file->uploaded_filename)) $pic[]=$file;
}
return $pic;
}

?>

 

댓글 0