$processor->initCallbackHandling(new Zend_Controller_Request_Http());
$logExtra = array();
$logMessage = false;
try {
    if (!$processor->validateRequest($logMessage)) {
        $logType = 'error';
        $response->setHttpResponseCode(500);
    } else {
        if (!$processor->validatePreConditions($logMessage)) {
            $logType = 'error';
        } else {
            $logType = 'info';
            $logMessage = $processor->processTransaction();
        }
    }
    if (is_array($logMessage)) {
        $temp = $logMessage;
        list($logType, $logMessage) = $temp;
    }
} catch (Exception $e) {
    $response->setHttpResponseCode(500);
    XenForo_Error::logException($e);
    $logType = 'error';
    $logMessage = 'Exception: ' . $e->getMessage();
    $logExtra['_e'] = $e;
}
if ($logType) {
    $processor->log($logType, $logMessage, $logExtra);
}
$response->setBody(htmlspecialchars($logMessage));
$response->sendResponse();