@@ -59,10 +59,7 @@ function openai_dalle_form($form, &$form_state) {
5959 $form['model'] = [
6060 '#type' => 'select',
6161 '#title' => t('Model'),
62- '#options' => [
63- 'dall-e-2' => 'dall-e-2',
64- 'dall-e-3' => 'dall-e-3',
65- ],
62+ '#options' => $models,
6663 '#default_value' => 'dall-e-3',
6764 '#description' => t('The model to use to generate an image.'),
6865 '#ajax' => [
@@ -292,7 +289,6 @@ function openai_dalle_form_submit($form, &$form_state) {
292289 $format = $form_state['values']['response_format'];
293290 $filename_base = $form_state['values']['filename'];
294291
295- // Determine file scheme and create a unique filename.
296292 $file_scheme = file_default_scheme();
297293 $timestamp = REQUEST_TIME;
298294 $unique_filename = $filename_base . '-' . $timestamp . '.png';
@@ -309,22 +305,11 @@ function openai_dalle_form_submit($form, &$form_state) {
309305 return;
310306 }
311307
312- // Save the binary data to the file system.
313- $file_uri = $file_scheme . '://' . $unique_filename;
314- $file_save_result = file_unmanaged_save_data($data, $file_uri, FILE_EXISTS_REPLACE);
308+ $file = file_save_data($data, $file_scheme . '://' . $unique_filename, FILE_EXISTS_REPLACE);
315309
316- if ($file_save_result) {
317- // Create a managed file entity.
318- $file = entity_create('file', [
319- 'uri' => $file_uri,
320- 'filename' => $unique_filename,
321- 'filemime' => 'image/png',
322- 'status' => 1,
323- 'uid' => $GLOBALS['user']->uid,
324- 'timestamp' => $timestamp,
325- ]);
326-
327- file_save($file);
310+ if ($file) {
311+ // Add file usage to ensure it appears in the media library.
312+ file_usage_add($file, 'openai_dalle', 'module', $file->fid);
328313
329314 $form_state['storage'] = [
330315 'filename' => $file->filename,
@@ -336,31 +321,25 @@ function openai_dalle_form_submit($form, &$form_state) {
336321 form_set_error('', t('Failed to save the image to the file system.'));
337322 }
338323 } else {
339- // Handle URL format response.
340324 $client = new GuzzleHttp\Client();
341325 $response = $client->get($result);
342326
343327 if ($response->getStatusCode() === 200) {
344- $file_uri = $file_scheme . '://' . $unique_filename;
345- file_unmanaged_save_data($response->getBody(), $file_uri, FILE_EXISTS_REPLACE);
346-
347- $file = entity_create('file', [
348- 'uri' => $file_uri,
349- 'filename' => $unique_filename,
350- 'filemime' => 'image/png',
351- 'status' => 1,
352- 'uid' => $GLOBALS['user']->uid,
353- 'timestamp' => $timestamp,
354- ]);
355-
356- file_save($file);
357-
358- $form_state['storage'] = [
359- 'filename' => $file->filename,
360- 'filepath' => file_create_url($file->uri),
361- 'fid' => $file->fid,
362- 'format' => $format,
363- ];
328+ $file = file_save_data($response->getBody(), $file_scheme . '://' . $unique_filename, FILE_EXISTS_REPLACE);
329+
330+ if ($file) {
331+ // Add file usage to ensure it appears in the media library.
332+ file_usage_add($file, 'openai_dalle', 'module', $file->fid);
333+
334+ $form_state['storage'] = [
335+ 'filename' => $file->filename,
336+ 'filepath' => file_create_url($file->uri),
337+ 'fid' => $file->fid,
338+ 'format' => $format,
339+ ];
340+ } else {
341+ form_set_error('', t('Failed to save the image to the file system.'));
342+ }
364343 } else {
365344 form_set_error('', t('Failed to download the image from the URL.'));
366345 }
@@ -370,7 +349,4 @@ function openai_dalle_form_submit($form, &$form_state) {
370349 }
371350
372351 $form_state['rebuild'] = TRUE;
373-
374- // Ensure storage is set to avoid warnings.
375- $form_state['storage'] = $form_state['storage'] ?? [];
376352}
0 commit comments