*/
/**
* @class memberAdminView
* @author NAVER (developers@xpressengine.com)
* member module's admin view class
*/
class MemberAdminView extends Member
{
/**
* Group list
*
* @var array
*/
var $group_list = NULL;
/**
* Selected member info
*
* @var array
*/
var $memberInfo = NULL;
/**
* Member module config.
*
* @var Object
*/
var $memberConfig = NULL;
/**
* initialization
*
* @return void
*/
function init()
{
$oMemberModel = getModel('member');
$this->memberConfig = $oMemberModel->getMemberConfig();
Context::set('config', $this->memberConfig);
$oSecurity = new Security();
$oSecurity->encodeHTML('config.signupForm..');
// if member_srl exists, set memberInfo
$member_srl = Context::get('member_srl');
if($member_srl)
{
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
if(!$this->memberInfo)
{
Context::set('member_srl','');
}
else
{
Context::set('member_info',$this->memberInfo);
}
}
// retrieve group list
$this->group_list = $oMemberModel->getGroups();
Context::set('group_list', $this->group_list);
$security = new Security();
$security->encodeHTML('group_list..', 'config..');
$this->setTemplatePath($this->module_path.'tpl');
}
/**
* display member list
*
* @return void
*/
function dispMemberAdminList()
{
$oMemberAdminModel = getAdminModel('member');
$oMemberModel = getModel('member');
$output = $oMemberAdminModel->getMemberList();
$filter = Context::get('filter_type');
global $lang;
switch($filter)
{
case 'super_admin' : Context::set('filter_type_title', $lang->cmd_show_super_admin_member);break;
case 'site_admin' : Context::set('filter_type_title', $lang->cmd_show_site_admin_member);break;
default : Context::set('filter_type_title', $lang->cmd_show_all_member);break;
}
// retrieve list of groups for each member
if($output->data)
{
foreach($output->data as $key => $member)
{
$output->data[$key]->group_list = $oMemberModel->getMemberGroups($member->member_srl,0);
$output->data[$key]->profile_image = $oMemberModel->getProfileImage($member->member_srl);
}
}
$config = $this->memberConfig;
$memberIdentifiers = array(
'user_id' => 'user_id',
'email_address' => 'email_address',
'phone_number' => 'phone_number',
'user_name' => 'user_name',
'nick_name' => 'nick_name'
);
$usedIdentifiers = array();
if(is_array($config->signupForm))
{
foreach($config->signupForm as $signupItem)
{
if(!count($memberIdentifiers)) break;
if(in_array($signupItem->name, $memberIdentifiers) && ($signupItem->required || $signupItem->isUse))
{
unset($memberIdentifiers[$signupItem->name]);
$usedIdentifiers[$signupItem->name] = $lang->{$signupItem->name};
}
}
}
// Get list of new members who have not completed email auth
$check_list = array();
foreach ($output->data as $member)
{
if ($member->denied !== 'N')
{
$check_list[$member->member_srl] = false;
}
}
if (count($check_list))
{
$args2 = new stdClass;
$args2->member_srl = array_keys($check_list);
$output2 = executeQueryArray('member.getAuthMailType', $args2);
foreach ($output2->data as $item)
{
if ($item->is_register === 'Y')
{
$check_list[$item->member_srl] = true;
}
}
}
Context::set('total_count', $output->total_count);
Context::set('total_page', $output->total_page);
Context::set('page', $output->page);
Context::set('member_config', $oMemberModel->getMemberConfig());
Context::set('member_list', $output->data);
Context::set('new_member_check_list', $check_list);
Context::set('usedIdentifiers', $usedIdentifiers);
Context::set('page_navigation', $output->page_navigation);
Context::set('profileImageConfig', $config->profile_image);
$security = new Security();
$security->encodeHTML('member_list..user_name', 'member_list..nick_name', 'member_list..group_list..');
$security->encodeHTML('search_target', 'search_keyword');
$this->setTemplateFile('member_list');
}
/**
* Set the default config.
*
* @return void
*/
public function dispMemberAdminConfig()
{
// Get supported password algorithms.
$oDB = DB::getInstance();
$column_info = $oDB->getColumnInfo('member', 'password');
$password_maxlength = intval($column_info->size);
$password_algos = Rhymix\Framework\Password::getSupportedAlgorithms();
if ($password_maxlength < 128 && isset($password_algos['sha512']))
{
$password_algos['sha512'] = false;
}
if ($password_maxlength < 64 && isset($password_algos['sha256']))
{
$password_algos['sha256'] = false;
}
Context::set('password_hashing_algos', $password_algos);
$this->setTemplateFile('default_config');
}
/**
* Set the features config.
*
* @return void
*/
public function dispMemberAdminFeaturesConfig()
{
$this->setTemplateFile('features_config');
}
/**
* Set the agreements config.
*
* @return void
*/
public function dispMemberAdminAgreementsConfig()
{
$this->setTemplateFile('agreements_config');
}
public function dispMemberAdminSignUpConfig()
{
$config = $this->memberConfig;
if($config->redirect_url)
{
if(!$config->redirect_mid)
{
$mid = str_ireplace(Context::getDefaultUrl(), '', $config->redirect_url);
}
else
{
$mid = $config->redirect_mid;
}
$moduleInfo = ModuleModel::getModuleInfoByMid($mid);
$config->redirect_url = $moduleInfo->module_srl;
Context::set('config', $config);
}
$oMemberModel = getModel('member');
// retrieve skins of editor
$oEditorModel = getModel('editor');
Context::set('editor_skin_list', $oEditorModel->getEditorSkinList());
// get an editor
$option = new stdClass;
$option->primary_key_name = 'temp_srl';
$option->content_key_name = 'agreement';
$option->allow_fileupload = false;
$option->enable_autosave = false;
$option->enable_default_component = true;
$option->enable_component = false;
$option->resizable = true;
$option->height = 300;
$option->editor_toolbar_hide = 'Y';
Context::set('editor', $oEditorModel->getEditor(0, $option));
$signupForm = $config->signupForm;
foreach($signupForm as $val)
{
if($val->name == 'user_id')
{
$userIdInfo = $val;
break;
}
}
$oSecurity = new Security();
if($userIdInfo->isUse)
{
// get denied ID list
Context::set('useUserID', 1);
$denied_list = $oMemberModel->getDeniedIDs();
Context::set('deniedIDs', $denied_list);
$oSecurity->encodeHTML('deniedIDs..user_id');
}
// get denied NickName List
$deniedNickNames = $oMemberModel->getDeniedNickNames();
Context::set('deniedNickNames', $deniedNickNames);
$oSecurity->encodeHTML('deniedNickNames..nick_name');
//get managed Email Hosts
$managedEmailHost = $oMemberModel->getManagedEmailHosts();
Context::set('managedEmailHost', $managedEmailHost);
$oSecurity->encodeHTML('managedEmailHost..email_host');
// Get country calling code list
$country_list = Rhymix\Framework\i18n::listCountries(Context::get('lang_type') === 'ko' ? Rhymix\Framework\i18n::SORT_NAME_KOREAN : Rhymix\Framework\i18n::SORT_NAME_ENGLISH);
Context::set('country_list', $country_list);
if(!$config->phone_number_default_country && Context::get('lang_type') === 'ko')
{
$config->phone_number_default_country = 'KOR';
}
$this->setTemplateFile('signup_config');
}
public function dispMemberAdminLoginConfig()
{
$this->setTemplateFile('login_config');
}
public function dispMemberAdminDesignConfig()
{
$oModuleModel = getModel('module');
// Get a layout list
$oLayoutModel = getModel('layout');
$layout_list = $oLayoutModel->getLayoutList();
Context::set('layout_list', $layout_list);
$mlayout_list = $oLayoutModel->getLayoutList(0, 'M');
Context::set('mlayout_list', $mlayout_list);
// list of skins for member module
$skin_list = $oModuleModel->getSkins($this->module_path);
Context::set('skin_list', $skin_list);
// list of skins for member module
$mskin_list = $oModuleModel->getSkins($this->module_path, 'm.skins');
Context::set('mskin_list', $mskin_list);
$this->setTemplateFile('design_config');
}
/**
* default configuration for member management
*
* @return void
*/
function dispMemberAdminConfigOLD()
{
$oModuleModel = getModel('module');
$oMemberModel = getModel('member');
// Get a layout list
$oLayoutModel = getModel('layout');
$layout_list = $oLayoutModel->getLayoutList();
Context::set('layout_list', $layout_list);
$mlayout_list = $oLayoutModel->getLayoutList(0, 'M');
Context::set('mlayout_list', $mlayout_list);
// list of skins for member module
$skin_list = $oModuleModel->getSkins($this->module_path);
Context::set('skin_list', $skin_list);
// list of skins for member module
$mskin_list = $oModuleModel->getSkins($this->module_path, 'm.skins');
Context::set('mskin_list', $mskin_list);
// retrieve skins of editor
$oEditorModel = getModel('editor');
Context::set('editor_skin_list', $oEditorModel->getEditorSkinList());
// get an editor
$option->skin = $oEditorModel->getEditorConfig()->editor_skin;
$option->primary_key_name = 'temp_srl';
$option->content_key_name = 'agreement';
$option->allow_fileupload = false;
$option->enable_autosave = false;
$option->enable_default_component = true;
$option->enable_component = true;
$option->resizable = true;
$option->height = 300;
$editor = $oEditorModel->getEditor(0, $option);
Context::set('editor', $editor);
$signupForm = $config->signupForm;
foreach($signupForm as $val)
{
if($val->name == 'user_id')
{
$userIdInfo = $val;
break;
}
}
if($userIdInfo->isUse)
{
// get denied ID list
Context::set('useUserID', 1);
$denied_list = $oMemberModel->getDeniedIDs();
Context::set('deniedIDs', $denied_list);
}
// get denied NickName List
$deniedNickNames = $oMemberModel->getDeniedNickNames();
Context::set('deniedNickNames', $deniedNickNames);
$security = new Security();
$security->encodeHTML('config..');
$this->setTemplateFile('member_config');
}
/**
* display member information
*
* @return void
*/
function dispMemberAdminInfo()
{
$oMemberModel = getModel('member');
$oModuleModel = getModel('module');
$member_config = $oModuleModel->getModuleConfig('member');
Context::set('member_config', $member_config);
$extendForm = $oMemberModel->getCombineJoinForm($this->memberInfo);
Context::set('extend_form_list', $extendForm);
$memberInfo = Context::get('member_info');
if(!is_object($memberInfo) || !$memberInfo->member_srl)
{
throw new Rhymix\Framework\Exceptions\TargetNotFound();
}
$memberInfo = get_object_vars($memberInfo);
if (!is_array($memberInfo['group_list'])) $memberInfo['group_list'] = array();
Context::set('memberInfo', $memberInfo);
$disableColumns = array('password', 'find_account_question', 'find_account_answer');
Context::set('disableColumns', $disableColumns);
$security = new Security();
$security->encodeHTML('member_config..');
$security->encodeHTML('extend_form_list...');
$oMemberView = getView('member');
$oMemberView->_getDisplayedMemberInfo($this->memberInfo, $extendForm, $member_config);
$this->setTemplateFile('member_info');
}
/**
* display member insert form
*
* @return void
*/
function dispMemberAdminInsert()
{
$oMemberModel = getModel('member');
$member_config = $this->memberConfig;
if($member_info = Context::get('member_info'))
{
$member_info->signature = $oMemberModel->getSignature($this->memberInfo->member_srl);
}
else
{
$member_info = new stdClass;
}
Context::set('member_info', $member_info);
$formTags = $this->_getMemberInputTag($member_info, true);
Context::set('formTags', $formTags);
// Editor of the module set for signing by calling getEditor
foreach($formTags as $formTag)
{
if($formTag->name == 'signature')
{
$option = new stdClass;
$option->primary_key_name = 'member_srl';
$option->content_key_name = 'signature';
$option->allow_html = $member_config->signature_html !== 'N';
$option->allow_fileupload = $member_config->member_allow_fileupload === 'Y';
$option->enable_autosave = false;
$option->enable_default_component = true;
$option->enable_component = false;
$option->resizable = false;
$option->disable_html = true;
$option->height = 200;
$option->editor_toolbar = 'simple';
$option->editor_toolbar_hide = 'Y';
$option->editor_skin = $member_config->signature_editor_skin;
$option->sel_editor_colorset = $member_config->sel_editor_colorset;
Context::set('editor', getModel('editor')->getEditor($member_info->member_srl, $option));
}
}
$identifierForm = new stdClass;
$identifierForm->title = lang($member_config->identifier);
$identifierForm->name = $member_config->identifier;
$identifierForm->value = $member_info->{$member_config->identifier};
Context::set('identifierForm', $identifierForm);
if ($member_info->limit_date < date('Ymd'))
{
$member_info->limit_date = '';
}
$member_unauthenticated = false;
if ($member_info->member_srl && $member_info->denied !== 'N')
{
$args2 = new stdClass;
$args2->member_srl = $member_info->member_srl;
$output2 = executeQueryArray('member.getAuthMailType', $args2);
foreach ($output2->data as $item)
{
if ($item->is_register === 'Y')
{
$member_unauthenticated = true;
}
}
}
Context::set('member_unauthenticated', $member_unauthenticated);
$this->setTemplateFile('insert_member');
}
/**
* Get tags by the member info type
*
* @param object $memberInfo
* @param boolean $isAdmin (true : admin, false : not admin)
*
* @return array
*/
function _getMemberInputTag($memberInfo = null, $isAdmin = false)
{
$logged_info = Context::get('logged_info');
$oMemberModel = getModel('member');
$extend_form_list = $oMemberModel->getCombineJoinForm($memberInfo);
$security = new Security($extend_form_list);
$security->encodeHTML('..column_title', '..description', '..default_value.');
if ($memberInfo)
{
$memberInfo = get_object_vars($memberInfo);
}
else
{
$memberInfo = array();
}
$member_config = $this->memberConfig;
if(!$this->memberConfig)
{
$member_config = $this->memberConfig = $oMemberModel->getMemberConfig();
}
global $lang;
$formTags = array();
foreach($member_config->signupForm as $no=>$formInfo)
{
if(!$formInfo->isUse || $formInfo->name == $member_config->identifier || $formInfo->name == 'password')
{
continue;
}
$formTag = new stdClass();
$inputTag = '';
$formTag->title = $formInfo->title;
if($isAdmin)
{
if($formInfo->mustRequired || $formInfo->required) $formTag->title = '* '.$formTag->title;
}
else
{
if ($formInfo->required && $formInfo->name != 'password') $formTag->title = '* '.$formTag->title;
}
$formTag->name = $formInfo->name;
if($formInfo->isDefaultForm)
{
if($formInfo->imageType)
{
$formTag->type = 'image';
if($formInfo->name == 'profile_image')
{
$target = $memberInfo['profile_image'];
$functionName = 'doDeleteProfileImage';
}
else if($formInfo->name == 'image_name')
{
$target = $memberInfo['image_name'];
$functionName = 'doDeleteImageName';
}
else if($formInfo->name == 'image_mark')
{
$target = $memberInfo['image_mark'];
$functionName = 'doDeleteImageMark';
}
if($target->src)
{
$inputTag = sprintf(' ',
$formInfo->name,
$formInfo->name.'tag',
$target->src,
$formInfo->title,
$functionName,
$memberInfo['member_srl'],
$lang->cmd_delete);
}
else
{
$inputTag = sprintf('', $formInfo->name);
}
$max_filesize = min(FileHandler::returnBytes(ini_get('upload_max_filesize')), FileHandler::returnBytes(ini_get('post_max_size')));
if (isset($member_config->{$formInfo->name.'_max_filesize'}))
{
$max_filesize = min($max_filesize, $member_config->{$formInfo->name.'_max_filesize'} * 1024);
}
$inputTag .= sprintf('
%s: %s, %s: %dpx, %s: %dpx
', $formInfo->name, $formInfo->name, $max_filesize, escape(lang('file.allowed_filesize_exceeded')), lang('file.allowed_filesize'), FileHandler::filesize($max_filesize), $lang->{$formInfo->name.'_max_width'}, $member_config->{$formInfo->name.'_max_width'}, $lang->{$formInfo->name.'_max_height'}, $member_config->{$formInfo->name.'_max_height'}); }//end imageType else if($formInfo->name == 'birthday') { $formTag->type = 'date'; $inputTag = sprintf('' . ' ' . '', $memberInfo['birthday'], $memberInfo['birthday'] ? sprintf('%s-%s-%s', substr($memberInfo['birthday'], 0, 4), substr($memberInfo['birthday'], 4, 2), substr($memberInfo['birthday'], 6, 2)) : '', $lang->cmd_delete); } else if($formInfo->name == 'find_account_question') { continue; } else if($formInfo->name == 'email_address') { $formTag->type = 'email'; $inputTag = ''; } else if($formInfo->name == 'phone_number') { $formTag->type = 'phone'; $match_country = $memberInfo['phone_country']; if(!$match_country && $member_config->phone_number_default_country) { $match_country = $member_config->phone_number_default_country; } if($match_country && !preg_match('/^[A-Z]{3}$/', $match_country)) { $match_country = Rhymix\Framework\i18n::getCountryCodeByCallingCode($match_country); } if(!$match_country && Context::get('lang_type') === 'ko') { $match_country = 'KOR'; } if($member_config->phone_number_hide_country !== 'Y') { $inputTag = '' . "\n"; } if($memberInfo['phone_number']) { if($match_country === 'KOR') { $phone_number = Rhymix\Framework\Korea::formatPhoneNumber($memberInfo['phone_number']); } else { $phone_number = $memberInfo['phone_number']; } } else { $phone_number = ''; } $inputTag .= ''; if($member_config->phone_number_verify_by_sms === 'Y') { $inputTag .= "\n" . ''; $inputTag .= "\n" . ''; } } else if($formInfo->name == 'homepage') { $formTag->type = 'url'; $inputTag = ''; } else if($formInfo->name == 'blog') { $formTag->type = 'url'; $inputTag = ''; } else { $formTag->type = 'text'; $inputTag = sprintf('', $formInfo->name, $formInfo->name, $memberInfo[$formInfo->name]); } }//end isDefaultForm else { $extendForm = $extend_form_list[$formInfo->member_join_form_srl]; $replace = array('column_name' => $extendForm->column_name, 'value' => $extendForm->value); $extentionReplace = array(); $formTag->type = $extendForm->column_type; if($extendForm->column_type == 'text') { $template = ''; } else if($extendForm->column_type == 'homepage') { $template = ''; } else if($extendForm->column_type == 'email_address') { $template = ''; } else if($extendForm->column_type == 'tel') { $extentionReplace = array('tel_0' => $extendForm->value[0], 'tel_1' => $extendForm->value[1], 'tel_2' => $extendForm->value[2]); $template = ' - - '; } else if($extendForm->column_type == 'textarea') { $template = ''; } else if($extendForm->column_type == 'password') { $template = ''; } else if($extendForm->column_type == 'checkbox') { $template = ''; if($extendForm->default_value) { $template = ''.$extendForm->description.'
'; } $formTag->inputTag = $inputTag; $formTags[] = $formTag; } return $formTags; } /** * display group list * * @return void */ function dispMemberAdminGroupList() { $oModuleModel = getModel('module'); $output = $oModuleModel->getModuleFileBoxList(); Context::set('fileBoxList', $output->data); $this->setTemplateFile('group_list'); } /** * Display an admin page for memebr join forms * * @return void */ function dispMemberAdminInsertJoinForm() { // Get the value of join_form $member_join_form_srl = Context::get('member_join_form_srl'); if($member_join_form_srl) { $oMemberModel = getModel('member'); $join_form = $oMemberModel->getJoinForm($member_join_form_srl); if(!$join_form) Context::set('member_join_form_srl','',true); else { Context::set('join_form', $join_form); $security = new Security(); $security->encodeHTML('join_form..'); } } $this->setTemplateFile('insert_join_form'); } function dispMemberAdminNickNameLog() { $page = Context::get('page'); $output = getModel('member')->getMemberModifyNicknameLog($page); Context::set('total_count', $output->total_count); Context::set('total_page', $output->total_page); Context::set('page', $output->page); Context::set('nickname_list', $output->data); Context::set('page_navigation', $output->page_navigation); $this->setTemplateFile('nick_name_log'); } } /* End of file member.admin.view.php */ /* Location: ./modules/member/member.admin.view.php */