diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php
index d1a807022..068a7b2b1 100644
--- a/modules/member/member.admin.controller.php
+++ b/modules/member/member.admin.controller.php
@@ -131,19 +131,22 @@ class memberAdminController extends member
$profile_image = $_FILES['profile_image'];
if(is_uploaded_file($profile_image['tmp_name']))
{
- $oMemberController->insertProfileImage($args->member_srl, $profile_image['tmp_name']);
+ $output = $oMemberController->insertProfileImage($args->member_srl, $profile_image['tmp_name']);
+ if(!$output->toBool()) return $output;
}
$image_mark = $_FILES['image_mark'];
if(is_uploaded_file($image_mark['tmp_name']))
{
- $oMemberController->insertImageMark($args->member_srl, $image_mark['tmp_name']);
+ $output = $oMemberController->insertImageMark($args->member_srl, $image_mark['tmp_name']);
+ if(!$output->toBool()) return $output;
}
$image_name = $_FILES['image_name'];
if (is_uploaded_file($image_name['tmp_name']))
{
- $oMemberController->insertImageName($args->member_srl, $image_name['tmp_name']);
+ $output = $oMemberController->insertImageName($args->member_srl, $image_name['tmp_name']);
+ if(!$output->toBool()) return $output;
}
// Clear cache
@@ -291,9 +294,9 @@ class memberAdminController extends member
'limit_day_description',
'emailhost_check',
'redirect_url',
- 'profile_image', 'profile_image_max_width', 'profile_image_max_height',
- 'image_name', 'image_name_max_width', 'image_name_max_height',
- 'image_mark', 'image_mark_max_width', 'image_mark_max_height',
+ 'profile_image', 'profile_image_max_width', 'profile_image_max_height', 'profile_image_max_filesize',
+ 'image_name', 'image_name_max_width', 'image_name_max_height', 'image_name_max_filesize',
+ 'image_mark', 'image_mark_max_width', 'image_mark_max_height', 'image_mark_max_filesize',
'signature_editor_skin', 'sel_editor_colorset', 'signature_html', 'signature_html_retroact', 'member_allow_fileupload'
);
@@ -331,27 +334,33 @@ class memberAdminController extends member
// signupForm
global $lang;
$signupForm = array();
- $items = array('user_id', 'password', 'user_name', 'nick_name', 'email_address', 'homepage', 'blog', 'birthday', 'signature', 'profile_image', 'image_name', 'image_mark', 'profile_image_max_width', 'profile_image_max_height', 'image_name_max_width', 'image_name_max_height', 'image_mark_max_width', 'image_mark_max_height');
+ $items = array(
+ 'user_id', 'password', 'user_name', 'nick_name', 'email_address', 'homepage', 'blog', 'birthday', 'signature',
+ 'profile_image', 'profile_image_max_width', 'profile_image_max_height', 'profile_image_max_filesize',
+ 'image_name', 'image_name_max_width', 'image_name_max_height', 'image_name_max_filesize',
+ 'image_mark', 'image_mark_max_width', 'image_mark_max_height', 'image_mark_max_filesize',
+ );
$mustRequireds = array('email_address', 'nick_name', 'password');
$extendItems = $oMemberModel->getJoinFormList();
+
foreach($list_order as $key)
{
$signupItem = new stdClass();
$signupItem->isIdentifier = ($key == $all_args->identifier);
$signupItem->isDefaultForm = in_array($key, $items);
-
$signupItem->name = $key;
- if(!in_array($key, $items)) $signupItem->title = $key;
- else $signupItem->title = $lang->{$key};
+ $signupItem->title = (!in_array($key, $items)) ? $key : $lang->{$key};
$signupItem->mustRequired = in_array($key, $mustRequireds);
$signupItem->imageType = (strpos($key, 'image') !== false);
$signupItem->required = ($all_args->{$key} == 'required') || $signupItem->mustRequired || $signupItem->isIdentifier;
$signupItem->isUse = in_array($key, $usable_list) || $signupItem->required;
$signupItem->isPublic = ($all_args->{'is_'.$key.'_public'} == 'Y' && $signupItem->isUse) ? 'Y' : 'N';
+
if($signupItem->imageType)
{
$signupItem->max_width = $all_args->{$key.'_max_width'};
$signupItem->max_height = $all_args->{$key.'_max_height'};
+ $signupItem->max_filesize = $all_args->{$key.'_max_filesize'};
}
// set extends form
diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php
index 902e0957f..6a970c2f8 100644
--- a/modules/member/member.controller.php
+++ b/modules/member/member.controller.php
@@ -1060,13 +1060,12 @@ class memberController extends member
$logged_info = Context::get('logged_info');
if($logged_info->is_admin != 'Y' && $logged_info->member_srl != $member_srl) return $this->stop('msg_not_uploaded_profile_image');
// Return if member module is set not to use an image name or the user is not an administrator ;
- $oModuleModel = getModel('module');
- $config = $oModuleModel->getModuleConfig('member');
+ $oMemberModel = getModel('member');
+ $config = $oMemberModel->getMemberConfig();
if($logged_info->is_admin != 'Y' && $config->profile_image != 'Y') return $this->stop('msg_not_uploaded_profile_image');
- $this->insertProfileImage($member_srl, $file['tmp_name']);
- // Page refresh
- //$this->setRefreshPage();
+ $output = $this->insertProfileImage($member_srl, $file['tmp_name']);
+ if(!$output->toBool()) return $output;
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'mid', Context::get('mid'), 'act', 'dispMemberModifyInfo');
$this->setRedirectUrl($returnUrl);
@@ -1084,38 +1083,69 @@ class memberController extends member
{
$oMemberModel = getModel('member');
$config = $oMemberModel->getMemberConfig();
-
+
// Get an image size
$max_width = $config->profile_image_max_width;
- if(!$max_width) $max_width = "90";
$max_height = $config->profile_image_max_height;
- if(!$max_height) $max_height = "90";
- // Get a target path to save
- $target_path = sprintf('files/member_extra_info/profile_image/%s', getNumberingPath($member_srl));
- FileHandler::makeDir($target_path);
+ $max_filesize = $config->profile_image_max_filesize;
+
+ Context::loadLang(_XE_PATH_ . 'modules/file/lang');
// Get file information
- list($width, $height, $type, $attrs) = @getimagesize($target_file);
+ FileHandler::clearStatCache($target_file);
+ list($width, $height, $type) = @getimagesize($target_file);
if(IMAGETYPE_PNG == $type) $ext = 'png';
elseif(IMAGETYPE_JPEG == $type) $ext = 'jpg';
elseif(IMAGETYPE_GIF == $type) $ext = 'gif';
else
{
- return;
+ return $this->stop('msg_not_uploaded_profile_image');
}
- FileHandler::removeFilesInDir($target_path);
+ $target_path = sprintf('files/member_extra_info/profile_image/%s', getNumberingPath($member_srl));
+ FileHandler::makeDir($target_path);
$target_filename = sprintf('%s%d.%s', $target_path, $member_srl, $ext);
// Convert if the image size is larger than a given size
if($width > $max_width || $height > $max_height)
{
- FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, $ext);
+ $temp_filename = sprintf('files/cache/tmp/profile_image_%d.%s', $member_srl, $ext);
+ FileHandler::createImageFile($target_file, $temp_filename, $max_width, $max_height, $ext);
+
+ // 파일 용량 제한
+ FileHandler::clearStatCache($temp_filename);
+ $filesize = filesize($temp_filename);
+ if($max_filesize && $filesize > ($max_filesize * 1024))
+ {
+ FileHandler::removeFile($temp_filename);
+ return $this->stop(implode(' ' , array(
+ Context::getLang('msg_not_uploaded_profile_image'),
+ Context::getLang('msg_exceeds_limit_size')
+ )));
+ }
+
+ FileHandler::removeFilesInDir($target_path);
+ FileHandler::moveFile($temp_filename, $target_filename);
+ FileHandler::clearStatCache($target_filename);
}
else
{
+ // 파일 용량 제한
+ $filesize = filesize($target_file);
+ if($max_filesize && $filesize > ($max_filesize * 1024))
+ {
+ return $this->stop(implode(' ' , array(
+ Context::getLang('msg_not_uploaded_profile_image'),
+ Context::getLang('msg_exceeds_limit_size')
+ )));
+ }
+
+ FileHandler::removeFilesInDir($target_path);
@copy($target_file, $target_filename);
+ FileHandler::clearStatCache($target_filename);
}
+
+ return new BaseObject(0, 'success');
}
/**
@@ -1135,11 +1165,13 @@ class memberController extends member
$logged_info = Context::get('logged_info');
if($logged_info->is_admin != 'Y' && $logged_info->member_srl != $member_srl) return $this->stop('msg_not_uploaded_image_name');
// Return if member module is set not to use an image name or the user is not an administrator ;
- $oModuleModel = getModel('module');
- $config = $oModuleModel->getModuleConfig('member');
+ $oMemberModel = getModel('member');
+ $config = $oMemberModel->getMemberConfig();
if($logged_info->is_admin != 'Y' && $config->image_name != 'Y') return $this->stop('msg_not_uploaded_image_name');
- $this->insertImageName($member_srl, $file['tmp_name']);
+ $output = $this->insertImageName($member_srl, $file['tmp_name']);
+ if(!$output->toBool()) return $output;
+
// Page refresh
//$this->setRefreshPage();
@@ -1157,23 +1189,63 @@ class memberController extends member
*/
function insertImageName($member_srl, $target_file)
{
- $oModuleModel = getModel('module');
- $config = $oModuleModel->getModuleConfig('member');
+ $oMemberModel = getModel('member');
+ $config = $oMemberModel->getMemberConfig();
+
// Get an image size
$max_width = $config->image_name_max_width;
- if(!$max_width) $max_width = "90";
$max_height = $config->image_name_max_height;
- if(!$max_height) $max_height = "20";
+ $max_filesize = $config->image_name_max_filesize;
+
+ Context::loadLang(_XE_PATH_ . 'modules/file/lang');
+
// Get a target path to save
$target_path = sprintf('files/member_extra_info/image_name/%s/', getNumberingPath($member_srl));
FileHandler::makeDir($target_path);
$target_filename = sprintf('%s%d.gif', $target_path, $member_srl);
// Get file information
- list($width, $height, $type, $attrs) = @getimagesize($target_file);
+ list($width, $height, $type) = @getimagesize($target_file);
// Convert if the image size is larger than a given size or if the format is not a gif
- if($width > $max_width || $height > $max_height || $type!=1) FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, 'gif');
- else @copy($target_file, $target_filename);
+ if($width > $max_width || $height > $max_height || $type!=1)
+ {
+ $temp_filename = sprintf('files/cache/tmp/image_name_%d.gif', $member_srl, $ext);
+ FileHandler::createImageFile($target_file, $temp_filename, $max_width, $max_height, 'gif');
+
+ // 파일 용량 제한
+ FileHandler::clearStatCache($temp_filename);
+ $filesize = filesize($temp_filename);
+ if($max_filesize && $filesize > ($max_filesize * 1024))
+ {
+ FileHandler::removeFile($temp_filename);
+ return $this->stop(implode(' ' , array(
+ Context::getLang('msg_not_uploaded_image_name'),
+ Context::getLang('msg_exceeds_limit_size')
+ )));
+ }
+
+ FileHandler::removeFilesInDir($target_path);
+ FileHandler::moveFile($temp_filename, $target_filename);
+ FileHandler::clearStatCache($target_filename);
+ }
+ else
+ {
+ // 파일 용량 제한
+ $filesize = filesize($target_file);
+ if($max_filesize && $filesize > ($max_filesize * 1024))
+ {
+ return $this->stop(implode(' ' , array(
+ Context::getLang('msg_not_uploaded_image_name'),
+ Context::getLang('msg_exceeds_limit_size')
+ )));
+ }
+
+ FileHandler::removeFilesInDir($target_path);
+ @copy($target_file, $target_filename);
+ FileHandler::clearStatCache($target_filename);
+ }
+
+ return new BaseObject(0, 'success');
}
/**
@@ -1244,13 +1316,12 @@ class memberController extends member
$logged_info = Context::get('logged_info');
if($logged_info->is_admin != 'Y' && $logged_info->member_srl != $member_srl) return $this->stop('msg_not_uploaded_image_mark');
// Membership in the images mark the module using the ban was set by an administrator or return;
- $oModuleModel = getModel('module');
- $config = $oModuleModel->getModuleConfig('member');
+ $oMemberModel = getModel('member');
+ $config = $oMemberModel->getMemberConfig();
if($logged_info->is_admin != 'Y' && $config->image_mark != 'Y') return $this->stop('msg_not_uploaded_image_mark');
$this->insertImageMark($member_srl, $file['tmp_name']);
- // Page refresh
- //$this->setRefreshPage();
+ if(!$output->toBool()) return $output;
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'mid', Context::get('mid'), 'act', 'dispMemberModifyInfo');
$this->setRedirectUrl($returnUrl);
@@ -1266,13 +1337,15 @@ class memberController extends member
*/
function insertImageMark($member_srl, $target_file)
{
- $oModuleModel = getModel('module');
- $config = $oModuleModel->getModuleConfig('member');
+ $oMemberModel = getModel('member');
+ $config = $oMemberModel->getMemberConfig();
+
// Get an image size
$max_width = $config->image_mark_max_width;
- if(!$max_width) $max_width = "20";
$max_height = $config->image_mark_max_height;
- if(!$max_height) $max_height = "20";
+ $max_filesize = $config->image_mark_max_filesize;
+
+ Context::loadLang(_XE_PATH_ . 'modules/file/lang');
$target_path = sprintf('files/member_extra_info/image_mark/%s/', getNumberingPath($member_srl));
FileHandler::makeDir($target_path);
@@ -1281,8 +1354,45 @@ class memberController extends member
// Get file information
list($width, $height, $type, $attrs) = @getimagesize($target_file);
- if($width > $max_width || $height > $max_height || $type!=1) FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, 'gif');
- else @copy($target_file, $target_filename);
+ if($width > $max_width || $height > $max_height || $type!=1)
+ {
+ $temp_filename = sprintf('files/cache/tmp/image_mark_%d.gif', $member_srl);
+ FileHandler::createImageFile($target_file, $temp_filename, $max_width, $max_height, 'gif');
+
+ // 파일 용량 제한
+ FileHandler::clearStatCache($temp_filename);
+ $filesize = filesize($temp_filename);
+ if($max_filesize && $filesize > ($max_filesize * 1024))
+ {
+ FileHandler::removeFile($temp_filename);
+ return $this->stop(implode(' ' , array(
+ Context::getLang('msg_not_uploaded_group_image_mark'),
+ Context::getLang('msg_exceeds_limit_size')
+ )));
+ }
+
+ FileHandler::removeFilesInDir($target_path);
+ FileHandler::moveFile($temp_filename, $target_filename);
+ FileHandler::clearStatCache($target_filename);
+ }
+ else
+ {
+ $filesize = filesize($target_file);
+ if($max_filesize && $filesize > ($max_filesize * 1024))
+ {
+ FileHandler::removeFile($target_file);
+ return $this->stop(implode(' ' , array(
+ Context::getLang('msg_not_uploaded_group_image_mark'),
+ Context::getLang('msg_exceeds_limit_size')
+ )));
+ }
+
+ FileHandler::removeFilesInDir($target_path);
+ @copy($target_file, $target_filename);
+ FileHandler::clearStatCache($target_filename);
+ }
+
+ return new BaseObject(0, 'success');
}
/**
diff --git a/modules/member/member.model.php b/modules/member/member.model.php
index eb1c183f7..b3307457d 100644
--- a/modules/member/member.model.php
+++ b/modules/member/member.model.php
@@ -60,12 +60,17 @@ class memberModel extends member
}
if(!$config->webmaster_name) $config->webmaster_name = 'webmaster';
+
if(!$config->image_name_max_width) $config->image_name_max_width = 90;
if(!$config->image_name_max_height) $config->image_name_max_height = 20;
+ if(!$config->image_name_max_filesize) $config->image_name_max_filesize = null;
if(!$config->image_mark_max_width) $config->image_mark_max_width = 20;
if(!$config->image_mark_max_height) $config->image_mark_max_height = 20;
+ if(!$config->image_mark_max_filesize) $config->image_mark_max_filesize = null;
if(!$config->profile_image_max_width) $config->profile_image_max_width = 90;
if(!$config->profile_image_max_height) $config->profile_image_max_height = 90;
+ if(!$config->profile_image_max_filesize) $config->profile_image_max_filesize = null;
+
if(!$config->skin) $config->skin = 'default';
if(!$config->colorset) $config->colorset = 'white';
if(!$config->editor_skin || $config->editor_skin == 'default') $config->editor_skin = 'ckeditor';
diff --git a/modules/member/tpl/signup_config.html b/modules/member/tpl/signup_config.html
index 4b9cd4191..284d49973 100644
--- a/modules/member/tpl/signup_config.html
+++ b/modules/member/tpl/signup_config.html
@@ -1,5 +1,6 @@
+