Created
November 30, 2015 15:08
-
-
Save vsguts/9b064768c38f78bd4862 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/app/controllers/backend/companies.php b/app/controllers/backend/companies.php | |
index e2dce9e..8b3bc57 100644 | |
--- a/app/controllers/backend/companies.php | |
+++ b/app/controllers/backend/companies.php | |
@@ -69,42 +69,12 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { | |
return array(CONTROLLER_STATUS_DENIED); | |
} | |
- $user_data['fields'] = isset($_REQUEST['user_data']['fields']) ? $_REQUEST['user_data']['fields'] : ''; | |
+ $company_data = $_REQUEST['company_data']; | |
+ $company_data['company_id'] = $company_id; | |
+ $company_data['is_root'] = 'N'; | |
+ $fields = isset($_REQUEST['user_data']['fields']) ? $_REQUEST['user_data']['fields'] : ''; | |
- if (!empty($_REQUEST['company_data']['admin_username'])) { | |
- $user_data['user_login'] = $_REQUEST['company_data']['admin_username']; | |
- } else { | |
- $user_data['user_login'] = $_REQUEST['company_data']['email']; | |
- } | |
- | |
- $user_data['user_type'] = 'V'; | |
- $user_data['password1'] = fn_generate_password(); | |
- $user_data['password2'] = $user_data['password1']; | |
- $user_data['status'] = $_REQUEST['company_data']['status']; | |
- $user_data['company_id'] = $company_id; | |
- $user_data['email'] = $_REQUEST['company_data']['email']; | |
- $user_data['company'] = $_REQUEST['company_data']['company']; | |
- $user_data['last_login'] = 0; | |
- $user_data['lang_code'] = $_REQUEST['company_data']['lang_code']; | |
- $user_data['password_change_timestamp'] = 0; | |
- $user_data['is_root'] = 'N'; | |
- | |
- // Copy vendor admin billing and shipping addresses from the company's credentials | |
- $user_data['firstname'] = $user_data['b_firstname'] = $user_data['s_firstname'] = (!empty($_REQUEST['company_data']['admin_firstname'])) ? $_REQUEST['company_data']['admin_firstname'] : ''; | |
- $user_data['lastname'] = $user_data['b_lastname'] = $user_data['s_lastname'] = (!empty($_REQUEST['company_data']['admin_lastname'])) ? $_REQUEST['company_data']['admin_lastname'] : ''; | |
- | |
- $user_data['b_address'] = $user_data['s_address'] = $_REQUEST['company_data']['address']; | |
- $user_data['b_city'] = $user_data['s_city'] = $_REQUEST['company_data']['city']; | |
- $user_data['b_country'] = $user_data['s_country'] = $_REQUEST['company_data']['country']; | |
- $user_data['b_state'] = $user_data['s_state'] = $_REQUEST['company_data']['state']; | |
- $user_data['b_zipcode'] = $user_data['s_zipcode'] = $_REQUEST['company_data']['zipcode']; | |
- | |
- // Create new user, avoiding switching to the vendor admin's session ($null as the 3rd argument) | |
- list($added_user_id, $null) = fn_update_user(0, $user_data, $null, false, true, true); | |
- if ($added_user_id) { | |
- $msg = __('new_administrator_account_created') . '<a href="' . fn_url('profiles.update?user_id=' . $added_user_id) . '">' . __('you_can_edit_account_details') . '</a>'; | |
- fn_set_notification('N', __('notice'), $msg, 'K'); | |
- } | |
+ $user_data = fn_create_company_admin($company_data, $fields, true); | |
} | |
} | |
} else { | |
@@ -243,7 +213,6 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { | |
} | |
} | |
- | |
if ($mode == 'delete') { | |
fn_delete_company($_REQUEST['company_id']); | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/app/functions/fn.companies.php b/app/functions/fn.companies.php | |
index 77631b6..7541d5a 100644 | |
--- a/app/functions/fn.companies.php | |
+++ b/app/functions/fn.companies.php | |
@@ -384,7 +384,7 @@ function fn_get_company_data($company_id, $lang_code = DESCR_SL, $extra = array( | |
*/ | |
fn_set_hook('get_company_data_pre', $company_id, $lang_code, $extra); | |
- $fields = array ( | |
+ $fields = array( | |
'companies.*', | |
); | |
@@ -1142,43 +1142,16 @@ function fn_companies_change_status($company_id, $status_to, $reason = '', &$sta | |
fn_set_notification('N', __('notice'), $msg, 'K'); | |
} else { | |
- $user_data = array(); | |
+ $_company_data = $company_data + unserialize($company_data['request_account_data']); | |
+ $_company_data['status'] = 'A'; | |
- if (!empty($company_data['request_account_name'])) { | |
- $user_data['user_login'] = $company_data['request_account_name']; | |
- } else { | |
- $user_data['user_login'] = $company_data['email']; | |
+ if (!empty($_company_data['request_account_name'])) { | |
+ $_company_data['admin_username'] = $_company_data['request_account_name']; | |
} | |
- $request_account_data = unserialize($company_data['request_account_data']); | |
- $user_data['fields'] = $request_account_data['fields']; | |
- $user_data['firstname'] = $user_data['b_firstname'] = $user_data['s_firstname'] = $request_account_data['admin_firstname']; | |
- $user_data['lastname'] = $user_data['b_lastname'] = $user_data['s_lastname'] = $request_account_data['admin_lastname']; | |
- | |
- $user_data['user_type'] = 'V'; | |
- $user_data['password1'] = fn_generate_password(); | |
- $user_data['password2'] = $user_data['password1']; | |
- $user_data['status'] = 'A'; | |
- $user_data['company_id'] = $company_id; | |
- $user_data['email'] = $company_data['email']; | |
- $user_data['company'] = $company_data['company']; | |
- $user_data['last_login'] = 0; | |
- $user_data['lang_code'] = $company_data['lang_code']; | |
- $user_data['password_change_timestamp'] = 0; | |
- | |
- // Copy vendor admin billing and shipping addresses from the company's credentials | |
- $user_data['b_address'] = $user_data['s_address'] = $company_data['address']; | |
- $user_data['b_city'] = $user_data['s_city'] = $company_data['city']; | |
- $user_data['b_country'] = $user_data['s_country'] = $company_data['country']; | |
- $user_data['b_state'] = $user_data['s_state'] = $company_data['state']; | |
- $user_data['b_zipcode'] = $user_data['s_zipcode'] = $company_data['zipcode']; | |
- | |
- list($added_user_id, $null) = fn_update_user(0, $user_data, $null, false, false); | |
- | |
- if ($added_user_id) { | |
- $msg = __('new_administrator_account_created') . '<a href="' . fn_url('profiles.update?user_id=' . $added_user_id) . '">' . __('you_can_edit_account_details') . '</a>'; | |
- fn_set_notification('N', __('notice'), $msg, 'K'); | |
+ $user_data = fn_create_company_admin($_company_data, $_company_data['fields'], false); | |
+ if (!empty($user_data['user_id'])) { | |
$username = $user_data['user_login']; | |
$account = 'new'; | |
} | |
@@ -1280,4 +1253,69 @@ function fn_set_data_company_id(&$data) | |
function fn_get_ult_company_condition($db_field = 'company_id', $and = true, $company_id = '', $show_admin = false, $area_c = false) | |
{ | |
return (fn_allowed_for('ULTIMATE')) ? fn_get_company_condition($db_field, $and, $company_id, $show_admin, $area_c) : ''; | |
-} | |
\ No newline at end of file | |
+} | |
+ | |
+/** | |
+ * Creating company admin | |
+ * | |
+ * @param array $company_data Company data | |
+ * @param string $fields Fields list | |
+ * @param boolean $notify Notify flag | |
+ * @return array | |
+ */ | |
+function fn_create_company_admin($company_data, $fields = '', $notify = false) | |
+{ | |
+ $user = array( | |
+ 'fields' => $fields, | |
+ ); | |
+ | |
+ if (!empty($company_data['admin_username'])) { | |
+ $user['user_login'] = $company_data['admin_username']; | |
+ } else { | |
+ $user['user_login'] = $company_data['email']; | |
+ } | |
+ | |
+ $password_length = USER_PASSWORD_LENGTH; | |
+ $min_password_length = (int) Registry::get('settings.Security.min_admin_password_length'); | |
+ if ($min_password_length > $password_length) { | |
+ $password_length = $min_password_length; | |
+ } | |
+ | |
+ $user['user_type'] = 'V'; | |
+ $user['password1'] = fn_generate_password($password_length); | |
+ $user['password2'] = $user['password1']; | |
+ $user['status'] = !empty($company_data['status']) ? $company_data['status'] : 'A'; | |
+ $user['company_id'] = $company_data['company_id']; | |
+ $user['email'] = $company_data['email']; | |
+ $user['company'] = $company_data['company']; | |
+ $user['last_login'] = 0; | |
+ $user['lang_code'] = $company_data['lang_code']; | |
+ $user['password_change_timestamp'] = 0; | |
+ $user['is_root'] = !empty($company_data['is_root']) ? $company_data['is_root'] : 'N'; | |
+ | |
+ // Copy vendor admin billing and shipping addresses from the company's credentials | |
+ $user['firstname'] = (!empty($company_data['admin_firstname'])) ? $company_data['admin_firstname'] : ''; | |
+ $user['b_firstname'] = $user['s_firstname'] = $user['firstname']; | |
+ $user['lastname'] = (!empty($company_data['admin_lastname'])) ? $company_data['admin_lastname'] : ''; | |
+ $user['b_lastname'] = $user['s_lastname'] = $user['lastname']; | |
+ | |
+ $user['b_address'] = $user['s_address'] = $company_data['address']; | |
+ $user['b_city'] = $user['s_city'] = $company_data['city']; | |
+ $user['b_country'] = $user['s_country'] = $company_data['country']; | |
+ $user['b_state'] = $user['s_state'] = $company_data['state']; | |
+ $user['b_zipcode'] = $user['s_zipcode'] = $company_data['zipcode']; | |
+ | |
+ // Create new user, avoiding switching to the vendor admin's session ($null as the 3rd argument) | |
+ list($added_user_id) = fn_update_user(0, $user, $null, false, $notify); | |
+ if ($added_user_id) { | |
+ $msg = sprintf('%s<a href="%s">%s</a>', | |
+ __('new_administrator_account_created'), | |
+ fn_url('profiles.update?user_id=' . $added_user_id), | |
+ __('you_can_edit_account_details') | |
+ ); | |
+ fn_set_notification('N', __('notice'), $msg, 'K'); | |
+ $user['user_id'] = $added_user_id; | |
+ } | |
+ | |
+ return $user; | |
+} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment