diff --git a/modules/importer/importer.admin.controller.php b/modules/importer/importer.admin.controller.php index 83f5d5318..81e813367 100644 --- a/modules/importer/importer.admin.controller.php +++ b/modules/importer/importer.admin.controller.php @@ -372,13 +372,14 @@ class importerAdminController extends importer FileHandler::removeFile($target_file); if(!$xmlObj) continue; // List Objects - $obj = null; + $obj = new stdClass(); + $obj->member_srl = getNextSequence(); $obj->user_id = base64_decode($xmlObj->member->user_id->body); $obj->password = base64_decode($xmlObj->member->password->body); $obj->user_name = base64_decode($xmlObj->member->user_name->body); $obj->nick_name = base64_decode($xmlObj->member->nick_name->body); if(!$obj->user_name) $obj->user_name = $obj->nick_name; - $obj->email = base64_decode($xmlObj->member->email->body); + $obj->email_address = base64_decode($xmlObj->member->email->body); $obj->homepage = base64_decode($xmlObj->member->homepage->body); $obj->blog = base64_decode($xmlObj->member->blog->body); $obj->birthday = substr(base64_decode($xmlObj->member->birthday->body),0,8); @@ -401,8 +402,20 @@ class importerAdminController extends importer } // Create url for homepage and blog if($obj->homepage && strncasecmp('http://', $obj->homepage, 7) !== 0 && strncasecmp('https://', $obj->homepage, 8) !== 0) $obj->homepage = 'http://'.$obj->homepage; - // email address column - $obj->email_address = $obj->email; + // Check user ID + if(!preg_match('/^[a-z]+[\w-]*[a-z0-9_]+$/i', $obj->user_id)) + { + $obj->user_id = preg_replace('/[^a-z0-9_-]+/i', '', $obj->user_id); + } + if(!preg_match('/^[a-z]+[\w-]*[a-z0-9_]+$/i', $obj->user_id)) + { + $obj->user_id = 't' . $obj->member_srl; + } + // Check email address + if(!preg_match('/^[\w-]+((?:\.|\+|\~)[\w-]+)*@[\w-]+(\.[\w-]+)+$/', $obj->email_address)) + { + $obj->email_address = $obj->user_id . '@example.com'; + } list($obj->email_id, $obj->email_host) = explode('@', $obj->email); // Set the mailing option if($obj->allow_mailing!='Y') $obj->allow_mailing = 'N'; @@ -411,18 +424,37 @@ class importerAdminController extends importer if(!in_array($obj->allow_message, array('Y','N','F'))) $obj->allow_message= 'Y'; // Get member-join date if the last login time is not found if(!$obj->last_login) $obj->last_login = $obj->regdate; - // Get a member_srl - $obj->member_srl = getNextSequence(); + // Set the list order $obj->list_order = -1 * $obj->member_srl; // List extra vars $extra_vars = $obj->extra_vars; unset($obj->extra_vars); $obj->extra_vars = serialize($extra_vars); - // Check if the same nickname is existing - $nick_args = new stdClass; - $nick_args->nick_name = $obj->nick_name; - $nick_output = executeQuery('member.getMemberSrl', $nick_args); - if(!$nick_output->toBool()) $obj->nick_name .= '_'.$obj->member_srl; + // Check if the same user ID exists + $args = new stdClass; + $args->user_id = $obj->user_id; + $output = executeQuery('member.getMemberSrl', $args); + if(!$output->toBool() || $output->data) + { + $obj->user_id .= '_'.$obj->member_srl; + } + // Check if the same nickname exists + $args = new stdClass; + $args->nick_name = $obj->nick_name; + $output = executeQuery('member.getMemberSrl', $args); + if(!$output->toBool() || $output->data) + { + $obj->user_id .= '_'.$obj->member_srl; + } + // Check if the same email address exists + $args = new stdClass; + $args->email_address = $obj->email_address; + $output = executeQuery('member.getMemberSrl', $args); + if(!$output->toBool() || $output->data) + { + $obj->email_address = $obj->user_id . '@example.com'; + } + // Add a member $output = executeQuery('member.insertMember', $obj); @@ -433,7 +465,7 @@ class importerAdminController extends importer $oMail->setTitle("Password update for your " . getFullSiteUrl() . " account"); $webmaster_name = $member_config->webmaster_name?$member_config->webmaster_name:'Webmaster'; $oMail->setContent("Dear $obj->user_name,

- We recently migrated our phpBB forum to Rhymix. Since you password was encrypted we could not migrate it too, so please reset it by following this link: + We recently migrated our site to Rhymix. Since you password was encrypted we could not migrate it too, so please reset it by following this link: " . getFullSiteUrl() . "?act=dispMemberFindAccount. You need to enter you email address and hit the 'Find account' button. You will then receive an email with a new, generated password that you can change after login.

Thank you for your understanding,
@@ -751,6 +783,20 @@ class importerAdminController extends importer $obj->commentStatus = base64_decode($xmlDoc->post->allow_comment->body)!='N'?'ALLOW':'DENY'; $obj->allow_trackback = base64_decode($xmlDoc->post->allow_trackback->body)!='N'?'Y':'N'; $obj->notify_message = base64_decode($xmlDoc->post->is_notice->body); + // Check user ID + if(!preg_match('/^[a-z]+[\w-]*[a-z0-9_]+$/i', $obj->user_id)) + { + $obj->user_id = preg_replace('/[^a-z0-9_-]+/i', '', $obj->user_id); + } + if(!preg_match('/^[a-z]+[\w-]*[a-z0-9_]+$/i', $obj->user_id)) + { + $obj->user_id = 't' . $obj->member_srl; + } + // Check email address + if(!preg_match('/^[\w-]+((?:\.|\+|\~)[\w-]+)*@[\w-]+(\.[\w-]+)+$/', $obj->email_address)) + { + $obj->email_address = $obj->user_id . '@example.com'; + } // Change content information (attachment) if(count($files)) { @@ -942,6 +988,20 @@ class importerAdminController extends importer $obj->ipaddress = base64_decode($xmlDoc->comment->ipaddress->body); $obj->status = base64_decode($xmlDoc->comment->status->body)==''?'1':base64_decode($xmlDoc->comment->status->body); $obj->list_order = $obj->comment_srl*-1; + // Check user ID + if(!preg_match('/^[a-z]+[\w-]*[a-z0-9_]+$/i', $obj->user_id)) + { + $obj->user_id = preg_replace('/[^a-z0-9_-]+/i', '', $obj->user_id); + } + if(!preg_match('/^[a-z]+[\w-]*[a-z0-9_]+$/i', $obj->user_id)) + { + $obj->user_id = 't' . $obj->member_srl; + } + // Check email address + if(!preg_match('/^[\w-]+((?:\.|\+|\~)[\w-]+)*@[\w-]+(\.[\w-]+)+$/', $obj->email_address)) + { + $obj->email_address = $obj->user_id . '@example.com'; + } // Change content information (attachment) if(count($files)) {