Skip to content

Instantly share code, notes, and snippets.

@vsguts
Created November 30, 2015 15:08
Show Gist options
  • Save vsguts/9b064768c38f78bd4862 to your computer and use it in GitHub Desktop.
Save vsguts/9b064768c38f78bd4862 to your computer and use it in GitHub Desktop.
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']);
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