diff --git a/.htaccess b/.htaccess index ad6333158..508242c49 100644 --- a/.htaccess +++ b/.htaccess @@ -2,6 +2,7 @@ RewriteEngine On # image... RewriteRule ^([a-zA-Z0-9_]+)/files/attach/images/(.*) ./files/attach/images/$2 [L] +RewriteRule ^([a-zA-Z0-9_]+)/files/member_extra_info/(.*) ./files/member_extra_info/$2 [L] RewriteRule ^([a-zA-Z0-9_]+)/modules/(.*) ./modules/$2 [L] RewriteRule ^([a-zA-Z0-9_]+)/common/(.*) ./common/$2 [L] RewriteRule ^([a-zA-Z0-9_]+)/widgets/(.*) ./widgets/$2 [L] diff --git a/addons/member_extra_info/member_extra_info.addon.php b/addons/member_extra_info/member_extra_info.addon.php index 372476e3e..8cb3df8a5 100644 --- a/addons/member_extra_info/member_extra_info.addon.php +++ b/addons/member_extra_info/member_extra_info.addon.php @@ -26,14 +26,14 @@ **/ if($called_position == "before_display_content") { - // 기본적인 기능이라 MemberController 에 변경 코드가 있음 - $oMemberController = &getController('member'); + // 회원 이미지이름/ 마크/ 서명을 찾아서 대체할 함수를 담고 있는 파일을 include + require_once('./addons/member_extra_info/member_extra_info.lib.php'); // 1. 출력문서중에서
content
를 찾아 MemberController::transImageName() 를 이용하여 이미지이름/마크로 변경 - $output = preg_replace_callback('!<(div|span)([^\>]*)member_([0-9]+)([^\>]*)>(.*?)\<\/(div|span)\>!is', array($oMemberController, 'transImageName'), $output); + $output = preg_replace_callback('!<(div|span)([^\>]*)member_([0-9]+)([^\>]*)>(.*?)\<\/(div|span)\>!is', 'memberTransImageName', $output); // 2. 출력문서중에 를 찾아서 member_controller::transSignature()를 이용해서 서명을 추가 - $output = preg_replace_callback('//i', array($oMemberController, 'transSignature'), $output); + $output = preg_replace_callback('//i', "memberTransSignature", $output); /** * 3 기능 수행 : 시작할때 새쪽지가 왔는지 검사 diff --git a/addons/member_extra_info/member_extra_info.lib.php b/addons/member_extra_info/member_extra_info.lib.php new file mode 100644 index 000000000..dad26825f --- /dev/null +++ b/addons/member_extra_info/member_extra_info.lib.php @@ -0,0 +1,85 @@ +cached) { + $GLOBALS['_transImageNameList'][$member_srl]->cached = true; + $image_name_file = sprintf('./files/member_extra_info/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl); + $image_mark_file = sprintf('./files/member_extra_info/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl); + if(file_exists($image_name_file)) $GLOBALS['_transImageNameList'][$member_srl]->image_name_file = $image_name_file; + else $image_name_file = ''; + if(file_exists($image_mark_file)) $GLOBALS['_transImageNameList'][$member_srl]->image_mark_file = $image_mark_file; + else $image_mark_file = ''; + } else { + $image_name_file = $GLOBALS['_transImageNameList'][$member_srl]->image_name_file; + $image_mark_file = $GLOBALS['_transImageNameList'][$member_srl]->image_mark_file; + } + + // 이미지이름이나 마크가 없으면 원본 정보를 세팅 + if(!$image_name_file && !$image_mark_file) return $matches[0]; + + $nick_name = htmlspecialchars(strip_tags($nick_name)); + + // 이미지 이름이 있을 경우 + if($image_name_file) $text = sprintf('id: %s', $image_name_file, $nick_name, $nick_name); + + if($image_mark_file) $text = sprintf('id: %s%s', $image_mark_file, $nick_name, $nick_name, $text); + + return sprintf('%s',$member_srl, $text); + } + + /** + * @brief 게시글의 하단에 서명을 추가하는 코드 + **/ + function memberTransSignature($matches) { + $member_srl = $matches[2]; + if(!$member_srl) return $matches[0]; + + if(!$GLOBALS['_memberModuleConfig_']) { + $oModuleModel = &getModel('module'); + $GLOBALS['_memberModuleConfig_'] = $oModuleModel->getModuleConfig('member'); + } + $memberModuleConfig = $GLOBALS['_memberModuleConfig_']; + + // 전역변수에 미리 설정한 데이터가 있다면 그걸 return + if(!$GLOBALS['_transSignatureList'][$member_srl]->cached) { + $GLOBALS['_transSignatureList'][$member_srl]->cached = true; + + // 서명을 구해옴 + $signature = null; + $signature_file = sprintf('files/member_extra_info/signature/%s%d.signature.php', getNumberingPath($member_srl), $member_srl); + if(file_exists($signature_file)) $signature = trim(substr(FileHandler::readFile($signature_file),40)); + + // 프로필 이미지를 구해옴 + $exts = array('gif','jpg','png'); + for($i=0;$i<3;$i++) { + $profile_file = sprintf('files/member_extra_info/profile_image/%s%d.%s', getNumberingPath($member_srl), $member_srl, $exts[$i]); + if(file_exists($profile_file)) { + $signature = sprintf('%s', $profile_file, $signature); + break; + } + } + + $GLOBALS['_transSignatureList'][$member_srl]->signature = $signature; + } else $signature = $GLOBALS['_transSignatureList'][$member_srl]->signature; + + if(!$signature) return $matches[0]; + + // 서명 높이 제한 값이 있으면 표시 높이 제한 + if($memberModuleConfig->signature_max_height) { + return sprintf('
%s
', $memberModuleConfig->signature_max_height, $memberModuleConfig->signature_max_height, $memberModuleConfig->signature_max_height, $signature); + } else { + return sprintf('
%s
', $signature); + } + } +?> diff --git a/addons/point_level_icon/point_level_icon.addon.php b/addons/point_level_icon/point_level_icon.addon.php index 952e25c1d..5e9f09acf 100644 --- a/addons/point_level_icon/point_level_icon.addon.php +++ b/addons/point_level_icon/point_level_icon.addon.php @@ -12,6 +12,8 @@ // before_display_content 가 아니면 return if($called_position != "before_display_content") return; + require_once('./addons/point_level_icon/point_level_icon.lib.php'); + $oPointController = &getController('point'); - $output = preg_replace_callback('!<(div|span)([^\>]*)member_([0-9\-]+)([^\>]*)>(.*?)\<\/(div|span)\>!is', array($oPointController, 'transLevelIcon'), $output); + $output = preg_replace_callback('!<(div|span)([^\>]*)member_([0-9\-]+)([^\>]*)>(.*?)\<\/(div|span)\>!is', 'pointLevelIconTrans', $output); ?> diff --git a/addons/point_level_icon/point_level_icon.lib.php b/addons/point_level_icon/point_level_icon.lib.php new file mode 100644 index 000000000..e494354be --- /dev/null +++ b/addons/point_level_icon/point_level_icon.lib.php @@ -0,0 +1,46 @@ +getModuleConfig('point'); + } + $config = $GLOBALS['_pointConfig']; + + // 포인트 모델을 구해 놓음 + if(!$GLOBALS['_pointModel']) $GLOBALS['_pointModel'] = getModel('point'); + $oPointModel = &$GLOBALS['_pointModel']; + + // 포인트를 구함 + $point = $oPointModel->getPoint($member_srl); + + // 레벨을 구함 + $level = $oPointModel->getLevel($point, $config->level_step); + $text = $matches[5]; + + // 레벨 아이콘의 위치를 구함 + $level_icon = sprintf("./modules/point/icons/%s/%d.gif", $config->level_icon, $level); + + // 최고 레벨이 아니면 다음 레벨로 가기 위한 per을 구함 + if($level < $config->max_level) { + $next_point = $config->level_step[$level+1]; + if($next_point > 0) $per = (int)($point / $next_point*100); + } + + $title = sprintf("%s:%s%s %s, %s:%s/%s", Context::getLang('point'), $point, $config->point_name, $per?"(".$per."%)":"", Context::getLang('level'), $level, $config->max_level); + + $text = sprintf('%s%s', $member_srl, $level_icon, $title, $title, $text); + + $GLOBALS['_pointLevelIcon'][$member_srl] = $text; + } + + return $GLOBALS['_pointLevelIcon'][$member_srl]; + } +?> diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index d4f24701f..e6fa27e37 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -263,7 +263,7 @@ } // 디렉토리 생성 - $path = preg_replace('/\/([^\.^\/]*)\.(gif|png|jpeg|bmp|wbmp)$/i','',$target_file); + $path = preg_replace('/\/([^\.^\/]*)\.(gif|png|jpg|jpeg|bmp|wbmp)$/i','',$target_file); FileHandler::makeDir($path); // 원본 이미지의 크기를 조절해서 임시 이미지에 넣음 diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index a1e220be8..00971499f 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -343,10 +343,7 @@ @include($compiled_tpl_file); } - $output = ob_get_contents(); - ob_end_clean(); - - return $output; + return ob_get_clean(); } } ?> diff --git a/config/config.inc.php b/config/config.inc.php index 3b38aeae4..33c7fe0f8 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -23,7 +23,7 @@ * 2 : 1 + DB 쿼리 * 3 : 모든 로그 **/ - define('__DEBUG__', 3); + define('__DEBUG__', 0); /** * @brief 디버그 메세지의 출력 장소 diff --git a/modules/importer/importer.admin.controller.php b/modules/importer/importer.admin.controller.php index 0978eceb2..a67d1a2ae 100644 --- a/modules/importer/importer.admin.controller.php +++ b/modules/importer/importer.admin.controller.php @@ -1081,8 +1081,7 @@ } fclose($fp); - $output = ob_get_contents(); - ob_end_clean(); + $output = ob_get_clean(); $this->add('is_finished','1'); $this->add('total_count',$total_count); diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index e9d2d8048..5be4d1353 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -895,7 +895,7 @@ if(!$max_height) $max_height = "20"; // 저장할 위치 구함 - $target_path = sprintf('files/member_extra_info/profile_image/%s/', getNumberingPath($member_srl)); + $target_path = sprintf('files/member_extra_info/profile_image/%s', getNumberingPath($member_srl)); FileHandler::makeDir($target_path); // 파일 정보 구함 @@ -1417,6 +1417,7 @@ // 수정하려는 대상의 원래 정보 가져오기 $member_info = $oMemberModel->getMemberInfoByMemberSrl($args->member_srl); + if(!$args->user_id) $args->user_id = $member_info->user_id; // 필수 변수들의 조절 if($args->allow_mailing!='Y') $args->allow_mailing = 'N'; @@ -1568,79 +1569,6 @@ return $output; } - /** - * @brief 최종 출력물에서 이미지 이름을 변경 - * member_extra_info 애드온에서 요청이 됨 - **/ - function transImageName($matches) { - $member_srl = $matches[3]; - if($member_srl<0) return $matches[5]; - - $text = $matches[5]; - if(!$member_srl) return $matches[0]; - - // 전역변수에 미리 설정한 데이터가 있다면 그걸 return - if(!$GLOBALS['_transImageNameList'][$member_srl]) { - $oMemberModel = &getModel('member'); - - $GLOBALS['_transImageNameList'][$member_srl]['image_name'] = $oMemberModel->getImageName($member_srl); - $GLOBALS['_transImageNameList'][$member_srl]['image_mark'] = $oMemberModel->getImageMark($member_srl); - } - $image_name = $GLOBALS['_transImageNameList'][$member_srl]['image_name']; - $image_mark = $GLOBALS['_transImageNameList'][$member_srl]['image_mark']; - - // 이미지이름이나 마크가 없으면 원본 정보를 세팅 - if(!$image_name && !$image_mark) return $matches[0]; - - if($image_name->width) { - $text = sprintf('id: %s', Context::getRequestUri().$image_name->file, htmlspecialchars(strip_tags($matches[5])), htmlspecialchars(strip_tags($matches[5])), $image_name->width, $image_name->height); - } - - if($image_mark->width) { - $text = sprintf('id: %s%s', Context::getRequestUri().$image_mark->file, htmlspecialchars(strip_tags($matches[5])), htmlspecialchars(strip_tags($matches[5])), $image_mark->width, $image_mark->height, $text); - } - - return sprintf('%s',$member_srl, $text); - } - - /** - * @brief 최종 출력물에서 서명을 변경, 프로필 이미지도 같이 적용함 - * member_extra_info 애드온에서 요청이 됨 - **/ - function transSignature($matches) { - $oModuleModel = &getModel('module'); - $memberModuleConfig = $oModuleModel->getModuleConfig('member'); - - $member_srl = $matches[2]; - if(!$member_srl) return $matches[0]; - - // 전역변수에 미리 설정한 데이터가 있다면 그걸 return - if(!isset($GLOBALS['_transSignatureList'][$member_srl])) { - $oMemberModel = &getModel('member'); - - // 서명을 구해옴 - $signature = $oMemberModel->getSignature($member_srl); - - // 프로필 이미지를 구해옴 - $profile_image = $oMemberModel->getProfileImage($member_srl); - if($profile_image->src) $signature = sprintf('%s', $profile_image->src, $profile_image->width, $profile_image->height, $signature); - - // 서명이 있으면 반환 - if($signature) { - // 서명 높이 제한 값이 있으면 표시 높이 제한 - if($memberModuleConfig->signature_max_height) { - $GLOBALS['_transSignatureList'][$member_srl] = sprintf('
%s
', $memberModuleConfig->signature_max_height, $memberModuleConfig->signature_max_height, $memberModuleConfig->signature_max_height, $signature); - } else { - $GLOBALS['_transSignatureList'][$member_srl] = sprintf('
%s
', $signature); - } - } else { - $GLOBALS['_transSignatureList'][$member_srl] = null; - } - } - - return $GLOBALS['_transSignatureList'][$member_srl].$matches[0]; - } - /** * @brief 모든 세션 정보 파기 **/ diff --git a/modules/opage/opage.view.php b/modules/opage/opage.view.php index e14319737..3b700edfb 100644 --- a/modules/opage/opage.view.php +++ b/modules/opage/opage.view.php @@ -106,8 +106,7 @@ // 일단 대상 파일을 읽어서 내용을 구함 ob_start(); @include($path); - $content = ob_get_contents(); - ob_end_clean(); + $content = ob_get_clean(); FileHandler::writeFile($cache_file, $content); @@ -127,8 +126,7 @@ ob_start(); @include($cache_file); - $content = ob_get_contents(); - ob_end_clean(); + $content = ob_get_clean(); return $content; } diff --git a/modules/point/point.controller.php b/modules/point/point.controller.php index f63109aa3..ab79d30fd 100644 --- a/modules/point/point.controller.php +++ b/modules/point/point.controller.php @@ -429,49 +429,5 @@ return $output; } - - /** - * @brief 포인트 레벨 아이콘 표시 - **/ - function transLevelIcon($matches) { - if(!$this->config) { - $oModuleModel = &getModel('module'); - $this->config = $oModuleModel->getModuleConfig('point'); - } - - if(!$this->oPointModel) $this->oPointModel = &getModel('point'); - - $member_srl = $matches[3]; - if($member_srl<1) return $matches[0]; - - if($this->member_code[$member_srl]) return $this->member_code[$member_srl]; - - $point = $this->oPointModel->getPoint($member_srl); - $level = $this->oPointModel->getLevel($point, $this->config->level_step); - - $text = $matches[5]; - - $src = sprintf("modules/point/icons/%s/%d.gif", $this->config->level_icon, $level); - if(!$this->icon_width) { - $info = getimagesize($src); - $this->icon_width = $info[0]; - $this->icon_height = $info[1]; - } - - if($level < $this->config->max_level) { - $next_point = $this->config->level_step[$level+1]; - if($next_point > 0) { - $per = (int)($point / $next_point*100); - } - } - - $title = sprintf("%s:%s%s %s, %s:%s/%s", Context::getLang('point'), $point, $this->config->point_name, $per?"(".$per."%)":"", Context::getLang('level'), $level, $this->config->max_level); - - $text = sprintf('%s%s', $member_srl, Context::getRequestUri().$src, $this->icon_width, $this->icon_height, $title, $title, $text); - - $this->member_code[$member_srl] = $text; - - return $this->member_code[$member_srl]; - } } ?>