2010-07-27 4 views
1

J'essaie de créer un utilisateur dans netForum à partir d'un formulaire Web Drupal. À l'aide d'un hook Webform, j'appelle deux fonctions pour prendre une adresse e-mail et un prénom et un nom d'utilisateur, et créer un compte netforum lorsqu'un utilisateur soumet des formulaires Web de base.Drupal et netForum: Création d'un utilisateur

Toutefois, le formulaire expire lorsque j'appuie sur submit, et l'erreur de surveillance de Netforum est "impossible de récupérer les en-têtes http". Ai-je fait quelque chose de mal dans ma mise en œuvre? Je continue d'avoir un délai d'attente.

http://wiki.avectra.com/XWeb:WEBWebUserCreate

function inclind_form_webform_submission_insert($node, $submission) { 

    // find the email address in the form 

    $form_fields = $node->webform['components']; 

    foreach ($form_fields as $key => $value) { 
     $arguments = array(); 
     $response = ''; 

     if ($value['type'] == 'email') { 
      $arguments = array(
       'emailToMatch' => $submission->data[$key]['value'][0] 
      ); 

      $response = netforum_xweb_request('WEBWebUserFindUsersByEmail', $arguments, NULL); 

      if (!isset($response) || $response->{@attributes}['recordResult'] == 0) { 
       inclind_form_create_netforum_user($form_fields, $submission); 
      } 
     } 
    } 

    return; 
} 


/* 
* Create a user in netForum based on form data 
* 
*  @param $form_fields 
*   The form structure passed in from inclind_form_webform_submission_insert 
* @param $submission 
*  The form data passed in from inclind_form_webform_submission_insert 
*/ 

function inclind_form_create_netforum_user($form_fields, $submission) { 

    $arguments = array(); 
    $arguments['oWebUser']['Individual'] = array(); 
    $arguments['oWebUser']['Email'] = array(); 
    $arguments['oWebUser']['Customer'] = array(); 
    $arguments['oWebUser']['Business_Address'] = array(); 
    $arguments['oWebUser']['Business_Phone'] = array(); 
    $arguments['oWebUser']['Business_Phone_XRef'] = array(); 
    $arguments['oWebUser']['Business_Fax'] = array(); 
    $arguments['oWebUser']['Business_Fax_XRef'] = array(); 


    foreach ($form_fields as $key => $value) { 
     if ($value['form_key'] == 'ind_first_name') { 
      $arguments['oWebUser']['Individual']['ind_first_name'] = $submission->data[$key]['value'][0]; 
     } 
     if ($value['form_key'] == 'ind_last_name') { 
      $arguments['oWebUser']['Individual']['ind_last_name'] = $submission->data[$key]['value'][0]; 
     } 
     if (strlen($arguments['oWebUser']['Individual']['ind_first_name']) && strlen($arguments['oWebUser']['Individual']['ind_last_name'])) { 
      $arguments['oWebUser']['Individual']['ind_full_name'] = $arguments['oWebUser']['Individual']['ind_first_name'] . ' ' . $arguments['oWebUser']['Individual']['ind_last_name']; 
     } 
     if ($value['form_key'] == 'eml_address') { 
      $arguments['oWebUser']['Email']['eml_address'] = $submission->data[$key]['value'][0]; 
      $arguments['oWebUser']['Customer']['cst_web_login'] = $submission->data[$key]['value'][0]; 
      $arguments['oWebUser']['Customer']['cst_new_password'] = user_password(20); 
      $arguments['oWebUser']['Customer']['cst_new_password_confirm'] = $arguments['oWebUser']['Customer']['cst_new_password']; 
     } 
     if ($value['form_key'] == 'adr_post_code') { 
      $arguments['oWebUser']['Business_Address']['adr_post_code'] = $submission->data[$key]['value'][0]; 
     } 
    } 

    if (!isset($arguments['oWebUser']['Business_Address']['adr_city'])) { 
     $arguments['oWebUser']['Business_Address']['adr_city'] = 'Not Given'; 
    } 

    if (!isset($arguments['oWebUser']['Business_Address']['adr_state'])) { 
     $arguments['oWebUser']['Business_Address']['adr_state'] = 'NA'; 
    } 

    if (!isset($arguments['oWebUser']['Business_Address']['adr_post_code'])) { 
     $arguments['oWebUser']['Business_Address']['adr_post_code'] = '00000'; 
    } 

    if (!isset($arguments['oWebUser']['Business_Address']['adr_country'])) { 
     $arguments['oWebUser']['Business_Address']['adr_country'] = 'Not Given'; 
    } 

    if (!isset($arguments['oWebUser']['Business_Phone']['phn_number'])) { 
     $arguments['oWebUser']['Business_Phone']['phn_number'] = '000-000-0000'; 
    } 

    if (!isset($arguments['oWebUser']['Business_Phone_XRef']['cph_extension'])) { 
     $arguments['oWebUser']['Business_Phone_XRef']['cph_extension'] = '000'; 
    } 

    if (!isset($arguments['oWebUser']['Business_Fax']['fax_number'])) { 
     $arguments['oWebUser']['Business_Fax']['fax_number'] = '000-000-0000'; 
    } 

    $response = netforum_xweb_request('WEBWebUserCreate', $arguments, '1 min'); 
    watchdog('netforum', 'netforum user @user created', array('@user' => $arguments['oWebUser']['Email']['eml_address']), WATCHDOG_NOTICE); 
} 
+0

Sur une tangente, où puis-je trouver Netforum WSDL URL, XWeB nom d'utilisateur et mot de passe? – pal4life

Répondre

Questions connexes