Al intentar migrar todos los contactos de SugarCRM a Owncloud, nos encontramos que en SugarCRM sólo se podían exportar de a 1 contacto por vez. :-(

La solución fue muy simple, armar un exportador (export_vcard.php) que recibe el uuid de un contacto y envía a stdout el contenido de la vCard.

define('sugarEntry', 1 ); 
require_once('include/entryPoint.php');
require_once('include/vCard.php');
 
if ($argc == 2)
{
  $contact_id = $argv[1];
}
else
{
  exit(1);
}
 
class vCardExport extends vCard
{
   function saveVCard(){
     global $locale;
     $content = $this->toString();
     print $locale->translateCharset($content, 'UTF-8', $locale->getExportCharset());
   }
}
 
$vcard = new vCardExport();
$vcard->loadContact($contact_id, 'Contacts');
$vcard->saveVCard();

Ejemplo:

php export_vcard.php e76a6829-1c9c-61c0-004c-5294f9af147a
 
BEGIN:VCARD
N:GOMEZ;OSIRIS ALEJANDRO;
FN: OSIRIS ALEJANDRO GOMEZ
BDAY:
TEL;FAX:
TEL;HOME: 1234-5678
TEL;CELL: 15-1234-5678
TEL;WORK: 4855-4390
EMAIL;INTERNET: osiris@gcoop.coop
ADR;WORK:;;;;;;
ORG:;
TITLE:
END:VCARD

Luego con un query a la base de datos obtuvimos todos los uuid:

SELECT id FROM contacts WHERE deleted = 0;

Asi que desde mi amigo Bash unimos todos los vCard en un único archivo:

cat contactos.log | while read i;do php export_vcard.php $i;done > contactos.vcf

Listo! ahora en OwnCloud tenemos todos los contactos de SugarCRM.

Publicado el 03/12/2013 por OSiRiS