Пример #1
0
/**
 * 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;
}
Пример #2
0
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;
}
Пример #3
0
/**
 * 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;
}
Пример #4
0
 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'];
Пример #5
0
/**
 * Регистрация на сайте и в таблице 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;
}