} } catch (\ErrorException $ex) { // Not an image, or not a valid image? $img = '-'; } // Is there a pending record for this file? $exists_pending = Database::prepare("SELECT 1 FROM `##change` WHERE status='pending' AND new_gedcom LIKE CONCAT('%\n1 FILE ', :unused_file, '\n%')")->execute(array('unused_file' => Filter::escapeLike($unused_file)))->fetchOne(); // Form to create new media object in each tree $create_form = ''; if (!$exists_pending) { foreach ($media_trees as $media_tree) { $create_form .= '<p><a href="" onclick="window.open(\'addmedia.php?action=showmediaform&ged=' . rawurlencode($media_tree) . '&filename=' . rawurlencode($unused_file) . '\', \'_blank\', edit_window_specs); return false;">' . I18N::translate('Create') . '</a> — ' . Filter::escapeHtml($media_tree) . '<p>'; } } $conf = I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs($unused_file)); $delete_link = '<p><a onclick="if (confirm(\'' . Filter::escapeJs($conf) . '\')) jQuery.post(\'admin_media.php\',{delete:\'' . Filter::escapeJs($media_path . $unused_file) . '\',media_folder:\'' . Filter::escapeJs($media_folder) . '\'},function(){location.reload();})" href="#">' . I18N::Translate('Delete') . '</a></p>'; $data[] = array(mediaFileInfo($media_folder, $media_path, $unused_file) . $delete_link, $img, $create_form); } break; default: throw new \DomainException('Invalid action'); } header('Content-type: application/json'); // See http://www.datatables.net/usage/server-side echo json_encode(array('draw' => Filter::getInteger('draw'), 'recordsTotal' => $recordsTotal, 'recordsFiltered' => $recordsFiltered, 'data' => $data)); return; } /** * A unique list of media folders, from all trees. * * @return string[]