فهرست منبع

add permission to access to payment
prefile webform 11186 with recorded user profile infos

Bachir Soussi Chiadmi 11 سال پیش
والد
کامیت
4756fdaf77
1فایلهای تغییر یافته به همراه83 افزوده شده و 34 حذف شده
  1. 83 34
      materio_user.module

+ 83 - 34
materio_user.module

@@ -18,6 +18,10 @@ function materio_user_permission() {
       'title' => t('view own user profile'),
       'description' => t('view own user profile'),
     ),
+    'access to online payment' =>  array(
+      'title' => t('access to online payment'),
+      'description' => t('Access to online payment'),
+    ),
   );
 }
 
@@ -168,8 +172,8 @@ function materio_user_form_alter(&$form, &$form_state, $form_id) {
     // );
 
     // $form['#submit'][] = "materio_user_user_register_form_submit";
-
   }
+
   if($form_id == "user_login" ){
     // dsm($form);
 
@@ -179,25 +183,22 @@ function materio_user_form_alter(&$form, &$form_state, $form_id) {
     // if( $_GET['q'] == 'node/11187' ){
     //   $form['#submit'][] = "materio_user_user_login_form_submit";
     // }
-
   }
 
   # https://drupal.org/comment/6293810#comment-6293810
   if( $form_id == "webform_client_form_11186" ){
     // dsm($form, '$form');
-    $form['#validate'][] = "materio_user_webform_client_11186_validate";
-    $form['#submit'][] = "materio_user_webform_client_11186_submit";
+    materio_user_webform_client_11186_form_alter($form, $form_state, $form_id);
   }
 
+  if( $form_id == "uc_cart_checkout_form" ){
+    materio_user_uc_cart_checkout_form_alter($form, $form_state, $form_id);
+  }
 
   // if( $form_id == "user_profile_form" ){
   //   //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){
@@ -231,6 +232,45 @@ function materio_user_form_alter(&$form, &$form_state, $form_id) {
 //   );
 // }
 
+
+/**
+* subscription webform (nid : 11186)
+*/
+
+# prefill the webform form with user profil values
+# add validate and submit functions
+function materio_user_webform_client_11186_form_alter(&$form, &$form_state, $form_id){
+  // dsm($form_id, 'form_id');
+  // dsm($form, "form");
+  // dsm($form_state, "form_state");
+
+  $form['#validate'][] = "materio_user_webform_client_11186_validate";
+  $form['#submit'][] = "materio_user_webform_client_11186_submit";
+
+  global $user;
+  // dsm($user, 'user');
+
+  $member_profile = profile2_load_by_user($user, 'adherent');
+  // dsm($member_profile, "member_profile");
+
+  $columnright = &$form['submitted']['column_right'];
+  $columnright['me']['firstname']['#default_value'] = $member_profile->field_first_name['und'][0]['value'];
+  $columnright['me']['name']['#default_value'] = $member_profile->field_name['und'][0]['value'];
+  $columnright['company']['administrative_e_mail']['#default_value'] = $member_profile->field_administrative_email['und'][0]['value'];
+  $columnright['company']['s']['company']['#default_value'] = $member_profile->field_organization['und'][0]['value'];
+  $columnright['company']['s']['activity_sector']['#default_value'] = $member_profile->field_activity_sector['und'][0]['value'];
+  $columnright['company']['d']['vat_number_intra_ce']['#default_value'] = $member_profile->field_vat_number_intra_ce['und'][0]['value'];
+  $columnright['company']['d']['website']['#default_value'] = $member_profile->field_user_website['und'][0]['url'];
+
+  $address = $member_profile->field_adresse['und'][0];
+  $formaddress = &$columnright['company']['location']['#address'];
+  $formaddress['country'] = $address['country'];
+  $formaddress['thoroughfare'] = $address['thoroughfare'];
+  $formaddress['premise'] = $address['premise'];
+  $formaddress['postal_code'] = $address['postal_code'];
+  $formaddress['locality'] = $address['locality'];
+}
+
 function materio_user_webform_client_11186_validate($form, &$form_state){
   // dsm($form, 'form');
   // dsm($form_state, 'form_state');
@@ -272,14 +312,14 @@ function materio_user_webform_client_11186_validate($form, &$form_state){
   }
 }
 
-/**
-* subscription webform (nid : 11186)
-*
-* retreive from the web form info, record them into user profil
-*/
-function materio_user_webform_client_11186_submit($form, &$form_state){
+#retreive from the web form info, record them into user profil
+function materio_user_webform_client_11186_submit(&$form, &$form_state){
   // dsm($form, 'form');
   // dsm($form_state, 'form_state');
+
+  $node = &$form['#node'];
+  // dsm($node, '$node');
+
   $values = $form_state['values']['submitted_tree'];
   // dsm($values, '$values');
 
@@ -287,27 +327,39 @@ function materio_user_webform_client_11186_submit($form, &$form_state){
   materio_user_flatenize_form_values($values, $flat_values);
   // dsm($flat_values, 'flat_values');
 
+  # records values in member profile
+  materio_user_record_member_profile($flat_values);
+
   # redirect membership 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-p11849_q1_a1o'.$subscription_level.'-membershipform',
-    array(
-      'query' => array(
-        'destination' => 'cart/checkout',
+  if(user_access('access to online payment')){
+
+    // forcer le vidage du panier
+    uc_cart_empty(uc_cart_get_id());
+
+    // fill the cart and redirect to checkout
+    // cf : http://www.ubercart.org/node/1427
+    $subscription_level = $flat_values['membership_options'];
+    $form_state['redirect'] = array(
+      'cart/add/e-p11849_q1_a1o'.$subscription_level.'-membershipform',
+      array(
+        'query' => array(
+          'destination' => 'cart/checkout',
+        ),
+        // 'fragment' => 'baz',
       ),
-      // 'fragment' => 'baz',
-    ),
-  );
+    );
 
-  # records values in member profile
-  materio_user_record_member_profile($flat_values);
+    // TODO effacer le message de soumissions du formulaire -> pas moyen de overwriter le message de webform depuis ici, dommage
+    // $node->webform['confirmation'] = '';
+
+    # create collaborators users account incase of membership option is 3
+    # NO wait for checkout for that
+    //materio_user_create_collaborators_users();
 
-  # 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
+
+  }
 
-  // enregistrer le type d'adonnement chez les user
 }
 
 function materio_user_record_member_profile($values) {
@@ -423,7 +475,7 @@ function materio_user_uc_cart_checkout_form_alter(&$form, &$form_state, $form_id
  * Implements hook_uc_order();
  */
 function materio_user_order($op, $order, $arg2) {
-  dsm($op, "matyerio_user_uc_order | op");
+  // dsm($op, "matyerio_user_uc_order | op");
   // dsm($order, "order");
   // dsm($arg2, "arg2");
 
@@ -434,7 +486,6 @@ function materio_user_order($op, $order, $arg2) {
   }
 }
 
-
 # not used yet
 function materio_user_create_collaborators_users(){
 
@@ -497,7 +548,6 @@ function materio_user_help($path, $arg) {
   }
 }
 
-
 /**
  * Implements hook_block_view_alter().
  */
@@ -509,7 +559,6 @@ function materio_user_block_view_alter(&$data, $block) {
   }
 }
 
-
 /**
  * Define constants
  */