Skip to content
Snippets Groups Projects
Commit cb0404a7 authored by Jean-François Ferry's avatar Jean-François Ferry
Browse files

New webservice method to update contact

parent 3780d0fd
No related branches found
No related tags found
No related merge requests found
...@@ -211,7 +211,19 @@ $server->register( ...@@ -211,7 +211,19 @@ $server->register(
'WS to get all contacts of a third party' 'WS to get all contacts of a third party'
); );
// Register WSDL
$server->register(
'updateContact',
// Entry values
array('authentication'=>'tns:authentication','contact'=>'tns:contact'),
// Exit values
array('result'=>'tns:result','id'=>'xsd:string'),
$ns,
$ns.'#updateContact',
$styledoc,
$styleuse,
'WS to update a contact'
);
/** /**
...@@ -581,6 +593,112 @@ function getContactsForThirdParty($authentication,$idthirdparty) ...@@ -581,6 +593,112 @@ function getContactsForThirdParty($authentication,$idthirdparty)
return $objectresp; return $objectresp;
} }
/**
* Update a contact
*
* @param array $authentication Array of authentication information
* @param Contact $contact Contact
* @return array Array result
*/
function updateContact($authentication,$contact)
{
global $db,$conf,$langs;
$now=dol_now();
dol_syslog("Function: updateContact login=".$authentication['login']);
if ($authentication['entity']) $conf->entity=$authentication['entity'];
// Init and check authentication
$objectresp=array();
$errorcode='';$errorlabel='';
$error=0;
$fuser=check_authentication($authentication,$error,$errorcode,$errorlabel);
// Check parameters
if (empty($contact['id'])) {
$error++; $errorcode='KO'; $errorlabel="Contact id is mandatory.";
}
if (! $error)
{
$objectfound=false;
include_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
$object=new Contact($db);
$result=$object->fetch($contact['id']);
if (!empty($object->id)) {
$objectfound=true;
$object->firstname=$contact['firstname'];
$object->lastname=$contact['lastname'];
$object->address=$contact['address'];
$object->zip=$contact['zip'];
$object->town=$contact['town'];
$object->country_id=$contact['country_id'];
if ($contact['country_code']) $object->country_id=getCountry($contact['country_code'],3);
$object->province_id=$contact['province_id'];
$object->phone_perso=$contact['phone_perso'];
$object->phone_mobile=$contact['phone_mobile'];
$object->fax=$contact['fax'];
$object->email=$contact['email'];
//Retreive all extrafield for contact
// fetch optionals attributes and labels
$extrafields=new ExtraFields($db);
$extralabels=$extrafields->fetch_name_optionals_label('contact',true);
foreach($extrafields->attribute_label as $key=>$label)
{
$key='options_'.$key;
$object->array_options[$key]=$contact[$key];
}
$db->begin();
$result=$object->update($contact['id'],$fuser);
if ($result <= 0) {
$error++;
}
}
if ((! $error) && ($objectfound))
{
$db->commit();
$objectresp=array(
'result'=>array('result_code'=>'OK', 'result_label'=>''),
'id'=>$object->id
);
}
elseif ($objectfound)
{
$db->rollback();
$error++;
$errorcode='KO';
$errorlabel=$object->error;
} else {
$error++;
$errorcode='NOT_FOUND';
$errorlabel='Contact id='.$contact['id'].' cannot be found';
}
}
if ($error)
{
$objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel));
}
return $objectresp;
}
// Return the results. // Return the results.
$server->service($HTTP_RAW_POST_DATA); $server->service($HTTP_RAW_POST_DATA);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment