materio_user : membership form auto fill profil2 adherent fields, checkout form prepopulated with profile2 adherent fields
This commit is contained in:
parent
3fe3dde8c2
commit
0799729429
@ -194,6 +194,10 @@ function materio_user_form_alter(&$form, &$form_state, $form_id) {
|
||||
// //dsm($form, '$form');
|
||||
// $form['account']['pass']['#type'] = "new_password_confirm";
|
||||
// }
|
||||
|
||||
if( $form_id == "uc_cart_checkout_form" ){
|
||||
materio_user_uc_cart_checkout_form_alter($form, $form_state, $form_id);
|
||||
}
|
||||
}
|
||||
|
||||
// function materio_user_user_register_form_submit($form, &$form_state){
|
||||
@ -234,32 +238,50 @@ function materio_user_webform_client_11186_validate($form, &$form_state){
|
||||
# test if collaborators are filled in case of membership option is 3
|
||||
$values = $form_state['values']['submitted'];
|
||||
if ($values['column_left']['membership_options'] == 3) {
|
||||
foreach ($values['collaborators'] as $coll_key => $coll) {
|
||||
foreach ($values['column_right']['collaborators'] as $collab_key => $coll) {
|
||||
foreach ($coll as $field_key => $field_value) {
|
||||
|
||||
$form_field = $form['submitted']['column_right']['collaborators'][$collab_key][$field_key];
|
||||
|
||||
if($field_value == ''){
|
||||
$human_field_name = $form['submitted']['collaborators'][$coll_key]['#title'] . " : " . $form['submitted']['collaborators'][$coll_key][$field_key]['#title'];
|
||||
$field_name = 'submitted][collaborators]['.$coll_key.']['.$field_key;
|
||||
// dsm($field_name, 'field_name');
|
||||
$collab_label = $form['submitted']['column_right']['collaborators'][$collab_key]['#title'];
|
||||
$field_label = $form_field['#title'];
|
||||
$human_field_name = $collab_label. " : " .$field_label;
|
||||
form_error($form_field, t('You must provide a value for the !name field.', array('!name'=>$human_field_name)));
|
||||
}
|
||||
|
||||
# validate the emails
|
||||
# see https://api.drupal.org/api/drupal/modules!user!user.module/function/user_account_form_validate/7
|
||||
if($form_field['#type'] == 'webform_email'){
|
||||
// dsm($form_field, 'form_field');
|
||||
$u = db_select('users')
|
||||
->fields('users', array('uid'))
|
||||
// ->condition('uid', $account->uid, '<>')
|
||||
->condition('mail', db_like($field_value), 'LIKE')
|
||||
->range(0, 1)
|
||||
->execute()->fetchField();
|
||||
|
||||
// TODO : tester si les email ne sont pas deja inscrit sur le site
|
||||
|
||||
form_set_error($field_name, t('You must provide a value for the !name field.', array('!name'=>$human_field_name)));
|
||||
if ((bool) $u ) {
|
||||
form_error($form_field, t('The e-mail address %email is already taken.', array('%email' => $field_value)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function materio_user_webform_client_11186_submit($form, &$form_state){
|
||||
// dsm($form, 'form');
|
||||
// dsm($form_state, 'form_state');
|
||||
$values = $form_state['values']['submitted_tree'];
|
||||
// dsm($values, '$values');
|
||||
|
||||
$flat_values = array();
|
||||
materio_user_flatenize_form_values($values, $flat_values);
|
||||
// dsm($flat_values, 'flat_values');
|
||||
|
||||
# redirect memebership form to checkout with good option selected
|
||||
|
||||
$subscription_level = 3;//$values['membership_options'];
|
||||
|
||||
// to redirect to 'node/123?foo=bar#baz':
|
||||
$subscription_level = $flat_values['membership_options'];
|
||||
// http://www.ubercart.org/node/1427
|
||||
$form_state['redirect'] = array(
|
||||
'cart/add/e-p11786_q1_a1o'.$subscription_level.'-membershipform',
|
||||
@ -271,11 +293,150 @@ function materio_user_webform_client_11186_submit($form, &$form_state){
|
||||
),
|
||||
);
|
||||
|
||||
# create collaborators users account incase of membership option is 3
|
||||
/*
|
||||
# records values in member profile
|
||||
materio_user_record_member_profile($flat_values);
|
||||
|
||||
# create collaborators users account incase of membership option is 3
|
||||
# NO wait for checkout for that
|
||||
//materio_user_create_collaborators_users();
|
||||
|
||||
// enregistrer le type d'adonnement chez les user
|
||||
}
|
||||
|
||||
function materio_user_record_member_profile($values) {
|
||||
// dsm($values, 'values');
|
||||
|
||||
global $user;
|
||||
// dsm($user, 'user');
|
||||
|
||||
$member_profile = profile2_load_by_user($user, 'adherent');
|
||||
if (empty($member_profile)) {
|
||||
profile2_create(array("type" => 'adherent', "uid" => $user->uid));
|
||||
}
|
||||
// dsm($member_profile, '$member_profile');
|
||||
|
||||
$correspondances = array(
|
||||
"firstname"=>"field_first_name",
|
||||
"name"=>"field_name",
|
||||
"company"=>"field_organization",
|
||||
"activity_sector"=>"field_activity_sector",
|
||||
"website"=>"field_user_website",
|
||||
"administrative_e_mail"=>"field_administrative_email",
|
||||
"vat_number_intra_ce"=>"field_vat_number_intra_ce",
|
||||
"location"=>"field_adresse",
|
||||
);
|
||||
|
||||
foreach ($correspondances as $form_field => $field_name) {
|
||||
switch($form_field){
|
||||
case "website":
|
||||
$value = array("url" => $values[$form_field]);
|
||||
break;
|
||||
case "administrative_e_mail":
|
||||
$value = array("email" => $values[$form_field]);
|
||||
break;
|
||||
case "location":
|
||||
$value = unserialize($values[$form_field]);
|
||||
// dsm($value, 'location value');
|
||||
break;
|
||||
default:
|
||||
$value = array("value" => $values[$form_field]);
|
||||
break;
|
||||
}
|
||||
|
||||
$member_profile->{$field_name} = array(
|
||||
"und"=>array( 0 => $value,)
|
||||
);
|
||||
}
|
||||
|
||||
// save the profile2 new contents
|
||||
profile2_save($member_profile);
|
||||
|
||||
// Indicate success to the user.
|
||||
// drupal_set_message(t('Your member profile has been created.'));
|
||||
}
|
||||
|
||||
function materio_user_flatenize_form_values($ar_src, &$flat_ar){
|
||||
foreach ($ar_src as $key => $value) {
|
||||
if(is_array($value)){
|
||||
materio_user_flatenize_form_values($value, $flat_ar);
|
||||
}else{
|
||||
$flat_ar[$key] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_form_alter().
|
||||
*/
|
||||
function materio_user_uc_cart_checkout_form_alter(&$form, &$form_state, $form_id) {
|
||||
// dsm($form_id, 'form_id');
|
||||
// dsm($form, "form");
|
||||
// dsm($form_state, "form_state");
|
||||
|
||||
// Load an order from the session, if available.
|
||||
if (isset($_SESSION['cart_order'])) {
|
||||
$order = uc_order_load($_SESSION['cart_order']);
|
||||
if ($order) {
|
||||
// dsm($order, 'order');
|
||||
|
||||
global $user;
|
||||
// dsm($user, 'user');
|
||||
$member_profile = profile2_load_by_user($user, 'adherent');
|
||||
// dsm($member_profile, "member_profile");
|
||||
|
||||
$location = (object) $member_profile->field_adresse['und'][0];
|
||||
// dsm($location, "location");
|
||||
|
||||
$phone_field = field_get_items('profile2', $member_profile, 'field_private_phone');
|
||||
$phone = field_view_value('profile2', $member_profile, 'field_private_phone', $phone_field[0]);
|
||||
|
||||
$correspondances = array(
|
||||
"billing_first_name" => $member_profile->field_first_name['und'][0]['value'],
|
||||
"billing_last_name" => $member_profile->field_name['und'][0]['value'],
|
||||
"billing_phone" => $phone,
|
||||
"billing_company" => $member_profile->field_organization['und'][0]['value'],
|
||||
"billing_street1" => $location->thoroughfare,
|
||||
"billing_street2" => $location->premise,
|
||||
"billing_city" => $location->locality,
|
||||
// "billing_zone" => ,
|
||||
"billing_postal_code" => $location->postal_code,
|
||||
"billing_country" => $location->country,
|
||||
);
|
||||
|
||||
foreach ($correspondances as $order_field => $value) {
|
||||
$order->{$order_field} = $value;
|
||||
}
|
||||
|
||||
$form['panes']['billing']['address']['#default_value'] = $order;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_uc_order();
|
||||
*/
|
||||
function materio_user_order($op, $order, $arg2) {
|
||||
dsm($op, "matyerio_user_uc_order | op");
|
||||
// dsm($order, "order");
|
||||
// dsm($arg2, "arg2");
|
||||
|
||||
switch ($op) {
|
||||
case 'save':
|
||||
// Do something to save payment info!
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# not used yet
|
||||
function materio_user_create_collaborators_users(){
|
||||
|
||||
/*
|
||||
if ($values['membership_options'] == 3) {
|
||||
$i = 1;
|
||||
foreach ($values['collaborators'] as $coll_key => $coll) {
|
||||
foreach ($values['collaborators'] as $collab_key => $coll) {
|
||||
// foreach ($coll as $field_key => $field_value) {
|
||||
// if($field_value == ''){
|
||||
// $human_field_name = $form['submitted']['collaborators'][$coll_key]['#title'] . " : " . $form['submitted']['collaborators'][$coll_key][$field_key]['#title'];
|
||||
@ -301,9 +462,7 @@ function materio_user_webform_client_11186_submit($form, &$form_state){
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
*/
|
||||
// enregistrer le type d'adonnement chez les user
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user