diff --git a/fulcrm_shoppingcart.module b/fulcrm_shoppingcart.module index 697f684..375d3e7 100644 --- a/fulcrm_shoppingcart.module +++ b/fulcrm_shoppingcart.module @@ -443,8 +443,8 @@ function _fulcrm_shoppingcart_buy_eventbookingtype_create_shoppingitem( &$form_s ); if ( $form_state[ 'fulcrm_shoppingcart' ][ 'eventbookingtype' ][ 'eventbooking_ddatacollection' ] ) { - $item[ 'd' ][ 'fulcrm' ][ 'eventbooking' ][ 'd' ][ 'fulcrm_collections' ] = array( $form_state[ 'fulcrm_shoppingcart' ][ 'eventbookingtype' ][ 'eventbooking_ddatacollection' ][ 's' ] ); - $item[ 'd' ][ 'fulcrm' ][ 'eventbooking' ][ 'd' ][ '_structure' ] = $form_state[ 'fulcrm_shoppingcart' ][ 'eventbookingtype' ][ 'eventbooking_ddatacollection' ][ '_structure' ]; + $item[ 'd' ][ 'fulcrm' ][ 'eventbooking' ][ '_drupal_gather' ][ '_structure' ] = $form_state[ 'fulcrm_shoppingcart' ][ 'eventbookingtype' ][ 'eventbooking_ddatacollection' ][ '_structure' ]; + $item[ 'd' ][ 'fulcrm' ][ 'eventbooking' ][ '_drupal_gather' ][ 's' ] = $form_state[ 'fulcrm_shoppingcart' ][ 'eventbookingtype' ][ 'eventbooking_ddatacollection' ][ 's' ]; } $api_data = fulcrm_apiv2_POST( 'shoppingitem/', $item, $query = array( 'expand' => 'd' ) ); @@ -1229,15 +1229,108 @@ function fulcrm_shoppingcart_donate() { return drupal_goto( 'fulcrm/checkout' ); } +function _fulcrm_shoppingcart_checkout_2( &$cart ) { + $hook_results = module_invoke_all( 'fulcrm_shoppingcart_pre_cart_to_transaction', $cart ); + foreach ( $hook_results as $hook_result ) + return $hook_result; + + $transaction_data = fulcrm_apiv2_POST( $cart[ 'url' ] . 'transaction/', array(), array( 'expand' => implode( ',', array( 'd' ) ) ) ); + fulcrm_shoppingcart_invalidate_cache(); + if ( $transaction_data[ 'success' ] ) { + $hmac = fulcrm_crypto_object_id_hmac( 'transaction', $transaction_data[ 'data' ][ 'id' ] ); + + $transaction_push = array( 'd' => array( 'fulcrm_fund_transaction_pay_failure_url' => url( 'fulcrm/checkout/failure/' . $transaction_data[ 'data' ][ 'id' ]. '/' . $hmac, array( 'absolute' => TRUE ) ), + 'fulcrm_fund_transaction_complete_success_url' => url( 'fulcrm/checkout/success/' . $transaction_data[ 'data' ][ 'id' ]. '/' . $hmac, array( 'absolute' => TRUE ) ), + 'fulcrm_fund_transaction_complete_failure_url' => url( 'fulcrm/checkout/failure/' . $transaction_data[ 'data' ][ 'id' ]. '/' . $hmac, array( 'absolute' => TRUE ) ), + ), + ); + + $transaction_data2 = fulcrm_apiv2_PATCH( $transaction_data[ 'data' ][ 'url' ], + $transaction_push, $query = array( 'expand' => implode( ',', array( 'd', + 'lineitems', + 'paymentitems', + ) ) ) ); + fulcrm_shoppingcart_invalidate_cache(); + if ( $transaction_data2[ 'success' ] ) { + $hook_results = module_invoke_all( 'fulcrm_shoppingcart_post_cart_to_transaction', $transaction_data2[ 'data' ] ); + foreach ( $hook_results as $hook_result ) + return $hook_result; + return theme( 'fulcrm_shoppingcart_transaction_checkout', array( 'transaction' => $transaction_data2[ 'data' ], + 'use_coupon_url' => fulcrm_shoppingcart_coupon_url( $transaction_data[ 'data' ][ 'id' ] ), + ) ); + } + return 'problem 3'; + } + return 'problem 2'; +} + +function fulcrm_shoppingcart_pre_cart_step_form_submit( $form, &$form_state ) { + $cart = $form_state[ 'fulcrm_shoppingcart' ][ 'cart' ]; + foreach ( $cart[ 'shoppingitems' ] as $index => $item ) { + if ( array_key_exists( 'eventbooking', $item[ 'd' ][ 'fulcrm' ] ) ) { + if ( array_key_exists( '_drupal_gather', $item[ 'd' ][ 'fulcrm' ][ 'eventbooking' ] ) ) { + $item_no = 'shoppingitem' . $item[ 'id' ]; + $item_d = fulcrm_collection_form_values_to_d( $item_no, $form_state[ 'values' ] ); + foreach ( $item_d as $k => $v ) { + $form_state[ 'fulcrm_shoppingcart' ][ 'cart' ][ 'shoppingitems' ][ $index ][ 'd' ][ 'fulcrm' ][ 'eventbooking' ][ 'eventbooking' ][ $k ] = $v; + } + $api_data = fulcrm_apiv2_PATCH( $item[ 'url' ], array( 'd' => $form_state[ 'fulcrm_shoppingcart' ][ 'cart' ][ 'shoppingitems' ][ $index ][ 'd' ] ), + $query = array( 'expand' => implode( ',', array( 'd' ) ) ) ); + } + } + } + fulcrm_shoppingcart_invalidate_cache(); + return _fulcrm_shoppingcart_checkout_2( $cart ); +} + +function fulcrm_shoppingcart_pre_cart_step_form( $form, &$form_state, $cart ) { + drupal_set_title( 'Additional Information Required' ); + + $form_state[ 'fulcrm_shoppingcart' ][ 'cart' ] = $cart; + // die( print_r( $cart,1 ) ); + + $form[ 'title_event' ] = array( '#type' => 'markup', + '#markup' => '

Additional Information Required

', + ); + + foreach ( $cart[ 'shoppingitems' ] as $index => $item ) { + if ( array_key_exists( 'eventbooking', $item[ 'd' ][ 'fulcrm' ] ) ) { + if ( array_key_exists( '_drupal_gather', $item[ 'd' ][ 'fulcrm' ][ 'eventbooking' ] ) ) { + $item_no = 'shoppingitem' . $item[ 'id' ]; + $form[ $item_no ] = array( '#type' => 'fieldset', + '#title' => $item[ 'd' ][ 'name' ], + ); + $form[ $item_no ][ 'd' ] = fulcrm_collection_to_form( $item_no, + $item[ 'd' ][ 'fulcrm' ][ 'eventbooking' ][ '_drupal_gather' ], + $item[ 'd' ][ 'fulcrm' ][ 'eventbooking' ][ '_drupal_gather' ] ); + } + } + } + + $form[ 'actions' ] = array( '#type' => 'actions' ); + $form[ 'actions' ][ 'submit' ] = array( '#type' => 'submit', + '#value' => t('Submit'), + '#submit' => array( 'fulcrm_shoppingcart_pre_cart_step_form_submit' ), + ); + return $form; +} + function fulcrm_shoppingcart_pre_cart_step( &$cart ) { - die( 'DIE: ' . print_r( $cart, 1 ) ); + return drupal_get_form( 'fulcrm_shoppingcart_pre_cart_step_form', $cart ); } function fulcrm_shoppingcart_has_pre_cart_step( &$cart ) { foreach ( $cart[ 'shoppingitems' ] as $k => $item ) { if ( array_key_exists( 'eventbooking', $item[ 'd' ][ 'fulcrm' ] ) ) { - if ( array_key_exists( '_structure', $item[ 'd' ][ 'fulcrm' ][ 'eventbooking' ][ 'd' ] ) ) - return true; + if ( array_key_exists( '_drupal_gather', $item[ 'd' ][ 'fulcrm' ][ 'eventbooking' ] ) ) { + if ( array_key_exists( 'eventbooking', $item[ 'd' ][ 'fulcrm' ][ 'eventbooking' ] ) ) { + if ( empty( $item[ 'd' ][ 'fulcrm' ][ 'eventbooking' ][ 'eventbooking' ] ) ) { + return true; + } + } else { + return true; + } + } } } return false; @@ -1249,39 +1342,7 @@ function fulcrm_shoppingcart_checkout() { if ( fulcrm_shoppingcart_has_pre_cart_step( $cart ) ) { return fulcrm_shoppingcart_pre_cart_step( $cart ); } - - $hook_results = module_invoke_all( 'fulcrm_shoppingcart_pre_cart_to_transaction', $cart ); - foreach ( $hook_results as $hook_result ) - return $hook_result; - - $transaction_data = fulcrm_apiv2_POST( $cart[ 'url' ] . 'transaction/', array(), array( 'expand' => implode( ',', array( 'd' ) ) ) ); - fulcrm_shoppingcart_invalidate_cache(); - if ( $transaction_data[ 'success' ] ) { - $hmac = fulcrm_crypto_object_id_hmac( 'transaction', $transaction_data[ 'data' ][ 'id' ] ); - - $transaction_push = array( 'd' => array( 'fulcrm_fund_transaction_pay_failure_url' => url( 'fulcrm/checkout/failure/' . $transaction_data[ 'data' ][ 'id' ]. '/' . $hmac, array( 'absolute' => TRUE ) ), - 'fulcrm_fund_transaction_complete_success_url' => url( 'fulcrm/checkout/success/' . $transaction_data[ 'data' ][ 'id' ]. '/' . $hmac, array( 'absolute' => TRUE ) ), - 'fulcrm_fund_transaction_complete_failure_url' => url( 'fulcrm/checkout/failure/' . $transaction_data[ 'data' ][ 'id' ]. '/' . $hmac, array( 'absolute' => TRUE ) ), - ), - ); - - $transaction_data2 = fulcrm_apiv2_PATCH( $transaction_data[ 'data' ][ 'url' ], - $transaction_push, $query = array( 'expand' => implode( ',', array( 'd', - 'lineitems', - 'paymentitems', - ) ) ) ); - fulcrm_shoppingcart_invalidate_cache(); - if ( $transaction_data2[ 'success' ] ) { - $hook_results = module_invoke_all( 'fulcrm_shoppingcart_post_cart_to_transaction', $transaction_data2[ 'data' ] ); - foreach ( $hook_results as $hook_result ) - return $hook_result; - return theme( 'fulcrm_shoppingcart_transaction_checkout', array( 'transaction' => $transaction_data2[ 'data' ], - 'use_coupon_url' => fulcrm_shoppingcart_coupon_url( $transaction_data[ 'data' ][ 'id' ] ), - ) ); - } - return 'problem 3'; - } - return 'problem 2'; + return _fulcrm_shoppingcart_checkout_2( $cart ); } return 'problem 1'; }