$originalHandler = set_error_handler("libxml_error_handler");
    //Create a new DomDocument object and load the XML data into it
    $xmldata = new DomDocument();
    $xmldata->loadXML($data, LIBXML_NOBLANKS | LIBXML_NOCDATA | LIBXML_NOENT);
    //Remove whitespaces from the data
    purifyXML($xmldata->documentElement);
    //Restore the original error handler
    set_error_handler($originalHandler);
    //Retrieve the database configuration
    $dbconf = $config->Database;
    //Make sure the username is registered with this application
    $db = new Database($dbconf['host'], $dbconf['user'], $dbconf['pass'], $dbconf['name'], $dbconf['port']);
    //Store the data in the database
    $finaldata = $db->getSubjectFinalData($label);
    if ($finaldata['locked'] == '1') {
        $user = $db->searchUserByID($finaldata['aclID']);
        if (empty($user)) {
            $username = "******";
        } else {
            $username = $user['username'];
        }
        $date = $finaldata['datetimeModified'];
        ajax_error("Oops! Subject {$label} has been already locked by {$username} at {$date}.");
    } else {
        $db->storeFinalForm($label, $_SESSION['aclID'], $xmldata->saveXML(), $lock);
        $result = array("success" => 1, "subject" => $label);
    }
    ajax_result($result);
} catch (\Exception $e) {
    error_log('[OnlineQuestionnaire] ERROR: ' . $e->getMessage(), 0);
    ajax_error('Internal Server error. Please try again later.' . $e->getMessage());