diff --git a/salsa_commerce.module b/salsa_commerce.module index dea2d54..c7a786a 100644 --- a/salsa_commerce.module +++ b/salsa_commerce.module @@ -13,13 +13,13 @@ function salsa_commerce_alter_donate_form(&$form, $form_state) { $form['flash_message_js']['#access'] = FALSE; // Add ajax handling to frequency selection. - if (isset($form['Donation']['recurring'])) { + if (isset($form['Donation']['recurring'])) { $form['Donation']['recurring']['#ajax'] = array( 'callback' => 'salsa_commerce_ajax_payment_selection', 'wrapper' => 'salsa-commerce-payment-form', ); $form['Donation']['payperiod']['#ajax'] = $form['Donation']['recurring']['#ajax']; - } + } // Change amount options, append currency. $currency_code = commerce_currency_get_code(); @@ -189,14 +189,21 @@ function salsa_commerce_donate_order_create_validate($form, &$form_state) { * Creates an order object based on a form. */ function salsa_commerce_create_order($form, &$form_state) { + if (isset($form_state['salsa_object']->donate_page_KEY)) { + $order_key = 'donate_page:' . $form_state['salsa_object']->donate_page_KEY; + } + else { + $order_key = 'my_donate_page:' . $form_state['salsa_object']->supporter_my_donate_page_KEY; + } + // Create a new order or get the existing one from the session. - if (!isset($_SESSION['salsa_commerce']['order_id'])) { + if (!isset($_SESSION['salsa_commerce'][$order_key])) { $order = commerce_order_new($GLOBALS['user']->uid); commerce_order_save($order); - $_SESSION['salsa_commerce']['order_id'] = $order->order_id; + $_SESSION['salsa_commerce'][$order_key] = $order->order_id; } else { - $order = commerce_order_load($_SESSION['salsa_commerce']['order_id']); + $order = commerce_order_load($_SESSION['salsa_commerce'][$order_key]); } // Add redirect link of the donate page. @@ -287,11 +294,10 @@ function salsa_commerce_create_order($form, &$form_state) { */ function salsa_commerce_add_line_item(&$form_state, $values, $order, $other_amount_key) { $order_wrapper = entity_metadata_wrapper('commerce_order', $order); - // Fetch existing line item and delete it in order to add a new one later on. - if (isset($_SESSION['salsa_commerce']['line_item_id'])) { - commerce_line_item_delete($_SESSION['salsa_commerce']['line_item_id']); - unset($order_wrapper->commerce_line_items); + if ($line_items = $order_wrapper->commerce_line_items->value()) { + commerce_line_item_delete($line_items[0]->line_item_id); + $order_wrapper->commerce_line_items->set(array()); } // Create new line item and add it to the order. @@ -303,10 +309,11 @@ function salsa_commerce_add_line_item(&$form_state, $values, $order, $other_amou ); commerce_line_item_save($line_item); - $_SESSION['salsa_commerce']['line_item_id'] = $line_item->line_item_id; // Add the line item to the cart order of the user. - $order_wrapper->commerce_line_items[] = $line_item; - return $order_wrapper->value(); + $order_wrapper->commerce_line_items[] = $line_item->line_item_id; + $order = $order_wrapper->value(); + commerce_order_save($order); + return $order; } /** @@ -396,7 +403,7 @@ function salsa_commerce_donate_order_create($form, &$form_state) { * Process the payment selection of a donation. */ function salsa_commerce_process_payment($order, $form, &$form_state) { - // Make sure the order is in the correct state, set and call the selected + // Make sure the order is in the correct state, set and call the selected // payment method. $order->status = 'checkout_payment'; $order->data['payment_method'] = $form_state['values']['commerce_payment']['payment_method']; @@ -531,7 +538,6 @@ function salsa_commerce_supporter_profile_map() { * The commerce order object. */ function salsa_commerce_commerce_checkout_complete($order) { - // Collect the donation line items. $commerce_line_items = field_get_items('commerce_order', $order, 'commerce_line_items'); $donation_line_items = array(); @@ -547,10 +553,21 @@ function salsa_commerce_commerce_checkout_complete($order) { foreach ($donation_line_items as $donation_line_item) { salsa_commerce_save_donation($order, $donation_line_item); + $line_item_wrapper = entity_metadata_wrapper('commerce_line_item', $donation_line_item); + // Order was completed so user is allowed to begin a new order now. + if (!empty($line_item_wrapper->salsa_donate_page->value())) { + $order_key = 'donate_page:' . $line_item_wrapper->salsa_donate_page->value()->donate_page_KEY; + } + else { + $order_key = 'my_donate_page:' . $line_item_wrapper->salsa_supporter_my_donate_page->value()->supporter_my_donate_page_KEY; + } + unset($_SESSION['salsa_commerce'][$order_key]); } - // Order was completed so user is allowed to begin a new order now. - unset($_SESSION['salsa_commerce']); + // If there's nothing left in the session get rid of it. + if (empty($_SESSION['salsa_commerce'])) { + unset($_SESSION['salsa_commerce']); + } } /** @@ -878,7 +895,7 @@ function salsa_commerce_add_salsa_donate_fields($line_item_type) { $field = field_create_field($field); } if (!field_info_instance('commerce_line_item', 'salsa_donate_page', $type)) { - $instance = array( + $instance = array( 'label' => t('Salsa Donate Page'), 'field_name' => 'salsa_donate_page', 'bundle' => $type, @@ -919,7 +936,7 @@ function salsa_commerce_add_salsa_donate_fields($line_item_type) { $field = field_create_field($field); } if (!field_info_instance('commerce_line_item', 'salsa_supporter_my_donate_page', $type)) { - $instance = array( + $instance = array( 'label' => t('Salsa Supporter My Donate Page'), 'field_name' => 'salsa_supporter_my_donate_page', 'bundle' => $type,