function updateContact($contact, $checksum = "", $src = null, $subscriptionPage = null, $triggerDoi = FALSE, $doiMailingKey = null, $ignoreChecksum = false)
    {
        $queryParameters = array(
            'id' => $contact->id,
            'checksum' => $checksum,
            'triggerdoi' => ($triggerDoi == TRUE) ? "true" : "false",
            'ignore_checksum' => $ignoreChecksum ? "true" : "false"
        );

        if (isset($contact->permission)) $queryParameters['permission'] = $contact->permission->getCode();
        if (isset($src)) $queryParameters['src'] = $src;
        if (isset($subscriptionPage)) $queryParameters['page_key'] = $subscriptionPage;
        $doiMailingKey = trim($doiMailingKey);
        if (!empty($doiMailingKey)) $queryParameters['doimailing'] = $doiMailingKey;

        // The API allows only some of the fields to be submitted
        $contactToSend = new Contact(null, $contact->email, null, $contact->external_id, null, $contact->standard_fields, $contact->custom_fields);

        return $this->put("contacts/contact", $contactToSend->toXMLString(), $queryParameters);
    }