starting to send across a guest checkout structure

master
Marek Isalski 6 years ago
parent 563e17ba58
commit f2b3a7046d

@ -176,7 +176,8 @@ function fulcrm_shoppingcart_get_session_cart( $create = true ) {
}
$api_data = fulcrm_apiv2_GET( 'shoppingcart/' . $_SESSION[ 'fulcrm_shoppingcart_id' ] . '/',
$query = array( 'expand' => implode( ',', array( 'shoppingitems',
$query = array( 'expand' => implode( ',', array( 'd',
'shoppingitems',
'shoppingitems.d',
'shoppingitems.content_object',
'shoppingitems.product' ) ) ) );
@ -236,7 +237,7 @@ function fulcrm_shoppingcart_remove_url( $shoppingitem_id ) {
return url( 'fulcrm/cart/remove/' . $shoppingitem_id . '/' . $hmac );
}
function fulcrm_shoppingcart_person_add_form_submit( $form, &$form_state ) {
function _fulcrm_shoppingcart_person_add_form_submit_to_data( $form, &$form_state ) {
$person_d = fulcrm_collection_form_values_to_d( 'person', $form_state[ 'values' ] );
$person_data = array( 'd' => $person_d );
@ -248,7 +249,10 @@ function fulcrm_shoppingcart_person_add_form_submit( $form, &$form_state ) {
}
$person_data[ 'uuid' ] = fulcrm_uuid_uuid4();
}
function fulcrm_shoppingcart_person_add_form_submit( $form, &$form_state ) {
$person_data = _fulcrm_shoppingcart_person_add_form_submit_to_data( $form, $form_state );
$person_data = module_invoke_all( 'fulcrm_shoppingcart_alter_person_add', $person_data );
$api_data = fulcrm_apiv2_POST( 'person/', $person_data, $query = array( 'expand' => 'd' ) );
@ -258,23 +262,33 @@ function fulcrm_shoppingcart_person_add_form_submit( $form, &$form_state ) {
}
function fulcrm_shoppingcart_person_add_guest_form_submit( $form, &$form_state ) {
$person_d = fulcrm_collection_form_values_to_d( 'person', $form_state[ 'values' ] );
$person_data = _fulcrm_shoppingcart_person_add_form_submit_to_data( $form, $form_state );
$person_data = module_invoke_all( 'fulcrm_shoppingcart_alter_person_add', $person_data );
$person_data = array( 'd' => $person_d );
if ( array_key_exists( 'name', $person_d ) ) {
if ( is_array( $person_d[ 'name' ] ) )
$person_data[ 'name' ] = $person_d[ 'name' ][ 0 ];
elseif ( is_string( $person_d[ 'name' ] ) )
$person_data[ 'name' ] = $person_d[ 'name' ];
$cart = fulcrm_shoppingcart_get_session_cart();
if ( $cart[ 'url' ] ) {
$cart[ 'd' ][ 'fulcrm' ][ 'person' ][ $person_data[ 'uuid' ] ] = $person_data;
if ( !array_key_exists( 'transaction', $cart[ 'd' ][ 'fulcrm' ] ) ||
!array_key_exists( 'person', $cart[ 'd' ][ 'fulcrm' ][ 'transaction' ] ) ) {
$cart[ 'd' ][ 'fulcrm' ][ 'transaction' ][ 'person' ] = $person_data[ 'uuid' ];
}
$person_data[ 'uuid' ] = fulcrm_uuid_uuid4();
$person_data = module_invoke_all( 'fulcrm_shoppingcart_alter_person_add_guest', $person_data );
$api_data = fulcrm_apiv2_POST( 'person/', $person_data, $query = array( 'expand' => 'd' ) );
$api_data = fulcrm_apiv2_PATCH( $cart[ 'url' ], array( 'd' => $cart[ 'd' ] ),
$query = array( 'expand' => implode( ',', array( 'd',
'shoppingitems',
'shoppingitems.d',
'shoppingitems.content_object',
'shoppingitems.product' ) ) ) );
if ( $api_data[ 'success' ] ) {
module_invoke_all( 'fulcrm_shoppingcart_person_add', $api_data[ 'data' ], array_key_exists( 'destination', $_GET ) ? $_GET[ 'destination' ] : variable_get( 'fulcrm_shoppingcart_proceed_url', url('<front>') ) );
$form_state[ 'fulcrm_collection' ][ 'person' ] = $person_data;
$form_state[ 'fulcrm_collection' ][ 'shoppingcart' ] = $api_data[ 'cart' ];
} else {
drupal_set_message( t('There was a problem adding your item to the shopping cart.'), 'error' );
}
} else {
drupal_set_message( t('There was a problem adding your item to the shopping cart.'), 'error' );
}
}
@ -307,47 +321,7 @@ function fulcrm_shoppingcart_person_add( $collection_id, $hmac ) {
}
}
function fulcrm_shoppingcart_buy_eventbookingtype_form_submit( $form, &$form_state ) {
// $person_d = fulcrm_collection_form_values_to_d( 'person', $form_state[ 'values' ] );
$product_id = $form_state[ 'fulcrm_shoppingcart' ][ 'product' ][ 'id' ];
$eventbookingtype_id = $form_state[ 'fulcrm_shoppingcart' ][ 'eventbookingtype' ][ 'id' ];
$person_id = NULL;
$person_uuid = NULL;
if ( array_key_exists( 'id', $form_state[ 'fulcrm_shoppingcart' ] ) )
$person_id = $form_state[ 'fulcrm_shoppingcart' ][ 'person' ][ 'id' ];
if ( array_key_exists( 'uuid', $form_state[ 'fulcrm_shoppingcart' ] ) )
$person_uuid = $form_state[ 'fulcrm_shoppingcart' ][ 'person' ][ 'uuid' ];
if ( array_key_exists( 'shoppingcart', $form_state[ 'fulcrm_shoppingcart' ] ) )
$cart = $form_state[ 'fulcrm_shoppingcart' ][ 'shoppingcart' ];
else
$cart = fulcrm_shoppingcart_get_session_cart();
if ( is_array( $cart ) ) {
if ( $person_uuid ) {
$api_data = fulcrm_apiv2_PATCH( $cart[ 'url' ],
array( 'd' => array( 'fulcrm' => array( 'transaction' => array( 'person' => $person_uuid,
),
'person' => array( $person_uuid => array() ),
),
),
),
$query = array( 'expand' => 'd' ) );
}
foreach ( $form_state[ 'values' ][ 'ticket_for_persons' ] as $ticket_for_person ) {
$person_name = 'unnamed person';
if ( $ticket_for_person === 'myself' ) {
$person_uuid = $form_state[ 'fulcrm_shoppingcart' ][ 'person' ][ 'uuid' ];
$person_name = $form_state[ 'fulcrm_shoppingcart' ][ 'person' ][ 'name' ];
} else {
$person_uuid = fulcrm_crypto_get_object_id_form_value( 'person.uuid', $ticket_for_person );
if ( $person_uuid )
$person_name = $form_state[ 'fulcrm_shoppingcart' ][ 'persons' ][ $person_uuid ][ 'name' ];
}
function _fulcrm_shoppingcart_buy_eventbookingtype_create_shoppingitem( &$form_state, $person_uuid, $person_name ) {
$shoppingitem_name = ( $form_state[ 'fulcrm_shoppingcart' ][ 'eventbookingtype' ][ 'event' ][ 'name' ] . "\r\n" .
$form_state[ 'fulcrm_shoppingcart' ][ 'eventbookingtype' ][ 'name' ] . ', ' . $person_name . "\r\n" .
$form_state[ 'fulcrm_shoppingcart' ][ 'product' ][ 'name' ] );
@ -393,23 +367,80 @@ function fulcrm_shoppingcart_buy_eventbookingtype_form_submit( $form, &$form_sta
drupal_set_message( t('There was a problem adding your item to the shopping cart.'), 'error' );
}
}
}
function fulcrm_shoppingcart_buy_eventbookingtype_form_submit( $form, &$form_state ) {
// $person_d = fulcrm_collection_form_values_to_d( 'person', $form_state[ 'values' ] );
$product_id = $form_state[ 'fulcrm_shoppingcart' ][ 'product' ][ 'id' ];
$eventbookingtype_id = $form_state[ 'fulcrm_shoppingcart' ][ 'eventbookingtype' ][ 'id' ];
$person_uuid = NULL;
if ( array_key_exists( 'uuid', $form_state[ 'fulcrm_shoppingcart' ] ) )
$person_uuid = $form_state[ 'fulcrm_shoppingcart' ][ 'person' ][ 'uuid' ];
if ( array_key_exists( 'shoppingcart', $form_state[ 'fulcrm_shoppingcart' ] ) )
$cart = $form_state[ 'fulcrm_shoppingcart' ][ 'shoppingcart' ];
else
$cart = fulcrm_shoppingcart_get_session_cart();
if ( is_array( $cart ) ) {
if ( $person_uuid ) {
if ( !array_key_exists( 'fulcrm', $cart[ 'd' ] ) ||
!array_key_exists( 'person', $cart[ 'd' ][ 'fulcrm' ] ) ||
!array_key_exists( $person_uuid, $cart[ 'd' ][ 'fulcrm' ][ 'person' ] ) ) {
$cart[ 'd' ][ 'fulcrm' ][ 'person' ][ $person_uuid ] = array();
$patch = TRUE;
}
if ( !array_key_exists( 'transaction', $cart[ 'd' ][ 'fulcrm' ] ) ||
!array_key_exists( 'person', $cart[ 'd' ][ 'fulcrm' ][ 'transaction' ] ) ) {
$cart[ 'd' ][ 'fulcrm' ][ 'transaction' ][ 'person' ] = $person_uuid;
$patch = TRUE;
}
if ( $patch ) {
$api_data = fulcrm_apiv2_PATCH( $cart[ 'url' ], array( 'd' => $cart[ 'd' ] ),
$query = array( 'expand' => 'd' ) );
fulcrm_shoppingcart_invalidate_cache();
}
}
if ( array_key_exists( 'ticket_for_persons', $form_state[ 'values' ] ) ) {
foreach ( $form_state[ 'values' ][ 'ticket_for_persons' ] as $ticket_for_person ) {
$person_name = 'unnamed person';
if ( $ticket_for_person === 'myself' ) {
$person_uuid = $form_state[ 'fulcrm_shoppingcart' ][ 'person' ][ 'uuid' ];
$person_name = $form_state[ 'fulcrm_shoppingcart' ][ 'person' ][ 'name' ];
} else {
drupal_set_message( t('There was a problem adding your item to the shopping cart.'), 'error' );
$person_uuid = fulcrm_crypto_get_object_id_form_value( 'person.uuid', $ticket_for_person );
if ( $person_uuid )
$person_name = $form_state[ 'fulcrm_shoppingcart' ][ 'persons' ][ $person_uuid ][ 'name' ];
}
$form_state[ 'fulcrm_shoppingcart' ][ 'shoppingcart' ] = $cart;
_fulcrm_shoppingcart_buy_eventbookingtype_create_shoppingitem( $form_state, $person_uuid, $person_name );
}
} else {
_fulcrm_shoppingcart_buy_eventbookingtype_create_shoppingitem( $form_state,
$form_state[ 'fulcrm_shoppingcart' ][ 'person' ][ 'uuid' ],
$form_state[ 'fulcrm_shoppingcart' ][ 'person' ][ 'name' ] );
}
function fulcrm_shoppingcart_buy_eventbookingtype_guest_add_person_form_submit( $form, &$form_state ) {
die( print_r( $form_state[ 'values' ], 1 ) );
} else {
drupal_set_message( t('There was a problem adding your item to the shopping cart.'), 'error' );
}
function fulcrm_shoppingcart_buy_eventbookingtype_form( $form, &$form_state, $person, $eventbookingtype, $product ) {
$form = array();
$form_state[ 'fulcrm_shoppingcart' ][ 'shoppingcart' ] = $cart;
}
$event_id = $eventbookingtype[ 'event' ][ 'id' ];
function fulcrm_shoppingcart_buy_eventbookingtype_person_add_guest_form_submit( $form, &$form_state ) {
fulcrm_shoppingcart_person_add_guest_form_submit( $form, $form_state );
if ( array_key_exists( 'person', $form_state[ 'fulcrm_shoppingcart' ] ) ) {
fulcrm_shoppingcart_buy_eventbookingtype_form_submit( $form, $form_state );
// XXXXXX
}
}
function fulcrm_shoppingcart_event_has_capacity( $event_id ) {
$capacity = null;
$count = null;
$api_data = fulcrm_apiv2_GET( 'event/' . $event_id . '/' );
@ -424,12 +455,15 @@ function fulcrm_shoppingcart_buy_eventbookingtype_form( $form, &$form_state, $pe
$count = $api_data[ 'data' ][ 'count' ];
if ( !is_null( $capacity ) && !is_null( $count ) ) {
if ( $count >= $capacity ) {
drupal_set_message( t('Sorry, this event must be sold out. There are no more tickets available.'), 'error' );
return $form;
if ( $count >= $capacity )
return FALSE;
}
return TRUE;
}
function fulcrm_shoppingcart_buy_eventbookingtype_form( $form, &$form_state, $person, $eventbookingtype, $product ) {
$form = array();
$form_state[ 'fulcrm_shoppingcart' ][ 'person' ] = $person;
$form_state[ 'fulcrm_shoppingcart' ][ 'eventbookingtype' ] = $eventbookingtype;
$form_state[ 'fulcrm_shoppingcart' ][ 'product' ] = $product;
@ -446,7 +480,7 @@ function fulcrm_shoppingcart_buy_eventbookingtype_form( $form, &$form_state, $pe
drupal_set_title( check_plain( $eventbookingtype[ 'event' ][ 'name' ] ) . ', ' .
check_plain( $eventbookingtype[ 'name' ] ) . ', ' .
check_plain( $product_data[ 'data' ][ 'name' ] ) );
check_plain( $product[ 'name' ] ) );
// $form[ 'person' ] = fulcrm_collection_to_form( 'person', $eventbookingtype[ 'person_ddatacollection' ], $person[ 'd' ] );
@ -486,7 +520,7 @@ function fulcrm_shoppingcart_buy_eventbookingtype_form( $form, &$form_state, $pe
$form[ 'new_person' ] = fulcrm_collection_to_form( 'person', $collection_data[ 'data' ], array() );
}
}
$form[ '#submit' ] = 'fulcrm_shoppingcart_buy_eventbookingtype_guest_add_person_form_submit';
$form[ '#submit' ] = 'fulcrm_shoppingcart_buy_eventbookingtype_person_add_guest_form_submit';
}
$form[ 'actions' ] = array( '#type' => 'actions' );
@ -498,13 +532,9 @@ function fulcrm_shoppingcart_buy_eventbookingtype_form( $form, &$form_state, $pe
return $form;
}
function fulcrm_shoppingcart_buy_eventbookingtype_guest_form_submit( $form, &$form_state ) {
die( print_r( $form_state, 1 ) );
}
function fulcrm_shoppingcart_buy_eventbookingtype_guest_form( $form, &$form_state, $person, $eventbookingtype, $product ) {
$form = fulcrm_shoppingcart_buy_eventbookingtype_form( $form, $form_state, $person, $eventbookingtype, $product );
$form[ 'actions' ][ 'submit' ][ '#submit' ] = array( 'fulcrm_shoppingcart_buy_eventbookingtype_guest_form_submit' );
$form[ 'actions' ][ 'submit' ][ '#submit' ] = array( 'fulcrm_shoppingcart_buy_eventbookingtype_person_add_guest_form_submit' );
return $form;
}
@ -520,6 +550,12 @@ function fulcrm_shoppingcart_buy_eventbookingtype_login_form( $form, &$form_stat
}
function fulcrm_shoppingcart_buy_eventbookingtype( $person, $eventbookingtype, $product ) {
$event_id = $eventbookingtype[ 'event' ][ 'id' ];
if ( !fulcrm_shoppingcart_event_has_capacity( $event_id ) ) {
drupal_set_message( t('Sorry, this event must be sold out. There are no more tickets available.'), 'error' );
return '';
}
$person_id = NULL;
if ( array_key_exists( 'id', $person ) )
$person_id = $person[ 'id' ];
@ -557,11 +593,9 @@ function fulcrm_shoppingcart_buy_eventbookingtype( $person, $eventbookingtype, $
function fulcrm_shoppingcart_buy_generic_product_form_submit( $form, &$form_state ) {
$product_id = $form_state[ 'fulcrm_shoppingcart' ][ 'product' ][ 'id' ];
$person_id = NULL;
$person_uuid = NULL;
if ( array_key_exists( 'id', $form_state[ 'fulcrm_shoppingcart' ] ) )
$person_id = $form_state[ 'fulcrm_shoppingcart' ][ 'person' ][ 'id' ];
if ( array_key_exists( 'uuid', $form_state[ 'fulcrm_shoppingcart' ] ) )
if ( array_key_exists( 'person', $form_state[ 'fulcrm_shoppingcart' ] ) &&
array_key_exists( 'uuid', $form_state[ 'fulcrm_shoppingcart' ][ 'person' ] ) )
$person_uuid = $form_state[ 'fulcrm_shoppingcart' ][ 'person' ][ 'uuid' ];
if ( array_key_exists( 'shoppingcart', $form_state[ 'fulcrm_shoppingcart' ] ) )
@ -571,16 +605,24 @@ function fulcrm_shoppingcart_buy_generic_product_form_submit( $form, &$form_stat
if ( is_array( $cart ) ) {
if ( $person_uuid ) {
$api_data = fulcrm_apiv2_PATCH( $cart[ 'url' ],
array( 'd' => array( 'fulcrm' => array( 'transaction' => array( 'person' => $person_uuid,
),
'person' => array( $person_uuid => array() ),
),
),
),
$patch = FALSE;
if ( !array_key_exists( 'fulcrm', $cart[ 'd' ] ) ||
!array_key_exists( 'person', $cart[ 'd' ][ 'fulcrm' ] ) ||
!array_key_exists( $person_uuid, $cart[ 'd' ][ 'fulcrm' ][ 'person' ] ) ) {
$cart[ 'd' ][ 'fulcrm' ][ 'person' ][ $person_uuid ] = array();
$patch = TRUE;
}
if ( !array_key_exists( 'transaction', $cart[ 'd' ][ 'fulcrm' ] ) ||
!array_key_exists( 'person', $cart[ 'd' ][ 'fulcrm' ][ 'transaction' ] ) ) {
$cart[ 'd' ][ 'fulcrm' ][ 'transaction' ][ 'person' ] = $person_uuid;
$patch = TRUE;
}
if ( $patch ) {
$api_data = fulcrm_apiv2_PATCH( $cart[ 'url' ], array( 'd' => $cart[ 'd' ] ),
$query = array( 'expand' => 'd' ) );
fulcrm_shoppingcart_invalidate_cache();
}
}
$shoppingitem_name = ( $form_state[ 'fulcrm_shoppingcart' ][ 'product' ][ 'name' ] );

@ -1,3 +1,5 @@
<p><a href="<?php $cart = fulcrm_shoppingcart_get_session_cart(); print $cart[ 'url' ]; ?>?expand=d,shoppingitems,shoppingitems.d"><?php print $cart[ 'url' ]; ?></a></p>
<?php print $fulcrm_shoppingcart_buy_eventbookingtype_form[ 'title_event' ][ '#markup' ]; unset( $fulcrm_shoppingcart_buy_eventbookingtype_form[ 'title_event' ] ); ?>
<?php print $fulcrm_shoppingcart_buy_eventbookingtype_form[ 'title_eventbookingtype' ][ '#markup' ]; unset( $fulcrm_shoppingcart_buy_eventbookingtype_form[ 'title_eventbookingtype' ] ); ?>
<?php print $fulcrm_shoppingcart_buy_eventbookingtype_form[ 'title_product' ][ '#markup' ]; unset( $fulcrm_shoppingcart_buy_eventbookingtype_form[ 'title_product' ] ); ?>

Loading…
Cancel
Save