|
@@ -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');
|
|
|
-
|
|
|
- // 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)));
|
|
|
+ $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();
|
|
|
+
|
|
|
+ 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');
|
|
|
|
|
|
- # redirect memebership form to checkout with good option selected
|
|
|
-
|
|
|
- $subscription_level = 3;//$values['membership_options'];
|
|
|
+ $flat_values = array();
|
|
|
+ materio_user_flatenize_form_values($values, $flat_values);
|
|
|
+ // dsm($flat_values, 'flat_values');
|
|
|
|
|
|
- // to redirect to 'node/123?foo=bar#baz':
|
|
|
+ # redirect memebership form to checkout with good option selected
|
|
|
+ $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
|
|
|
-
|
|
|
+ */
|
|
|
}
|
|
|
|
|
|
/**
|