*/ /** * @class memberAdminController * @author NAVER (developers@xpressengine.com) * member module of the admin controller class */ class memberAdminController extends member { /** * Initialization * @return void */ function init() { } /** * Add a user (Administrator) * @return void|Object (void : success, Object : fail) */ function procMemberAdminInsert() { // if(Context::getRequestMethod() == "GET") return new Object(-1, "msg_invalid_request"); // Extract the necessary information in advance $logged_info = Context::get('logged_info'); if($logged_info->is_admin != 'Y' || !checkCSRF()) { return new Object(-1, 'msg_invalid_request'); } $args = Context::gets('member_srl','email_address','find_account_answer', 'allow_mailing','allow_message','denied','is_admin','description','group_srl_list','limit_date'); $oMemberModel = &getModel ('member'); $config = $oMemberModel->getMemberConfig (); $getVars = array(); if($config->signupForm) { foreach($config->signupForm as $formInfo) { if($formInfo->isDefaultForm && ($formInfo->isUse || $formInfo->required || $formInfo->mustRequired)) { $getVars[] = $formInfo->name; } } } foreach($getVars as $val) { $args->{$val} = Context::get($val); } $args->member_srl = Context::get('member_srl'); if(Context::get('reset_password')) $args->password = Context::get('reset_password'); else unset($args->password); // Remove some unnecessary variables from all the vars $all_args = Context::getRequestVars(); unset($all_args->module); unset($all_args->act); unset($all_args->mid); unset($all_args->error_return_url); unset($all_args->success_return_url); unset($all_args->ruleset); if(!isset($args->limit_date)) $args->limit_date = ""; // Add extra vars after excluding necessary information from all the requested arguments $extra_vars = delObjectVars($all_args, $args); $args->extra_vars = serialize($extra_vars); // Check if an original member exists having the member_srl if($args->member_srl) { // Create a member model object $oMemberModel = getModel('member'); // Get memebr profile $columnList = array('member_srl'); $member_info = $oMemberModel->getMemberInfoByMemberSrl($args->member_srl, 0, $columnList); // If no original member exists, make a new one if($member_info->member_srl != $args->member_srl) unset($args->member_srl); } // remove whitespace $checkInfos = array('user_id', 'nick_name', 'email_address'); $replaceStr = array("\r\n", "\r", "\n", " ", "\t", "\xC2\xAD"); foreach($checkInfos as $val) { if(isset($args->{$val})) { $args->{$val} = str_replace($replaceStr, '', $args->{$val}); } } $oMemberController = getController('member'); // Execute insert or update depending on the value of member_srl if(!$args->member_srl) { $args->password = Context::get('password'); $output = $oMemberController->insertMember($args); $msg_code = 'success_registed'; } else { $output = $oMemberController->updateMember($args); $msg_code = 'success_updated'; } if(!$output->toBool()) return $output; // Save Signature $signature = Context::get('signature'); $oMemberController->putSignature($args->member_srl, $signature); // Return result $this->add('member_srl', $args->member_srl); $this->setMessage($msg_code); $profile_image = $_FILES['profile_image']; if(is_uploaded_file($profile_image['tmp_name'])) { $oMemberController->insertProfileImage($args->member_srl, $profile_image['tmp_name']); } $image_mark = $_FILES['image_mark']; if(is_uploaded_file($image_mark['tmp_name'])) { $oMemberController->insertImageMark($args->member_srl, $image_mark['tmp_name']); } $image_name = $_FILES['image_name']; if (is_uploaded_file($image_name['tmp_name'])) { $oMemberController->insertImageName($args->member_srl, $image_name['tmp_name']); } $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminList'); $this->setRedirectUrl($returnUrl); } /** * Delete a user (Administrator) * @return void|Object (void : success, Object : fail) */ function procMemberAdminDelete() { // Separate all the values into DB entries and others $member_srl = Context::get('member_srl'); $oMemberController = getController('member'); $output = $oMemberController->deleteMember($member_srl); if(!$output->toBool()) return $output; $this->add('page',Context::get('page')); $this->setMessage("success_deleted"); } public function procMemberAdminInsertDefaultConfig() { $args = Context::gets( 'enable_join', 'enable_confirm', 'webmaster_name', 'webmaster_email' ); if((!$args->webmaster_name || !$args->webmaster_email) && $args->enable_confirm == 'Y') { return new Object(-1, 'msg_mail_authorization'); } $oModuleController = getController('module'); $output = $oModuleController->updateModuleConfig('member', $args); // default setting end $this->setMessage('success_updated'); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminDefaultConfig'); $this->setRedirectUrl($returnUrl); } public function procMemberAdminInsertSignupConfig() { $oMemberModel = getModel('member'); $oModuleController = getController('module'); $args = Context::gets( 'limit_day', 'agreement', 'redirect_url', 'profile_image', 'profile_image_max_width', 'profile_image_max_height', 'image_name', 'image_name_max_width', 'image_name_max_height', 'image_mark', 'image_mark_max_width', 'image_mark_max_height', 'signature_editor_skin', 'sel_editor_colorset' ); $list_order = Context::get('list_order'); $usable_list = Context::get('usable_list'); $all_args = Context::getRequestVars(); $args->limit_day = (int)$args->limit_day; if(!trim(strip_tags($args->agreement))) { $agreement_file = _XE_PATH_.'files/member_extra_info/agreement_' . Context::get('lang_type') . '.txt'; FileHandler::removeFile($agreement_file); $args->agreement = NULL; } if($args->redirect_url) { $oModuleModel = getModel('module'); $redirectModuleInfo = $oModuleModel->getModuleInfoByModuleSrl($args->redirect_url, array('mid')); if(!$redirectModuleInfo) { return new Object('-1', 'msg_exist_selected_module'); } $args->redirect_url = Context::getDefaultUrl().$redirectModuleInfo->mid; } $args->profile_image = $args->profile_image ? 'Y' : 'N'; $args->image_name = $args->image_name ? 'Y' : 'N'; $args->image_mark = $args->image_mark ? 'Y' : 'N'; $args->signature = $args->signature != 'Y' ? 'N' : 'Y'; $args->identifier = $all_args->identifier; // set default $all_args->is_nick_name_public = 'Y'; $all_args->is_find_account_question_public = 'N'; // signupForm global $lang; $signupForm = array(); $items = array('user_id', 'password', 'user_name', 'nick_name', 'email_address', 'find_account_question', 'homepage', 'blog', 'birthday', 'signature', 'profile_image', 'image_name', 'image_mark', 'profile_image_max_width', 'profile_image_max_height', 'image_name_max_width', 'image_name_max_height', 'image_mark_max_width', 'image_mark_max_height'); $mustRequireds = array('email_address', 'nick_name', 'password', 'find_account_question'); $extendItems = $oMemberModel->getJoinFormList(); foreach($list_order as $key) { $signupItem = new stdClass(); $signupItem->isIdentifier = ($key == $all_args->identifier); $signupItem->isDefaultForm = in_array($key, $items); $signupItem->name = $key; if(!in_array($key, $items)) $signupItem->title = $key; else $signupItem->title = $lang->{$key}; $signupItem->mustRequired = in_array($key, $mustRequireds); $signupItem->imageType = (strpos($key, 'image') !== false); $signupItem->required = ($all_args->{$key} == 'required') || $signupItem->mustRequired || $signupItem->isIdentifier; $signupItem->isUse = in_array($key, $usable_list) || $signupItem->required; $signupItem->isPublic = ($all_args->{'is_'.$key.'_public'} == 'Y' && $signupItem->isUse) ? 'Y' : 'N'; if($signupItem->imageType) { $signupItem->max_width = $all_args->{$key.'_max_width'}; $signupItem->max_height = $all_args->{$key.'_max_height'}; } // set extends form if(!$signupItem->isDefaultForm) { $extendItem = $extendItems[$all_args->{$key.'_member_join_form_srl'}]; $signupItem->type = $extendItem->column_type; $signupItem->member_join_form_srl = $extendItem->member_join_form_srl; $signupItem->title = $extendItem->column_title; $signupItem->description = $extendItem->description; // check usable value change, required/option if($signupItem->isUse != ($extendItem->is_active == 'Y') || $signupItem->required != ($extendItem->required == 'Y')) { unset($update_args); $update_args = new stdClass; $update_args->member_join_form_srl = $extendItem->member_join_form_srl; $update_args->is_active = $signupItem->isUse?'Y':'N'; $update_args->required = $signupItem->required?'Y':'N'; $update_output = executeQuery('member.updateJoinForm', $update_args); } unset($extendItem); } $signupForm[] = $signupItem; } $args->signupForm = $signupForm; // create Ruleset $this->_createSignupRuleset($signupForm, $args->agreement); $this->_createLoginRuleset($args->identifier); $this->_createFindAccountByQuestion($args->identifier); // check agreement value exist if($args->agreement) { $agreement_file = _XE_PATH_.'files/member_extra_info/agreement_' . Context::get('lang_type') . '.txt'; $output = FileHandler::writeFile($agreement_file, $args->agreement); unset($args->agreement); } $output = $oModuleController->updateModuleConfig('member', $args); // default setting end $this->setMessage('success_updated'); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminSignUpConfig'); $this->setRedirectUrl($returnUrl); } public function procMemberAdminInsertLoginConfig() { $oModuleController = getController('module'); $args = Context::gets( 'change_password_date', 'enable_login_fail_report', 'max_error_count', 'max_error_count_time', 'after_login_url', 'after_logout_url' ); if(!$args->change_password_date) { $args->change_password_date = 0; } if(!trim(strip_tags($args->after_login_url))) { $args->after_login_url = NULL; } if(!trim(strip_tags($args->after_logout_url))) { $args->after_logout_url = NULL; } $output = $oModuleController->updateModuleConfig('member', $args); // default setting end $this->setMessage('success_updated'); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminLoginConfig'); $this->setRedirectUrl($returnUrl); } public function procMemberAdminInsertDesignConfig() { $oModuleController = getController('module'); $args = Context::gets( 'layout_srl', 'skin', 'colorset', 'mlayout_srl', 'mskin' ); $args->layout_srl = $args->layout_srl ? $args->layout_srl : NULL; if(!$args->skin) { $args->skin = 'default'; } if(!$args->colorset) { $args->colorset = 'white'; } $args->mlayout_srl = $args->mlayout_srl ? $args->mlayout_srl : NULL; if(!$args->mskin) { $args->mskin = 'default'; } $output = $oModuleController->updateModuleConfig('member', $args); // default setting end $this->setMessage('success_updated'); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminDesignConfig'); $this->setRedirectUrl($returnUrl); } function createSignupForm($identifier) { global $lang; $oMemberModel = getModel('member'); // Get join form list which is additionally set $extendItems = $oMemberModel->getJoinFormList(); $items = array('user_id', 'password', 'user_name', 'nick_name', 'email_address', 'find_account_question', 'homepage', 'blog', 'birthday', 'signature', 'profile_image', 'image_name', 'image_mark'); $mustRequireds = array('email_address', 'nick_name','password', 'find_account_question'); $orgRequireds = array('email_address', 'password', 'find_account_question', 'user_id', 'nick_name', 'user_name'); $orgUse = array('email_address', 'password', 'find_account_question', 'user_id', 'nick_name', 'user_name', 'homepage', 'blog', 'birthday'); $list_order = array(); foreach($items as $key) { unset($signupItem); $signupItem = new stdClass; $signupItem->isDefaultForm = true; $signupItem->name = $key; $signupItem->title = $key; $signupItem->mustRequired = in_array($key, $mustRequireds); $signupItem->imageType = (strpos($key, 'image') !== false); $signupItem->required = in_array($key, $orgRequireds); $signupItem->isUse = ($config->{$key} == 'Y') || in_array($key, $orgUse); $signupItem->isPublic = ($signupItem->isUse) ? 'Y' : 'N'; if($key == 'find_account_question' || $key == 'password') { $signupItem->isPublic = 'N'; } $signupItem->isIdentifier = ($key == $identifier); if ($signupItem->imageType){ $signupItem->max_width = $config->{$key.'_max_width'}; $signupItem->max_height = $config->{$key.'_max_height'}; } if($signupItem->isIdentifier) array_unshift($list_order, $signupItem); else $list_order[] = $signupItem; } if(is_array($extendItems)) { foreach($extendItems as $form_srl=>$item_info) { unset($signupItem); $signupItem = new stdClass; $signupItem->name = $item_info->column_name; $signupItem->title = $item_info->column_title; $signupItem->type = $item_info->column_type; $signupItem->member_join_form_srl = $form_srl; $signupItem->mustRequired = in_array($key, $mustRequireds); $signupItem->required = ($item_info->required == 'Y'); $signupItem->isUse = ($item_info->is_active == 'Y'); $signupItem->isPublic = ($signupItem->isUse) ? 'Y' : 'N'; $signupItem->description = $item_info->description; if($signupItem->imageType) { $signupItem->max_width = $config->{$key.'_max_width'}; $signupItem->max_height = $config->{$key.'_max_height'}; } $list_order[] = $signupItem; } } return $list_order; } /** * Create ruleset file of signup * @param object $signupForm (user define signup form) * @param string $agreement * @return void */ function _createSignupRuleset($signupForm, $agreement = null){ $xml_file = './files/ruleset/insertMember.xml'; $buff = '' . PHP_EOL. '' . PHP_EOL. '' . PHP_EOL. '' . PHP_EOL. '' . PHP_EOL . '%s' . PHP_EOL . '' . PHP_EOL. ''; $fields = array(); if ($agreement) { $fields[] = ''; } foreach($signupForm as $formInfo) { if($formInfo->required || $formInfo->mustRequired) { if($formInfo->type == 'tel' || $formInfo->type == 'kr_zip') { $fields[] = sprintf('', $formInfo->name); } else if($formInfo->name == 'password') { $fields[] = ''; $fields[] = ''; } else if($formInfo->name == 'find_account_question') { $fields[] = ''; $fields[] = ''; } else if($formInfo->name == 'email_address') { $fields[] = sprintf('', $formInfo->name); } else if($formInfo->name == 'user_id') { $fields[] = sprintf('', $formInfo->name); } else if(strpos($formInfo->name, 'image') !== false) { $fields[] = sprintf('', $formInfo->name, $formInfo->name); } else if($formInfo->name == 'signature') { $fields[] = ''; } else { $fields[] = sprintf('', $formInfo->name); } } } $xml_buff = sprintf($buff, implode(PHP_EOL, $fields)); FileHandler::writeFile($xml_file, $xml_buff); unset($xml_buff); $validator = new Validator($xml_file); $validator->setCacheDir('files/cache'); $validator->getJsPath(); } /** * Create ruleset file of login * @param string $identifier (login identifier) * @return void */ function _createLoginRuleset($identifier) { $xml_file = './files/ruleset/login.xml'; $buff = ''. ''. ''. ''. '%s'. ''; $fields = array(); $trans = array('email_address'=>'email', 'user_id'=> 'userid'); $fields[] = sprintf('', $trans[$identifier]); $fields[] = ''; $xml_buff = sprintf($buff, implode('', $fields)); Filehandler::writeFile($xml_file, $xml_buff); $validator = new Validator($xml_file); $validator->setCacheDir('files/cache'); $validator->getJsPath(); } /** * Create ruleset file of find account * @param string $identifier (login identifier) * @return void */ function _createFindAccountByQuestion($identifier) { $xml_file = './files/ruleset/find_member_account_by_question.xml'; $buff = ''. ''. ''. ''. '%s'. ''; $fields = array(); if($identifier == 'user_id') $fields[] = ''; $fields[] = ''; $fields[] = ''; $fields[] = ''; $xml_buff = sprintf($buff, implode('', $fields)); Filehandler::writeFile($xml_file, $xml_buff); $validator = new Validator($xml_file); $validator->setCacheDir('files/cache'); $validator->getJsPath(); } /** * Add a user group * @return void|Object (void : success, Object : fail) */ function procMemberAdminInsertGroup() { $args = Context::gets('title','description','is_default','image_mark'); $output = $this->insertGroup($args); if(!$output->toBool()) return $output; $this->add('group_srl',''); $this->add('page',Context::get('page')); $this->setMessage('success_registed'); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminGroupList'); $this->setRedirectUrl($returnUrl); } /** * Update user group information * @return void|Object (void : success, Object : fail) */ function procMemberAdminUpdateGroup() { $group_srl = Context::get('group_srl'); $args = Context::gets('group_srl','title','description','is_default','image_mark'); $args->site_srl = 0; $output = $this->updateGroup($args); if(!$output->toBool()) return $output; $this->add('group_srl',''); $this->add('page',Context::get('page')); $this->setMessage('success_updated'); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminGroupList'); $this->setRedirectUrl($returnUrl); } /** * Update user group information * @return void|Object (void : success, Object : fail) */ function procMemberAdminDeleteGroup() { $group_srl = Context::get('group_srl'); $output = $this->deleteGroup($group_srl); if(!$output->toBool()) return $output; $this->add('group_srl',''); $this->add('page',Context::get('page')); $this->setMessage('success_deleted'); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminGroupList'); $this->setRedirectUrl($returnUrl); } /** * Add a join form * @return void|Object (void : success, Object : fail) */ function procMemberAdminInsertJoinForm() { $args = new stdClass(); $args->member_join_form_srl = Context::get('member_join_form_srl'); $args->column_type = Context::get('column_type'); $args->column_name = strtolower(Context::get('column_id')); $args->column_title = Context::get('column_title'); $args->default_value = explode("\n", str_replace("\r", '', Context::get('default_value'))); $args->required = Context::get('required'); $args->is_active = (isset($args->required)); if(!in_array(strtoupper($args->required), array('Y','N')))$args->required = 'N'; $args->description = Context::get('description') ? Context::get('description') : ''; // Default values if(in_array($args->column_type, array('checkbox','select','radio')) && count($args->default_value)) { $args->default_value = serialize($args->default_value); } else { $args->default_value = ''; } // Check ID duplicated $oMemberModel = getModel('member'); $config = $oMemberModel->getMemberConfig(); foreach($config->signupForm as $item) { if($item->name == $args->column_name) { if($args->member_join_form_srl && $args->member_join_form_srl == $item->member_join_form_srl) continue; return new Object(-1,'msg_exists_user_id'); } } // Fix if member_join_form_srl exists. Add if not exists. $isInsert; if(!$args->member_join_form_srl) { $isInsert = true; $args->list_order = $args->member_join_form_srl = getNextSequence(); $output = executeQuery('member.insertJoinForm', $args); } else { $output = executeQuery('member.updateJoinForm', $args); } if(!$output->toBool()) return $output; // memberConfig update $signupItem = new stdClass(); $signupItem->name = $args->column_name; $signupItem->title = $args->column_title; $signupItem->type = $args->column_type; $signupItem->member_join_form_srl = $args->member_join_form_srl; $signupItem->required = ($args->required == 'Y'); $signupItem->isUse = ($args->is_active == 'Y'); $signupItem->description = $args->description; $signupItem->isPublic = 'Y'; $oMemberModel = getModel('member'); $config = $oMemberModel->getMemberConfig(); unset($config->agreement); if($isInsert) { $config->signupForm[] = $signupItem; } else { foreach($config->signupForm as $key=>$val) { if($val->member_join_form_srl == $signupItem->member_join_form_srl) { $config->signupForm[$key] = $signupItem; } } } $oModuleController = getController('module'); $output = $oModuleController->updateModuleConfig('member', $config); $this->setMessage('success_registed'); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminJoinFormList'); $this->setRedirectUrl($returnUrl); } /** * Delete a join form * @return void */ function procMemberAdminDeleteJoinForm() { $member_join_form_srl = Context::get('member_join_form_srl'); $this->deleteJoinForm($member_join_form_srl); $oMemberModel = getModel('member'); $config = $oMemberModel->getMemberConfig(); unset($config->agreement); foreach($config->signupForm as $key=>$val) { if($val->member_join_form_srl == $member_join_form_srl) { unset($config->signupForm[$key]); break; } } $oModuleController = getController('module'); $output = $oModuleController->updateModuleConfig('member', $config); } /** * Move up/down the member join form and modify it * @deprecated * @return void */ function procMemberAdminUpdateJoinForm() { $member_join_form_srl = Context::get('member_join_form_srl'); $mode = Context::get('mode'); switch($mode) { case 'up' : $output = $this->moveJoinFormUp($member_join_form_srl); $msg_code = 'success_moved'; break; case 'down' : $output = $this->moveJoinFormDown($member_join_form_srl); $msg_code = 'success_moved'; break; case 'delete' : $output = $this->deleteJoinForm($member_join_form_srl); $msg_code = 'success_deleted'; break; case 'update' : break; } if(!$output->toBool()) return $output; $this->setMessage($msg_code); } /** * selected member manager layer in dispAdminList * @return void|Object (void : success, Object : fail) */ function procMemberAdminSelectedMemberManage() { $var = Context::getRequestVars(); $groups = $var->groups; $members = $var->member_srls; $oDB = &DB::getInstance(); $oDB->begin(); $oMemberController = getController('member'); foreach($members as $key=>$member_srl) { $args = new stdClass(); $args->member_srl = $member_srl; switch($var->type) { case 'modify': { if(count($groups) > 0) { $args->site_srl = 0; // One of its members to delete all the group $output = executeQuery('member.deleteMemberGroupMember', $args); if(!$output->toBool()) { $oDB->rollback(); return $output; } // Enter one of the loop a foreach($groups as $group_srl) { $output = $oMemberController->addMemberToGroup($args->member_srl,$group_srl); if(!$output->toBool()) { $oDB->rollback(); return $output; } } } if($var->denied) { $args->denied = $var->denied; $output = executeQuery('member.updateMemberDeniedInfo', $args); if(!$output->toBool()) { $oDB->rollback(); return $output; } } break; } case 'delete': { $oMemberController->memberInfo = null; $output = $oMemberController->deleteMember($member_srl); if(!$output->toBool()) { $oDB->rollback(); return $output; } } } } $message = $var->message; // Send a message if($message) { $oCommunicationController = getController('communication'); $logged_info = Context::get('logged_info'); $title = cut_str($message,10,'...'); $sender_member_srl = $logged_info->member_srl; foreach($members as $member_srl) { $oCommunicationController->sendMessage($sender_member_srl, $member_srl, $title, $message, false); } } $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminList'); $this->setRedirectUrl($returnUrl); } /** * Delete the selected members * @return void|Object (void : success, Object : fail) */ function procMemberAdminDeleteMembers() { $target_member_srls = Context::get('target_member_srls'); if(!$target_member_srls) return new Object(-1, 'msg_invalid_request'); $member_srls = explode(',', $target_member_srls); $oMemberController = getController('member'); foreach($member_srls as $member) { $output = $oMemberController->deleteMember($member); if(!$output->toBool()) { $this->setMessage('failed_deleted'); return $output; } } $this->setMessage('success_deleted'); } /** * Update a group of selected memebrs * @return void|Object (void : success, Object : fail) */ function procMemberAdminUpdateMembersGroup() { $member_srl = Context::get('member_srl'); if(!$member_srl) return new Object(-1,'msg_invalid_request'); $member_srls = explode(',',$member_srl); $group_srl = Context::get('group_srls'); if(!is_array($group_srl)) $group_srls = explode('|@|', $group_srl); else $group_srls = $group_srl; $oDB = &DB::getInstance(); $oDB->begin(); // Delete a group of selected members $args = new stdClass; $args->member_srl = $member_srl; $output = executeQuery('member.deleteMembersGroup', $args); if(!$output->toBool()) { $oDB->rollback(); return $output; } // Add to a selected group $group_count = count($group_srls); $member_count = count($member_srls); for($j=0;$j<$group_count;$j++) { $group_srl = (int)trim($group_srls[$j]); if(!$group_srl) continue; for($i=0;$i<$member_count;$i++) { $member_srl = (int)trim($member_srls[$i]); if(!$member_srl) continue; $args = new stdClass; $args->member_srl = $member_srl; $args->group_srl = $group_srl; $output = executeQuery('member.addMemberToGroup', $args); if(!$output->toBool()) { $oDB->rollback(); return $output; } } } $oDB->commit(); $this->setMessage('success_updated'); if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON'))) { global $lang; htmlHeader(); alertScript($lang->success_updated); reload(true); closePopupScript(); htmlFooter(); Context::close(); exit; } } /** * Add a denied ID * @return void */ function procMemberAdminInsertDeniedID() { $user_ids = Context::get('user_id'); $user_ids = explode(',',$user_ids); $success_ids = array(); foreach($user_ids as $val) { $output = $this->insertDeniedID($val, ''); if($output->toBool()) $success_ids[] = $val; } $this->add('user_ids', implode(',',$success_ids)); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminDeniedIDList'); $this->setRedirectUrl($returnUrl); } /** * Add a denied nick name * @return void */ function procMemberAdminUpdateDeniedNickName() { $nick_name = Context::get('nick_name'); $mode = Context::get('mode'); $mode = $mode ? $mode : 'insert'; if($mode == 'delete') { $output = $this->deleteDeniedNickName($nick_name); if(!$output->toBool()) { return $output; } $msg_code = 'success_deleted'; $this->setMessage($msg_code); } else { $nick_names = explode(',',$nick_name); $success_nick_names = array(); foreach($nick_names as $val) { $output = $this->insertDeniedNickName($val, ''); if($output->toBool()) $success_nick_names[] = $val; } $this->add('nick_names', implode(',',$success_nick_names)); } } /** * Update denied ID * @return void|Object (void : success, Object : fail) */ function procMemberAdminUpdateDeniedID() { $user_id = Context::get('user_id'); $mode = Context::get('mode'); switch($mode) { case 'delete' : $output = $this->deleteDeniedID($user_id); if(!$output->toBool()) return $output; $msg_code = 'success_deleted'; break; } $this->add('page',Context::get('page')); $this->setMessage($msg_code); } /** * Add an administrator * @param object $args * @return object (info of added member) */ function insertAdmin($args) { // Assign an administrator $args->is_admin = 'Y'; // Get admin group and set $oMemberModel = getModel('member'); $admin_group = $oMemberModel->getAdminGroup(); $args->group_srl_list = $admin_group->group_srl; $oMemberController = getController('member'); return $oMemberController->insertMember($args); } /** * Change the group values of member * @param int $source_group_srl * @param int $target_group_srl * @return Object */ function changeGroup($source_group_srl, $target_group_srl) { $args = new stdClass; $args->source_group_srl = $source_group_srl; $args->target_group_srl = $target_group_srl; return executeQuery('member.changeGroup', $args); } /** * find_account_answerInsert a group * @param object $args * @return Object */ function insertGroup($args) { if(!$args->site_srl) $args->site_srl = 0; // Check the value of is_default. if($args->is_default!='Y') { $args->is_default = 'N'; } else { $output = executeQuery('member.updateGroupDefaultClear', $args); if(!$output->toBool()) return $output; } if(!$args->group_srl) $args->group_srl = getNextSequence(); $output = executeQuery('member.insertGroup', $args); $this->_deleteMemberGroupCache($args->site_srl); return $output; } /** * Modify Group Information * @param object $args * @return Object */ function updateGroup($args) { if(!$args->site_srl) $args->site_srl = 0; // Check the value of is_default. if(!$args->group_srl) return new Object(-1, 'lang->msg_not_founded'); if($args->is_default!='Y') { $args->is_default = 'N'; } else { $output = executeQuery('member.updateGroupDefaultClear', $args); if(!$output->toBool()) return $output; } $output = executeQuery('member.updateGroup', $args); $this->_deleteMemberGroupCache($args->site_srl); return $output; } /** * Delete a Group * @param int $group_srl * @param int $site_srl * @return Object */ function deleteGroup($group_srl, $site_srl = 0) { // Create a member model object $oMemberModel = getModel('member'); // Check the group_srl (If is_default == 'Y', it cannot be deleted) $columnList = array('group_srl', 'is_default'); $group_info = $oMemberModel->getGroup($group_srl, $columnList); if(!$group_info) return new Object(-1, 'lang->msg_not_founded'); if($group_info->is_default == 'Y') return new Object(-1, 'msg_not_delete_default'); // Get groups where is_default == 'Y' $columnList = array('site_srl', 'group_srl'); $default_group = $oMemberModel->getDefaultGroup($site_srl, $columnList); $default_group_srl = $default_group->group_srl; // Change to default_group_srl $this->changeGroup($group_srl, $default_group_srl); $args = new stdClass; $args->group_srl = $group_srl; $output = executeQuery('member.deleteGroup', $args); $this->_deleteMemberGroupCache($site_srl); return $output; } /** * Set group config * @return void */ public function procMemberAdminGroupConfig() { $vars = Context::getRequestVars(); $oMemberModel = getModel('member'); $oModuleController = getController('module'); // group image mark option $config = $oMemberModel->getMemberConfig(); $config->group_image_mark = $vars->group_image_mark; unset($config->agreement); $output = $oModuleController->updateModuleConfig('member', $config); $defaultGroup = $oMemberModel->getDefaultGroup(0); $defaultGroupSrl = $defaultGroup->group_srl; $group_srls = $vars->group_srls; foreach($group_srls as $order=>$group_srl) { $isInsert = false; $update_args = new stdClass(); $update_args->title = $vars->group_titles[$order]; $update_args->description = $vars->descriptions[$order]; $update_args->image_mark = $vars->image_marks[$order]; $update_args->list_order = $order + 1; if(!$update_args->title) continue; if(is_numeric($group_srl)) { $update_args->group_srl = $group_srl; $output = $this->updateGroup($update_args); } else { $update_args->group_srl = getNextSequence(); $output = $this->insertGroup($update_args); } if($vars->defaultGroup == $group_srl) { $defaultGroupSrl = $update_args->group_srl; } } //set default group $default_args = $oMemberModel->getGroup($defaultGroupSrl); $default_args->is_default = 'Y'; $default_args->group_srl = $defaultGroupSrl; $output = $this->updateGroup($default_args); $this->setMessage(Context::getLang('success_updated').' ('.Context::getLang('msg_insert_group_name_detail').')'); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminGroupList'); $this->setRedirectUrl($returnUrl); } /** * Set group order * @return void */ function procMemberAdminUpdateGroupOrder() { $vars = Context::getRequestVars(); foreach($vars->group_srls as $key => $val) { $args = new stdClass; $args->group_srl = $val; $args->list_order = $key + 1; executeQuery('member.updateMemberGroupListOrder', $args); } $this->_deleteMemberGroupCache($vars->site_srl); $this->setRedirectUrl(getNotEncodedUrl('', 'module', 'admin', 'act', 'dispMemberAdminGroupList')); } /** * Delete cached group data * @return void */ function _deleteMemberGroupCache($site_srl = 0) { //remove from cache $oCacheHandler = &CacheHandler::getInstance('object', null, true); if($oCacheHandler->isSupport()) { $cache_key = 'object_groups:'.$site_srl; $oCacheHandler->delete($cache_key); } } /** * Register denied ID * @param string $user_id * @param string $description * @return Object */ function insertDeniedID($user_id, $description = '') { $args = new stdClass(); $args->user_id = $user_id; $args->description = $description; $args->list_order = -1*getNextSequence(); return executeQuery('member.insertDeniedID', $args); } function insertDeniedNickName($nick_name, $description = '') { $args = new stdClass(); $args->nick_name = $nick_name; $args->description = $description; return executeQuery('member.insertDeniedNickName', $args); } /** * delete a denied id * @param string $user_id * @return object */ function deleteDeniedID($user_id) { $args = new stdClass; $args->user_id = $user_id; return executeQuery('member.deleteDeniedID', $args); } /** * delete a denied nick name * @param string $nick_name * @return object */ function deleteDeniedNickName($nick_name) { $args = new stdClass; $args->nick_name = $nick_name; return executeQuery('member.deleteDeniedNickName', $args); } /** * Delete a join form * @param int $member_join_form_srl * @return Object */ function deleteJoinForm($member_join_form_srl) { $args = new stdClass(); $args->member_join_form_srl = $member_join_form_srl; $output = executeQuery('member.deleteJoinForm', $args); return $output; } /** * Move up a join form * @deprecated * @param int $member_join_form_srl * @return Object */ function moveJoinFormUp($member_join_form_srl) { $oMemberModel = getModel('member'); // Get information of the join form $args = new stdClass; $args->member_join_form_srl = $member_join_form_srl; $output = executeQuery('member.getJoinForm', $args); $join_form = $output->data; $list_order = $join_form->list_order; // Get a list of all join forms $join_form_list = $oMemberModel->getJoinFormList(); $join_form_srl_list = array_keys($join_form_list); if(count($join_form_srl_list)<2) return new Object(); $prev_member_join_form = NULL; foreach($join_form_list as $key => $val) { if($val->member_join_form_srl == $member_join_form_srl) break; $prev_member_join_form = $val; } // Return if no previous join form exists if(!$prev_member_join_form) return new Object(); // Information of the join form $cur_args = new stdClass; $cur_args->member_join_form_srl = $member_join_form_srl; $cur_args->list_order = $prev_member_join_form->list_order; // Information of the target join form $prev_args = new stdClass; $prev_args->member_join_form_srl = $prev_member_join_form->member_join_form_srl; $prev_args->list_order = $list_order; // Execute Query $output = executeQuery('member.updateMemberJoinFormListorder', $cur_args); if(!$output->toBool()) return $output; executeQuery('member.updateMemberJoinFormListorder', $prev_args); if(!$output->toBool()) return $output; return new Object(); } /** * Move down a join form * @deprecated * @param int $member_join_form_srl * @return Object */ function moveJoinFormDown($member_join_form_srl) { $oMemberModel = getModel('member'); // Get information of the join form $args = new stdClass; $args->member_join_form_srl = $member_join_form_srl; $output = executeQuery('member.getJoinForm', $args); $join_form = $output->data; $list_order = $join_form->list_order; // Get information of all join forms $join_form_list = $oMemberModel->getJoinFormList(); $join_form_srl_list = array_keys($join_form_list); if(count($join_form_srl_list)<2) return new Object(); for($i=0;$imember_join_form_srl = $member_join_form_srl; $cur_args->list_order = $next_member_join_form->list_order; // Information of the target join form $next_args = new stdClass; $next_args->member_join_form_srl = $next_member_join_form->member_join_form_srl; $next_args->list_order = $list_order; // Execute Query $output = executeQuery('member.updateMemberJoinFormListorder', $cur_args); if(!$output->toBool()) return $output; $output = executeQuery('member.updateMemberJoinFormListorder', $next_args); if(!$output->toBool()) return $output; return new Object(); } } /* End of file member.admin.controller.php */ /* Location: ./modules/member/member.admin.controller.php */