public static function add_order($data, $email = true)
 {
     global $sunshine;
     $order_id = wp_insert_post(array('post_title' => 'Order – ' . date(get_option('date_format') . ' @ ' . get_option('time_format')), 'post_content' => '', 'post_type' => 'sunshine-order', 'post_status' => 'publish', 'comment_status' => 'open', 'post_author' => $data['user_id'] ? $data['user_id'] : 1));
     wp_update_post(array('ID' => $order_id, 'post_title' => 'Order #' . $order_id, 'post_name' => $order_id));
     $data = apply_filters('sunshine_order_data', $data, $order_id);
     $order_items = apply_filters('sunshine_order_items', $data['items'], $order_id);
     update_post_meta($order_id, '_sunshine_order_data', serialize($data));
     update_post_meta($order_id, '_sunshine_order_items', serialize($order_items));
     update_post_meta($order_id, 'ip', $_SERVER['REMOTE_ADDR']);
     if ($data['discounts']) {
         $discount_items = apply_filters('sunshine_order_discounts', $data['discounts'], $order_id);
         update_post_meta($order_id, '_sunshine_order_discounts', serialize($discount_items));
     }
     if (isset($data['user_id'])) {
         update_post_meta($order_id, '_sunshine_customer_id', $data['user_id']);
     }
     // Order status
     $status = isset($data['status']) ? $data['status'] : 'pending';
     wp_set_post_terms($order_id, $status, 'sunshine-order-status');
     // Decrease credits if used
     if (isset($data['user_id']) && $data['credits'] > 0) {
         $available_credits = SunshineUser::get_user_meta_by_id($data['user_id'], 'credits', true);
         SunshineUser::update_user_meta_by_id($data['user_id'], 'credits', $available_credits - $data['credits']);
     }
     // Update discount code usage
     if (!empty($sunshine->cart->discount_items)) {
         foreach ($sunshine->cart->discount_items as $discount) {
             $current_count = get_post_meta($discount->ID, 'use_count', true);
             update_post_meta($discount->ID, 'use_count', $current_count + 1);
         }
     }
     // Meta data
     if (is_array($data['meta'])) {
         foreach ($data['meta'] as $key => $value) {
             update_post_meta($order_id, $key, $value);
         }
     }
     if ($email) {
         self::notify($order_id);
     }
     $sunshine->add_message(__('Order completed successfully!', 'sunshine'));
     do_action('sunshine_add_order_end', $order_id, $data, $order_items);
     return $order_id;
 }
function sunshine_update_account()
{
    global $current_user, $sunshine;
    if (isset($_POST['sunshine_update_account']) && $_POST['sunshine_update_account'] == 1) {
        $vars['country'] = isset($_POST['country']) ? $_POST['country'] : '';
        $vars['first_name'] = isset($_POST['first_name']) ? $_POST['first_name'] : '';
        $vars['last_name'] = isset($_POST['last_name']) ? $_POST['last_name'] : '';
        $vars['address'] = isset($_POST['address']) ? $_POST['address'] : '';
        $vars['address2'] = isset($_POST['address2']) ? $_POST['address2'] : '';
        $vars['city'] = isset($_POST['city']) ? $_POST['city'] : '';
        $vars['state'] = isset($_POST['state']) ? $_POST['state'] : '';
        $vars['zip'] = isset($_POST['zip']) ? $_POST['zip'] : '';
        $vars['shipping_country'] = isset($_POST['shipping_country']) ? $_POST['shipping_country'] : '';
        $vars['shipping_first_name'] = isset($_POST['shipping_first_name']) ? $_POST['shipping_first_name'] : '';
        $vars['shipping_last_name'] = isset($_POST['shipping_last_name']) ? $_POST['shipping_last_name'] : '';
        $vars['shipping_address'] = isset($_POST['shipping_address']) ? $_POST['shipping_address'] : '';
        $vars['shipping_address2'] = isset($_POST['shipping_address2']) ? $_POST['shipping_address2'] : '';
        $vars['shipping_city'] = isset($_POST['shipping_city']) ? $_POST['shipping_city'] : '';
        $vars['shipping_state'] = isset($_POST['shipping_state']) ? $_POST['shipping_state'] : '';
        $vars['shipping_zip'] = isset($_POST['shipping_zip']) ? $_POST['shipping_zip'] : '';
        if (isset($_POST['billing_as_shipping']) && $_POST['billing_as_shipping'] == 1) {
            $vars['country'] = isset($_POST['shipping_country']) ? $_POST['shipping_country'] : '';
            $vars['first_name'] = isset($_POST['shipping_first_name']) ? $_POST['shipping_first_name'] : '';
            $vars['last_name'] = isset($_POST['shipping_last_name']) ? $_POST['shipping_last_name'] : '';
            $vars['address'] = isset($_POST['shipping_address']) ? $_POST['shipping_address'] : '';
            $vars['address2'] = isset($_POST['shipping_address2']) ? $_POST['shipping_address2'] : '';
            $vars['city'] = isset($_POST['shipping_city']) ? $_POST['shipping_city'] : '';
            $vars['state'] = isset($_POST['shipping_state']) ? $_POST['shipping_state'] : '';
            $vars['zip'] = isset($_POST['shipping_zip']) ? $_POST['shipping_zip'] : '';
        }
        $vars['billing_as_shipping'] = isset($_POST['billing_as_shipping']) ? $_POST['billing_as_shipping'] : '';
        $vars['phone'] = isset($_POST['phone']) ? $_POST['phone'] : '';
        foreach ($vars as $key => $item) {
            SunshineUser::update_user_meta_by_id($current_user->ID, $key, sanitize_text_field($item));
        }
        $userdata['ID'] = $current_user->ID;
        $userdata['user_email'] = sanitize_email($_POST['email']);
        $userdata['first_name'] = sanitize_text_field($_POST['first_name']);
        $userdata['last_name'] = sanitize_text_field($_POST['last_name']);
        wp_update_user($userdata);
        $sunshine->add_message(__('Account updated', 'sunshine'));
        wp_redirect(sunshine_current_url(false));
        exit;
    }
}
function sunshine_admin_user_credits_process($user_id)
{
    SunshineUser::update_user_meta_by_id($user_id, 'credits', sanitize_text_field($_POST['sunshine_credits']));
}