issue 2662 member, layout

git-svn-id: http://xe-core.googlecode.com/svn/branches/maserati@12251 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ovclas 2012-11-19 06:03:22 +00:00
parent aba8de04be
commit cec308eef1
15 changed files with 8864 additions and 8331 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,283 +1,303 @@
<?php
/**
* @class memberAdminModel
* @author NHN (developers@xpressengine.com)
* admin model class of member module
**/
/**
* @class memberAdminModel
* @author NHN (developers@xpressengine.com)
* admin model class of member module
*/
class memberAdminModel extends member
{
/**
* info of member
* @var object
*/
var $member_info = NULL;
class memberAdminModel extends member {
/**
* info of member groups
* @var array
*/
var $member_groups = NULL;
/**
* info of member
* @var object
**/
var $member_info = NULL;
/**
* info of sign up form
* @var array
*/
var $join_form_list = NULL;
/**
* info of member groups
* @var array
**/
var $member_groups = NULL;
/**
* Initialization
* @return void
*/
function init()
{
}
/**
* info of sign up form
* @var array
**/
var $join_form_list = NULL;
/**
* Get a member list
*
* @return object|array (object : when member count is 1, array : when member count is more than 1)
*/
function getMemberList()
{
// Search option
$args->is_admin = Context::get('is_admin')=='Y'?'Y':'';
$args->is_denied = Context::get('is_denied')=='Y'?'Y':'';
$args->selected_group_srl = Context::get('selected_group_srl');
/**
* Initialization
* @return void
**/
function init() {
}
$filter = Context::get('filter_type');
switch($filter)
{
case 'super_admin' : $args->is_admin = 'Y';break;
case 'site_admin' : $args->member_srls = $this->getSiteAdminMemberSrls();break;
case 'enable' : $args->is_denied = 'N';break;
case 'disable' : $args->is_denied = 'Y';break;
}
/**
* Get a member list
*
* @return object|array (object : when member count is 1, array : when member count is more than 1)
**/
function getMemberList() {
// Search option
$args->is_admin = Context::get('is_admin')=='Y'?'Y':'';
$args->is_denied = Context::get('is_denied')=='Y'?'Y':'';
$args->selected_group_srl = Context::get('selected_group_srl');
$search_target = trim(Context::get('search_target'));
$search_keyword = trim(Context::get('search_keyword'));
$filter = Context::get('filter_type');
switch($filter){
case 'super_admin' : $args->is_admin = 'Y';break;
case 'site_admin' : $args->member_srls = $this->getSiteAdminMemberSrls();break;
case 'enable' : $args->is_denied = 'N';break;
case 'disable' : $args->is_denied = 'Y';break;
}
$search_target = trim(Context::get('search_target'));
$search_keyword = trim(Context::get('search_keyword'));
if($search_target && $search_keyword) {
switch($search_target) {
case 'user_id' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_user_id = $search_keyword;
break;
case 'user_name' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_user_name = $search_keyword;
break;
case 'nick_name' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_nick_name = $search_keyword;
$args->html_nick_name = htmlspecialchars($search_keyword);
break;
case 'email_address' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_email_address = $search_keyword;
break;
case 'regdate' :
$args->s_regdate = preg_replace("/[^0-9]/","",$search_keyword);
break;
case 'regdate_more' :
$args->s_regdate_more = substr(preg_replace("/[^0-9]/","",$search_keyword) . '00000000000000',0,14);
break;
case 'regdate_less' :
$args->s_regdate_less = substr(preg_replace("/[^0-9]/","",$search_keyword) . '00000000000000',0,14);
break;
case 'last_login' :
$args->s_last_login = $search_keyword;
break;
case 'last_login_more' :
$args->s_last_login_more = substr(preg_replace("/[^0-9]/","",$search_keyword) . '00000000000000',0,14);
break;
case 'last_login_less' :
$args->s_last_login_less = substr(preg_replace("/[^0-9]/","",$search_keyword) . '00000000000000',0,14);
break;
case 'extra_vars' :
$args->s_extra_vars = $search_keyword;
break;
}
}
// Change the query id if selected_group_srl exists (for table join)
$sort_order = Context::get('sort_order');
$sort_index = Context::get('sort_index');
if(!$sort_index) {
$sort_index = "list_order";
}
if(!$sort_order) {
$sort_order = 'asc';
}
if($sort_order != 'asc')
if($search_target && $search_keyword)
{
switch($search_target)
{
$sort_order = 'desc';
case 'user_id' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_user_id = $search_keyword;
break;
case 'user_name' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_user_name = $search_keyword;
break;
case 'nick_name' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_nick_name = $search_keyword;
$args->html_nick_name = htmlspecialchars($search_keyword);
break;
case 'email_address' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_email_address = $search_keyword;
break;
case 'regdate' :
$args->s_regdate = preg_replace("/[^0-9]/","",$search_keyword);
break;
case 'regdate_more' :
$args->s_regdate_more = substr(preg_replace("/[^0-9]/","",$search_keyword) . '00000000000000',0,14);
break;
case 'regdate_less' :
$args->s_regdate_less = substr(preg_replace("/[^0-9]/","",$search_keyword) . '00000000000000',0,14);
break;
case 'last_login' :
$args->s_last_login = $search_keyword;
break;
case 'last_login_more' :
$args->s_last_login_more = substr(preg_replace("/[^0-9]/","",$search_keyword) . '00000000000000',0,14);
break;
case 'last_login_less' :
$args->s_last_login_less = substr(preg_replace("/[^0-9]/","",$search_keyword) . '00000000000000',0,14);
break;
case 'extra_vars' :
$args->s_extra_vars = $search_keyword;
break;
}
if($args->selected_group_srl) {
$query_id = 'member.getMemberListWithinGroup';
$args->sort_index = "member.".$sort_index;
} else {
$query_id = 'member.getMemberList';
$args->sort_index = $sort_index;
}
$args->sort_order = $sort_order;
Context::set('sort_order', $sort_order);
// Other variables
$args->page = Context::get('page');
$args->list_count = 40;
$args->page_count = 10;
$output = executeQuery($query_id, $args);
return $output;
}
/**
* Get a memebr list for each site
*
* @param int $site_srl
* @param int $page
*
* @return array
**/
function getSiteMemberList($site_srl, $page = 1) {
$args->site_srl = $site_srl;
$args->page = $page;
$args->list_count = 40;
$args->page_count = 10;
$query_id = 'member.getSiteMemberList';
$output = executeQueryArray($query_id, $args);
return $output;
}
/**
* Get member_srls lists about site admins
*
* @return array
**/
function getSiteAdminMemberSrls(){
$output = executeQueryArray('member.getSiteAdminMemberSrls');
if (!$output->toBool() || !$output->data) return array();
$member_srls = array();
foreach($output->data as $member_info){
$member_srls[] = $member_info->member_srl;
}
return $member_srls;
}
/**
* Return colorset list of a skin in the member module
*
* @return void
**/
function getMemberAdminColorset() {
$skin = Context::get('skin');
if(!$skin) $tpl = "";
else {
$oModuleModel = &getModel('module');
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
Context::set('skin_info', $skin_info);
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('member');
if(!$config->colorset) $config->colorset = "white";
Context::set('config', $config);
$oTemplate = &TemplateHandler::getInstance();
$tpl = $oTemplate->compile($this->module_path.'tpl', 'new_colorset_list');
}
$this->add('tpl', $tpl);
}
/**
* Return member count with date
*
* @param string $date
*
* @return int
**/
function getMemberCountByDate($date = '') {
if($date) $args->regDate = date('Ymd', strtotime($date));
$output = executeQuery('member.getMemberCountByDate', $args);
if(!$output->toBool()) return 0;
return $output->data->count;
}
/**
* Return site join member count with date
*
* @param string $date
*
* @return int
**/
function getMemberGroupMemberCountByDate($date = '') {
if($date) $args->regDate = date('Ymd', strtotime($date));
$output = executeQuery('member.getMemberGroupMemberCountByDate', $args);
if(!$output->toBool()) return 0;
return count($output->data);
}
/**
* Return add join Form
*
* @return void
**/
function getMemberAdminInsertJoinForm() {
$member_join_form_srl = Context::get('member_join_form_srl');
$args->member_join_form_srl = $member_join_form_srl;
$output = executeQuery('member.getJoinForm', $args);
if($output->toBool() && $output->data){
$formInfo = $output->data;
$default_value = $formInfo->default_value;
if ($default_value){
$default_value = unserialize($default_value);
Context::set('default_value', $default_value);
}
Context::set('formInfo', $output->data);
}
$oTemplate = &TemplateHandler::getInstance();
$tpl = $oTemplate->compile($this->module_path.'tpl', 'insert_join_form');
$this->add('tpl', str_replace("\n"," ",$tpl));
// Change the query id if selected_group_srl exists (for table join)
$sort_order = Context::get('sort_order');
$sort_index = Context::get('sort_index');
if(!$sort_index)
{
$sort_index = "list_order";
}
/**
* check allowed target ip address when login for admin.
*
* @return boolean (true : allowed, false : refuse)
**/
function getMemberAdminIPCheck() {
$db_info = Context::getDBInfo();
$admin_ip_list = $db_info->admin_ip_list;
$admin_ip_list = explode(",",$admin_ip_list);
$oMemberModel = &getModel('member');
$ip = $_SERVER['REMOTE_ADDR'];
$falg = false;
foreach($admin_ip_list as $admin_ip_list_key => $admin_ip_value) {
if(preg_match('/^\d{1,3}(?:.(\d{1,3}|\*)){3}\s*$/', $admin_ip_value, $matches) && $ip) {
$admin_ip = $matches[0];
$admin_ip = str_replace('*','',$admin_ip);
$admin_ip_patterns[] = preg_quote($admin_ip);
$admin_ip_pattern = '/^('.implode($admin_ip_patterns,'|').')/';
if(preg_match($admin_ip_pattern, $ip, $matches)) return true;
$flag = true;
}
}
if(!$flag) return true;
return false;
if(!$sort_order)
{
$sort_order = 'asc';
}
}
?>
if($sort_order != 'asc')
{
$sort_order = 'desc';
}
if($args->selected_group_srl)
{
$query_id = 'member.getMemberListWithinGroup';
$args->sort_index = "member.".$sort_index;
}
else
{
$query_id = 'member.getMemberList';
$args->sort_index = $sort_index;
}
$args->sort_order = $sort_order;
Context::set('sort_order', $sort_order);
// Other variables
$args->page = Context::get('page');
$args->list_count = 40;
$args->page_count = 10;
$output = executeQuery($query_id, $args);
return $output;
}
/**
* Get a memebr list for each site
*
* @param int $site_srl
* @param int $page
*
* @return array
*/
function getSiteMemberList($site_srl, $page = 1)
{
$args->site_srl = $site_srl;
$args->page = $page;
$args->list_count = 40;
$args->page_count = 10;
$query_id = 'member.getSiteMemberList';
$output = executeQueryArray($query_id, $args);
return $output;
}
/**
* Get member_srls lists about site admins
*
* @return array
*/
function getSiteAdminMemberSrls()
{
$output = executeQueryArray('member.getSiteAdminMemberSrls');
if(!$output->toBool() || !$output->data) return array();
$member_srls = array();
foreach($output->data as $member_info)
{
$member_srls[] = $member_info->member_srl;
}
return $member_srls;
}
/**
* Return colorset list of a skin in the member module
*
* @return void
*/
function getMemberAdminColorset()
{
$skin = Context::get('skin');
if(!$skin) $tpl = "";
else
{
$oModuleModel = &getModel('module');
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
Context::set('skin_info', $skin_info);
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('member');
if(!$config->colorset) $config->colorset = "white";
Context::set('config', $config);
$oTemplate = &TemplateHandler::getInstance();
$tpl = $oTemplate->compile($this->module_path.'tpl', 'new_colorset_list');
}
$this->add('tpl', $tpl);
}
/**
* Return member count with date
*
* @param string $date
*
* @return int
*/
function getMemberCountByDate($date = '')
{
if($date) $args->regDate = date('Ymd', strtotime($date));
$output = executeQuery('member.getMemberCountByDate', $args);
if(!$output->toBool()) return 0;
return $output->data->count;
}
/**
* Return site join member count with date
*
* @param string $date
*
* @return int
*/
function getMemberGroupMemberCountByDate($date = '')
{
if($date) $args->regDate = date('Ymd', strtotime($date));
$output = executeQuery('member.getMemberGroupMemberCountByDate', $args);
if(!$output->toBool()) return 0;
return count($output->data);
}
/**
* Return add join Form
*
* @return void
*/
function getMemberAdminInsertJoinForm()
{
$member_join_form_srl = Context::get('member_join_form_srl');
$args->member_join_form_srl = $member_join_form_srl;
$output = executeQuery('member.getJoinForm', $args);
if($output->toBool() && $output->data)
{
$formInfo = $output->data;
$default_value = $formInfo->default_value;
if($default_value)
{
$default_value = unserialize($default_value);
Context::set('default_value', $default_value);
}
Context::set('formInfo', $output->data);
}
$oTemplate = &TemplateHandler::getInstance();
$tpl = $oTemplate->compile($this->module_path.'tpl', 'insert_join_form');
$this->add('tpl', str_replace("\n"," ",$tpl));
}
/**
* check allowed target ip address when login for admin.
*
* @return boolean (true : allowed, false : refuse)
*/
function getMemberAdminIPCheck()
{
$db_info = Context::getDBInfo();
$admin_ip_list = $db_info->admin_ip_list;
$admin_ip_list = explode(",",$admin_ip_list);
$oMemberModel = &getModel('member');
$ip = $_SERVER['REMOTE_ADDR'];
$falg = false;
foreach($admin_ip_list as $admin_ip_list_key => $admin_ip_value)
{
if(preg_match('/^\d{1,3}(?:.(\d{1,3}|\*)){3}\s*$/', $admin_ip_value, $matches) && $ip)
{
$admin_ip = $matches[0];
$admin_ip = str_replace('*','',$admin_ip);
$admin_ip_patterns[] = preg_quote($admin_ip);
$admin_ip_pattern = '/^('.implode($admin_ip_patterns,'|').')/';
if(preg_match($admin_ip_pattern, $ip, $matches)) return true;
$flag = true;
}
}
if(!$flag) return true;
return false;
}
}
/* End of file member.admin.model.php */
/* Location: ./modules/member/member.admin.model.php */

File diff suppressed because it is too large Load diff

View file

@ -1,53 +1,58 @@
<?php
/**
* @class memberAPI
* @author NHN (developers@xpressengine.com)
* API Processing of View Action in the member module
**/
/**
* @class memberAPI
* @author NHN (developers@xpressengine.com)
* API Processing of View Action in the member module
*/
class memberAPI extends member
{
/**
* Content List
*
* @param Object $oModule
*
* @return void
*/
function dispSavedDocumentList(&$oModule)
{
$document_list = $this->arrangeContentList(Context::get('document_list'));
$oModule->add('document_list',$document_list);
$oModule->add('page_navigation',Context::get('page_navigation'));
}
class memberAPI extends member {
/**
* Arrange Contents
*
* @param array $content_list
*
* @return array
*/
function arrangeContentList($content_list)
{
$output = array();
if(count($content_list))
{
foreach($content_list as $key => $val) $output[] = $this->arrangeContent($val);
}
return $output;
}
/**
* Content List
*
* @param Object $oModule
*
* @return void
**/
function dispSavedDocumentList(&$oModule) {
$document_list = $this->arrangeContentList(Context::get('document_list'));
$oModule->add('document_list',$document_list);
$oModule->add('page_navigation',Context::get('page_navigation'));
}
/**
* Arrange Contents
*
* @param array $content_list
*
* @return array
**/
function arrangeContentList($content_list) {
$output = array();
if(count($content_list)) {
foreach($content_list as $key => $val) $output[] = $this->arrangeContent($val);
}
return $output;
}
/**
* Arrange Contents
*
* @param array $content_list
*
* @return array
**/
function arrangeContent($content) {
$output = null;
if($content){
$output= $content->gets('document_srl','category_srl','nick_name','user_id','user_name','title','content','tags','voted_count','blamed_count','comment_count','regdate','last_update','extra_vars','status');
}
return $output;
}
}
?>
/**
* Arrange Contents
*
* @param array $content_list
*
* @return array
*/
function arrangeContent($content)
{
$output = null;
if($content)
{
$output= $content->gets('document_srl','category_srl','nick_name','user_id','user_name','title','content','tags','voted_count','blamed_count','comment_count','regdate','last_update','extra_vars','status');
}
return $output;
}
}
/* End of file member.api.php */
/* Location: ./modules/member/member.api.php */

View file

@ -1,433 +1,455 @@
<?php
/**
* @class member
* @author NHN (developers@xpressengine.com)
* high class of the member module
**/
class member extends ModuleObject {
/**
* @class member
* @author NHN (developers@xpressengine.com)
* high class of the member module
*/
class member extends ModuleObject {
/**
* Use sha1 encryption
*
* @var boolean
*/
var $useSha1 = false;
/**
* Use sha1 encryption
*
* @var boolean
**/
var $useSha1 = false;
/**
* constructor
*
* @return void
*/
function member()
{
if(!Context::isInstalled()) return;
/**
* constructor
*
* @return void
**/
function member() {
if(!Context::isInstalled()) return;
$oModuleModel = &getModel('module');
$member_config = $oModuleModel->getModuleConfig('member');
// Set to use SSL upon actions related member join/information/password and so on
if(Context::get('_use_ssl') == 'optional') {
Context::addSSLAction('dispMemberModifyPassword');
Context::addSSLAction('dispMemberSignUpForm');
Context::addSSLAction('dispMemberModifyInfo');
Context::addSSLAction('dispMemberModifyEmailAddress');
Context::addSSLAction('dispMemberGetTempPassword');
Context::addSSLAction('dispMemberResendAuthMail');
Context::addSSLAction('dispMemberLoginForm');
Context::addSSLAction('dispMemberFindAccount');
Context::addSSLAction('dispMemberLeave');
Context::addSSLAction('procMemberLogin');
Context::addSSLAction('procMemberModifyPassword');
Context::addSSLAction('procMemberInsert');
Context::addSSLAction('procMemberModifyInfo');
Context::addSSLAction('procMemberFindAccount');
Context::addSSLAction('procMemberModifyEmailAddress');
Context::addSSLAction('procMemberUpdateAuthMail');
Context::addSSLAction('procMemberResendAuthMail');
Context::addSSLAction('procMemberLeave');
//Context::addSSLAction('getMemberMenu');
}
}
/**
* Implement if additional tasks are necessary when installing
*
* @return Object
**/
function moduleInstall() {
// Register action forward (to use in administrator mode)
$oModuleController = &getController('module');
$oDB = &DB::getInstance();
$oDB->addIndex("member_group","idx_site_title", array("site_srl","title"),true);
$oModuleModel = &getModel('module');
$args = $oModuleModel->getModuleConfig('member');
$isNotInstall = empty($args);
// Set the basic information
$args->enable_join = 'Y';
$args->enable_openid = 'N';
if(!$args->enable_auth_mail) $args->enable_auth_mail = 'N';
if(!$args->image_name) $args->image_name = 'Y';
if(!$args->image_mark) $args->image_mark = 'Y';
if(!$args->profile_image) $args->profile_image = 'Y';
if(!$args->image_name_max_width) $args->image_name_max_width = '90';
if(!$args->image_name_max_height) $args->image_name_max_height = '20';
if(!$args->image_mark_max_width) $args->image_mark_max_width = '20';
if(!$args->image_mark_max_height) $args->image_mark_max_height = '20';
if(!$args->profile_image_max_width) $args->profile_image_max_width = '80';
if(!$args->profile_image_max_height) $args->profile_image_max_height = '80';
if($args->group_image_mark!='Y') $args->group_image_mark = 'N';
global $lang;
$oMemberModel = &getModel('member');
// Create a member controller object
$oMemberController = &getController('member');
$oMemberAdminController = &getAdminController('member');
if(!$args->signupForm || !is_array($args->signupForm))
{
$identifier = $isNotInstall ? 'email_address' : 'user_id';
$args->signupForm = $oMemberAdminController->createSignupForm($identifier);
$args->identifier = $identifier;
$oModuleController->insertModuleConfig('member',$args);
// Create Ruleset File
FileHandler::makeDir('./files/ruleset');
$oMemberAdminController->_createSignupRuleset($args->signupForm);
$oMemberAdminController->_createLoginRuleset($args->identifier);
$oMemberAdminController->_createFindAccountByQuestion($args->identifier);
}
$groups = $oMemberModel->getGroups();
if(!count($groups)) {
// Set an administrator, regular member(group1), and associate member(group2)
$group_args->title = Context::getLang('admin_group');
$group_args->is_default = 'N';
$group_args->is_admin = 'Y';
$output = $oMemberAdminController->insertGroup($group_args);
unset($group_args);
$group_args->title = Context::getLang('default_group_1');
$group_args->is_default = 'Y';
$group_args->is_admin = 'N';
$output = $oMemberAdminController->insertGroup($group_args);
unset($group_args);
$group_args->title = Context::getLang('default_group_2');
$group_args->is_default = 'N';
$group_args->is_admin = 'N';
$oMemberAdminController->insertGroup($group_args);
}
// Configure administrator information
$admin_args->is_admin = 'Y';
$output = executeQuery('member.getMemberList', $admin_args);
if(!$output->data) {
$admin_info = Context::gets('password','nick_name','email_address');
if($admin_info->email_address) {
$admin_info->user_id = 'admin';
$admin_info->user_name = 'admin';
// Insert admin information
$oMemberAdminController->insertAdmin($admin_info);
// Log-in Processing
$output = $oMemberController->doLogin($admin_info->email_address);
}
}
// Register denied ID(default + module name)
$oModuleModel = &getModel('module');
$module_list = $oModuleModel->getModuleList();
foreach($module_list as $key => $val) {
$oMemberAdminController->insertDeniedID($val->module,'');
}
$oMemberAdminController->insertDeniedID('www','');
$oMemberAdminController->insertDeniedID('root','');
$oMemberAdminController->insertDeniedID('administrator','');
$oMemberAdminController->insertDeniedID('telnet','');
$oMemberAdminController->insertDeniedID('ftp','');
$oMemberAdminController->insertDeniedID('http','');
// Create cache directory to use in the member module
FileHandler::makeDir('./files/member_extra_info/image_name');
FileHandler::makeDir('./files/member_extra_info/image_mark');
FileHandler::makeDir('./files/member_extra_info/profile_image');
FileHandler::makeDir('./files/member_extra_info/signature');
return new Object();
}
/**
* a method to check if successfully installed
*
* @return boolean
**/
function checkUpdate() {
$oDB = &DB::getInstance();
$oModuleModel = &getModel('module');
// check member directory (11/08/2007 added)
if(!is_dir("./files/member_extra_info")) return true;
// check member directory (22/10/2007 added)
if(!is_dir("./files/member_extra_info/profile_image")) return true;
// Add a column(is_register) to "member_auth_mail" table (22/04/2008)
$act = $oDB->isColumnExists("member_auth_mail", "is_register");
if(!$act) return true;
// Add a column(site_srl) to "member_group_member" table (11/15/2008)
if(!$oDB->isColumnExists("member_group_member", "site_srl")) return true;
if(!$oDB->isColumnExists("member_group", "site_srl")) return true;
if($oDB->isIndexExists("member_group","uni_member_group_title")) return true;
// Add a column for list_order (05/18/2011)
if(!$oDB->isColumnExists("member_group", "list_order")) return true;
// image_mark 추가 (2009. 02. 14)
if(!$oDB->isColumnExists("member_group", "image_mark")) return true;
// Add c column for password expiration date
if(!$oDB->isColumnExists("member", "change_password_date")) return true;
// Add columns of question and answer to verify a password
if(!$oDB->isColumnExists("member", "find_account_question")) return true;
if(!$oDB->isColumnExists("member", "find_account_answer")) return true;
if(!$oDB->isColumnExists("member", "list_order")) return true;
if(!$oDB->isIndexExists("member","idx_list_order")) return true;
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('member');
// check signup form ordering info
if (!$config->signupForm) return true;
// check agreement field exist
if ($config->agreement) return true;
if($config->skin)
{
$config_parse = explode('.', $config->skin);
if (count($config_parse) > 1)
{
$template_path = sprintf('./themes/%s/modules/member/', $config_parse[0]);
if(is_dir($template_path)) return true;
}
}
// supprot multilanguage agreement.
if (is_readable('./files/member_extra_info/agreement.txt')) return true;
if (!is_readable('./files/ruleset/insertMember.xml')) return true;
if (!is_readable('./files/ruleset/login.xml')) return true;
if (!is_readable('./files/ruleset/find_member_account_by_question.xml')) return true;
return false;
}
/**
* Execute update
*
* @return Object
**/
function moduleUpdate() {
$oDB = &DB::getInstance();
$oModuleController = &getController('module');
// Check member directory
FileHandler::makeDir('./files/member_extra_info/image_name');
FileHandler::makeDir('./files/member_extra_info/image_mark');
FileHandler::makeDir('./files/member_extra_info/signature');
FileHandler::makeDir('./files/member_extra_info/profile_image');
// Add a column
if (!$oDB->isColumnExists("member_auth_mail", "is_register")) {
$oDB->addColumn("member_auth_mail", "is_register", "char", 1, "N", true);
}
// Add a column(site_srl) to "member_group_member" table (11/15/2008)
if (!$oDB->isColumnExists("member_group_member", "site_srl")) {
$oDB->addColumn("member_group_member", "site_srl", "number", 11, 0, true);
$oDB->addIndex("member_group_member", "idx_site_srl", "site_srl", false);
}
if (!$oDB->isColumnExists("member_group", "site_srl")) {
$oDB->addColumn("member_group", "site_srl", "number", 11, 0, true);
$oDB->addIndex("member_group","idx_site_title", array("site_srl","title"),true);
}
if($oDB->isIndexExists("member_group","uni_member_group_title")) {
$oDB->dropIndex("member_group","uni_member_group_title",true);
}
// Add a column(list_order) to "member_group" table (05/18/2011)
if (!$oDB->isColumnExists("member_group", "list_order")) {
$oDB->addColumn("member_group", "list_order", "number", 11, '', true);
$oDB->addIndex("member_group","idx_list_order", "list_order",false);
$output = executeQuery('member.updateAllMemberGroupListOrder');
}
// Add a column for image_mark (02/14/2009)
if(!$oDB->isColumnExists("member_group", "image_mark")) {
$oDB->addColumn("member_group", "image_mark", "text");
}
// Add a column for password expiration date
if(!$oDB->isColumnExists("member", "change_password_date")) {
$oDB->addColumn("member", "change_password_date", "date");
executeQuery('member.updateAllChangePasswordDate');
}
// Add columns of question and answer to verify a password
if(!$oDB->isColumnExists("member", "find_account_question")) {
$oDB->addColumn("member", "find_account_question", "number", 11);
}
if(!$oDB->isColumnExists("member", "find_account_answer")) {
$oDB->addColumn("member", "find_account_answer", "varchar", 250);
}
if(!$oDB->isColumnExists("member", "list_order")) {
$oDB->addColumn("member", "list_order", "number", 11);
set_time_limit(0);
$args->list_order = 'member_srl';
executeQuery('member.updateMemberListOrderAll',$args);
executeQuery('member.updateMemberListOrderAll');
}
if(!$oDB->isIndexExists("member","idx_list_order")) {
$oDB->addIndex("member","idx_list_order", array("list_order"));
}
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('member');
$oModuleController = &getController('module');
// check agreement value exist
if($config->agreement)
{
$agreement_file = _XE_PATH_.'files/member_extra_info/agreement_' . Context::get('lang_type') . '.txt';
$output = FileHandler::writeFile($agreement_file, $config->agreement);
$config->agreement = NULL;
$output = $oModuleController->updateModuleConfig('member', $config);
}
$oMemberAdminController = &getAdminController('member');
// check signup form ordering info
if (!$config->signupForm || !is_array($config->signupForm)){
$identifier = 'user_id';
$config->signupForm = $oMemberAdminController->createSignupForm($identifier);
$config->identifier = $identifier;
unset($config->agreement);
$output = $oModuleController->updateModuleConfig('member', $config);
}
if($config->skin)
{
$config_parse = explode('.', $config->skin);
if (count($config_parse) > 1)
{
$template_path = sprintf('./themes/%s/modules/member/', $config_parse[0]);
if(is_dir($template_path))
{
$config->skin = implode('|@|', $config_parse);
$oModuleController = &getController('module');
$oModuleController->updateModuleConfig('member', $config);
}
}
}
if (is_readable('./files/member_extra_info/agreement.txt'))
{
$source_file = _XE_PATH_.'files/member_extra_info/agreement.txt';
$target_file = _XE_PATH_.'files/member_extra_info/agreement_' . Context::get('lang_type') . '.txt';
FileHandler::rename($source_file, $target_file);
}
FileHandler::makeDir('./files/ruleset');
if (!is_readable('./files/ruleset/insertMember.xml'))
$oMemberAdminController->_createSignupRuleset($config->signupForm);
if (!is_readable('./files/ruleset/login.xml'))
$oMemberAdminController->_createLoginRuleset($config->identifier);
if (!is_readable('./files/ruleset/find_member_account_by_question.xml'))
$oMemberAdminController->_createFindAccountByQuestion($config->identifier);
return new Object(0, 'success_updated');
}
/**
* Re-generate the cache file
*
* @return void
**/
function recompileCache() {
}
/**
* @brief Record login error and return the error, about IPaddress.
**/
function recordLoginError($error = 0, $message = 'success')
$oModuleModel = &getModel('module');
$member_config = $oModuleModel->getModuleConfig('member');
// Set to use SSL upon actions related member join/information/password and so on
if(Context::get('_use_ssl') == 'optional')
{
if($error == 0) return new Object($error, $message);
// Create a member model object
$oMemberModel = &getModel('member');
$config = $oMemberModel->getMemberConfig();
// Check if there is recoding table.
$oDB = &DB::getInstance();
if(!$oDB->isTableExists('member_login_count') || $config->enable_login_fail_report == 'N') return new Object($error, $message);
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
$output = executeQuery('member.getLoginCountByIp', $args);
if($output->data && $output->data->count)
{
$last_update = strtotime($output->data->last_update);
$term = intval(time()-$last_update);
//update, if IP address access in a short time, update count. If not, make count 1.
if($term < $config->max_error_count_time)
{
$args->count = $output->data->count + 1;
}
else
{
$args->count = 1;
}
unset($oMemberModel);
unset($config);
$output = executeQuery('member.updateLoginCountByIp', $args);
}
else
{
//insert
$args->count = 1;
$output = executeQuery('member.insertLoginCountByIp', $args);
}
return new Object($error, $message);
}
/**
* @brief Record login error and return the error, about MemberSrl.
**/
function recordMemberLoginError($error = 0, $message = 'success', $args = NULL)
{
if($error == 0 || !$args->member_srl) return new Object($error, $message);
// Create a member model object
$oMemberModel = &getModel('member');
$config = $oMemberModel->getMemberConfig();
// Check if there is recoding table.
$oDB = &DB::getInstance();
if(!$oDB->isTableExists('member_count_history') || $config->enable_login_fail_report == 'N') return new Object($error, $message);
$output = executeQuery('member.getLoginCountHistoryByMemberSrl', $args);
if($output->data && $output->data->content)
{
//update
$content = unserialize($output->data->content);
$content[] = array($_SERVER['REMOTE_ADDR'],Context::getLang($message),time());
$args->content = serialize($content);
$output = executeQuery('member.updateLoginCountHistoryByMemberSrl', $args);
}
else
{
//insert
$content[0] = array($_SERVER['REMOTE_ADDR'],Context::getLang($message),time());
$args->content = serialize($content);
$output = executeQuery('member.insertLoginCountHistoryByMemberSrl', $args);
}
return $this->recordLoginError($error, $message);
Context::addSSLAction('dispMemberModifyPassword');
Context::addSSLAction('dispMemberSignUpForm');
Context::addSSLAction('dispMemberModifyInfo');
Context::addSSLAction('dispMemberModifyEmailAddress');
Context::addSSLAction('dispMemberGetTempPassword');
Context::addSSLAction('dispMemberResendAuthMail');
Context::addSSLAction('dispMemberLoginForm');
Context::addSSLAction('dispMemberFindAccount');
Context::addSSLAction('dispMemberLeave');
Context::addSSLAction('procMemberLogin');
Context::addSSLAction('procMemberModifyPassword');
Context::addSSLAction('procMemberInsert');
Context::addSSLAction('procMemberModifyInfo');
Context::addSSLAction('procMemberFindAccount');
Context::addSSLAction('procMemberModifyEmailAddress');
Context::addSSLAction('procMemberUpdateAuthMail');
Context::addSSLAction('procMemberResendAuthMail');
Context::addSSLAction('procMemberLeave');
//Context::addSSLAction('getMemberMenu');
}
}
?>
/**
* Implement if additional tasks are necessary when installing
*
* @return Object
*/
function moduleInstall()
{
// Register action forward (to use in administrator mode)
$oModuleController = &getController('module');
$oDB = &DB::getInstance();
$oDB->addIndex("member_group","idx_site_title", array("site_srl","title"),true);
$oModuleModel = &getModel('module');
$args = $oModuleModel->getModuleConfig('member');
$isNotInstall = empty($args);
// Set the basic information
$args->enable_join = 'Y';
$args->enable_openid = 'N';
if(!$args->enable_auth_mail) $args->enable_auth_mail = 'N';
if(!$args->image_name) $args->image_name = 'Y';
if(!$args->image_mark) $args->image_mark = 'Y';
if(!$args->profile_image) $args->profile_image = 'Y';
if(!$args->image_name_max_width) $args->image_name_max_width = '90';
if(!$args->image_name_max_height) $args->image_name_max_height = '20';
if(!$args->image_mark_max_width) $args->image_mark_max_width = '20';
if(!$args->image_mark_max_height) $args->image_mark_max_height = '20';
if(!$args->profile_image_max_width) $args->profile_image_max_width = '80';
if(!$args->profile_image_max_height) $args->profile_image_max_height = '80';
if($args->group_image_mark!='Y') $args->group_image_mark = 'N';
global $lang;
$oMemberModel = &getModel('member');
// Create a member controller object
$oMemberController = &getController('member');
$oMemberAdminController = &getAdminController('member');
if(!$args->signupForm || !is_array($args->signupForm))
{
$identifier = $isNotInstall ? 'email_address' : 'user_id';
$args->signupForm = $oMemberAdminController->createSignupForm($identifier);
$args->identifier = $identifier;
$oModuleController->insertModuleConfig('member',$args);
// Create Ruleset File
FileHandler::makeDir('./files/ruleset');
$oMemberAdminController->_createSignupRuleset($args->signupForm);
$oMemberAdminController->_createLoginRuleset($args->identifier);
$oMemberAdminController->_createFindAccountByQuestion($args->identifier);
}
$groups = $oMemberModel->getGroups();
if(!count($groups))
{
// Set an administrator, regular member(group1), and associate member(group2)
$group_args->title = Context::getLang('admin_group');
$group_args->is_default = 'N';
$group_args->is_admin = 'Y';
$output = $oMemberAdminController->insertGroup($group_args);
unset($group_args);
$group_args->title = Context::getLang('default_group_1');
$group_args->is_default = 'Y';
$group_args->is_admin = 'N';
$output = $oMemberAdminController->insertGroup($group_args);
unset($group_args);
$group_args->title = Context::getLang('default_group_2');
$group_args->is_default = 'N';
$group_args->is_admin = 'N';
$oMemberAdminController->insertGroup($group_args);
}
// Configure administrator information
$admin_args->is_admin = 'Y';
$output = executeQuery('member.getMemberList', $admin_args);
if(!$output->data)
{
$admin_info = Context::gets('password','nick_name','email_address');
if($admin_info->email_address)
{
$admin_info->user_id = 'admin';
$admin_info->user_name = 'admin';
// Insert admin information
$oMemberAdminController->insertAdmin($admin_info);
// Log-in Processing
$output = $oMemberController->doLogin($admin_info->email_address);
}
}
// Register denied ID(default + module name)
$oModuleModel = &getModel('module');
$module_list = $oModuleModel->getModuleList();
foreach($module_list as $key => $val)
{
$oMemberAdminController->insertDeniedID($val->module,'');
}
$oMemberAdminController->insertDeniedID('www','');
$oMemberAdminController->insertDeniedID('root','');
$oMemberAdminController->insertDeniedID('administrator','');
$oMemberAdminController->insertDeniedID('telnet','');
$oMemberAdminController->insertDeniedID('ftp','');
$oMemberAdminController->insertDeniedID('http','');
// Create cache directory to use in the member module
FileHandler::makeDir('./files/member_extra_info/image_name');
FileHandler::makeDir('./files/member_extra_info/image_mark');
FileHandler::makeDir('./files/member_extra_info/profile_image');
FileHandler::makeDir('./files/member_extra_info/signature');
return new Object();
}
/**
* a method to check if successfully installed
*
* @return boolean
*/
function checkUpdate()
{
$oDB = &DB::getInstance();
$oModuleModel = &getModel('module');
// check member directory (11/08/2007 added)
if(!is_dir("./files/member_extra_info")) return true;
// check member directory (22/10/2007 added)
if(!is_dir("./files/member_extra_info/profile_image")) return true;
// Add a column(is_register) to "member_auth_mail" table (22/04/2008)
$act = $oDB->isColumnExists("member_auth_mail", "is_register");
if(!$act) return true;
// Add a column(site_srl) to "member_group_member" table (11/15/2008)
if(!$oDB->isColumnExists("member_group_member", "site_srl")) return true;
if(!$oDB->isColumnExists("member_group", "site_srl")) return true;
if($oDB->isIndexExists("member_group","uni_member_group_title")) return true;
// Add a column for list_order (05/18/2011)
if(!$oDB->isColumnExists("member_group", "list_order")) return true;
// image_mark 추가 (2009. 02. 14)
if(!$oDB->isColumnExists("member_group", "image_mark")) return true;
// Add c column for password expiration date
if(!$oDB->isColumnExists("member", "change_password_date")) return true;
// Add columns of question and answer to verify a password
if(!$oDB->isColumnExists("member", "find_account_question")) return true;
if(!$oDB->isColumnExists("member", "find_account_answer")) return true;
if(!$oDB->isColumnExists("member", "list_order")) return true;
if(!$oDB->isIndexExists("member","idx_list_order")) return true;
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('member');
// check signup form ordering info
if(!$config->signupForm) return true;
// check agreement field exist
if($config->agreement) return true;
if($config->skin)
{
$config_parse = explode('.', $config->skin);
if(count($config_parse) > 1)
{
$template_path = sprintf('./themes/%s/modules/member/', $config_parse[0]);
if(is_dir($template_path)) return true;
}
}
// supprot multilanguage agreement.
if(is_readable('./files/member_extra_info/agreement.txt')) return true;
if(!is_readable('./files/ruleset/insertMember.xml')) return true;
if(!is_readable('./files/ruleset/login.xml')) return true;
if(!is_readable('./files/ruleset/find_member_account_by_question.xml')) return true;
return false;
}
/**
* Execute update
*
* @return Object
*/
function moduleUpdate()
{
$oDB = &DB::getInstance();
$oModuleController = &getController('module');
// Check member directory
FileHandler::makeDir('./files/member_extra_info/image_name');
FileHandler::makeDir('./files/member_extra_info/image_mark');
FileHandler::makeDir('./files/member_extra_info/signature');
FileHandler::makeDir('./files/member_extra_info/profile_image');
// Add a column
if(!$oDB->isColumnExists("member_auth_mail", "is_register"))
{
$oDB->addColumn("member_auth_mail", "is_register", "char", 1, "N", true);
}
// Add a column(site_srl) to "member_group_member" table (11/15/2008)
if(!$oDB->isColumnExists("member_group_member", "site_srl"))
{
$oDB->addColumn("member_group_member", "site_srl", "number", 11, 0, true);
$oDB->addIndex("member_group_member", "idx_site_srl", "site_srl", false);
}
if(!$oDB->isColumnExists("member_group", "site_srl"))
{
$oDB->addColumn("member_group", "site_srl", "number", 11, 0, true);
$oDB->addIndex("member_group","idx_site_title", array("site_srl","title"),true);
}
if($oDB->isIndexExists("member_group","uni_member_group_title"))
{
$oDB->dropIndex("member_group","uni_member_group_title",true);
}
// Add a column(list_order) to "member_group" table (05/18/2011)
if(!$oDB->isColumnExists("member_group", "list_order"))
{
$oDB->addColumn("member_group", "list_order", "number", 11, '', true);
$oDB->addIndex("member_group","idx_list_order", "list_order",false);
$output = executeQuery('member.updateAllMemberGroupListOrder');
}
// Add a column for image_mark (02/14/2009)
if(!$oDB->isColumnExists("member_group", "image_mark"))
{
$oDB->addColumn("member_group", "image_mark", "text");
}
// Add a column for password expiration date
if(!$oDB->isColumnExists("member", "change_password_date"))
{
$oDB->addColumn("member", "change_password_date", "date");
executeQuery('member.updateAllChangePasswordDate');
}
// Add columns of question and answer to verify a password
if(!$oDB->isColumnExists("member", "find_account_question"))
{
$oDB->addColumn("member", "find_account_question", "number", 11);
}
if(!$oDB->isColumnExists("member", "find_account_answer"))
{
$oDB->addColumn("member", "find_account_answer", "varchar", 250);
}
if(!$oDB->isColumnExists("member", "list_order"))
{
$oDB->addColumn("member", "list_order", "number", 11);
set_time_limit(0);
$args->list_order = 'member_srl';
executeQuery('member.updateMemberListOrderAll',$args);
executeQuery('member.updateMemberListOrderAll');
}
if(!$oDB->isIndexExists("member","idx_list_order"))
{
$oDB->addIndex("member","idx_list_order", array("list_order"));
}
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('member');
$oModuleController = &getController('module');
// check agreement value exist
if($config->agreement)
{
$agreement_file = _XE_PATH_.'files/member_extra_info/agreement_' . Context::get('lang_type') . '.txt';
$output = FileHandler::writeFile($agreement_file, $config->agreement);
$config->agreement = NULL;
$output = $oModuleController->updateModuleConfig('member', $config);
}
$oMemberAdminController = &getAdminController('member');
// check signup form ordering info
if(!$config->signupForm || !is_array($config->signupForm))
{
$identifier = 'user_id';
$config->signupForm = $oMemberAdminController->createSignupForm($identifier);
$config->identifier = $identifier;
unset($config->agreement);
$output = $oModuleController->updateModuleConfig('member', $config);
}
if($config->skin)
{
$config_parse = explode('.', $config->skin);
if (count($config_parse) > 1)
{
$template_path = sprintf('./themes/%s/modules/member/', $config_parse[0]);
if(is_dir($template_path))
{
$config->skin = implode('|@|', $config_parse);
$oModuleController = &getController('module');
$oModuleController->updateModuleConfig('member', $config);
}
}
}
if(is_readable('./files/member_extra_info/agreement.txt'))
{
$source_file = _XE_PATH_.'files/member_extra_info/agreement.txt';
$target_file = _XE_PATH_.'files/member_extra_info/agreement_' . Context::get('lang_type') . '.txt';
FileHandler::rename($source_file, $target_file);
}
FileHandler::makeDir('./files/ruleset');
if(!is_readable('./files/ruleset/insertMember.xml'))
$oMemberAdminController->_createSignupRuleset($config->signupForm);
if(!is_readable('./files/ruleset/login.xml'))
$oMemberAdminController->_createLoginRuleset($config->identifier);
if(!is_readable('./files/ruleset/find_member_account_by_question.xml'))
$oMemberAdminController->_createFindAccountByQuestion($config->identifier);
return new Object(0, 'success_updated');
}
/**
* Re-generate the cache file
*
* @return void
*/
function recompileCache()
{
}
/**
* @brief Record login error and return the error, about IPaddress.
*/
function recordLoginError($error = 0, $message = 'success')
{
if($error == 0) return new Object($error, $message);
// Create a member model object
$oMemberModel = &getModel('member');
$config = $oMemberModel->getMemberConfig();
// Check if there is recoding table.
$oDB = &DB::getInstance();
if(!$oDB->isTableExists('member_login_count') || $config->enable_login_fail_report == 'N') return new Object($error, $message);
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
$output = executeQuery('member.getLoginCountByIp', $args);
if($output->data && $output->data->count)
{
$last_update = strtotime($output->data->last_update);
$term = intval(time()-$last_update);
//update, if IP address access in a short time, update count. If not, make count 1.
if($term < $config->max_error_count_time)
{
$args->count = $output->data->count + 1;
}
else
{
$args->count = 1;
}
unset($oMemberModel);
unset($config);
$output = executeQuery('member.updateLoginCountByIp', $args);
}
else
{
//insert
$args->count = 1;
$output = executeQuery('member.insertLoginCountByIp', $args);
}
return new Object($error, $message);
}
/**
* @brief Record login error and return the error, about MemberSrl.
*/
function recordMemberLoginError($error = 0, $message = 'success', $args = NULL)
{
if($error == 0 || !$args->member_srl) return new Object($error, $message);
// Create a member model object
$oMemberModel = &getModel('member');
$config = $oMemberModel->getMemberConfig();
// Check if there is recoding table.
$oDB = &DB::getInstance();
if(!$oDB->isTableExists('member_count_history') || $config->enable_login_fail_report == 'N') return new Object($error, $message);
$output = executeQuery('member.getLoginCountHistoryByMemberSrl', $args);
if($output->data && $output->data->content)
{
//update
$content = unserialize($output->data->content);
$content[] = array($_SERVER['REMOTE_ADDR'],Context::getLang($message),time());
$args->content = serialize($content);
$output = executeQuery('member.updateLoginCountHistoryByMemberSrl', $args);
}
else
{
//insert
$content[0] = array($_SERVER['REMOTE_ADDR'],Context::getLang($message),time());
$args->content = serialize($content);
$output = executeQuery('member.insertLoginCountHistoryByMemberSrl', $args);
}
return $this->recordLoginError($error, $message);
}
}
/* End of file member.class.php */
/* Location: ./modules/member/member.class.php */

File diff suppressed because it is too large Load diff

View file

@ -8,7 +8,7 @@ class memberMobile extends memberView
*/
var $memberInfo;
function init()
function init()
{
// Get the member configuration
$oMemberModel = &getModel('member');
@ -29,7 +29,7 @@ class memberMobile extends memberView
// if member_srl exists, set memberInfo
$member_srl = Context::get('member_srl');
if($member_srl)
if($member_srl)
{
$oMemberModel = &getModel('member');
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
@ -43,7 +43,7 @@ class memberMobile extends memberView
}
}
$this->setTemplatePath($template_path);
$this->setTemplatePath($template_path);
$oLayoutModel = &getModel('layout');
$layout_info = $oLayoutModel->getLayout($this->member_config->mlayout_srl);
@ -57,11 +57,12 @@ class memberMobile extends memberView
function dispMemberModifyInfo()
{
parent::dispMemberModifyInfo();
if($this->member_info)
{
Context::set('oMemberInfo', get_object_vars($this->member_info));
}
}
}
?>
/* End of file member.mobile.php */
/* Location: ./modules/member/member.mobile.php */

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff