コード例 #1
0
 /** Add a pricate comment to order **/
 function add_private_comment($oid, $comment, $send_email = '', $send_sms, $copy_to_administrator = '')
 {
     // Check informations
     $order_private_comments = get_post_meta($oid, '_order_private_comments', true);
     $order_private_comments = !empty($order_private_comments) ? $order_private_comments : array();
     $order_meta = get_post_meta($oid, '_order_postmeta', true);
     // Send email is checked
     if (!empty($send_email)) {
         // New object wps_message_ctr
         $wps_message = new wps_message_ctr();
         // Get order current content
         $user = get_post_meta($oid, '_order_info', true);
         $email = isset($user['billing']['address']['address_user_email']) ? $user['billing']['address']['address_user_email'] : '';
         /** Si pas d'email trouvé, utilises l'adresse email par défault du client */
         if (empty($email)) {
             $customer_id = get_post_meta($oid, '_wpshop_order_customer_id', true);
             $user_info = get_userdata($customer_id);
             $email = $user_info->user_email;
         }
         $first_name = isset($user['billing']['address']['address_first_name']) ? $user['billing']['address']['address_first_name'] : '';
         $last_name = isset($user['billing']['address']['address_last_name']) ? $user['billing']['address']['address_last_name'] : '';
         $object = array('object_type' => 'order', 'object_id' => $oid);
         /* Envoie du message de confirmation de commande au client	*/
         $wps_message->wpshop_prepared_email($email, 'WPSHOP_ORDER_UPDATE_PRIVATE_MESSAGE', array('order_id' => $oid, 'customer_first_name' => $first_name, 'customer_last_name' => $last_name, 'order_key' => $order_meta['order_key'], 'message' => $comment, 'order_addresses' => '', 'order_billing_address' => '', 'order_shipping_address' => ''), $object);
         // Copy to Administrator
         if (!empty($copy_to_administrator)) {
             $email = get_option('wpshop_emails');
             $email = $email['contact_email'];
             $wps_message->wpshop_prepared_email($email, 'WPSHOP_ORDER_UPDATE_PRIVATE_MESSAGE', array('order_id' => $oid, 'customer_first_name' => $first_name, 'customer_last_name' => $last_name, 'order_key' => $order_meta['order_key'], 'message' => $comment, 'order_addresses' => '', 'order_billing_address' => '', 'order_shipping_address' => ''), $object);
         }
     }
     // Private comment informations
     $order_private_comments[] = array('comment_date' => current_time('mysql', 0), 'send_email' => $send_email, 'send_sms' => $send_sms, 'comment' => $comment, 'author' => get_current_user_id());
     // Save it
     if (is_array($order_private_comments)) {
         update_post_meta($oid, '_order_private_comments', $order_private_comments);
         return true;
     } else {
         return false;
     }
 }
コード例 #2
0
/** Send a direct payment Link **/
function wps_send_direct_payment_link()
{
    global $wpdb;
    $status = false;
    $response = '';
    $order_id = !empty($_POST['order_id']) ? intval($_POST['order_id']) : null;
    if (!empty($_POST['order_id'])) {
        /** Get the customer **/
        $order_metadata = get_post_meta($order_id, '_order_postmeta', true);
        if (!empty($order_metadata) && !empty($order_metadata['customer_id']) && !empty($order_metadata['order_status']) && $order_metadata['order_status'] == 'awaiting_payment') {
            $user_infos = get_userdata($order_metadata['customer_id']);
            $first_name = get_user_meta($user_infos->ID, 'first_name', true);
            $last_name = get_user_meta($user_infos->ID, 'last_name', true);
            /** Create an activation key **/
            $token = wp_generate_password(20, false);
            $wpdb->update($wpdb->users, array('user_activation_key' => $token), array('user_login' => $user_infos->user_login));
            $permalink_option = get_option('permalink_structure');
            $link = '<a href="' . get_permalink(wpshop_tools::get_page_id(get_option('wpshop_checkout_page_id'))) . (!empty($permalink_option) ? '?' : '&') . 'action=direct_payment_link&token=' . $token . '&login='******'&order_id=' . $order_id . '">' . __('Click here to pay your order', 'wpshop') . '</a>';
            /** Send message **/
            $wps_message = new wps_message_ctr();
            $wps_message->wpshop_prepared_email($user_infos->user_email, 'WPSHOP_DIRECT_PAYMENT_LINK_MESSAGE', array('customer_first_name' => $first_name, 'customer_last_name' => $last_name, 'direct_payment_link' => $link, 'order_content' => ''));
            $response = __('Direct payment link has been send', 'wpshop');
            $status = true;
        } else {
            $response = __('An error was occured', 'wpshop');
        }
    } else {
        $response = __('An error was occured, no Order ID defined', 'wpshop');
    }
    echo json_encode(array('status' => $status, 'response' => $response));
    die;
}
コード例 #3
0
 /**
  * Notificate customer on order saving action
  * @param array $order_metadata
  * @param array $posted_datas
  * @return array
  */
 function wps_notif_user_on_order_saving($order_metadata, $posted_datas)
 {
     if (!empty($posted_datas['notif_the_customer']) && $posted_datas['notif_the_customer'] == 'on') {
         $wps_message = new wps_message_ctr();
         /*	Get order current content	*/
         $user = get_post_meta($posted_datas['post_ID'], '_order_info', true);
         $email = get_userdata($posted_datas['user_ID'])->data->user_email;
         //$email = $user['billing']['address']['address_user_email'];
         $first_name = $user['billing']['address']['address_first_name'];
         $last_name = $user['billing']['address']['address_last_name'];
         $object = array('object_type' => 'order', 'object_id' => $_REQUEST['post_ID']);
         /* Envoie du message de confirmation de commande au client	*/
         if (empty($order_metadata['order_key'])) {
             $wps_message->wpshop_prepared_email($email, 'WPSHOP_QUOTATION_UPDATE_MESSAGE', array('order_id' => $object['object_id'], 'customer_first_name' => $first_name, 'customer_last_name' => $last_name, 'order_date' => current_time('mysql', 0), 'order_content' => '', 'order_addresses' => '', 'order_billing_address' => '', 'order_shipping_address' => ''));
         } else {
             $wps_message->wpshop_prepared_email($email, 'WPSHOP_ORDER_UPDATE_MESSAGE', array('customer_first_name' => $first_name, 'customer_last_name' => $last_name, 'order_key' => $order_metadata['order_key'], 'order_billing_address' => '', 'order_shipping_address' => '', 'order_addresses' => '', 'order_addresses' => '', 'order_billing_address' => '', 'order_shipping_address' => ''), $object);
         }
     }
     return $order_metadata;
 }
コード例 #4
0
 public static function send_order_email_to_administrator($order_id, $customer_infos = '')
 {
     if (!empty($order_id)) {
         $wps_message = new wps_message_ctr();
         $order_infos = get_post_meta($order_id, '_order_postmeta', true);
         //Send email to administrator(s)
         $shop_admin_email_option = get_option('wpshop_emails');
         $shop_admin_email = $shop_admin_email_option['contact_email'];
         $order_tmp_key = '';
         $shipping_mode_option = get_option('wps_shipping_mode');
         $shipping_method = !empty($order_infos['order_payment']['shipping_method']) && !empty($shipping_mode_option) && !empty($shipping_mode_option['modes']) && is_array($shipping_mode_option['modes']) && array_key_exists($order_infos['order_payment']['shipping_method'], $shipping_mode_option['modes']) ? $shipping_mode_option['modes'][$order_infos['order_payment']['shipping_method']]['name'] : (!empty($order_infos['order_payment']['shipping_method']) ? $order_infos['order_payment']['shipping_method'] : '');
         if (!empty($order_infos) && !empty($order_infos['cart_type']) && $order_infos['cart_type'] == 'normal' && !empty($order_infos['order_key'])) {
             $message_type = 'WPSHOP_NEW_ORDER_ADMIN_MESSAGE';
         } else {
             $message_type = 'WPSHOP_NEW_QUOTATION_ADMIN_MESSAGE';
             $order_tmp_key = $order_infos['order_temporary_key'];
         }
         $payment_method_option = get_option('wps_payment_mode');
         $order_payment_method = !empty($payment_method_option) && !empty($payment_method_option['mode']) && !empty($order_infos['order_payment']['customer_choice']['method']) && !empty($payment_method_option['mode'][$order_infos['order_payment']['customer_choice']['method']]) ? $payment_method_option['mode'][$order_infos['order_payment']['customer_choice']['method']]['name'] : $order_infos['order_payment']['customer_choice']['method'];
         $data_to_send = array('order_id' => $order_id, 'order_key' => $order_infos['order_key'], 'customer_email' => !empty($customer_infos) && !empty($customer_infos->user_email) ? $customer_infos->user_email : '', 'customer_last_name' => !empty($customer_infos) && !empty($customer_infos->user_lastname) ? $customer_infos->user_lastname : '', 'customer_first_name' => !empty($customer_infos) && !empty($customer_infos->user_firstname) ? $customer_infos->user_firstname : '', 'order_date' => $order_infos['order_date'], 'order_payment_method' => $order_payment_method, 'order_temporary_key' => $order_tmp_key, 'order_content' => '', 'order_addresses' => '', 'order_customer_comments' => '', 'order_billing_address' => '', 'order_shipping_address' => '', 'order_shipping_method' => $shipping_method, 'order_personnal_informations' => '');
         $wps_message->wpshop_prepared_email($shop_admin_email, $message_type, $data_to_send, array('object_type' => 'order', 'object_id' => $order_id));
     }
 }
コード例 #5
0
 /**
  * Add Credit informations on order
  * @param array $order_metadata
  * @param array $posted_datas
  */
 function wps_credit_actions_on_order_save($order_metadata, $posted_datas)
 {
     if (!empty($posted_datas['markascanceled_order_hidden_indicator']) && wpshop_tools::varSanitizer($posted_datas['markascanceled_order_hidden_indicator']) == 'canceled' || !empty($posted_datas['markasrefunded_order_hidden_indicator']) && wpshop_tools::varSanitizer($posted_datas['markasrefunded_order_hidden_indicator']) == 'refunded' || !empty($posted_datas['resendordertocustomer_order_hidden_indicator']) && wpshop_tools::varSanitizer($posted_datas['resendordertocustomer_order_hidden_indicator']) == 'resended') {
         if (empty($posted_datas['resendordertocustomer_order_hidden_indicator'])) {
             // Make a credit
             $this->create_an_credit($posted_datas['post_ID']);
             if (!empty($posted_datas['markascanceled_order_hidden_indicator'])) {
                 $order_metadata['order_status'] = wpshop_tools::varSanitizer($posted_datas['markascanceled_order_hidden_indicator']);
             } elseif (!empty($posted_datas['markasrefunded_order_hidden_indicator'])) {
                 $order_metadata['order_status'] = wpshop_tools::varSanitizer($posted_datas['markasrefunded_order_hidden_indicator']);
             }
             $order_metadata['order_payment']['refunded_action']['refunded_date'] = current_time('mysql', 0);
             $order_metadata['order_payment']['refunded_action']['author'] = get_current_user_id();
         } elseif (wpshop_tools::varSanitizer($posted_datas['resendordertocustomer_order_hidden_indicator']) == 'resended') {
             $order_id = $posted_datas['post_ID'];
             $order_info = get_post_meta($order_id, '_order_info', true);
             $user_data = get_userdata($order_metadata['customer_id']);
             $shipping_mode_option = get_option('wps_shipping_mode');
             $shipping_method = !empty($order_metadata['order_payment']['shipping_method']) && !empty($shipping_mode_option) && !empty($shipping_mode_option['modes']) && is_array($shipping_mode_option['modes']) && array_key_exists($order_metadata['order_payment']['shipping_method'], $shipping_mode_option['modes']) ? $shipping_mode_option['modes'][$order_metadata['order_payment']['shipping_method']]['name'] : (!empty($order_metadata['order_payment']['shipping_method']) ? $order_metadata['order_payment']['shipping_method'] : '');
             $email = !empty($user_data) && !empty($user_data->user_email) ? $user_data->user_email : '';
             //echo '<pre>'; print_r($email); echo '</pre>'; exit();
             $first_name = !empty($order_info) && !empty($order_info['billing']) && !empty($order_info['billing']['address']['address_first_name']) ? $order_info['billing']['address']['address_first_name'] : '';
             $last_name = !empty($order_info) && !empty($order_info['billing']) && !empty($order_info['billing']['address']['address_last_name']) ? $order_info['billing']['address']['address_last_name'] : '';
             $allow_send_invoice = get_option('wpshop_send_invoice');
             $payment_methods = new wpshop_payment();
             $key = count($order_metadata['order_payment']['received']) - 1;
             $invoice_attachment_file = !empty($allow_send_invoice) ? wpshop_modules_billing::generate_invoice_for_email($order_id, $order_metadata['order_payment']['received'][$key]['invoice_ref']) : '';
             $wps_message = new wps_message_ctr();
             $wps_message->wpshop_prepared_email($email, 'WPSHOP_OTHERS_PAYMENT_CONFIRMATION_MESSAGE', array('order_key' => $order_metadata['order_key'], 'customer_first_name' => $first_name, 'customer_last_name' => $last_name, 'order_date' => $order_metadata['order_date'], 'order_shipping_method' => $shipping_method), array(), $invoice_attachment_file);
         }
     }
     return $order_metadata;
 }
コード例 #6
0
 /**
  * SIGN UP - Save sign up form
  */
 function wps_save_signup_form()
 {
     global $wpdb, $wpshop;
     $user_id = !empty($_POST['wps_sign_up_request_from_admin']) ? 0 : get_current_user_id();
     $wps_message = new wps_message_ctr();
     $status = $account_creation = false;
     $result = '';
     $exclude_user_meta = array('user_email', 'user_pass');
     $element_id = wpshop_entities::get_entity_identifier_from_code(WPSHOP_NEWTYPE_IDENTIFIER_CUSTOMERS);
     if (!empty($element_id)) {
         $query = $wpdb->prepare('SELECT id FROM ' . WPSHOP_DBT_ATTRIBUTE_SET . ' WHERE entity_id = %d', $element_id);
         $attribute_set_id = $wpdb->get_var($query);
         if (!empty($attribute_set_id)) {
             $group = wps_address::get_addresss_form_fields_by_type($attribute_set_id);
             foreach ($group as $attribute_sets) {
                 foreach ($attribute_sets as $attribute_set_field) {
                     if (!empty($_POST['wps_sign_up_request_from_admin'])) {
                         foreach ($attribute_set_field['content'] as $attribute_code => $att_def) {
                             if ($attribute_code != 'account_user_email') {
                                 $attribute_set_field['content'][$attribute_code]['required'] = 'no';
                             }
                         }
                     }
                     $validate = $wpshop->validateForm($attribute_set_field['content'], $_POST['attribute']);
                 }
                 if (empty($wpshop->errors)) {
                     $user_name = !empty($_POST['attribute']['varchar']['user_login']) ? $_POST['attribute']['varchar']['user_login'] : $_POST['attribute']['varchar']['user_email'];
                     $user_pass = !empty($_POST['attribute']['varchar']['user_pass']) && !empty($_POST['wps_signup_account_creation']) ? $_POST['attribute']['varchar']['user_pass'] : wp_generate_password(12, false);
                     if ($user_id == 0) {
                         $user_id = wp_create_user($user_name, $user_pass, $_POST['attribute']['varchar']['user_email']);
                         if (!is_object($user_id)) {
                             $account_creation = true;
                             /** Update newsletter user preferences **/
                             $newsletter_preferences = array();
                             if (!empty($_POST['newsletters_site'])) {
                                 $newsletter_preferences['newsletters_site'] = 1;
                             }
                             if (!empty($_POST['newsletters_site_partners'])) {
                                 $newsletter_preferences['newsletters_site_partners'] = 1;
                             }
                             update_user_meta($user_id, 'user_preferences', $newsletter_preferences);
                         }
                     }
                     $customer_entity_request = $wpdb->prepare('SELECT ID FROM ' . $wpdb->posts . ' WHERE post_type = %s AND post_author = %d', WPSHOP_NEWTYPE_IDENTIFIER_CUSTOMERS, $user_id);
                     $customer_entity_id = $wpdb->get_var($customer_entity_request);
                     //Save attributes
                     if (!empty($_POST['attribute'])) {
                         foreach ($_POST['attribute'] as $att_type => $atts) {
                             foreach ($atts as $att_code => $att_value) {
                                 $q = $wpdb->prepare('SELECT id FROM ' . WPSHOP_DBT_ATTRIBUTE . ' WHERE code = %s', $att_code);
                                 $attribute_id = $wpdb->get_var($q);
                                 if (!empty($attribute_id)) {
                                     $t = $wpdb->insert(WPSHOP_DBT_ATTRIBUTE_VALUES_PREFIX . strtolower($att_type), array('entity_type_id' => $element_id, 'attribute_id' => $attribute_id, 'entity_id' => $customer_entity_id, 'user_id' => $user_id, 'creation_date_value' => current_time('mysql', 0), 'language' => 'fr_FR', 'value' => $att_value));
                                 }
                             }
                         }
                     }
                     foreach ($attribute_set_field['content'] as $attribute) {
                         if (!in_array($attribute['name'], $exclude_user_meta)) {
                             update_user_meta($user_id, $attribute['name'], wpshop_tools::varSanitizer($_POST['attribute'][$attribute['data_type']][$attribute['name']]));
                         } else {
                             wp_update_user(array('ID' => $user_id, $attribute['name'] => wpshop_tools::varSanitizer($_POST['attribute'][$attribute['data_type']][$attribute['name']])));
                         }
                     }
                     if (!empty($_SESSION) && !empty($_SESSION['cart'])) {
                         $permalink_option = get_option('permalink_structure');
                         $checkout_page_id = wpshop_tools::get_page_id(get_option('wpshop_checkout_page_id'));
                         $result = get_permalink($checkout_page_id) . (!empty($permalink_option) ? '?' : '&') . 'order_step=3';
                     } else {
                         $account_page_id = wpshop_tools::get_page_id(get_option('wpshop_myaccount_page_id'));
                         $result = get_permalink($account_page_id);
                     }
                     $status = true;
                     if ($account_creation && empty($_POST['wps_sign_up_request_from_admin'])) {
                         $secure_cookie = is_ssl() ? true : false;
                         wp_set_auth_cookie($user_id, true, $secure_cookie);
                     }
                     $wps_message->wpshop_prepared_email($_POST['attribute']['varchar']['user_email'], 'WPSHOP_SIGNUP_MESSAGE', array('customer_first_name' => !empty($_POST['attribute']['varchar']['first_name']) ? $_POST['attribute']['varchar']['first_name'] : '', 'customer_last_name' => !empty($_POST['attribute']['varchar']['last_name']) ? $_POST['attribute']['varchar']['last_name'] : '', 'customer_user_email' => !empty($_POST['attribute']['varchar']['user_email']) ? $_POST['attribute']['varchar']['user_email'] : ''));
                 } else {
                     $result = '<div class="wps-alert-error">' . __('Some errors have been detected', 'wpshop') . ' : <ul>';
                     foreach ($wpshop->errors as $error) {
                         $result .= '<li>' . $error . '</li>';
                     }
                     $result .= '</div>';
                 }
             }
         }
     }
     echo json_encode(array($status, $result, $user_id));
     die;
 }
コード例 #7
0
 /**
  * Update th receive payment part in order postmeta and return "Complete" if the shop have received the total amount of the order
  * @param int $order_id
  * @param array $params_array
  * @return string
  */
 public static function check_order_payment_total_amount($order_id, $params_array, $bank_response, $order_meta = array(), $save_metadata = true)
 {
     global $wpshop_payment;
     global $wpdb;
     $order_meta = !empty($order_meta) ? $order_meta : get_post_meta($order_id, '_order_postmeta', true);
     $wps_message = new wps_message_ctr();
     if (!empty($order_meta)) {
         $order_info = get_post_meta($order_id, '_order_info', true);
         $user_data = get_userdata($order_meta['customer_id']);
         $email = !empty($user_data) && !empty($user_data->user_email) ? $user_data->user_email : '';
         // 			$email = ( !empty($order_info) &&  !empty($order_info['billing']) && !empty($order_info['billing']['address']['address_user_email']) ) ? $order_info['billing']['address']['address_user_email'] : '' ;
         $first_name = !empty($order_info) && !empty($order_info['billing']) && !empty($order_info['billing']['address']['address_first_name']) ? $order_info['billing']['address']['address_first_name'] : '';
         $last_name = !empty($order_info) && !empty($order_info['billing']) && !empty($order_info['billing']['address']['address_last_name']) ? $order_info['billing']['address']['address_last_name'] : '';
         $key = self::get_order_waiting_payment_array_id($order_id, $params_array['method']);
         $order_grand_total = $order_meta['order_grand_total'];
         $total_received = !empty($params_array['status']) && $params_array['status'] == 'payment_received' && $bank_response == 'completed' && !empty($params_array['received_amount']) ? $params_array['received_amount'] : 0;
         foreach ($order_meta['order_payment']['received'] as $received) {
             $total_received += !empty($received['status']) && $received['status'] == 'payment_received' && $bank_response == 'completed' && !empty($received['received_amount']) ? $received['received_amount'] : 0;
         }
         $order_meta['order_amount_to_pay_now'] = $order_grand_total - $total_received;
         $order_meta['order_payment']['received'][$key] = self::add_new_payment_to_order($order_id, $order_meta, $key, $params_array, $bank_response);
         if ($bank_response == 'completed') {
             if (number_format((double) $total_received, 2, '.', '') >= number_format((double) $order_grand_total, 2, '.', '')) {
                 $payment_status = 'completed';
                 $order_meta['order_invoice_ref'] = empty($order_meta['order_invoice_ref']) && !empty($order_meta['order_payment']['received'][$key]) && !empty($order_meta['order_payment']['received'][$key]['invoice_ref']) ? $order_meta['order_payment']['received'][$key]['invoice_ref'] : $order_meta['order_invoice_ref'];
                 $order_meta['order_invoice_date'] = current_time('mysql', 0);
                 if (!empty($order_meta['order_items'])) {
                     foreach ($order_meta['order_items'] as $item_id => $o) {
                         $pid = $o['item_id'];
                         if (strpos($item_id, '__') !== false) {
                             $product_data_id = explode('__', $item_id);
                             $pid = !empty($product_data_id) && !empty($product_data_id[1]) ? $product_data_id[1] : $pid;
                         }
                         $product = wpshop_products::get_product_data($pid);
                         if (get_post_type($pid) == WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT_VARIATION) {
                             $parent_def = wpshop_products::get_parent_variation($pid);
                             $parent_post = $parent_def['parent_post'];
                             $product = wpshop_products::get_product_data($parent_post->ID);
                         }
                         if (!empty($product) && !empty($product['manage_stock']) && strtolower(__($product['manage_stock'], 'wpshop')) == strtolower(__('Yes', 'wpshop'))) {
                             wpshop_products::reduce_product_stock_qty($product['product_id'], $o['item_qty'], $pid);
                         }
                     }
                 }
                 /** Add information about the order completed date */
                 update_post_meta($order_id, '_' . WPSHOP_NEWTYPE_IDENTIFIER_ORDER . '_completed_date', current_time('mysql', 0));
                 /** Check if the order content a downloadable product **/
                 if (!empty($order_meta['order_items'])) {
                     foreach ($order_meta['order_items'] as $key_value => $item) {
                         $key_value = $item['item_id'];
                         /** Check if it's a product with signle variation, check the parent product **/
                         if (!empty($item['item_id']) && get_post_type($item['item_id']) == WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT_VARIATION) {
                             $parent_item = wpshop_products::get_parent_variation($item['item_id']);
                             $key_value = $parent_item['parent_post']->ID;
                             $parent_post_metadata = $parent_item['parent_post_meta'];
                             if (!empty($parent_post_metadata['is_downloadable_'])) {
                                 $query = $wpdb->prepare('SELECT value FROM ' . WPSHOP_DBT_ATTRIBUTE_VALUES_OPTIONS . ' WHERE id = %d', $parent_post_metadata['is_downloadable_']);
                                 $downloadable_option_value = $wpdb->get_var($query);
                                 if (!empty($downloadable_option_value)) {
                                     $item['item_is_downloadable_'] = $downloadable_option_value;
                                 }
                             }
                         }
                         if (!empty($item) && !empty($item['item_is_downloadable_']) && (__($item['item_is_downloadable_'], 'wpshop') == __('Yes', 'wpshop') || __($item['item_is_downloadable_'], 'wpshop') == __('yes', 'wpshop'))) {
                             $download_codes = get_user_meta($order_meta['customer_id'], '_order_download_codes_' . $order_id, true);
                             if (!empty($download_codes) && !empty($download_codes[$key_value]) && !empty($download_codes[$key_value]['download_code'])) {
                                 $link = '<a href="' . WPSHOP_URL . '/download_file.php?oid=' . $order_id . '&amp;download=' . $download_codes[$key_value]['download_code'] . '">' . __('Download', 'wpshop') . '</a>';
                                 $wps_message->wpshop_prepared_email($email, 'WPSHOP_DOWNLOADABLE_FILE_IS_AVAILABLE', array('order_key' => $order_meta['order_key'], 'customer_first_name' => $first_name, 'customer_last_name' => $last_name, 'order_date' => $order_meta['order_date'], 'download_product_link' => $link), array());
                             }
                         }
                     }
                 }
                 // Send confirmation e-mail to administrator
                 if (empty($_SESSION['wps-pos-addon'])) {
                     $email_option = get_option('wpshop_emails');
                     if (!empty($email_option) && !empty($email_option['send_confirmation_order_message'])) {
                         wpshop_checkout::send_order_email_to_administrator($order_id, $user_data);
                     }
                 }
                 // POS Status
                 if (!empty($order_meta['order_payment']) && !empty($order_meta['order_payment']['shipping_method']) && $order_meta['order_payment']['shipping_method'] == 'default_shipping_mode_for_pos') {
                     $payment_status = 'pos';
                 }
             } else {
                 $payment_status = 'partially_paid';
             }
             $order_meta['order_status'] = $payment_status;
             update_post_meta($order_id, '_order_postmeta', $order_meta);
             $save_metadata = false;
             $allow_send_invoice = get_option('wpshop_send_invoice');
             $invoice_attachment_file = !empty($allow_send_invoice) ? wpshop_modules_billing::generate_invoice_for_email($order_id, $order_meta['order_payment']['received'][$key]['invoice_ref']) : '';
             $email_option = get_option('wpshop_emails');
             $shipping_mode_option = get_option('wps_shipping_mode');
             $shipping_method = !empty($order_meta['order_payment']['shipping_method']) && !empty($shipping_mode_option) && !empty($shipping_mode_option['modes']) && is_array($shipping_mode_option['modes']) && array_key_exists($order_meta['order_payment']['shipping_method'], $shipping_mode_option['modes']) ? $shipping_mode_option['modes'][$order_meta['order_payment']['shipping_method']]['name'] : (!empty($order_meta['order_payment']['shipping_method']) ? $order_meta['order_payment']['shipping_method'] : '');
             $payment_method_option = get_option('wps_payment_mode');
             $order_payment_method = !empty($payment_method_option) && !empty($payment_method_option['mode']) && !empty($order_meta['order_payment']['customer_choice']['method']) && !empty($payment_method_option['mode'][$order_meta['order_payment']['customer_choice']['method']]) ? $payment_method_option['mode'][$order_meta['order_payment']['customer_choice']['method']]['name'] : $order_meta['order_payment']['customer_choice']['method'];
             if (!empty($email_option) && !empty($email_option['send_confirmation_order_message']) && $payment_status == 'completed') {
                 $wps_message->wpshop_prepared_email($email, 'WPSHOP_ORDER_CONFIRMATION_MESSAGE', array('order_id' => $order_id, 'customer_first_name' => $first_name, 'customer_last_name' => $last_name, 'customer_email' => $email, 'order_key' => !empty($order_meta['order_key']) ? $order_meta['order_key'] : '', 'order_date' => current_time('mysql', 0), 'order_payment_method' => $order_payment_method, 'order_content' => '', 'order_addresses' => '', 'order_customer_comments' => '', 'order_billing_address' => '', 'order_shipping_address' => '', 'order_shipping_method' => $shipping_method));
             }
             $wps_message->wpshop_prepared_email($email, 'WPSHOP_OTHERS_PAYMENT_CONFIRMATION_MESSAGE', array('order_key' => $order_meta['order_key'], 'customer_first_name' => $first_name, 'customer_last_name' => $last_name, 'order_date' => $order_meta['order_date'], 'order_shipping_method' => $shipping_method), array(), $invoice_attachment_file);
         } else {
             $payment_status = $bank_response;
         }
         $order_meta['order_status'] = $payment_status;
         if (!$save_metadata) {
             return $order_meta;
         } else {
             update_post_meta($order_id, '_order_postmeta', $order_meta);
         }
         update_post_meta($order_id, '_wpshop_order_status', $payment_status);
     }
 }