@@ -14978,29 +14978,66 @@ handle_get_reports (gmp_parser_t *gmp_parser, GError **error)
14978
14978
no_report_format = (get_reports_data->format_id == NULL)
14979
14979
|| (strcmp(get_reports_data->format_id, "") == 0);
14980
14980
14981
- if ((!no_report_format)
14982
- && find_report_format_with_permission (get_reports_data->format_id,
14983
- &report_format,
14984
- "get_report_formats"))
14981
+ if (!no_report_format)
14985
14982
{
14986
- get_reports_data_reset (get_reports_data);
14987
- SEND_TO_CLIENT_OR_FAIL (XML_INTERNAL_ERROR ("get_reports"));
14988
- set_client_state (CLIENT_AUTHENTIC);
14989
- return;
14990
- }
14983
+ if (find_report_format_with_permission (get_reports_data->format_id,
14984
+ &report_format,
14985
+ "get_report_formats"))
14986
+ {
14987
+ get_reports_data_reset (get_reports_data);
14988
+ SEND_TO_CLIENT_OR_FAIL (XML_INTERNAL_ERROR ("get_reports"));
14989
+ set_client_state (CLIENT_AUTHENTIC);
14990
+ return;
14991
+ }
14991
14992
14992
- if ((!no_report_format) && (report_format == 0))
14993
- {
14994
- if (send_find_error_to_client ("get_reports", "report format",
14995
- get_reports_data->format_id,
14996
- gmp_parser))
14993
+ if (report_format == 0)
14997
14994
{
14998
- error_send_to_client (error);
14995
+ if (send_find_error_to_client ("get_reports", "report format",
14996
+ get_reports_data->format_id,
14997
+ gmp_parser))
14998
+ {
14999
+ error_send_to_client (error);
15000
+ return;
15001
+ }
15002
+ get_reports_data_reset (get_reports_data);
15003
+ set_client_state (CLIENT_AUTHENTIC);
14999
15004
return;
15000
15005
}
15001
- get_reports_data_reset (get_reports_data);
15002
- set_client_state (CLIENT_AUTHENTIC);
15003
- return;
15006
+
15007
+ task_t task;
15008
+ gchar *usage_type, *report_type;
15009
+ if(report_task (request_report, &task) || (task == 0))
15010
+ {
15011
+ get_reports_data_reset (get_reports_data);
15012
+ SEND_TO_CLIENT_OR_FAIL
15013
+ (XML_ERROR_SYNTAX ("get_reports",
15014
+ "Failed to get report task"));
15015
+ set_client_state (CLIENT_AUTHENTIC);
15016
+ return;
15017
+ }
15018
+ if (task_usage_type(task, &usage_type))
15019
+ {
15020
+ get_reports_data_reset (get_reports_data);
15021
+ SEND_TO_CLIENT_OR_FAIL
15022
+ (XML_ERROR_SYNTAX ("get_reports",
15023
+ "Failed to get usage type"));
15024
+ set_client_state (CLIENT_AUTHENTIC);
15025
+ return;
15026
+ }
15027
+ report_type = report_format_report_type (report_format);
15028
+ if (report_type)
15029
+ {
15030
+ if (strcmp(report_type, usage_type) && strcmp(report_type, "all"))
15031
+ {
15032
+ get_reports_data_reset (get_reports_data);
15033
+ SEND_TO_CLIENT_OR_FAIL
15034
+ (XML_ERROR_SYNTAX ("get_reports",
15035
+ "Report format is not compatible with"
15036
+ " the report type"));
15037
+ set_client_state (CLIENT_AUTHENTIC);
15038
+ return;
15039
+ }
15040
+ }
15004
15041
}
15005
15042
15006
15043
if (!no_report_config)
@@ -15896,7 +15933,8 @@ handle_get_report_formats (gmp_parser_t *gmp_parser, GError **error)
15896
15933
"<summary>%s</summary>"
15897
15934
"<description>%s</description>"
15898
15935
"<predefined>%i</predefined>"
15899
- "<configurable>%i</configurable>",
15936
+ "<configurable>%i</configurable>"
15937
+ "<report_type>%s</report_type>",
15900
15938
report_format_iterator_extension (&report_formats),
15901
15939
report_format_iterator_content_type (&report_formats),
15902
15940
report_format_iterator_summary (&report_formats),
@@ -15906,7 +15944,8 @@ handle_get_report_formats (gmp_parser_t *gmp_parser, GError **error)
15906
15944
(get_iterator_resource (&report_formats))
15907
15945
: report_format_predefined
15908
15946
(get_iterator_resource (&report_formats)),
15909
- report_format_iterator_configurable (&report_formats));
15947
+ report_format_iterator_configurable (&report_formats),
15948
+ report_format_iterator_report_type (&report_formats) ?: "");
15910
15949
15911
15950
if (resource_id_deprecated ("report_format",
15912
15951
get_iterator_uuid (&report_formats)))
0 commit comments