Merge branch 'develop' into pr/member-phone-number

This commit is contained in:
Kijin Sung 2019-07-27 23:47:24 +09:00
commit c09d2a773d
2041 changed files with 23045 additions and 18189 deletions

View file

@ -2,23 +2,23 @@
<module>
<grants />
<actions>
<action name="dispMemberSignUpForm" type="view" />
<action name="dispMemberLoginForm" type="view" />
<action name="dispMemberFindAccount" type="view" />
<action name="dispMemberResendAuthMail" type="view" />
<action name="dispMemberInfo" type="view" permission="member" />
<action name="dispMemberModifyInfo" type="view" permission="member" />
<action name="dispMemberModifyPassword" type="view" permission="member" />
<action name="dispMemberModifyEmailAddress" type="view" permission="member" />
<action name="dispMemberLeave" type="view" permission="member" />
<action name="dispMemberScrappedDocument" type="view" permission="member" />
<action name="dispMemberSavedDocument" type="view" permission="member" />
<action name="dispMemberOwnDocument" type="view" permission="member" />
<action name="dispMemberOwnComment" type="view" permission="member" />
<action name="dispMemberActiveLogins" type="view" permission="member" />
<action name="dispMemberModifyNicknameLog" type="view" permission="member" />
<action name="dispMemberLogout" type="view" permission="member" />
<action name="dispMemberSpammer" type="view" permission="manager" check_var="module_srl" />
<action name="dispMemberSignUpForm" type="view" meta-noindex="true" />
<action name="dispMemberLoginForm" type="view" meta-noindex="true" />
<action name="dispMemberFindAccount" type="view" meta-noindex="true" />
<action name="dispMemberResendAuthMail" type="view" meta-noindex="true" />
<action name="dispMemberInfo" type="view" permission="member" meta-noindex="true" />
<action name="dispMemberModifyInfo" type="view" permission="member" meta-noindex="true" />
<action name="dispMemberModifyPassword" type="view" permission="member" meta-noindex="true" />
<action name="dispMemberModifyEmailAddress" type="view" permission="member" meta-noindex="true" />
<action name="dispMemberLeave" type="view" permission="member" meta-noindex="true" />
<action name="dispMemberScrappedDocument" type="view" permission="member" meta-noindex="true" />
<action name="dispMemberSavedDocument" type="view" permission="member" meta-noindex="true" />
<action name="dispMemberOwnDocument" type="view" permission="member" meta-noindex="true" />
<action name="dispMemberOwnComment" type="view" permission="member" meta-noindex="true" />
<action name="dispMemberActiveLogins" type="view" permission="member" meta-noindex="true" />
<action name="dispMemberModifyNicknameLog" type="view" permission="member" meta-noindex="true" />
<action name="dispMemberLogout" type="view" permission="member" meta-noindex="true" />
<action name="dispMemberSpammer" type="view" permission="manager" check_var="module_srl" meta-noindex="true" />
<action name="getMemberMenu" type="model" />
<action name="getApiGroups" type="model" permission="root" />

View file

@ -6,7 +6,7 @@
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/m.skin/default/login_form/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form action="./" method="POST" class="ff">
<form ruleset="@login" action="./" method="post" class="ff">
<input type="hidden" name="module" value="member" />
<input type="hidden" name="act" value="procMemberLogin" />
<input type="hidden" name="redirect_url" value="{getUrl('act','')}" />

View file

@ -35,7 +35,7 @@
<label for="{$formTag->name}">{$formTag->title}</label>
<div cond="$formTag->name != 'signature'">{$formTag->inputTag}</div>
<div cond="$formTag->name =='signature'">
{$editor}
{$editor|noescape}
</div>
</li>
<li><label for="mailing" class="db fb al">{$lang->allow_mailing}</label><input id="mailing" type="checkbox" name="allow_mailing" value="Y" class="checkbox" <!--@if($member_info->allow_mailing!='N')-->checked="checked"<!--@end--> /> <p style="color:#666">{$lang->about_allow_mailing}</p></li>

View file

@ -5,7 +5,7 @@
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/skins'" class="rx_member-notice {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form ruleset="@login" action="{getUrl('', 'act', 'procMemberLogin')}" method="post" id="fo_member_login">
<form ruleset="@login" action="./" method="post" id="fo_member_login">
<input type="hidden" name="success_return_url" value="{$referer_url}" />
<input type="hidden" name="act" value="procMemberLogin" />
<input type="hidden" name="xe_validator_id" value="modules/member/skins" />

View file

@ -31,7 +31,7 @@
<block loop="$formTags=>$formTag" cond="$formTag->name !== 'profile_image'">
<label for="{$formTag->name}" class="control-label">{trim(str_replace('*','',strip_tags($formTag->title)))}<!--@if(strpos($formTag->title,'<em style="color:red">*</em>') !== false)--><sup style="color:red">*</sup><!--@endif--></label>
<block cond="$formTag->name != 'signature'">{$formTag->inputTag}</block>
<block cond="$formTag->name =='signature'">{$editor}</block>
<block cond="$formTag->name =='signature'">{$editor|noescape}</block>
</block>
<label class="control-label">{$lang->allow_mailing}</label>
<div class="controls">

View file

@ -59,7 +59,7 @@
</block>
<block cond="$formTag->name == 'signature'">
<input type="hidden" name="signature" value="" />
{$editor}
{$editor|noescape}
</block>
</block>
<div class="control-label">{$lang->allow_mailing}</div>

View file

@ -26,7 +26,7 @@ class memberAdminController extends member
$logged_info = Context::get('logged_info');
if($logged_info->is_admin != 'Y' || !checkCSRF())
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
$args = Context::gets('member_srl','email_address','find_account_answer', 'allow_mailing','allow_message','denied','is_admin','description','group_srl_list','limit_date');
@ -128,21 +128,21 @@ class memberAdminController extends member
$signature = Context::get('signature');
$oMemberController->putSignature($args->member_srl, $signature);
$profile_image = $_FILES['profile_image'];
$profile_image = Context::get('profile_image');
if(is_uploaded_file($profile_image['tmp_name']))
{
$output = $oMemberController->insertProfileImage($args->member_srl, $profile_image['tmp_name']);
if(!$output->toBool()) return $output;
}
$image_mark = $_FILES['image_mark'];
$image_mark = Context::get('image_mark');
if(is_uploaded_file($image_mark['tmp_name']))
{
$output = $oMemberController->insertImageMark($args->member_srl, $image_mark['tmp_name']);
if(!$output->toBool()) return $output;
}
$image_name = $_FILES['image_name'];
$image_name = Context::get('image_name');
if (is_uploaded_file($image_name['tmp_name']))
{
$output = $oMemberController->insertImageName($args->member_srl, $image_name['tmp_name']);
@ -741,7 +741,7 @@ class memberAdminController extends member
// Check ID duplicated
if (Context::isReservedWord($args->column_name))
{
return $this->setError('msg_column_id_not_available');
throw new Rhymix\Framework\Exception('msg_column_id_not_available');
}
$oMemberModel = getModel('member');
$config = $oMemberModel->getMemberConfig();
@ -750,7 +750,7 @@ class memberAdminController extends member
if($item->name == $args->column_name)
{
if($args->member_join_form_srl && $args->member_join_form_srl == $item->member_join_form_srl) continue;
return $this->setError('msg_column_id_not_available');
throw new Rhymix\Framework\Exception('msg_column_id_not_available');
}
}
// Fix if member_join_form_srl exists. Add if not exists.
@ -961,7 +961,7 @@ class memberAdminController extends member
function procMemberAdminDeleteMembers()
{
$target_member_srls = Context::get('target_member_srls');
if(!$target_member_srls) return $this->setError('msg_invalid_request');
if(!$target_member_srls) throw new Rhymix\Framework\Exceptions\InvalidRequest;
$member_srls = explode(',', $target_member_srls);
$oMemberController = getController('member');
@ -985,7 +985,7 @@ class memberAdminController extends member
function procMemberAdminUpdateMembersGroup()
{
$member_srl = Context::get('member_srl');
if(!$member_srl) return $this->setError('msg_invalid_request');
if(!$member_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
$member_srls = explode(',',$member_srl);
$group_srl = Context::get('group_srls');
@ -1258,7 +1258,7 @@ class memberAdminController extends member
function updateGroup($args)
{
if(!$args->site_srl) $args->site_srl = 0;
if(!$args->group_srl) return $this->setError('lang->msg_not_founded');
if(!$args->group_srl) throw new Rhymix\Framework\Exceptions\TargetNotFound;
// Call trigger (before)
$trigger_output = ModuleHandler::triggerCall('member.updateGroup', 'before', $args);
@ -1302,8 +1302,8 @@ class memberAdminController extends member
$columnList = array('group_srl', 'is_default');
$group_info = $oMemberModel->getGroup($group_srl, $columnList);
if(!$group_info) return $this->setError('lang->msg_not_founded');
if($group_info->is_default == 'Y') return $this->setError('msg_not_delete_default');
if(!$group_info) throw new Rhymix\Framework\Exceptions\TargetNotFound;
if($group_info->is_default == 'Y') throw new Rhymix\Framework\Exception('msg_not_delete_default');
// Call trigger (before)
$trigger_output = ModuleHandler::triggerCall('member.deleteGroup', 'before', $group_info);

View file

@ -30,7 +30,7 @@ class memberController extends member
if(!$user_id && !$password && Context::getRequestMethod() == 'GET')
{
$this->setRedirectUrl(getNotEncodedUrl(''));
return $this->setError('null_user_id');
throw new Rhymix\Framework\Exception('null_user_id');
}
// Variables
@ -42,8 +42,8 @@ class memberController extends member
if(!$keep_signed) $keep_signed = Context::get('keep_signed');
// Return an error when id and password doesn't exist
if(!$user_id) return $this->setError('null_user_id');
if(!$password) return $this->setError('null_password');
if(!$user_id) throw new Rhymix\Framework\Exception('null_user_id');
if(!$password) throw new Rhymix\Framework\Exception('null_password');
$output = $this->doLogin($user_id, $password, $keep_signed=='Y'?true:false);
if (!$output->toBool()) return $output;
@ -122,7 +122,7 @@ class memberController extends member
$document_srl = (int) (Context::get('document_srl') ?: Context::get('target_srl'));
if(!$document_srl)
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
$oDocumentModel = getModel('document');
@ -131,7 +131,7 @@ class memberController extends member
// Check document
if(!$oDocument->isAccessible())
{
return $this->setError('msg_is_secret');
throw new Rhymix\Framework\Exception('msg_is_secret');
}
$oModuleModel = getModel('module');
@ -143,19 +143,19 @@ class memberController extends member
// Check access to module of the document
if(!$grant->access)
{
return $this->setError('msg_not_permitted');
throw new Rhymix\Framework\Exceptions\NotPermitted;
}
// Check grant to module of the document
if(isset($grant->list) && isset($grant->view) && (!$grant->list || !$grant->view))
{
return $this->setError('msg_not_permitted');
throw new Rhymix\Framework\Exceptions\NotPermitted;
}
// Check consultation option
if(isset($grant->consultation_read) && $module_info->consultation == 'Y' && !$grant->consultation_read && !$oDocument->isGranted())
{
return $this->setError('msg_not_permitted');
throw new Rhymix\Framework\Exceptions\NotPermitted;
}
// Find default scrap folder
@ -187,7 +187,7 @@ class memberController extends member
$output = executeQuery('member.getScrapDocument', $args);
if($output->data->count)
{
return $this->setError('msg_alreay_scrapped');
throw new Rhymix\Framework\Exception('msg_alreay_scrapped');
}
// Insert
@ -206,11 +206,12 @@ class memberController extends member
function procMemberDeleteScrap()
{
// Check login information
if(!Context::get('is_logged')) return $this->setError('msg_not_logged');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\MustLogin;
$logged_info = Context::get('logged_info');
$document_srl = (int)Context::get('document_srl');
if(!$document_srl) return $this->setError('msg_invalid_request');
if(!$document_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
// Variables
$args = new stdClass;
$args->member_srl = $logged_info->member_srl;
@ -226,14 +227,14 @@ class memberController extends member
function procMemberMoveScrapFolder()
{
// Check login information
if(!Context::get('is_logged')) return $this->setError('msg_not_logged');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\MustLogin;
$logged_info = Context::get('logged_info');
$document_srl = (int)Context::get('document_srl');
$folder_srl = (int)Context::get('folder_srl');
if(!$document_srl || !$folder_srl)
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
// Check that the target folder exists and belongs to member
@ -243,7 +244,7 @@ class memberController extends member
$output = executeQueryArray('member.getScrapFolderList', $args);
if(!count($output->data))
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
// Move
@ -262,7 +263,7 @@ class memberController extends member
function procMemberInsertScrapFolder()
{
// Check login information
if(!Context::get('is_logged')) return $this->setError('msg_not_logged');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\MustLogin;
$logged_info = Context::get('logged_info');
// Get new folder name
@ -270,7 +271,7 @@ class memberController extends member
$folder_name = escape(trim(utf8_normalize_spaces($folder_name)));
if(!$folder_name)
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
// Check existing folder with same name
@ -280,7 +281,7 @@ class memberController extends member
$output = executeQueryArray('member.getScrapFolderList', $args);
if(count($output->data) || $folder_name === lang('default_folder'))
{
return $this->setError('msg_folder_alreay_exists');
throw new Rhymix\Framework\Exception('msg_folder_alreay_exists');
}
// Create folder
@ -301,7 +302,7 @@ class memberController extends member
function procMemberRenameScrapFolder()
{
// Check login information
if(!Context::get('is_logged')) return $this->setError('msg_not_logged');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\MustLogin;
$logged_info = Context::get('logged_info');
// Get new folder name
@ -310,7 +311,7 @@ class memberController extends member
$folder_name = escape(trim(utf8_normalize_spaces($folder_name)));
if(!$folder_srl || !$folder_name)
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
// Check that the original folder exists and belongs to member
@ -320,11 +321,11 @@ class memberController extends member
$output = executeQueryArray('member.getScrapFolderList', $args);
if(!count($output->data))
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
if(array_first($output->data)->name === '/DEFAULT/')
{
return $this->setError('msg_folder_is_default');
throw new Rhymix\Framework\Exception('msg_folder_is_default');
}
// Check existing folder with same name
@ -335,7 +336,7 @@ class memberController extends member
$output = executeQueryArray('member.getScrapFolderList', $args);
if(count($output->data) || $folder_name === lang('default_folder'))
{
return $this->setError('msg_folder_alreay_exists');
throw new Rhymix\Framework\Exception('msg_folder_alreay_exists');
}
// Rename folder
@ -353,14 +354,14 @@ class memberController extends member
function procMemberDeleteScrapFolder()
{
// Check login information
if(!Context::get('is_logged')) return $this->setError('msg_not_logged');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\MustLogin;
$logged_info = Context::get('logged_info');
// Get folder_srl to delete
$folder_srl = intval(Context::get('folder_srl'));
if(!$folder_srl)
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
// Check that the folder exists and belongs to member
@ -370,11 +371,11 @@ class memberController extends member
$output = executeQueryArray('member.getScrapFolderList', $args);
if(!count($output->data))
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
if(array_first($output->data)->name === '/DEFAULT/')
{
return $this->setError('msg_folder_is_default');
throw new Rhymix\Framework\Exception('msg_folder_is_default');
}
// Check that the folder is empty
@ -384,7 +385,7 @@ class memberController extends member
$output = executeQueryArray('member.getScrapDocumentList', $args);
if(count($output->data))
{
return $this->setError('msg_folder_not_empty');
throw new Rhymix\Framework\Exception('msg_folder_not_empty');
}
// Delete folder
@ -436,22 +437,22 @@ class memberController extends member
function procMemberDeleteSavedDocument()
{
// Check login information
if(!Context::get('is_logged')) return $this->setError('msg_not_logged');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\MustLogin;
$logged_info = Context::get('logged_info');
$document_srl = (int)Context::get('document_srl');
if(!$document_srl) return $this->setError('msg_invalid_request');
if(!$document_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
if ($oDocument->get('member_srl') != $logged_info->member_srl)
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
$configStatusList = $oDocumentModel->getStatusList();
if ($oDocument->get('status') != $configStatusList['temp'])
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
// Variables
@ -465,14 +466,14 @@ class memberController extends member
function procMemberDeleteAutologin()
{
// Check login information
if(!Context::get('is_logged')) return $this->setError('msg_not_logged');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\MustLogin;
$logged_info = Context::get('logged_info');
$autologin_id = intval(Context::get('autologin_id'));
$autologin_key = Context::get('autologin_key');
if (!$autologin_id || !$autologin_key)
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
$args = new stdClass;
@ -575,7 +576,11 @@ class memberController extends member
*/
function procMemberInsert()
{
if (Context::getRequestMethod () == "GET") return new BaseObject (-1, "msg_invalid_request");
if (Context::getRequestMethod() == 'GET')
{
throw new Rhymix\Framework\Exceptions\SecurityViolation;
}
$oMemberModel = &getModel ('member');
$config = $oMemberModel->getMemberConfig();
@ -583,7 +588,7 @@ class memberController extends member
$trigger_output = ModuleHandler::triggerCall ('member.procMemberInsert', 'before', $config);
if(!$trigger_output->toBool ()) return $trigger_output;
// Check if an administrator allows a membership
if($config->enable_join != 'Y') return $this->stop ('msg_signup_disabled');
if($config->enable_join != 'Y') throw new Rhymix\Framework\Exceptions\FeatureDisabled('msg_signup_disabled');
// Check if the user accept the license terms (only if terms exist)
$accept_agreement = Context::get('accept_agreement');
@ -591,7 +596,7 @@ class memberController extends member
{
if($agreement->type === 'required' && $accept_agreement !== 'Y' && $accept_agreement[$i] !== 'Y')
{
return $this->setError('msg_accept_agreement');
throw new Rhymix\Framework\Exception('msg_accept_agreement');
}
}
@ -646,7 +651,7 @@ class memberController extends member
if(!$oMemberModel->checkPasswordStrength($args->password, $config->password_strength))
{
$message = lang('about_password_strength');
return $this->setError($message[$config->password_strength]);
throw new Rhymix\Framework\Exception($message[$config->password_strength]);
}
// Remove some unnecessary variables from all the vars
@ -687,19 +692,19 @@ class memberController extends member
if(!$output->toBool()) return $output;
// insert ProfileImage, ImageName, ImageMark
$profile_image = $_FILES['profile_image'];
$profile_image = Context::get('profile_image');
if(is_uploaded_file($profile_image['tmp_name']))
{
$this->insertProfileImage($args->member_srl, $profile_image['tmp_name']);
}
$image_mark = $_FILES['image_mark'];
$image_mark = Context::get('image_mark');
if(is_uploaded_file($image_mark['tmp_name']))
{
$this->insertImageMark($args->member_srl, $image_mark['tmp_name']);
}
$image_name = $_FILES['image_name'];
$image_name = Context::get('image_name');
if(is_uploaded_file($image_name['tmp_name']))
{
$this->insertImageName($args->member_srl, $image_name['tmp_name']);
@ -779,19 +784,19 @@ class memberController extends member
{
if($_SESSION['rechecked_password_step'] != 'INPUT_PASSWORD')
{
return $this->stop('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
if(!Context::get('is_logged'))
{
return $this->stop('msg_not_logged');
throw new Rhymix\Framework\Exceptions\MustLogin;
}
$password = Context::get('password');
if(!$password)
{
return $this->stop('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
$oMemberModel = getModel('member');
@ -805,7 +810,7 @@ class memberController extends member
// Verify the current password
if(!$oMemberModel->isValidPassword($member_info->password, $password))
{
return $this->setError('invalid_password');
throw new Rhymix\Framework\Exception('invalid_password');
}
$_SESSION['rechecked_password_step'] = 'VALIDATE_PASSWORD';
@ -830,12 +835,12 @@ class memberController extends member
{
if(!Context::get('is_logged'))
{
return $this->stop('msg_not_logged');
throw new Rhymix\Framework\Exceptions\MustLogin;
}
if($_SESSION['rechecked_password_step'] != 'INPUT_DATA')
{
return $this->stop('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
unset($_SESSION['rechecked_password_step']);
@ -922,19 +927,19 @@ class memberController extends member
$output = $this->updateMember($args);
if(!$output->toBool()) return $output;
$profile_image = $_FILES['profile_image'];
$profile_image = Context::get('profile_image');
if(is_uploaded_file($profile_image['tmp_name']))
{
$this->insertProfileImage($args->member_srl, $profile_image['tmp_name']);
}
$image_mark = $_FILES['image_mark'];
$image_mark = Context::get('image_mark');
if(is_uploaded_file($image_mark['tmp_name']))
{
$this->insertImageMark($args->member_srl, $image_mark['tmp_name']);
}
$image_name = $_FILES['image_name'];
$image_name = Context::get('image_name');
if(is_uploaded_file($image_name['tmp_name']))
{
$this->insertImageName($args->member_srl, $image_name['tmp_name']);
@ -969,7 +974,7 @@ class memberController extends member
*/
function procMemberModifyPassword()
{
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\MustLogin;
// Extract the necessary information in advance
$current_password = trim(Context::get('current_password'));
$password = trim(Context::get('password1'));
@ -983,10 +988,10 @@ class memberController extends member
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList);
// Verify the cuttent password
if(!$oMemberModel->isValidPassword($member_info->password, $current_password, $member_srl)) return $this->setError('invalid_password');
if(!$oMemberModel->isValidPassword($member_info->password, $current_password, $member_srl)) throw new Rhymix\Framework\Exception('invalid_password');
// Check if a new password is as same as the previous password
if($current_password == $password) return $this->setError('invalid_new_password');
if($current_password == $password) throw new Rhymix\Framework\Exception('invalid_new_password');
// Execute insert or update depending on the value of member_srl
$args = new stdClass;
@ -1017,7 +1022,7 @@ class memberController extends member
*/
function procMemberLeave()
{
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\MustLogin;
// Extract the necessary information in advance
$password = trim(Context::get('password'));
// Get information of logged-in user
@ -1029,7 +1034,7 @@ class memberController extends member
$columnList = array('member_srl', 'password');
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList);
// Verify the cuttent password
if(!$oMemberModel->isValidPassword($member_info->password, $password)) return $this->setError('invalid_password');
if(!$oMemberModel->isValidPassword($member_info->password, $password)) throw new Rhymix\Framework\Exception('invalid_password');
$output = $this->deleteMember($member_srl);
if(!$output->toBool()) return $output;
@ -1051,18 +1056,18 @@ class memberController extends member
function procMemberInsertProfileImage()
{
// Check if the file is successfully uploaded
$file = $_FILES['profile_image'];
if(!is_uploaded_file($file['tmp_name'])) return $this->stop('msg_not_uploaded_profile_image');
$file = Context::get('profile_image');
if(!is_uploaded_file($file['tmp_name'])) throw new Rhymix\Framework\Exception('msg_not_uploaded_profile_image');
// Ignore if member_srl is invalid or doesn't exist.
$member_srl = Context::get('member_srl');
if(!$member_srl) return $this->stop('msg_not_uploaded_profile_image');
if(!$member_srl) throw new Rhymix\Framework\Exception('msg_not_uploaded_profile_image');
$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');
if($logged_info->is_admin != 'Y' && $logged_info->member_srl != $member_srl) throw new Rhymix\Framework\Exception('msg_not_uploaded_profile_image');
// Return if member module is set not to use an image name or the user is not an administrator ;
$oMemberModel = getModel('member');
$config = $oMemberModel->getMemberConfig();
if($logged_info->is_admin != 'Y' && $config->profile_image != 'Y') return $this->stop('msg_not_uploaded_profile_image');
if($logged_info->is_admin != 'Y' && $config->profile_image != 'Y') throw new Rhymix\Framework\Exception('msg_not_uploaded_profile_image');
$output = $this->insertProfileImage($member_srl, $file['tmp_name']);
if(!$output->toBool()) return $output;
@ -1099,7 +1104,7 @@ class memberController extends member
elseif(IMAGETYPE_GIF == $type) $ext = 'gif';
else
{
return $this->stop('msg_not_uploaded_profile_image');
throw new Rhymix\Framework\Exception('msg_not_uploaded_profile_image');
}
$target_path = sprintf('files/member_extra_info/profile_image/%s', getNumberingPath($member_srl));
@ -1118,7 +1123,7 @@ class memberController extends member
if($max_filesize && $filesize > ($max_filesize * 1024))
{
FileHandler::removeFile($temp_filename);
return $this->stop(implode(' ' , array(
throw new Rhymix\Framework\Exception(implode(' ' , array(
Context::getLang('msg_not_uploaded_profile_image'),
Context::getLang('msg_exceeds_limit_size')
)));
@ -1134,7 +1139,7 @@ class memberController extends member
$filesize = filesize($target_file);
if($max_filesize && $filesize > ($max_filesize * 1024))
{
return $this->stop(implode(' ' , array(
throw new Rhymix\Framework\Exception(implode(' ' , array(
Context::getLang('msg_not_uploaded_profile_image'),
Context::getLang('msg_exceeds_limit_size')
)));
@ -1156,18 +1161,18 @@ class memberController extends member
function procMemberInsertImageName()
{
// Check if the file is successfully uploaded
$file = $_FILES['image_name'];
if(!is_uploaded_file($file['tmp_name'])) return $this->stop('msg_not_uploaded_image_name');
$file = Context::get('image_name');
if(!is_uploaded_file($file['tmp_name'])) throw new Rhymix\Framework\Exception('msg_not_uploaded_image_name');
// Ignore if member_srl is invalid or doesn't exist.
$member_srl = Context::get('member_srl');
if(!$member_srl) return $this->stop('msg_not_uploaded_image_name');
if(!$member_srl) throw new Rhymix\Framework\Exception('msg_not_uploaded_image_name');
$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');
if($logged_info->is_admin != 'Y' && $logged_info->member_srl != $member_srl) throw new Rhymix\Framework\Exception('msg_not_uploaded_image_name');
// Return if member module is set not to use an image name or the user is not an administrator ;
$oMemberModel = getModel('member');
$config = $oMemberModel->getMemberConfig();
if($logged_info->is_admin != 'Y' && $config->image_name != 'Y') return $this->stop('msg_not_uploaded_image_name');
if($logged_info->is_admin != 'Y' && $config->image_name != 'Y') throw new Rhymix\Framework\Exception('msg_not_uploaded_image_name');
$output = $this->insertImageName($member_srl, $file['tmp_name']);
if(!$output->toBool()) return $output;
@ -1218,7 +1223,7 @@ class memberController extends member
if($max_filesize && $filesize > ($max_filesize * 1024))
{
FileHandler::removeFile($temp_filename);
return $this->stop(implode(' ' , array(
throw new Rhymix\Framework\Exception(implode(' ' , array(
Context::getLang('msg_not_uploaded_image_name'),
Context::getLang('msg_exceeds_limit_size')
)));
@ -1234,7 +1239,7 @@ class memberController extends member
$filesize = filesize($target_file);
if($max_filesize && $filesize > ($max_filesize * 1024))
{
return $this->stop(implode(' ' , array(
throw new Rhymix\Framework\Exception(implode(' ' , array(
Context::getLang('msg_not_uploaded_image_name'),
Context::getLang('msg_exceeds_limit_size')
)));
@ -1307,18 +1312,18 @@ class memberController extends member
function procMemberInsertImageMark()
{
// Check if the file is successfully uploaded
$file = $_FILES['image_mark'];
if(!is_uploaded_file($file['tmp_name'])) return $this->stop('msg_not_uploaded_image_mark');
$file = Context::get('image_mark');
if(!is_uploaded_file($file['tmp_name'])) throw new Rhymix\Framework\Exception('msg_not_uploaded_image_mark');
// Ignore if member_srl is invalid or doesn't exist.
$member_srl = Context::get('member_srl');
if(!$member_srl) return $this->stop('msg_not_uploaded_image_mark');
if(!$member_srl) throw new Rhymix\Framework\Exception('msg_not_uploaded_image_mark');
$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');
if($logged_info->is_admin != 'Y' && $logged_info->member_srl != $member_srl) throw new Rhymix\Framework\Exception('msg_not_uploaded_image_mark');
// Membership in the images mark the module using the ban was set by an administrator or return;
$oMemberModel = getModel('member');
$config = $oMemberModel->getMemberConfig();
if($logged_info->is_admin != 'Y' && $config->image_mark != 'Y') return $this->stop('msg_not_uploaded_image_mark');
if($logged_info->is_admin != 'Y' && $config->image_mark != 'Y') throw new Rhymix\Framework\Exception('msg_not_uploaded_image_mark');
$this->insertImageMark($member_srl, $file['tmp_name']);
if(!$output->toBool()) return $output;
@ -1365,7 +1370,7 @@ class memberController extends member
if($max_filesize && $filesize > ($max_filesize * 1024))
{
FileHandler::removeFile($temp_filename);
return $this->stop(implode(' ' , array(
throw new Rhymix\Framework\Exception(implode(' ' , array(
Context::getLang('msg_not_uploaded_group_image_mark'),
Context::getLang('msg_exceeds_limit_size')
)));
@ -1381,7 +1386,7 @@ class memberController extends member
if($max_filesize && $filesize > ($max_filesize * 1024))
{
FileHandler::removeFile($target_file);
return $this->stop(implode(' ' , array(
throw new Rhymix\Framework\Exception(implode(' ' , array(
Context::getLang('msg_not_uploaded_group_image_mark'),
Context::getLang('msg_exceeds_limit_size')
)));
@ -1428,14 +1433,14 @@ class memberController extends member
function procMemberFindAccount()
{
$email_address = Context::get('email_address');
if(!$email_address) return $this->setError('msg_invalid_request');
if(!$email_address) throw new Rhymix\Framework\Exceptions\InvalidRequest;
$oMemberModel = getModel('member');
$oModuleModel = getModel('module');
// Check if a member having the same email address exists
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($email_address);
if(!$member_srl) return $this->setError('msg_email_not_exists');
if(!$member_srl) throw new Rhymix\Framework\Exception('msg_email_not_exists');
// Get information of the member
$columnList = array('denied', 'member_srl', 'user_id', 'user_name', 'email_address', 'nick_name');
@ -1447,7 +1452,7 @@ class memberController extends member
$chk_args = new stdClass;
$chk_args->member_srl = $member_info->member_srl;
$output = executeQuery('member.chkAuthMail', $chk_args);
if($output->toBool() && $output->data->count != '0') return $this->setError('msg_user_not_confirmed');
if($output->toBool() && $output->data->count != '0') throw new Rhymix\Framework\Exception('msg_user_not_confirmed');
}
// Insert data into the authentication DB
@ -1528,7 +1533,7 @@ class memberController extends member
*/
function procMemberFindAccountByQuestion()
{
return $this->setError('msg_question_not_allowed');
throw new Rhymix\Framework\Exception('msg_question_not_allowed');
}
/**
@ -1547,7 +1552,7 @@ class memberController extends member
if(!$member_srl || !$auth_key)
{
return $this->stop('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
// Call a trigger (before)
@ -1557,7 +1562,7 @@ class memberController extends member
$trigger_output = ModuleHandler::triggerCall('member.procMemberAuthAccount', 'before', $trigger_obj);
if(!$trigger_output->toBool())
{
return $this->stop($trigger_output->getMessage());
return $trigger_output;
}
// Test logs for finding password by user_id and authkey
@ -1569,13 +1574,13 @@ class memberController extends member
if(!$output->toBool() || $output->data->auth_key !== $auth_key)
{
executeQuery('member.deleteAuthMail', $args);
return $this->stop('msg_invalid_auth_key');
throw new Rhymix\Framework\Exception('msg_invalid_auth_key');
}
if(ztime($output->data->regdate) < time() - (86400 * 3))
{
executeQuery('member.deleteAuthMail', $args);
return $this->stop('msg_expired_auth_key');
throw new Rhymix\Framework\Exception('msg_expired_auth_key');
}
// Back up the value of $output->data->is_register
@ -1594,7 +1599,7 @@ class memberController extends member
$output = executeQuery('member.updateMemberPassword', $args);
if(!$output->toBool())
{
return $this->stop($output->getMessage());
return $output;
}
// Remove all values having the member_srl from authentication table
@ -1621,14 +1626,14 @@ class memberController extends member
{
// Get an email_address
$email_address = Context::get('email_address');
if(!$email_address) return $this->setError('msg_invalid_request');
if(!$email_address) throw new Rhymix\Framework\Exceptions\InvalidRequest;
// Log test by using email_address
$oMemberModel = getModel('member');
$args = new stdClass;
$args->email_address = $email_address;
$memberSrl = $oMemberModel->getMemberSrlByEmailAddress($email_address);
if(!$memberSrl) return $this->setError('msg_not_exists_member');
if(!$memberSrl) throw new Rhymix\Framework\Exception('msg_not_exists_member');
$columnList = array('member_srl', 'user_id', 'user_name', 'nick_name', 'email_address');
$member_info = $oMemberModel->getMemberInfoByMemberSrl($memberSrl, 0, $columnList);
@ -1642,12 +1647,12 @@ class memberController extends member
$chk_args = new stdClass;
$chk_args->member_srl = $member_info->member_srl;
$output = executeQuery('member.chkAuthMail', $chk_args);
if($output->toBool() && $output->data->count == '0') return $this->setError('msg_invalid_request');
if($output->toBool() && $output->data->count == '0') throw new Rhymix\Framework\Exceptions\InvalidRequest;
$auth_args = new stdClass;
$auth_args->member_srl = $member_info->member_srl;
$output = executeQueryArray('member.getAuthMailInfo', $auth_args);
if(!$output->data || !$output->data[0]->auth_key) return $this->setError('msg_invalid_request');
if(!$output->data || !$output->data[0]->auth_key) throw new Rhymix\Framework\Exceptions\InvalidRequest;
$auth_info = $output->data[0];
// Update the regdate of authmail entry
@ -1711,21 +1716,37 @@ class memberController extends member
if(!$memberInfo)
{
return $this->stop('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
$newEmail = Context::get('email_address');
if(!$newEmail)
{
return $this->stop('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
$oMemberModel = getModel('member');
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($newEmail);
if($member_srl)
{
return $this->setError('msg_exists_email_address');
throw new Rhymix\Framework\Exception('msg_exists_email_address');
}
// Check managed Email Host
if($oMemberModel->isDeniedEmailHost($newEmail))
{
$config = $oMemberModel->getMemberConfig();
$emailhost_check = $config->emailhost_check;
$managed_email_host = lang('managed_email_host');
$email_hosts = $oMemberModel->getManagedEmailHosts();
foreach ($email_hosts as $host)
{
$hosts[] = $host->email_host;
}
$message = sprintf($managed_email_host[$emailhost_check], implode(', ',$hosts), 'id@' . implode(', id@', $hosts));
throw new Rhymix\Framework\Exception($message);
}
// remove all key by member_srl
@ -1745,7 +1766,7 @@ class memberController extends member
$output = executeQuery('member.updateMemberEmailAddress', $args);
if(!$output->toBool())
{
return $this->stop($output->getMessage());
return $output;
}
$this->_clearMemberCache($args->member_srl);
@ -1840,7 +1861,7 @@ class memberController extends member
{
$site_module_info = Context::get('site_module_info');
$logged_info = Context::get('logged_info');
if(!$site_module_info->site_srl || !Context::get('is_logged') || count($logged_info->group_srl_list) ) return $this->setError('msg_invalid_request');
if(!$site_module_info->site_srl || !Context::get('is_logged') || count($logged_info->group_srl_list) ) throw new Rhymix\Framework\Exceptions\InvalidRequest;
$oMemberModel = getModel('member');
$columnList = array('site_srl', 'group_srl', 'title');
@ -1859,7 +1880,7 @@ class memberController extends member
{
$site_module_info = Context::get('site_module_info');
$logged_info = Context::get('logged_info');
if(!$site_module_info->site_srl || !Context::get('is_logged') || count($logged_info->group_srl_list) ) return $this->setError('msg_invalid_request');
if(!$site_module_info->site_srl || !Context::get('is_logged') || count($logged_info->group_srl_list) ) throw new Rhymix\Framework\Exceptions\InvalidRequest;
$args = new stdClass;
$args->site_srl= $site_module_info->site_srl;
@ -2396,11 +2417,11 @@ class memberController extends member
list($args->email_id, $args->email_host) = explode('@', $args->email_address);
// Sanitize user ID, username, nickname, homepage, blog
$args->user_id = htmlspecialchars($args->user_id, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->user_name = htmlspecialchars($args->user_name, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->nick_name = htmlspecialchars($args->nick_name, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->homepage = htmlspecialchars($args->homepage, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->blog = htmlspecialchars($args->blog, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->user_id = escape($args->user_id, false);
$args->user_name = escape($args->user_name, false);
$args->nick_name = escape($args->nick_name, false);
$args->homepage = escape($args->homepage, false);
$args->blog = escape($args->blog, false);
if($args->homepage && !preg_match("/^[a-z]+:\/\//i",$args->homepage)) $args->homepage = 'http://'.$args->homepage;
if($args->blog && !preg_match("/^[a-z]+:\/\//i",$args->blog)) $args->blog = 'http://'.$args->blog;
@ -2624,16 +2645,16 @@ class memberController extends member
unset($args->denied);
if($logged_info->member_srl != $args->member_srl && $is_admin == false)
{
return $this->stop('msg_invalid_request');
return new BaseObject(-1, 'msg_invalid_request');
}
}
// Sanitize user ID, username, nickname, homepage, blog
if($args->user_id) $args->user_id = htmlspecialchars($args->user_id, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->user_name = htmlspecialchars($args->user_name, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->nick_name = htmlspecialchars($args->nick_name, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->homepage = htmlspecialchars($args->homepage, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->blog = htmlspecialchars($args->blog, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
if($args->user_id) $args->user_id = escape($args->user_id, false);
$args->user_name = escape($args->user_name, false);
$args->nick_name = escape($args->nick_name, false);
$args->homepage = escape($args->homepage, false);
$args->blog = escape($args->blog, false);
if($args->homepage && !preg_match("/^[a-z]+:\/\//is",$args->homepage)) $args->homepage = 'http://'.$args->homepage;
if($args->blog && !preg_match("/^[a-z]+:\/\//is",$args->blog)) $args->blog = 'http://'.$args->blog;
@ -2696,7 +2717,7 @@ class memberController extends member
}
// Check managed Email Host
if($logged_info->is_admin !== 'Y' && $oMemberModel->isDeniedEmailHost($args->email_address))
if($logged_info->is_admin !== 'Y' && $logged_info->email_address !== $args->email_address && $oMemberModel->isDeniedEmailHost($args->email_address))
{
$emailhost_check = $config->emailhost_check;
@ -3041,12 +3062,12 @@ class memberController extends member
function procMemberModifyEmailAddress()
{
if(!Context::get('is_logged')) return $this->setError('msg_not_logged');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\MustLogin;
$member_info = Context::get('logged_info');
$newEmail = Context::get('email_address');
if(!$newEmail) return $this->setError('msg_invalid_request');
if(!$newEmail) throw new Rhymix\Framework\Exceptions\InvalidRequest;
$oMemberModel = getModel('member');
// Check managed Email Host
@ -3062,16 +3083,16 @@ class memberController extends member
$hosts[] = $host->email_host;
}
$message = sprintf($managed_email_host[$emailhost_check],implode(', ',$hosts),'id@'.implode(', id@',$hosts));
return $this->setError($message);
throw new Rhymix\Framework\Exception($message);
}
// Check if the e-mail address is already registered
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($newEmail);
if($member_srl) return $this->setError('msg_exists_email_address');
if($member_srl) throw new Rhymix\Framework\Exception('msg_exists_email_address');
if($_SESSION['rechecked_password_step'] != 'INPUT_DATA')
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
unset($_SESSION['rechecked_password_step']);
@ -3129,7 +3150,7 @@ class memberController extends member
{
$member_srl = Context::get('member_srl');
$auth_key = Context::get('auth_key');
if(!$member_srl || !$auth_key) return $this->stop('msg_invalid_request');
if(!$member_srl || !$auth_key) throw new Rhymix\Framework\Exceptions\InvalidRequest;
// Test logs for finding password by user_id and authkey
$args = new stdClass;
@ -3139,7 +3160,7 @@ class memberController extends member
if(!$output->toBool() || $output->data->auth_key != $auth_key)
{
if(strlen($output->data->auth_key) !== strlen($auth_key)) executeQuery('member.deleteAuthChangeEmailAddress', $args);
return $this->stop('msg_invalid_modify_email_auth_key');
throw new Rhymix\Framework\Exception('msg_invalid_modify_email_auth_key');
}
$newEmail = $output->data->user_id;
@ -3147,7 +3168,7 @@ class memberController extends member
list($args->email_id, $args->email_host) = explode('@', $newEmail);
$output = executeQuery('member.updateMemberEmailAddress', $args);
if(!$output->toBool()) return $this->stop($output->getMessage());
if(!$output->toBool()) return $output;
// Remove all values having the member_srl and new_password equal to 'XE_change_emaill_address' from authentication table
executeQuery('member.deleteAuthChangeEmailAddress',$args);
@ -3227,7 +3248,7 @@ class memberController extends member
**/
function procMemberSpammerManage()
{
if(!Context::get('is_logged')) return $this->setError('msg_not_permitted');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\NotPermitted;
$logged_info = Context::get('logged_info');
$member_srl = Context::get('member_srl');
@ -3244,7 +3265,7 @@ class memberController extends member
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl, $columnList);
$grant = $oModuleModel->getGrant($module_info, $logged_info);
if(!$grant->manager) return $this->setError('msg_not_permitted');
if(!$grant->manager) throw new Rhymix\Framework\Exceptions\NotPermitted;
$proc_msg = "";

View file

@ -178,7 +178,7 @@ class memberModel extends member
$oCommunicationModel = getModel('communication');
if($logged_info->is_admin == 'Y' || $oCommunicationModel->isFriend($member_info->member_srl))
{
$url = 'mailto:'.htmlspecialchars($member_info->email_address, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$url = 'mailto:'.escape($member_info->email_address);
$oMemberController->addMemberPopupMenu($url,'cmd_send_email',$icon_path);
}
}
@ -210,13 +210,13 @@ class memberModel extends member
// View homepage info
if($member_info->homepage && $homepage_is_public)
{
$oMemberController->addMemberPopupMenu(htmlspecialchars($member_info->homepage, ENT_COMPAT | ENT_HTML401, 'UTF-8', false), 'homepage', '', 'blank');
$oMemberController->addMemberPopupMenu(escape($member_info->homepage, false), 'homepage', '', 'blank');
}
// View blog info
if($member_info->blog && $blog_is_public)
{
$oMemberController->addMemberPopupMenu(htmlspecialchars($member_info->blog, ENT_COMPAT | ENT_HTML401, 'UTF-8', false), 'blog', '', 'blank');
$oMemberController->addMemberPopupMenu(escape($member_info->blog, false), 'blog', '', 'blank');
}
// Call a trigger (after)
@ -330,7 +330,10 @@ class memberModel extends member
}
$member_info = $this->arrangeMemberInfo($output->data, $site_srl);
Rhymix\Framework\Cache::set($cache_key, $member_info);
if($output->toBool())
{
Rhymix\Framework\Cache::set($cache_key, $member_info);
}
}
}
@ -364,8 +367,14 @@ class memberModel extends member
{
foreach($extra_vars as $key => $val)
{
if(!is_array($val) && strpos($val, '|@|') !== FALSE) $val = explode('|@|', $val);
if(!$info->{$key}) $info->{$key} = $val;
if(!is_array($val) && !is_object($val) && strpos($val, '|@|') !== FALSE)
{
$val = explode('|@|', $val);
}
if(!isset($info->{$key}))
{
$info->{$key} = $val;
}
}
}
@ -492,7 +501,10 @@ class memberModel extends member
$group_list[$default_group->group_srl] = $default_group->title;
}
//insert in cache
Rhymix\Framework\Cache::set($cache_key, $group_list, 0, true);
if ($output->toBool())
{
Rhymix\Framework\Cache::set($cache_key, $group_list, 0, true);
}
}
if(!$group_list) return array();
@ -539,7 +551,10 @@ class memberModel extends member
$args->site_srl = $site_srl;
$output = executeQuery('member.getDefaultGroup', $args);
$default_group = $output->data;
Rhymix\Framework\Cache::set($cache_key, $default_group, 0, true);
if($output->toBool())
{
Rhymix\Framework\Cache::set($cache_key, $default_group, 0, true);
}
}
return $default_group;
@ -590,7 +605,10 @@ class memberModel extends member
$args->order_type = 'asc';
$output = executeQueryArray('member.getGroups', $args);
$group_list = $output->data;
Rhymix\Framework\Cache::set("member:member_groups:site:$site_srl", $group_list, 0, true);
if($output->toBool())
{
Rhymix\Framework\Cache::set("member:member_groups:site:$site_srl", $group_list, 0, true);
}
}
if(!$group_list)

View file

@ -63,7 +63,7 @@ class memberView extends member
$oMemberModel = getModel('member');
$logged_info = Context::get('logged_info');
// Don't display member info to non-logged user
if(!$logged_info->member_srl) return $this->stop('msg_not_permitted');
if(!$logged_info->member_srl) throw new Rhymix\Framework\Exceptions\MustLogin;
$member_srl = Context::get('member_srl');
if(!$member_srl && Context::get('is_logged'))
@ -198,12 +198,12 @@ class memberView extends member
$oMemberModel = getModel('member');
// Get the member information if logged-in
if($oMemberModel->isLogged()) return $this->stop('msg_already_logged');
if($oMemberModel->isLogged()) throw new Rhymix\Framework\Exception('msg_already_logged');
// call a trigger (before)
$trigger_output = ModuleHandler::triggerCall('member.dispMemberSignUpForm', 'before', $member_config);
if(!$trigger_output->toBool()) return $trigger_output;
// Error appears if the member is not allowed to join
if($member_config->enable_join != 'Y') return $this->stop('msg_signup_disabled');
if($member_config->enable_join != 'Y') throw new Rhymix\Framework\Exceptions\FeatureDisabled('msg_signup_disabled');
$formTags = getAdminView('member')->_getMemberInputTag();
Context::set('formTags', $formTags);
@ -251,7 +251,7 @@ class memberView extends member
$oMemberModel = getModel('member');
if(!$oMemberModel->isLogged() || empty($logged_info))
{
return $this->stop('msg_not_logged');
throw new Rhymix\Framework\Exceptions\MustLogin;
}
$_SESSION['rechecked_password_step'] = 'INPUT_PASSWORD';
@ -294,7 +294,7 @@ class memberView extends member
$oMemberModel = getModel('member');
// A message appears if the user is not logged-in
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
if(!$oMemberModel->isLogged()) throw new Rhymix\Framework\Exceptions\MustLogin;
$logged_info = Context::get('logged_info');
$member_srl = $logged_info->member_srl;
@ -349,10 +349,15 @@ class memberView extends member
*/
function dispMemberOwnDocument()
{
if ($this->member_config->features['my_documents'] === false)
{
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
}
// A message appears if the user is not logged-in
if(!Context::get('is_logged'))
{
return $this->setError('msg_not_logged');
throw new Rhymix\Framework\Exceptions\MustLogin;
}
$logged_info = Context::get('logged_info');
@ -378,9 +383,14 @@ class memberView extends member
*/
function dispMemberOwnComment()
{
if ($this->member_config->features['my_comments'] === false)
{
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
}
$oMemberModel = getModel('member');
// A message appears if the user is not logged-in
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
if(!$oMemberModel->isLogged()) throw new Rhymix\Framework\Exceptions\MustLogin;
$logged_info = Context::get('logged_info');
$member_srl = $logged_info->member_srl;
@ -405,9 +415,14 @@ class memberView extends member
*/
function dispMemberScrappedDocument()
{
if ($this->member_config->features['scrapped_documents'] === false)
{
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
}
$oMemberModel = getModel('member');
// A message appears if the user is not logged-in
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
if(!$oMemberModel->isLogged()) throw new Rhymix\Framework\Exceptions\MustLogin;
$logged_info = Context::get('logged_info');
@ -432,7 +447,7 @@ class memberView extends member
$folder_srl = (int)Context::get('folder_srl');
if($folder_srl && !array_filter($folders, function($folder) use($folder_srl) { return $folder->folder_srl == $folder_srl; }))
{
return $this->setError('msg_invalid_request');
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
if(!$folder_srl && count($folders))
{
@ -476,9 +491,14 @@ class memberView extends member
*/
function dispMemberSavedDocument()
{
if ($this->member_config->features['saved_documents'] === false)
{
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
}
$oMemberModel = getModel('member');
// A message appears if the user is not logged-in
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
if(!$oMemberModel->isLogged()) throw new Rhymix\Framework\Exceptions\MustLogin;
// Get the saved document(module_srl is set to member_srl instead)
$logged_info = Context::get('logged_info');
$args = new stdClass();
@ -502,10 +522,15 @@ class memberView extends member
*/
function dispMemberActiveLogins()
{
if ($this->member_config->features['active_logins'] === false)
{
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
}
$logged_info = Context::get('logged_info');
if (!$logged_info->member_srl)
{
return $this->stop('msg_not_logged');
throw new Rhymix\Framework\Exceptions\MustLogin;
}
$args = new stdClass();
@ -558,7 +583,7 @@ class memberView extends member
{
$oMemberModel = getModel('member');
// A message appears if the user is not logged-in
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
if(!$oMemberModel->isLogged()) throw new Rhymix\Framework\Exceptions\MustLogin;
$memberConfig = $this->member_config;
@ -590,7 +615,7 @@ class memberView extends member
{
$oMemberModel = getModel('member');
// A message appears if the user is not logged-in
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
if(!$oMemberModel->isLogged()) throw new Rhymix\Framework\Exceptions\MustLogin;
$memberConfig = $this->member_config;
@ -643,7 +668,10 @@ class memberView extends member
*/
function dispMemberFindAccount()
{
if(Context::get('is_logged')) return $this->stop('already_logged');
if(Context::get('is_logged'))
{
throw new Rhymix\Framework\Exception('already_logged');
}
$config = $this->member_config;
@ -663,7 +691,7 @@ class memberView extends member
if(Context::get('is_logged'))
{
return $this->stop('already_logged');
throw new Rhymix\Framework\Exception('already_logged');
}
if($authMemberSrl)
@ -740,7 +768,7 @@ class memberView extends member
**/
function dispMemberSpammer()
{
if(!Context::get('is_logged')) return $this->setError('msg_not_permitted');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\NotPermitted;
$member_srl = Context::get('member_srl');
$module_srl = Context::get('module_srl');
@ -751,7 +779,7 @@ class memberView extends member
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl, $columnList);
$grant = $oModuleModel->getGrant($module_info, Context::get('logged_info'));
if(!$grant->manager) return $this->setError('msg_not_permitted');
if(!$grant->manager) throw new Rhymix\Framework\Exceptions\NotPermitted;
$oMemberModel = getModel('member');
@ -773,6 +801,11 @@ class memberView extends member
*/
function dispMemberModifyNicknameLog()
{
if ($this->member_config->features['nickname_log'] === false || $this->member_config->update_nickname_log != 'Y')
{
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
}
$member_srl = Context::get('member_srl');
$logged_info = Context::get('logged_info');
if(!$member_srl)
@ -783,7 +816,7 @@ class memberView extends member
{
if($logged_info->is_admin != 'Y')
{
return $this->setError('msg_not_permitted');
throw new Rhymix\Framework\Exceptions\NotPermitted;
}
}

View file

@ -1,16 +1,22 @@
<query id="getMemberListWithinGroup" action="select">
<tables>
<table name="member" alias="member" />
<table name="member_group_member" alias="member_group" />
<table name="member" />
</tables>
<columns>
<column name="member.*" />
<column name="site_srl" />
<column name="group_srl" />
</columns>
<conditions>
<condition operation="in" column="member_group.group_srl" var="selected_group_srl" notnull="notnull" />
<condition operation="equal" column="member.member_srl" var="member_group.member_srl" pipe="and" notnull="notnull" />
<query operation="in" column="member.member_srl" alias="mgm">
<tables>
<table name="member_group_member" />
</tables>
<columns>
<column name="member_group_member.member_srl" />
</columns>
<conditions>
<condition operation="in" column="member_group_member.group_srl" var="selected_group_srl" notnull="notnull" />
</conditions>
</query>
<group pipe="and">
<condition operation="equal" column="member.is_admin" var="is_admin" />
<condition operation="equal" column="member.denied" var="is_denied" pipe="and" />
@ -32,9 +38,6 @@
<condition operation="less" column="member.last_login" var="s_last_login_less" pipe="or" />
</group>
</conditions>
<groups>
<group column="member.member_srl" />
</groups>
<navigation>
<index var="sort_index" default="member.list_order" order="sort_order" />
<list_count var="list_count" default="20" />

View file

@ -3,7 +3,7 @@
<customrules>
</customrules>
<fields>
<field name="user_id" required="true" length="3:20" />
<field name="user_id" required="true" length="2:20" />
<field name="user_name" required="true" length="2:40" />
<field name="nick_name" required="true" length="2:40" />
<field name="email_address" required="true" length="1:200" rule="email" />

View file

@ -21,10 +21,6 @@
<!--@if($oDocument->getCommentCount())-->
[{$oDocument->getCommentCount()}]
<!--@end-->
<!--@if($oDocument->getTrackbackCount())-->
[{$oDocument->getTrackbackCount()}]
<!--@end-->
</td>
<td>{$oDocument->getRegdate("Y-m-d")}</td>
<td>{$oDocument->get('readed_count')}</td>

View file

@ -8,7 +8,7 @@
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/skins'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form ruleset="@login" action="{getUrl('', 'act', 'procMemberLogin')}" method="post" id="fo_member_login">
<form ruleset="@login" action="./" method="post" id="fo_member_login">
<input type="hidden" name="success_return_url" value="{$referer_url}" />
<input type="hidden" name="act" value="procMemberLogin" />
<input type="hidden" name="xe_validator_id" value="modules/member/skins" />

View file

@ -30,7 +30,7 @@
<label for="{$formTag->name}" class="control-label">{$formTag->title}</label>
<div class="controls" cond="$formTag->name != 'signature'">{$formTag->inputTag}</div>
<div class="controls" cond="$formTag->name =='signature'">
{$editor}
{$editor|noescape}
<style scoped>
.xpress-editor>#smart_content,
.xpress-editor>#smart_content>.tool{clear:none}

View file

@ -59,7 +59,7 @@
</div>
<div class="controls" cond="$formTag->name == 'signature'">
<input type="hidden" name="signature" value="" />
{$editor}
{$editor|noescape}
<style scoped>
.xpress-editor>#smart_content,
.xpress-editor>#smart_content>.tool{clear:none}

View file

@ -5,7 +5,7 @@
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/skins'" class="rx_member-notice {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form ruleset="@login" action="{getUrl('', 'act', 'procMemberLogin')}" method="post" id="fo_member_login">
<form ruleset="@login" action="./" method="post" id="fo_member_login">
<input type="hidden" name="success_return_url" value="{$referer_url}" />
<input type="hidden" name="act" value="procMemberLogin" />
<input type="hidden" name="xe_validator_id" value="modules/member/skins" />

View file

@ -25,7 +25,7 @@
<block loop="$formTags=>$formTag">
<label for="{$formTag->name}" class="control-label">{trim(str_replace('*','',strip_tags($formTag->title)))}<!--@if(strpos($formTag->title,'<em style="color:red">*</em>') !== false)--><sup style="color:red">*</sup><!--@endif--></label>
<block cond="$formTag->name != 'signature'">{$formTag->inputTag}</block>
<block cond="$formTag->name =='signature'">{$editor}</block>
<block cond="$formTag->name =='signature'">{$editor|noescape}</block>
</block>
<label class="control-label">{$lang->allow_mailing}</label>
<div class="controls">

View file

@ -53,7 +53,7 @@
</block>
<block cond="$formTag->name == 'signature'">
<input type="hidden" name="signature" value="" />
{$editor}
{$editor|noescape}
</block>
</block>
<div class="control-label">{$lang->allow_mailing}</div>

View file

@ -6,7 +6,7 @@
<input type="hidden" name="success_return_url" value="{getUrl('', 'module', 'admin', 'act', $act)}" />
<input type="hidden" name="xe_validator_id" value="modules/member/tpl/1" />
<div class="x_control-group">
<label class="x_control-label" for="layout">{$lang->layout} <a data-admin-toggle="#help_menuName" class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_layout" target="_blank">{$lang->help}</a></label>
<label class="x_control-label" for="layout">{$lang->layout}</label>
<div class="x_controls">
<select id="layout" name="layout_srl">
<option value="0">{$lang->notuse}</option>
@ -15,7 +15,7 @@
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="skin">{$lang->skin} <a data-admin-toggle="#help_menuName" class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_skin" target="_blank">{$lang->help}</a></label>
<label class="x_control-label" for="skin">{$lang->skin}</label>
<div class="x_controls">
<select id="skin" name="skin" onchange="doGetSkinColorset(this.options[this.selectedIndex].value)">
<option loop="$skin_list=>$key,$val" value="{$key}" selected="selected"|cond="$config->skin==$key">{$val->title} ({$key})</option>

View file

@ -10,7 +10,7 @@
.filebox_item{max-height:16px}
</style>
<div class="x_page-header">
<h1>{$lang->member_group} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_member_group" target="_blank">{$lang->help}</a></h1>
<h1>{$lang->member_group}</h1>
</div>
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/tpl/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
@ -53,7 +53,6 @@
<button type="button" class="dragBtn">Move to</button>
<input type="hidden" name="group_srls[]" value="{$group_info->group_srl}" />
<input type="text" name="group_titles[]" value="{htmlspecialchars($group_info->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}" class="lang_code" title="{$lang->group_title}" />
<a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_faq_administrator" target="_blank" cond="$group_info->title == '관리그룹'">{$lang->help}</a>
</div>
</td>
<td><input type="text" name="descriptions[]" value="{$group_info->description}" title="{$lang->description}" /></td>

View file

@ -1,5 +1,5 @@
<div class="x_page-header">
<h1>{$lang->cmd_member_config} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_member_config" target="_blank">{$lang->help}</a></h1>
<h1>{$lang->cmd_member_config}</h1>
</div>
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/tpl/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>

View file

@ -29,7 +29,7 @@
<div class="x_control-group multiExample">
<label for="multiSelect" class="x_control-label"><em style="color:red">*</em> {$lang->options}</label>
<div class="x_controls">
<textarea rows="4" cols="42" id="multiSelect" name="default_value" style="vertical-align:top"><block cond="$default_value">{implode('<enter>', $default_value)}</block></textarea>
<textarea rows="4" cols="42" id="multiSelect" name="default_value" style="vertical-align:top"><block cond="$default_value">{implode('|@|', $default_value)}</block></textarea>
<p class="x_help-inline">{$lang->about_multi_type}</p>
</div>
</div>

View file

@ -21,14 +21,14 @@
<input type="hidden" name="success_return_url" value="{getUrl('act', 'dispMemberAdminList')}" cond="!$member_srl" />
<input type="hidden" name="xe_validator_id" value="modules/member/tpl/1" />
<div cond="$member_srl" class="x_control-group">
<label class="x_control-label" for="identifierForm"><em style="color:red">*</em> {$identifierForm->title} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_login_key" target="_blank">{$lang->help}</a></label>
<label class="x_control-label" for="identifierForm"><em style="color:red">*</em> {$identifierForm->title}</label>
<div class="x_controls">
<input type="hidden" name="{$identifierForm->name}" value="{$identifierForm->value}" />
<input id="identifierForm" type="email" name="{$identifierForm->name}" value="{$identifierForm->value}" disabled="disabled" />
</div>
</div>
<div cond="!$member_srl" class="x_control-group">
<label class="x_control-label" for="identifierForm"><em style="color:red">*</em> {$identifierForm->title} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_login_key" target="_blank">{$lang->help}</a></label>
<label class="x_control-label" for="identifierForm"><em style="color:red">*</em> {$identifierForm->title}</label>
<div class="x_controls">
<input id="identifierForm" type="text" name="{$identifierForm->name}" value="" />
</div>
@ -48,7 +48,7 @@
<div loop="$formTags=>$formTag" class="x_control-group">
<label class="x_control-label" for="{$formTag->name}">{$formTag->title}</label>
<div class="x_controls" cond="$formTag->name != 'signature'">{$formTag->inputTag}</div>
<div class="x_controls" cond="$formTag->name =='signature'">{$editor}</div>
<div class="x_controls" cond="$formTag->name =='signature'">{$editor|noescape}</div>
</div>
<style scoped>
.xpress-editor>#smart_content,

View file

@ -101,7 +101,7 @@ jQuery(function($){
'getMemberAdminInsertJoinForm',
{member_join_form_srl:memberFormSrl},
function(ret){
var tpl = ret.tpl.replace(/<enter>/g, '\n');
var tpl = ret.tpl.replace(/\|@\|/g, '\n');
$('#extendForm').html(tpl);
if (checked)$('#extendForm #radio_'+checked).attr('checked', 'checked');

View file

@ -12,7 +12,7 @@
</div>
</div>
<div class="x_control-group">
<p class="x_control-label">{$lang->enable_login_fail_report} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_faq_defence_login_limit" target="_blank">{$lang->help}</a></p>
<p class="x_control-label">{$lang->enable_login_fail_report}</p>
<div class="x_controls">
<label class="x_inline" for="enable_login_fail_report_yes"><input type="radio" name="enable_login_fail_report" id="enable_login_fail_report_yes" value="Y" checked="checked"|cond="$config->enable_login_fail_report != 'N'" /> {$lang->cmd_yes}</label>
<label class="x_inline" for="enable_login_fail_report_no"><input type="radio" name="enable_login_fail_report" id="enable_login_fail_report_no" value="N" checked="checked"|cond="$config->enable_login_fail_report == 'N'" /> {$lang->cmd_no}</label>

View file

@ -6,13 +6,13 @@
</script>
<div class="x_page-header">
<h1>{$lang->user_list} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_member_list" target="_blank">{$lang->help}</a></h1>
<h1>{$lang->user_list}</h1>
</div>
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/tpl/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form action="" method="post">
<table id="memberList" class="x_table x_table-striped x_table-hover">
<table id="memberList" class="x_table x_table-striped x_table-hover dsTg">
<caption>
<a href="{getUrl('filter_type', '', 'page', '')}" class="active"|cond="!$filter_type">{$lang->cmd_show_all_member}<block cond="!$filter_type">({$total_count})</block></a>
<i>|</i>
@ -26,16 +26,20 @@
<a href="#listManager" data-value="modify" class="modalAnchor _member x_btn">{$lang->modify}</a>
<a href="#listManager" data-value="delete" class="modalAnchor _member x_btn">{$lang->delete}</a>
</div>
<div class="x_pull-right x_btn-group margin_after">
<button type="button" class="x_btn x_active __simple">{$lang->simple_view}</button>
<button type="button" class="x_btn __detail">{$lang->detail_view}</button>
</div>
</caption>
<thead>
<tr>
<th scope="col" class="nowr" cond="$profileImageConfig == 'Y' && $config->member_profile_view == 'Y'">{$lang->profile_image}</th>
<th scope="col" class="nowr rx_detail_marks" cond="$profileImageConfig == 'Y' && $config->member_profile_view == 'Y'">{$lang->profile_image}</th>
<th scope="col" class="nowr">{$lang->email}</th>
<th scope="col" class="nowr" loop="$usedIdentifiers=>$name,$title">{$title}</th>
<th scope="col" class="nowr">{$lang->status}</th>
<th scope="col" class="nowr"><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminList', 'sort_index', 'regdate', 'sort_order', ($sort_order == 'asc') ? 'desc' : 'asc', 'selected_group_srl', $selected_group_srl)}">{$lang->signup_date}<block cond="$sort_index == 'regdate'"> <em cond="$sort_order=='asc'"></em><em cond="$sort_order != 'asc'"></em></block></a></th>
<th scope="col" class="nowr"><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminList', 'sort_index', 'last_login', 'sort_order', ($sort_order == 'asc') ? 'desc' : 'asc', 'selected_group_srl', $selected_group_srl)}">{$lang->last_login}<block cond="$sort_index == 'last_login'"> <em cond="$sort_order=='asc'"></em><em cond="$sort_order != 'asc'"></em></block></a></th>
<th scope="col" class="nowr">{$lang->member_group}</th>
<th scope="col" class="nowr rx_detail_marks"><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminList', 'sort_index', 'regdate', 'sort_order', ($sort_order == 'asc') ? 'desc' : 'asc', 'selected_group_srl', $selected_group_srl)}">{$lang->signup_date}<block cond="$sort_index == 'regdate'"> <em cond="$sort_order=='asc'"></em><em cond="$sort_order != 'asc'"></em></block></a></th>
<th scope="col" class="nowr rx_detail_marks"><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminList', 'sort_index', 'last_login', 'sort_order', ($sort_order == 'asc') ? 'desc' : 'asc', 'selected_group_srl', $selected_group_srl)}">{$lang->last_login}<block cond="$sort_index == 'last_login'"> <em cond="$sort_order=='asc'"></em><em cond="$sort_order != 'asc'"></em></block></a></th>
<th scope="col" class="nowr rx_detail_marks">{$lang->member_group}</th>
<th scope="col" class="nowr">{$lang->inquiry}/{$lang->cmd_modify}</th>
<th scope="col">
<input type="checkbox" title="Check All" data-name="user" />
@ -45,7 +49,7 @@
<tbody>
<tr loop="$member_list=>$no,$member_info">
{@$member_info = get_object_vars($member_info)}
<td class="nowr" cond="$profileImageConfig == 'Y' && $config->member_profile_view == 'Y'">
<td class="nowr rx_detail_marks" cond="$profileImageConfig == 'Y' && $config->member_profile_view == 'Y'">
<!--@if($member_info['profile_image'])-->
<img src="{$member_info['profile_image']->src}" class="profile_img" />
<!--@else-->
@ -66,9 +70,9 @@
{$lang->approval}
<!--@end-->
</td>
<td class="nowr" title="{zdate($member_info['regdate'], 'Y-m-d H:i:s')}">{zdate($member_info['regdate'], 'Y-m-d')}</td>
<td class="nowr" title="{zdate($member_info['last_login'], 'Y-m-d H:i:s')}">{zdate($member_info['last_login'], 'Y-m-d')}</td>
<td>{$member_info['group_list']}&nbsp;</td>
<td class="nowr rx_detail_marks" title="{zdate($member_info['regdate'], 'Y-m-d H:i:s')}">{zdate($member_info['regdate'], 'Y-m-d')}</td>
<td class="nowr rx_detail_marks" title="{zdate($member_info['last_login'], 'Y-m-d H:i:s')}">{zdate($member_info['last_login'], 'Y-m-d')}</td>
<td class="rx_detail_marks">{$member_info['group_list']}&nbsp;</td>
<td class="nowr"><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminInsert', 'member_srl', $member_info['member_srl'])}">{$lang->inquiry}/{$lang->cmd_modify}</a></td>
{@$used_values = ''}
<!--@foreach($usedIdentifiers as $name=>$title)-->

View file

@ -76,7 +76,7 @@
</div>
</div>
<div class="x_control-group">
<p class="x_control-label">{$lang->cmd_manage_form} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_faq_member_joinform" target="_blank">{$lang->help}</a></p>
<p class="x_control-label">{$lang->cmd_manage_form}</p>
<div class="x_controls">
<table class="__join_form sortable x_table x_table-striped x_table-hover">
<thead>
@ -111,7 +111,7 @@
<input type="hidden" name="usable_list[]" value="{$item->name}"/>
<input type="hidden" name="{$item->name}" value="requierd"/>
<th scope="row">
<span class="_title" style="display:inline-block;white-space:pre-line;overflow:inherit;width:120px;text-overflow:ellipsis;padding-left:20px">{$item->title} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_login_key" target="_blank">{$lang->help}</a></span>
<span class="_title" style="display:inline-block;white-space:pre-line;overflow:inherit;width:120px;text-overflow:ellipsis;padding-left:20px">{$item->title}</span>
</th>
<td style="text-align:center"><input type="radio" name="identifier" value="{$item->name}" checked="checked" /></td>
<td style="text-align:center"><input type="checkbox" name="usable_list[]" value="{$item->name}" title="{$lang->use}" checked="checked" disabled="disabled" /></td>