in usage-statistics-impl/src/jetbrains/buildServer/controllers/UsageStatisticsController.java [113:144]
protected void doPost(@NotNull final HttpServletRequest request, @NotNull final HttpServletResponse response, @NotNull final Element xmlResponse) {
if (request.getParameter("forceCollectingNow") != null) {
myStatisticsCollector.forceAsynchronousCollectingNow();
myAuditLog.logUserAction(ActionType.USAGE_STATISTICS_COLLECTING_STARTED, null, null);
return;
}
final String reportingEnabledStr = request.getParameter("reportingEnabled");
if (reportingEnabledStr != null) {
final UsageStatisticsPermissionsChecker usageStatisticsPermissionsChecker =
myPermissionsCheckerSupplier.get(TeamCityProperties.getProperty("teamcity.usageStatistics.permissionsCheckerImplementation"));
if (!usageStatisticsPermissionsChecker.editAllowed(SessionUser.getUser(request))) {
throw new AccessDeniedException(SessionUser.getUser(request), usageStatisticsPermissionsChecker.getAccessDeniedDescription());
}
myDataPersistor.markReportingSuggestionAsConsidered();
final boolean reportingEnabled = "true".equalsIgnoreCase(reportingEnabledStr);
try {
setReportingEnabled(reportingEnabled);
ActionMessages.getOrCreateMessages(request).addMessage(
USAGE_STATISTICS_REPORTING_STATUS_MESSAGE_KEY,
reportingEnabled ? "Usage statistics will be sent to JetBrains periodically" : "Usage statistics will not be sent to JetBrains"
);
}
catch (final Throwable e) {
Loggers.SERVER.error("Cannot update statistics reporting status: ", e);
ActionMessages.getOrCreateMessages(request).addMessage(USAGE_STATISTICS_REPORTING_STATUS_MESSAGE_KEY, "Internal server error occurred. Please try again later.");
xmlResponse.addContent("error");
}
}
}