Drupal y Sugar CRM integración, módulo utilizando SOAP, nuSOAP

drupal.jpg
Solucionex
10
Mayo 10

Descripción de la necesidad a cubrir: Leer los datos de los proyectos existentes en SugarCRM y mostrarlos en un portal desarrollado con Drupal. Además cada elemento del listado debe enlazar a una página que muestre los datos del proyecto (una ficha).

Vamos a utilizar la librería nusoap, la ponemos en sites/all/libraries/nusoap

Creamos un módulo que hemos llamado sugarintegration

Ya en el módulo definimos las constantes de conexión con SOAP:

 

define('sugarEntry', TRUE); define('FRONTENDSOAP','http://direccion/soap.php?wsdl'); define('USUARIO', 'usuario');
define('CLAVE', 'contraseña');

En el hook_menu definimos la opción donde mostraremos el listado de proyectos recuperados de SugarCRM.

$items['oficina/proyectos'] = array( 'title' => 'Listado de proyectos', 'page callback' => 'sugarintegration_listado_proyectos', 'access callback' => TRUE, 'type' => MENU_NORMAL_ITEM, );

y finalmente definimos la función que realiza la conexión y consuta a través de nusoap:

function sugarintegration_listado_proyectos() { $soapclient = new nusoapclient(FRONTENDSOAP,true); $user_auth = array( 'user_auth' => array( 'user_name' => USUARIO, 'password' => md5(CLAVE), 'version' => '.01') ); $sesion = $soapclient->call('login',$user_auth); $get_entry_params = array( "session" => $sesion['id'], "module_name" => "Project", "query" => 'project.deleted=0', "order_by" => 'project.name', "select_fields" => array("name", "priority", "status"), "max_results" => 0 ); $result1 = $soapclient->call('get_entry_list', $get_entry_params); $soapclient->call('logout',$sesion['id']); foreach($result1['entry_list'] as $r){ $name = $r['name_value_list'][0]['value']; $id = $r['id']; $items[] = l($name, 'oficina/proyectos/'.$id); } $output = "
"; $output .= theme('item_list',$items, NULL, 'ul', ''); $output .= "
"; return $output; }

En $get_entry_params definimos:

  • session: el resultado del login en nusoap.
  • module_name: nombre del móduilo Srugar sobre el que hacemos la consulta.
  • query: la parte que va en el where.
  • order_by: la parte de la consulta del order bay.
  • select_fields: los campos que queremos recuperar.

Esta línea ejecuta la consulta a SUGARCRM $result1 = $soapclient->call('get_entry_list', $get_entry_params);

Y el resto de la función constuye una lista de items y se llama a la función de theming item_list.

Es sencillo, lo principal es conocer la API de la librería que se utilice y unos conocimientos básicos en el desarrollo de módulos de Drupal.

Cualquier consulta respondemos en los comentarios.