Merge pull request #2122 from kijin/develop

회원 모듈에 mid 부여
This commit is contained in:
Kijin Sung 2023-06-20 20:52:34 +09:00 committed by GitHub
commit 4b617404ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 467 additions and 115 deletions

View file

@ -722,12 +722,12 @@ class Session
// Check member information to see if denied or limited.
$member_info = \MemberModel::getMemberInfo($member_srl);
if ($member_info->denied === 'Y')
if (!empty($member_info->denied) && $member_info->denied === 'Y')
{
trigger_error('Session is invalid for member_srl=' . intval($_SESSION['RHYMIX']['login']) . ' (denied)', \E_USER_WARNING);
return false;
}
if ($member_info->limit_date && substr($member_info->limit_date, 0, 8) >= date('Ymd'))
if (!empty($member_info->limit_date) && substr($member_info->limit_date, 0, 8) >= date('Ymd'))
{
trigger_error('Session is invalid for member_srl=' . intval($_SESSION['RHYMIX']['login']) . ' (limited)', \E_USER_WARNING);
return false;

View file

@ -51,6 +51,14 @@ class communicationMobile extends communicationView
*/
function dispCommunicationMessageBoxList()
{
// Check member mid
$oMemberView = MemberView::getInstance();
if (!$oMemberView->checkMidAndRedirect())
{
$this->setRedirectUrl($oMemberView->getRedirectUrl());
return;
}
$this->setTemplateFile('message_box');
}
}

View file

@ -61,6 +61,14 @@ class communicationView extends communication
throw new Rhymix\Framework\Exceptions\MustLogin;
}
// Check member mid
$oMemberView = MemberView::getInstance();
if (!$oMemberView->checkMidAndRedirect())
{
$this->setRedirectUrl($oMemberView->getRedirectUrl());
return;
}
$logged_info = Context::get('logged_info');
// Set the variables
@ -177,11 +185,17 @@ class communicationView extends communication
throw new Rhymix\Framework\Exceptions\MustLogin;
}
$oCommunicationModel = getModel('communication');
// Check member mid
$oMemberView = MemberView::getInstance();
if (!$oMemberView->checkMidAndRedirect())
{
$this->setRedirectUrl($oMemberView->getRedirectUrl());
return;
}
// get a new message
$columnList = array('message_srl', 'member_srl', 'nick_name', 'title', 'content', 'sender_srl');
$message = $oCommunicationModel->getNewMessage($columnList);
$message = CommunicationModel::getInstance()->getNewMessage($columnList);
if($message)
{
stripEmbedTagForAdmin($message->content, $message->sender_srl);
@ -207,23 +221,33 @@ class communicationView extends communication
{
throw new Rhymix\Framework\Exceptions\InvalidRequest;
}
// Error appears if not logged-in
if(!Context::get('is_logged'))
{
throw new Rhymix\Framework\Exceptions\MustLogin;
}
// Check permission
if(!getModel('communication')->checkGrant($this->config->grant_send))
{
throw new Rhymix\Framework\Exceptions\NotPermitted;
}
// Check member mid
$oMemberView = MemberView::getInstance();
if (!$oMemberView->checkMidAndRedirect())
{
$this->setRedirectUrl($oMemberView->getRedirectUrl());
return;
}
// Fix missing mid (it causes errors when uploading)
if(!Context::get('mid'))
{
Context::set('mid', Context::get('site_module_info')->mid);
}
// Error appears if not logged-in
if(!Context::get('is_logged'))
{
throw new Rhymix\Framework\Exceptions\MustLogin;
}
$logged_info = Context::get('logged_info');
// get receipient's information
@ -310,6 +334,14 @@ class communicationView extends communication
throw new Rhymix\Framework\Exceptions\MustLogin;
}
// Check member mid
$oMemberView = MemberView::getInstance();
if (!$oMemberView->checkMidAndRedirect())
{
$this->setRedirectUrl($oMemberView->getRedirectUrl());
return;
}
$oCommunicationModel = getModel('communication');
// get a group list
@ -369,6 +401,14 @@ class communicationView extends communication
throw new Rhymix\Framework\Exceptions\MustLogin;
}
// Check member mid
$oMemberView = MemberView::getInstance();
if (!$oMemberView->checkMidAndRedirect())
{
$this->setRedirectUrl($oMemberView->getRedirectUrl());
return;
}
$logged_info = Context::get('logged_info');
$target_srl = Context::get('target_srl');
@ -419,7 +459,13 @@ class communicationView extends communication
throw new Rhymix\Framework\Exceptions\MustLogin;
}
$logged_info = Context::get('logged_info');
// Check member mid
$oMemberView = MemberView::getInstance();
if (!$oMemberView->checkMidAndRedirect())
{
$this->setRedirectUrl($oMemberView->getRedirectUrl());
return;
}
// change to edit mode when getting the group_srl
$friend_group_srl = Context::get('friend_group_srl');

View file

@ -2,13 +2,18 @@
<module>
<grants />
<actions>
<action name="dispCommunicationMessages" type="view" permission="member" meta-noindex="true" />
<action name="dispCommunicationSendMessage" type="view" permission="member" meta-noindex="true" />
<action name="dispCommunicationNewMessage" type="view" permission="member" meta-noindex="true" />
<action name="dispCommunicationFriend" type="view" permission="member" meta-noindex="true" />
<action name="dispCommunicationAddFriend" type="view" permission="member" meta-noindex="true" />
<action name="dispCommunicationAddFriendGroup" type="view" permission="member" meta-noindex="true" />
<action name="dispCommunicationMessageBoxList" type="mobile" permission="member" meta-noindex="true" />
<action name="dispCommunicationMessages" type="view" permission="member" meta-noindex="true">
<route route="messages" />
<route route="messages/$message_srl:int" />
<route route="messages/type/$message_type:word" />
<route route="messages/type/$message_type:word/$message_srl:int" />
</action>
<action name="dispCommunicationSendMessage" type="view" permission="member" route="messages/send" meta-noindex="true" />
<action name="dispCommunicationNewMessage" type="view" permission="member" route="messages/new" meta-noindex="true" />
<action name="dispCommunicationFriend" type="view" permission="member" route="friends" meta-noindex="true" />
<action name="dispCommunicationAddFriend" type="view" permission="member" route="friends/add" meta-noindex="true" />
<action name="dispCommunicationAddFriendGroup" type="view" permission="member" route="friends/addGroup" meta-noindex="true" />
<action name="dispCommunicationMessageBoxList" type="mobile" permission="member" route="messages/boxes" meta-noindex="true" />
<action name="procCommunicationUpdateAllowMessage" type="controller" permission="member" />
<action name="procCommunicationSendMessage" type="controller" permission="member" ruleset="sendMessage" />

View file

@ -6,7 +6,7 @@ function completeSendMessage(ret_obj) {
function doSendMessage(member_srl, message_srl) {
if(typeof(message_srl)=='undefined') message_srl = 0;
var url = request_uri.setQuery('module','communication').setQuery('act','dispCommunicationSendMessage').setQuery('receiver_srl',member_srl).setQuery('message_srl',message_srl);
var url = request_uri.setQuery('mid',current_mid).setQuery('act','dispCommunicationSendMessage').setQuery('receiver_srl',member_srl).setQuery('message_srl',message_srl);
popopen(url, 'sendMessage');
}

View file

@ -2,6 +2,7 @@
<module>
<grants />
<actions>
<action name="dispMemberIndex" type="view" index="true" />
<action name="dispMemberSignUpForm" type="view" meta-noindex="true">
<route route="signup" />
<route route="signup$document_srl:delete" />

View file

@ -51,6 +51,7 @@ $lang->group_image_mark = 'Group image mark';
$lang->group_image_mark_max_width = 'Max Width';
$lang->group_image_mark_max_height = 'Max Height';
$lang->signature_max_height = 'Max Signature Height';
$lang->cmd_force_member_mid = 'Force';
$lang->enable_join = 'Accept New Members';
$lang->enable_join_only_with_url_key = 'Only with valid URL key';
$lang->enable_join_url_key = 'URL Key';

View file

@ -51,6 +51,7 @@ $lang->group_image_mark = '그룹 이미지 마크';
$lang->group_image_mark_max_width = '가로 제한 길이';
$lang->group_image_mark_max_height = '세로 제한 길이';
$lang->signature_max_height = '서명 높이 제한';
$lang->cmd_force_member_mid = '강제 적용';
$lang->enable_join = '회원 가입 허가';
$lang->enable_join_only_with_url_key = 'URL 키가 일치하는 경우에만 허가';
$lang->enable_join_url_key = 'URL 키';

View file

@ -222,6 +222,8 @@ class MemberAdminController extends Member
public function procMemberAdminInsertDefaultConfig()
{
$args = Context::gets(
'member_mid',
'force_mid',
'enable_join',
'enable_join_key',
'enable_confirm',
@ -239,6 +241,52 @@ class MemberAdminController extends Member
'member_profile_view'
);
// Update member mid
$config = MemberModel::getMemberConfig();
if ($args->member_mid !== ($config->mid ?? null))
{
if (!preg_match('/^[a-z][a-z0-9_]+$/i', $args->member_mid))
{
return new BaseObject(-1, 'msg_limit_mid');
}
if ($config->mid)
{
$module_info = ModuleModel::getModuleInfoByMid($config->mid);
if (!$module_info || $module_info->module !== $this->module)
{
$module_info = null;
}
}
else
{
$module_info = null;
}
if ($module_info)
{
$module_info->mid = $args->member_mid;
$output = ModuleController::getInstance()->updateModule($module_info);
}
else
{
$output = $this->createMid($args->member_mid, $config->skin ?: 'default', $config->mskin ?: 'default');
}
if ($output->toBool())
{
$args->mid = $args->member_mid;
unset($args->member_mid);
}
else
{
return $output;
}
}
$args->force_mid = ($args->force_mid === 'Y');
// Update join key
if ($args->enable_join === 'KEY')
{
$args->enable_join = 'N';

View file

@ -37,6 +37,9 @@ class Member extends ModuleObject
if(!$config)
{
$config = MemberModel::getMemberConfig();
$config->mid = 'member';
$config->force_mid = true;
$this->createMid($config->mid);
$oModuleController->insertModuleConfig('member', $config);
}
@ -165,7 +168,12 @@ class Member extends ModuleObject
if(!$oDB->isColumnExists('member_devices', 'device_token_type')) return true;
if(!$oDB->isColumnExists('member_devices', 'last_active_date')) return true;
// Check mid
$config = ModuleModel::getModuleConfig('member');
if (empty($config->mid))
{
return true;
}
// Check members with phone country in old format
if ($config->phone_number_default_country && !preg_match('/^[A-Z]{3}$/', $config->phone_number_default_country))
@ -370,6 +378,18 @@ class Member extends ModuleObject
$config = ModuleModel::getModuleConfig('member') ?: new stdClass;
$changed = false;
// Check mid
if (empty($config->mid))
{
$config->mid = 'member';
$output = $this->createMid($config->mid, $config->skin ?: 'default', $config->mskin ?: 'default');
if (!$output->toBool())
{
return $output;
}
$changed = true;
}
// Check members with phone country in old format
if ($config->phone_number_default_country && !preg_match('/^[A-Z]{3}$/', $config->phone_number_default_country))
{
@ -526,12 +546,32 @@ class Member extends ModuleObject
}
/**
* Re-generate the cache file
* Create mid
*
* @return void
* @param string $mid
* @param string $skin
* @param string $mskin
* @return BaseObject
*/
function recompileCache()
public function createMid($mid = 'member', $skin = 'default', $mskin = 'default')
{
$module_info = \ModuleModel::getModuleInfoByMid($mid);
if ($module_info && $module_info->module === $this->module)
{
return new BaseObject();
}
return ModuleController::getInstance()->insertModule((object)array(
'mid' => $mid,
'module' => $this->module,
'browser_title' => lang('member'),
'description' => '',
'layout_srl' => -1,
'mlayout_srl' => -1,
'skin' => $skin,
'mskin' => $mskin,
'use_mobile' => 'Y',
));
}
/**

View file

@ -867,25 +867,27 @@ class MemberController extends Member
// Call a trigger (after)
ModuleHandler::triggerCall('member.procMemberInsert', 'after', $config);
self::clearMemberCache($args->member_srl);
// Redirect
if ($config->redirect_url)
{
$returnUrl = $config->redirect_url;
}
else
{
if(Context::get('success_return_url'))
elseif (Context::get('success_return_url'))
{
$returnUrl = Context::get('success_return_url');
}
else if($_COOKIE['XE_REDIRECT_URL'])
elseif (isset($_SESSION['member_auth_referer']))
{
$returnUrl = $_COOKIE['XE_REDIRECT_URL'];
setcookie("XE_REDIRECT_URL", '', 1);
$returnUrl = $_SESSION['member_auth_referer'];
unset($_SESSION['member_auth_referer']);
}
else
{
$returnUrl = getNotEncodedUrl('');
}
self::clearMemberCache($args->member_srl);
$this->setRedirectUrl($returnUrl);
}

View file

@ -7,9 +7,8 @@
*/
class MemberView extends Member
{
var $group_list = NULL; // /< Group list information
var $member_info = NULL; // /< Member information of the user
var $skin = 'default';
public $member_config;
public $member_info;
/**
* @brief Initialization
@ -22,29 +21,23 @@ class MemberView extends Member
$oSecurity = new Security();
$oSecurity->encodeHTML('member_config.signupForm..');
// Set the skin path
$skin = $this->member_config->skin;
// Set the template path
if(!$skin)
if ($skin)
{
if ($skin === '/USE_DEFAULT/')
{
$skin = 'default';
}
$template_path = sprintf('%sskins/%s', $this->module_path, $skin);
}
else
{
//check theme
$config_parse = explode('|@|', $skin);
if (count($config_parse) > 1)
{
$template_path = sprintf('./themes/%s/modules/member/', $config_parse[0]);
$template_path = sprintf('%sskins/%s', $this->module_path, 'default');
}
else
{
$template_path = sprintf('%sskins/%s', $this->module_path, $skin);
}
}
// Template path
$this->setTemplatePath($template_path);
// Set the layout path
$layout_info = LayoutModel::getInstance()->getLayout($this->member_config->layout_srl);
if($layout_info)
{
@ -53,14 +46,105 @@ class MemberView extends Member
}
}
/**
* Check the referer for login and signup pages.
*/
public function checkRefererUrl()
{
// Get the referer URL from Context var or HTTP header.
$referer_url = Context::get('referer_url') ?: ($_SERVER['HTTP_REFERER'] ?? '');
// Check if the referer is an internal URL.
$is_valid_referer = !empty($referer_url) && Rhymix\Framework\URL::isInternalURL($referer_url);
// Check if the referer is the login or signup page, to prevent redirect loops.
if (preg_match('!\b(dispMemberLoginForm|dispMemberSignUpForm|dispMemberFindAccount|dispMemberResendAuthMail|procMember)!', $referer_url))
{
$is_valid_referer = false;
}
if (preg_match('!/(login|signup)\b!', $referer_url))
{
$is_valid_referer = false;
}
// Store valid referer info in the session.
if ($is_valid_referer)
{
return $_SESSION['member_auth_referer'] = $referer_url;
}
elseif (isset($_SESSION['member_auth_referer']))
{
return $_SESSION['member_auth_referer'];
}
elseif ($this->mid && !empty($this->member_config->mid) && $this->mid === $this->member_config->mid)
{
return getNotEncodedUrl('');
}
else
{
return getNotEncodedUrl('act', '');
}
}
/**
* Check redirect to member mid.
*/
public function checkMidAndRedirect()
{
if (!$this->member_config)
{
$this->member_config = MemberModel::getMemberConfig();
}
if (!$this->member_config->mid || !$this->member_config->force_mid)
{
return true;
}
if (ModuleModel::getModuleInfoByMid($this->member_config->mid)->module !== $this->module)
{
return true;
}
if (Context::get('mid') === $this->member_config->mid)
{
return true;
}
$vars = get_object_vars(Context::getRequestVars());
$vars['mid'] = $this->member_config->mid;
$this->setRedirectUrl(getNotEncodedUrl($vars));
return false;
}
/**
* Module index
*/
public function dispMemberIndex()
{
if ($this->user->isMember())
{
$this->setRedirectUrl(getUrl(['mid' => $this->mid, 'act' => 'dispMemberInfo']));
}
else
{
$this->setRedirectUrl(getUrl(['mid' => $this->mid, 'act' => 'dispMemberLoginForm']));
}
}
/**
* @brief Display member information
*/
function dispMemberInfo()
{
$logged_info = Context::get('logged_info');
if (!$this->checkMidAndRedirect())
{
return;
}
// Don't display member info to non-logged user
if(!$logged_info->member_srl) throw new Rhymix\Framework\Exceptions\MustLogin;
$logged_info = Context::get('logged_info');
if(!$logged_info->member_srl)
{
throw new Rhymix\Framework\Exceptions\MustLogin;
}
$member_srl = Context::get('member_srl');
if(!$member_srl && Context::get('is_logged'))
@ -201,14 +285,24 @@ class MemberView extends Member
*/
function dispMemberSignUpForm()
{
//setcookie for redirect url in case of going to member sign up
setcookie("XE_REDIRECT_URL", $_SERVER['HTTP_REFERER'], 0, '/', null, !!config('session.use_ssl_cookies'));
// Check referer URL
$referer_url = $this->checkRefererUrl();
$member_config = $this->member_config;
// Redirect to member mid if necessary.
if (!$this->checkMidAndRedirect())
{
return;
}
// Return to previous screen if already logged in.
if($this->user->isMember())
{
$this->setRedirectUrl($referer_url);
return;
}
// Get the member information if logged-in
if($this->user->member_srl) throw new Rhymix\Framework\Exception('msg_already_logged');
// call a trigger (before)
$member_config = $this->member_config;
$trigger_output = ModuleHandler::triggerCall('member.dispMemberSignUpForm', 'before', $member_config);
if(!$trigger_output->toBool()) return $trigger_output;
@ -283,6 +377,11 @@ class MemberView extends Member
function dispMemberModifyInfoBefore()
{
if (!$this->checkMidAndRedirect())
{
return;
}
$logged_info = Context::get('logged_info');
if(!$logged_info->member_srl)
{
@ -323,6 +422,11 @@ class MemberView extends Member
return;
}
if (!$this->checkMidAndRedirect())
{
return;
}
$_SESSION['rechecked_password_step'] = 'INPUT_DATA';
$member_config = $this->member_config;
@ -392,6 +496,11 @@ class MemberView extends Member
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
}
if (!$this->checkMidAndRedirect())
{
return;
}
// A message appears if the user is not logged-in
if(!Context::get('is_logged'))
{
@ -436,6 +545,11 @@ class MemberView extends Member
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
}
if (!$this->checkMidAndRedirect())
{
return;
}
// A message appears if the user is not logged-in
if(!Context::get('is_logged'))
{
@ -478,6 +592,11 @@ class MemberView extends Member
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
}
if (!$this->checkMidAndRedirect())
{
return;
}
// A message appears if the user is not logged-in
if(!Context::get('is_logged'))
{
@ -573,6 +692,11 @@ class MemberView extends Member
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
}
if (!$this->checkMidAndRedirect())
{
return;
}
// A message appears if the user is not logged-in
$logged_info = Context::get('logged_info');
if(!$logged_info->member_srl) throw new Rhymix\Framework\Exceptions\MustLogin;
@ -602,6 +726,11 @@ class MemberView extends Member
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
}
if (!$this->checkMidAndRedirect())
{
return;
}
$logged_info = Context::get('logged_info');
if (!$logged_info->member_srl)
{
@ -631,25 +760,18 @@ class MemberView extends Member
*/
function dispMemberLoginForm()
{
// Get referer URL
$referer_url = Context::get('referer_url') ?: ($_SERVER['HTTP_REFERER'] ?? '');
$is_valid_referer = !empty($referer_url) && Rhymix\Framework\URL::isInternalURL($referer_url);
if (preg_match('!\b(dispMemberLoginForm|dispMemberSignUpForm|dispMemberFindAccount|dispMemberResendAuthMail|procMember)!', $referer_url))
{
$is_valid_referer = false;
}
if (preg_match('!/(login|signup)\b!', $referer_url))
{
$is_valid_referer = false;
}
if (!$is_valid_referer)
{
$referer_url = getNotEncodedUrl('act', '');
}
// Check referer URL
$referer_url = $this->checkRefererUrl();
Context::set('referer_url', $referer_url);
// Redirect to member mid if necessary.
if (!$this->checkMidAndRedirect())
{
return;
}
// Return to previous screen if already logged in.
if(Context::get('is_logged'))
if($this->user->isMember())
{
$this->setRedirectUrl($referer_url);
return;
@ -679,8 +801,12 @@ class MemberView extends Member
// A message appears if the user is not logged-in
if(!$this->user->member_srl) throw new Rhymix\Framework\Exceptions\MustLogin;
$memberConfig = $this->member_config;
if (!$this->checkMidAndRedirect())
{
return;
}
$memberConfig = $this->member_config;
$logged_info = Context::get('logged_info');
$member_srl = $logged_info->member_srl;
@ -710,8 +836,12 @@ class MemberView extends Member
// A message appears if the user is not logged-in
if(!$this->user->member_srl) throw new Rhymix\Framework\Exceptions\MustLogin;
$memberConfig = $this->member_config;
if (!$this->checkMidAndRedirect())
{
return;
}
$memberConfig = $this->member_config;
$logged_info = Context::get('logged_info');
$member_srl = $logged_info->member_srl;
@ -767,9 +897,12 @@ class MemberView extends Member
throw new Rhymix\Framework\Exception('already_logged');
}
$config = $this->member_config;
if (!$this->checkMidAndRedirect())
{
return;
}
Context::set('identifier', $config->identifier);
Context::set('identifier', $this->member_config->identifier);
Context::set('enable_find_account_question', 'N');
$this->setTemplateFile('find_member_account');
@ -785,6 +918,11 @@ class MemberView extends Member
throw new Rhymix\Framework\Exception('already_logged');
}
if (!$this->checkMidAndRedirect())
{
return;
}
$this->setTemplateFile('resend_auth_mail');
}
@ -797,6 +935,11 @@ class MemberView extends Member
return;
}
if (!$this->checkMidAndRedirect())
{
return;
}
$_SESSION['rechecked_password_step'] = 'INPUT_DATA';
$this->setTemplateFile('modify_email_address');
@ -846,7 +989,15 @@ class MemberView extends Member
**/
function dispMemberSpammer()
{
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\NotPermitted;
if (!Context::get('is_logged'))
{
throw new Rhymix\Framework\Exceptions\NotPermitted;
}
if (!$this->checkMidAndRedirect())
{
return;
}
$member_srl = Context::get('member_srl');
$module_srl = Context::get('module_srl');
@ -881,6 +1032,11 @@ class MemberView extends Member
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
}
if (!$this->checkMidAndRedirect())
{
return;
}
$member_srl = Context::get('member_srl');
$logged_info = Context::get('logged_info');
if(!$member_srl)

View file

@ -10,7 +10,7 @@
<form ruleset="@insertMember" id="fo_insert_member" action="./" method="post" enctype="multipart/form-data" class="form-horizontal">
<input type="hidden" name="act" value="procMemberInsert" />
<input type="hidden" name="xe_validator_id" value="modules/member/skins" />
<input type="hidden" name="success_return_url" value="{getUrl('act','dispMemberInfo')}" />
<input type="hidden" name="success_return_url" value="" />
<div class="agreement" loop="$member_config->agreements => $i, $agreement" cond="$agreement->type !== 'disabled'">
<div class="title">
{$agreement->title}

View file

@ -5,6 +5,21 @@
<input type="hidden" name="act" value="procMemberAdminInsertDefaultConfig" />
<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="member_mid">{$lang->url}</label>
<div class="x_controls">
<span class="baseurl" style="display:inline-block;transform:translateY(2px)">
{$site_module_info->security === 'always' ? 'https://' : 'http://'}{$site_module_info->domain}{\RX_BASEURL}<!--@if(!config('url.rewrite'))-->index.php?mid=<!--@endif-->
</span>
<input type="text" name="member_mid" id="member_mid" value="{$config->mid ?? 'member'}" />
&nbsp;
<label class="x_inline" for="force_mid">
<input type="checkbox" name="force_mid" id="force_mid" value="Y" checked="checked"|cond="!empty($config->force_mid)" />
{$lang->cmd_force_member_mid}
</label>
<p class="x_help-block" style="margin-top:10px">{$lang->about_mid}</p>
</div>
</div>
<div class="x_control-group">
<div class="x_control-label">{$lang->enable_join}</div>
<div class="x_controls">

View file

@ -2,10 +2,10 @@
<module>
<grants />
<actions>
<action name="dispNcenterliteNotifyList" type="view" permission="member" route="notifications" />
<action name="dispNcenterliteUserConfig" type="view" permission="member" route="notififcations/config" />
<action name="dispNcenterliteUnsubscribeList" type="view" permission="member" route="notififcations/unsubscribe" />
<action name="dispNcenterliteInsertUnsubscribe" type="view" permission="member" route="notififcations/unsubscribe/add" />
<action name="dispNcenterliteNotifyList" type="view" permission="member" route="notifications" meta-noindex="true" />
<action name="dispNcenterliteUserConfig" type="view" permission="member" route="notififcations/config" meta-noindex="true" />
<action name="dispNcenterliteUnsubscribeList" type="view" permission="member" route="notififcations/unsubscribe" meta-noindex="true" />
<action name="dispNcenterliteInsertUnsubscribe" type="view" permission="member" route="notififcations/unsubscribe/add" meta-noindex="true" />
<action name="getColorsetList" type="model" permission="root" />
<action name="getMyNotifyListTpl" type="model" permission="member" />

View file

@ -4,7 +4,7 @@ class ncenterliteView extends ncenterlite
{
function init()
{
$oNcenterliteModel = getModel('ncenterlite');
$oNcenterliteModel = ncenterliteModel::getInstance();
$config = $oNcenterliteModel->getConfig();
$template_path = sprintf("%sskins/%s/",$this->module_path, $config->skin);
if(!is_dir($template_path)||!$config->skin)
@ -28,8 +28,15 @@ class ncenterliteView extends ncenterlite
function dispNcenterliteNotifyList()
{
$oNcenterliteModel = getModel('ncenterlite');
// Check member mid
$oMemberView = MemberView::getInstance();
if (!$oMemberView->checkMidAndRedirect())
{
$this->setRedirectUrl($oMemberView->getRedirectUrl());
return;
}
$oNcenterliteModel = ncenterliteModel::getInstance();
$output = $oNcenterliteModel->getMyNotifyList($this->user->member_srl, 1, null, true);
Context::set('total_count', $output->page_navigation->total_count);
@ -43,7 +50,15 @@ class ncenterliteView extends ncenterlite
function dispNcenterliteUserConfig()
{
$oNcenterliteModel = getModel('ncenterlite');
// Check member mid
$oMemberView = MemberView::getInstance();
if (!$oMemberView->checkMidAndRedirect())
{
$this->setRedirectUrl($oMemberView->getRedirectUrl());
return;
}
$oNcenterliteModel = ncenterliteModel::getInstance();
$config = $oNcenterliteModel->getConfig();
if($config->user_notify_setting != 'Y')
{
@ -102,8 +117,15 @@ class ncenterliteView extends ncenterlite
*/
function dispNcenterliteUnsubscribeList()
{
/** @var ncenterliteModel $oNcenterliteModel */
$oNcenterliteModel = getModel('ncenterlite');
// Check member mid
$oMemberView = MemberView::getInstance();
if (!$oMemberView->checkMidAndRedirect())
{
$this->setRedirectUrl($oMemberView->getRedirectUrl());
return;
}
$oNcenterliteModel = ncenterliteModel::getInstance();
$config = $oNcenterliteModel->getConfig();
if($config->unsubscribe !== 'Y')
@ -147,8 +169,15 @@ class ncenterliteView extends ncenterlite
$this->setLayoutPath('./common/tpl');
$this->setLayoutFile('popup_layout');
/** @var ncenterliteModel $oNcenterliteModel */
$oNcenterliteModel = getModel('ncenterlite');
// Check member mid
$oMemberView = MemberView::getInstance();
if (!$oMemberView->checkMidAndRedirect())
{
$this->setRedirectUrl($oMemberView->getRedirectUrl());
return;
}
$oNcenterliteModel = ncenterliteModel::getInstance();
$target_srl = Context::get('target_srl');
$unsubscribe_srl = Context::get('unsubscribe_srl');
$unsubscribe_type = Context::get('unsubscribe_type');