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.