8383];
8484$ formValidator ->addElement ('select ' , 'report_type ' , get_lang ('ReportType ' ), $ reportTypeValues );
8585
86+ // Export format selector allows XLS or PDF output
87+ $ formatValues = [
88+ 'xls ' => get_lang ('ExportExcel ' ),
89+ 'pdf ' => get_lang ('ExportToPDF ' ),
90+ ];
91+ $ formValidator ->addElement ('select ' , 'export_format ' , get_lang ('Format ' ), $ formatValues );
92+
8693// Button to generate the report
8794$ formValidator ->addButtonSend (get_lang ('GenerateReport ' ));
8895
9198$ formValidator ->addRule ('end_date ' , get_lang ('ThisFieldIsRequired ' ), 'required ' );
9299$ formValidator ->addRule ('users ' , get_lang ('ThisFieldIsRequired ' ), 'required ' );
93100$ formValidator ->addRule ('report_type ' , get_lang ('ThisFieldIsRequired ' ), 'required ' );
101+ $ formValidator ->addRule ('export_format ' , get_lang ('ThisFieldIsRequired ' ), 'required ' );
102+
103+ $ formValidator ->setDefaults (['export_format ' => 'xls ' ]);
94104
95105if ($ formValidator ->validate ()) {
96106 $ values = $ formValidator ->exportValues ();
97107 $ users = $ values ['users ' ];
98108 $ startDate = $ values ['start_date ' ];
99109 $ endDate = $ values ['end_date ' ];
100110 $ reportType = $ values ['report_type ' ];
101- $ exportXls = isset ( $ _POST [ ' export ' ]) ;
111+ $ format = $ values [ ' export_format ' ] ;
102112
103113 if (empty ($ users )) {
104114 Display::addFlash (Display::return_message (get_lang ('NoUsersSelected ' ), 'warning ' ));
111121 $ rows = $ data ['rows ' ];
112122 array_unshift ($ rows , $ headers );
113123 $ fileName = get_lang ('Export ' ).'- ' .$ reportTypeValues [$ reportType ].'_ ' .api_get_local_time ();
114- Export::arrayToCsv ($ rows , $ fileName );
124+ if ($ format === 'pdf ' ) {
125+ $ html = Export::convert_array_to_html ($ rows );
126+ Export::export_html_to_pdf ($ html , ['filename ' => $ fileName ]);
127+ } else {
128+ Export::arrayToCsv ($ rows , $ fileName );
129+ }
115130 }
116131 }
117132}
121136
122137$ formValidator ->display ();
123138
124- Display::display_footer ();
139+ Display::display_footer ();
0 commit comments