public function customer_actions() { $pages = array(WC_CRM_TOKEN, WC_CRM_TOKEN . '-new-customer'); if (!isset($_GET['page']) || !in_array($_GET['page'], $pages)) { return false; } $this->customer_process_bulk_action(); if (isset($_POST['wc_crm_customer_action'])) { switch ($_POST['wc_crm_customer_action']) { case 'sent_email': WC_CRM_Screen_Activity::process_email_form(); break; case 'save_phone_call': WC_CRM_Screen_Activity::process_phone_call_form(); break; case 'create_customer': WC_CRM_Screen_Customers_Edit::create_user(); wc_crm_clear_transient(); break; default: if (isset($_POST['customer_id']) && !empty($_POST['customer_id'])) { WC_CRM_Screen_Customers_Edit::save($_POST['customer_id']); wc_crm_clear_transient(); } break; } } }
public static function create_user() { if (empty($_POST['user_email'])) { wc_crm_add_notice(__('Please enter an e-mail address.', 'wc_crm'), 'error'); } elseif (!is_email($_POST['user_email'])) { wc_crm_add_notice(__("The email address isn't correct.", 'wc_crm'), 'error'); } elseif (email_exists($_POST['user_email'])) { wc_crm_add_notice(__("This email is already registered, please choose another one.", 'wc_crm'), 'error'); } if (wc_crm_notice_count('error') > 0) { return; } global $wpdb; $nickname = str_replace(' ', '', ucfirst(strtolower($_POST['first_name']))) . str_replace(' ', '', ucfirst(strtolower($_POST['last_name']))); $username_opt = get_option('wc_crm_username_add_customer'); switch ($username_opt) { case 2: $username = str_replace(' ', '', strtolower($_POST['first_name'])) . '-' . str_replace(' ', '', strtolower($_POST['last_name'])); break; case 3: $username = $_POST['user_email']; break; default: $username = strtolower($nickname); break; } $username = _truncate_post_slug($username, 60); $check_sql = "SELECT user_login FROM {$wpdb->users} WHERE user_login = '******' LIMIT 1"; $user_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $username)); if ($user_name_check) { $suffix = 1; do { $alt_user_name = _truncate_post_slug($username, 60 - (strlen($suffix) + 1)) . "-{$suffix}"; $user_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_user_name)); $suffix++; } while ($user_name_check); $username = $alt_user_name; } add_filter('pre_option_woocommerce_registration_generate_password', 'wcrm_enable_generate_password'); $user_id = wc_create_new_customer($_POST['user_email'], $username); remove_filter('pre_option_woocommerce_registration_generate_password', 'wcrm_enable_generate_password'); do_action('wc_crm_create_customer', $user_id); if (!is_wp_error($user_id)) { update_user_meta($user_id, 'nickname', $nickname); wp_update_user(array('ID' => $user_id, 'role' => 'customer')); $customer_id = $wpdb->get_var("SELECT c_id FROM {$wpdb->prefix}wc_crm_customer_list WHERE user_id = {$user_id} "); if ($customer_id) { WC_CRM_Screen_Customers_Edit::save($customer_id, true); } wc_crm_add_notice(__("Customer created.", 'wc_crm'), 'success'); wp_safe_redirect(admin_url() . 'admin.php?page=' . WC_CRM_TOKEN); } else { wc_crm_add_notice($user_id->get_error_message(), 'error'); } }
public function new_customer() { WC_CRM_Screen_Customers_Edit::output(); }