/** * Fucntion changes company status. Allowed statuses are A(ctive) and D(isabled) * * @param int $company_id * @param string $status_to A or D * @param string $reason The reason of the change * @param string $status_from Previous status * @param boolean $skip_query By default false. Update query might be skipped if status is already changed. * @return boolean True on success or false on failure */ function fn_companies_change_status($company_id, $status_to, $reason = '', &$status_from = '', $skip_query = false, $notify = true) { if (empty($status_from)) { $status_from = db_get_field("SELECT status FROM ?:companies WHERE company_id = ?i", $company_id); } if (!in_array($status_to, array('A', 'P', 'D')) || $status_from == $status_to) { return false; } $result = $skip_query ? true : db_query("UPDATE ?:companies SET status = ?s WHERE company_id = ?i", $status_to, $company_id); if (!$result) { return false; } $company_data = fn_get_company_data($company_id); $account = $username = ''; if ($status_from == 'N' && ($status_to == 'A' || $status_to == 'P')) { if (Registry::get('settings.Vendors.create_vendor_administrator_account') == 'Y') { if (!empty($company_data['request_user_id'])) { $password_change_timestamp = db_get_field("SELECT password_change_timestamp FROM ?:users WHERE user_id = ?i", $company_data['request_user_id']); $_set = ''; if (empty($password_change_timestamp)) { $_set = ", password_change_timestamp = 1 "; } db_query("UPDATE ?:users SET company_id = ?i, user_type = 'V'{$_set} WHERE user_id = ?i", $company_id, $company_data['request_user_id']); $username = fn_get_user_name($company_data['request_user_id']); $account = 'updated'; $msg = __('new_administrator_account_created') . '<a href="' . fn_url('profiles.update?user_id=' . $company_data['request_user_id']) . '">' . __('you_can_edit_account_details') . '</a>'; fn_set_notification('N', __('notice'), $msg, 'K'); } else { $user_data = array(); if (!empty($company_data['request_account_name'])) { $user_data['user_login'] = $company_data['request_account_name']; } else { $user_data['user_login'] = $company_data['email']; } $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'); $username = $user_data['user_login']; $account = 'new'; } } } } if (empty($user_data)) { $user_id = db_get_field("SELECT user_id FROM ?:users WHERE company_id = ?i AND is_root = 'Y' AND user_type = 'V'", $company_id); $user_data = fn_get_user_info($user_id); } if ($notify && !empty($company_data['email'])) { $e_username = ''; $e_account = ''; $e_password = ''; if ($status_from == 'N' && ($status_to == 'A' || $status_to == 'P')) { $e_username = $username; $e_account = $account; if ($account == 'new') { $e_password = $user_data['password1']; } } $mail_template = fn_strtolower($status_from . '_' . $status_to); Mailer::sendMail(array('to' => $company_data['email'], 'from' => 'default_company_support_department', 'data' => array('user_data' => $user_data, 'reason' => $reason, 'status' => __($status_to == 'A' ? 'active' : 'disabled'), 'e_username' => $e_username, 'e_account' => $e_account, 'e_password' => $e_password), 'company_id' => $company_id, 'tpl' => 'companies/status_' . $mail_template . '_notification.tpl'), 'A'); } return $result; }
function fn_hybrid_auth_create_user($auth_data, $provider) { Registry::get('settings.Checkout.address_position') == 'billing_first' ? $address_zone = 'b' : ($address_zone = 's'); $user_data = array(); $user_data['email'] = !empty($auth_data->verifiedEmail) ? $auth_data->verifiedEmail : (!empty($auth_data->email) ? $auth_data->email : ''); $user_data['user_login'] = !empty($auth_data->verifiedEmail) ? $auth_data->verifiedEmail : (!empty($auth_data->email) ? $auth_data->email : $auth_data->displayName); $user_data['user_type'] = 'C'; $user_data['is_root'] = 'N'; $user_data['password'] = $user_data['password1'] = $user_data['password2'] = fn_generate_password(); $user_data[$address_zone . '_firstname'] = !empty($auth_data->firstName) ? $auth_data->firstName : ''; $user_data[$address_zone . '_lastname'] = !empty($auth_data->lastName) ? $auth_data->lastName : ''; $user_data[$address_zone . '_phone'] = !empty($auth_data->phone) ? $auth_data->phone : ''; $user_data[$address_zone . '_address'] = !empty($auth_data->address) ? $auth_data->address : ''; $user_data[$address_zone . '_country'] = !empty($auth_data->country) ? $auth_data->country : ''; $user_data[$address_zone . '_state'] = !empty($auth_data->region) ? $auth_data->region : ''; $user_data[$address_zone . '_city'] = !empty($auth_data->city) ? $auth_data->city : ''; $user_data[$address_zone . '_zipcode'] = !empty($auth_data->zip) ? $auth_data->zip : ''; list($user_data['user_id'], $profile_id) = fn_update_user('', $user_data, $auth, true, false, false); if (!empty($user_data['email'])) { Mailer::sendMail(array('to' => $user_data['email'], 'from' => 'company_orders_department', 'data' => array('user_data' => $user_data, 'user_name' => $user_data[$address_zone . '_firstname'] . " " . $user_data[$address_zone . '_lastname']), 'tpl' => 'addons/hybrid_auth/create_profile.tpl'), 'C', DESCR_SL); } return $user_data; }
/** * 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) { /** * Actions before creating company admin * * @param array $company_data Company data * @param string $fields Fields list * @param boolean $notify Notify flag */ fn_set_hook('create_company_admin_pre', $company_data, $fields, $notify); $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']; /** * Actions before directly creating company admin * * @param array $company_data Company data * @param string $fields Fields list * @param boolean $notify Notify flag * @param array $user User data */ fn_set_hook('create_company_admin', $company_data, $fields, $notify, $user); // 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; } /** * Actions after creating company admin * * @param array $company_data Company data * @param string $fields Fields list * @param boolean $notify Notify flag * @param array $user User data */ fn_set_hook('create_company_admin_post', $company_data, $fields, $notify, $user); return $user; }
if (isset($_REQUEST['company_data']['is_create_vendor_admin']) && $_REQUEST['company_data']['is_create_vendor_admin'] == 'Y') { if (db_get_field("SELECT COUNT(*) FROM ?:users WHERE email = ?s", $_REQUEST['company_data']['email']) > 0) { fn_set_notification('E', __('error'), __('error_admin_not_created_email_already_used')); } else { // Add company's administrator if (fn_is_restricted_admin($_REQUEST) == true) { return array(CONTROLLER_STATUS_DENIED); } $user_data['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'];
/** * Регистрация на сайте и в таблице uLogin * @param Array $u_user - данные о пользователе, полученные от uLogin * @param int $in_db - при значении 1 необходимо переписать данные в таблице ?:ulogin * @return bool|int|Error */ function fn_ulogin_registration_user($u_user, $in_db = 0) { if (!isset($u_user['email'])) { Tygh::$app['view']->assign('ulogin_title', __('ulogin_auth_error_title')); Tygh::$app['view']->assign('ulogin_error', __('ulogin_auth_error_msg')); Tygh::$app['view']->assign('backurl', $_GET['backurl']); Tygh::$app['view']->display('addons/ulogin/views/ulogin/error.tpl'); exit; } $u_user['network'] = isset($u_user['network']) ? $u_user['network'] : ''; $u_user['phone'] = isset($u_user['phone']) ? $u_user['phone'] : ''; // данные о пользователе есть в ulogin_table, но отсутствуют в Базе if ($in_db == 1) { db_query('DELETE FROM ?:ulogin WHERE identity = ?s', $u_user['identity']); } $user_id = fn_ulogin_getUserInfoByEmail($u_user['email']); // $check_m_user == 1 -> есть пользователь с таким email $check_m_user = !empty($user_id) ? 1 : 0; $auth = $_SESSION['auth']; $current_user = isset($auth['user_id']) ? $auth['user_id'] : 0; // $isLoggedIn == true -> ползователь онлайн $isLoggedIn = !empty($current_user) ? 1 : 0; if (!$check_m_user && !$isLoggedIn) { // отсутствует пользователь с таким email в базе -> регистрация $date = explode('.', $u_user['bdate']); $user_data = array(); $user_data['email'] = $u_user['email']; $user_data['user_login'] = fn_ulogin_generateNickname($u_user['first_name'], $u_user['last_name'], $u_user['nickname'], $u_user['bdate']); $user_data['user_type'] = 'C'; $user_data['is_root'] = 'N'; $user_data['salt'] = fn_generate_salt(); $user_data['password1'] = $user_data['password2'] = fn_generate_password(); $user_data['b_firstname'] = $u_user['first_name']; $user_data['s_firstname'] = $u_user['first_name']; $user_data['b_lastname'] = $u_user['last_name']; $user_data['s_lastname'] = $u_user['last_name']; $user_data['b_phone'] = isset($u_user['phone']) ? trim(preg_replace('/[^0-9]/', ' ', $u_user['phone'])) : ''; $user_data['s_phone'] = isset($u_user['phone']) ? trim(preg_replace('/[^0-9]/', ' ', $u_user['phone'])) : ''; $user_data['b_city'] = isset($u_user['city']) ? $u_user['city'] : ''; $user_data['s_city'] = isset($u_user['city']) ? $u_user['city'] : ''; $user_data['birthday'] = isset($date['2']) ? $date['2'] : ''; list($user_data['user_id'], $profile_id) = fn_update_user('', $user_data, $auth, true, true, true); $u_user_data = array('user_id' => $user_data['user_id'], 'identity' => $u_user['identity'], 'network' => $u_user['network']); db_query("INSERT INTO ?:ulogin ?e", $u_user_data); return $user_data['user_id']; } else { // существует пользователь с таким email или это текущий пользователь if (!isset($u_user["verified_email"]) || intval($u_user["verified_email"]) != 1) { Tygh::$app['view']->assign('token', $_REQUEST['token']); Tygh::$app['view']->display('addons/ulogin/views/ulogin/confirm.tpl'); exit; } if (intval($u_user["verified_email"]) == 1) { $user_id = $isLoggedIn ? $current_user : $user_id; $other_u = db_get_row("SELECT identity FROM ?:ulogin WHERE user_id = ?i", $user_id); if ($other_u) { if (!$isLoggedIn && !isset($u_user['merge_account'])) { Tygh::$app['view']->assign('token', $_REQUEST['token']); Tygh::$app['view']->assign('identity', $other_u['identity']); Tygh::$app['view']->display('addons/ulogin/views/ulogin/merge.tpl'); exit; } } $u_user_data = array('user_id' => $user_id, 'identity' => $u_user['identity'], 'network' => $u_user['network']); db_query("INSERT INTO ?:ulogin ?e", $u_user_data); return $user_id; } } return false; }