@@ -2201,4 +2201,43 @@ public function getDefaultData(PluginFormcreatorFormAnswer $formanswer): array {
22012201 $ data = array_merge ($ data , $ predefined_fields );
22022202 return $ data ;
22032203 }
2204+
2205+ /**
2206+ * Emulate file uploads for documents provided to file questions
2207+ *
2208+ * @param array $data
2209+ * @param PluginFormcreatorFormAnswer $formanswer a form answer
2210+ * @return array input $data updated with (fake) file uploads
2211+ */
2212+ protected function prepareUploadedFiles (array $ data , $ formanswer ): array {
2213+ $ saved_documents = $ formanswer ->getFileProperties ();
2214+
2215+ if ($ saved_documents ) {
2216+ foreach ($ formanswer ->getFileFields () as $ questionId ) {
2217+ $ data ["_filename " ] = array_merge ($ data ["_filename " ], $ saved_documents ["_filename " ][$ questionId ]);
2218+ $ data ["_tag_filename " ] = array_merge ($ data ["_tag_filename " ], $ saved_documents ["_tag_filename " ][$ questionId ]);
2219+
2220+ foreach ($ saved_documents ["_filename " ][$ questionId ] as $ key => $ filename ) {
2221+ $ uploaded_filename = $ formanswer ->getFileName ($ questionId , $ key );
2222+ if ($ uploaded_filename != '' ) {
2223+ copy (GLPI_DOC_DIR . '/ ' . $ uploaded_filename , GLPI_TMP_DIR . '/ ' . $ filename );
2224+ }
2225+ }
2226+ }
2227+ } else {
2228+ foreach ($ formanswer ->getFileFields () as $ questionId ) {
2229+ $ data ["_filename " ] = array_merge ($ data ["_filename " ], $ formanswer ->input ["_formcreator_field_ " . $ questionId ]);
2230+ $ data ["_prefix_filename " ] = array_merge ($ data ["_prefix_filename " ], $ formanswer ->input ["_prefix_formcreator_field_ " . $ questionId ]);
2231+ $ data ["_tag_filename " ] = array_merge ($ data ["_tag_filename " ], $ formanswer ->input ["_tag_formcreator_field_ " . $ questionId ]);
2232+ foreach ($ formanswer ->input ["_formcreator_field_ " . $ questionId ] as $ key => $ filename ) {
2233+ $ uploaded_filename = $ formanswer ->getFileName ($ questionId , $ key );
2234+ if ($ uploaded_filename != '' ) {
2235+ copy (GLPI_DOC_DIR . '/ ' . $ uploaded_filename , GLPI_TMP_DIR . '/ ' . $ filename );
2236+ }
2237+ }
2238+ }
2239+ }
2240+
2241+ return $ data ;
2242+ }
22042243}
0 commit comments