app/Http/Controllers/EditMediaController.php
private function unusedFiles(Tree $tree): array
    {
        $used_files = DB::table('media_file')
            ->where('m_file', '=', $tree->id())
            ->where('multimedia_file_refn', 'NOT LIKE', 'http://%')
            ->where('multimedia_file_refn', 'NOT LIKE', 'https://%')
            ->pluck('multimedia_file_refn')
            ->all();

        $disk_files = [];
        $media_dir  = WT_DATA_DIR . $tree->getPreference('MEDIA_DIRECTORY', 'media/');
        $iter       = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($media_dir, FilesystemIterator::FOLLOW_SYMLINKS));

        foreach ($iter as $file) {
            if ($file->isFile()) {
                $filename = substr($file->getPathname(), strlen($media_dir));
                // Older versions of webtrees used a couple of special folders.
                if (strpos($filename, 'thumbs/') !== 0 && strpos($filename, 'watermarks/') !== 0) {
                    $disk_files[] = $filename;
                }
            }
        }

        $unused_files = array_diff($disk_files, $used_files);

        sort($unused_files);

        return array_combine($unused_files, $unused_files);
    }
private function unusedFiles(Tree $tree): array
    {
        $used_files = DB::table('media_file')
            ->where('m_file', '=', $tree->id())
            ->where('multimedia_file_refn', 'NOT LIKE', 'http://%')
            ->where('multimedia_file_refn', 'NOT LIKE', 'https://%')
            ->pluck('multimedia_file_refn')
            ->all();

        $disk_files = [];
        $media_dir  = WT_DATA_DIR . $tree->getPreference('MEDIA_DIRECTORY', 'media/');
        $iter       = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($media_dir, FilesystemIterator::FOLLOW_SYMLINKS));

        foreach ($iter as $file) {
            if ($file->isFile()) {
                $filename = substr($file->getPathname(), strlen($media_dir));
                // Older versions of webtrees used a couple of special folders.
                if (strpos($filename, 'thumbs/') !== 0 && strpos($filename, 'watermarks/') !== 0) {
                    $disk_files[] = $filename;
                }
            }
        }

        $unused_files = array_diff($disk_files, $used_files);

        sort($unused_files);

        return array_combine($unused_files, $unused_files);
    }
private function unusedFiles ( Tree $ tree ) : array { $ used_files = DB :: table ( 'media_file' ) -> where ( 'm_file' , '=' , $ tree -> id ( ) ) -> where ( 'multimedia_file_refn' , 'NOT LIKE' , 'http://%' ) -> where ( 'multimedia_file_refn' , 'NOT LIKE' , 'https://%' ) -> pluck ( 'multimedia_file_refn' ) -> all ( ) ; $ disk_files = [ ] ; $ media_dir = WT_DATA_DIR . $ tree -> getPreference ( 'MEDIA_DIRECTORY' , 'media/' ) ; $ iter = new RecursiveIteratorIterator ( new RecursiveDirectoryIterator ( $ media_dir , FilesystemIterator :: FOLLOW_SYMLINKS ) ) ; foreach ( $ iter as $ file ) { if ( $ file -> isFile ( ) ) { $ filename = substr ( $ file -> getPathname ( ) , strlen ( $ media_dir ) ) ; // Older versions of webtrees used a couple of special folders. if ( strpos ( $ filename , 'thumbs/' ) !== 0 && strpos ( $ filename , 'watermarks/' ) !== 0 ) { $ disk_files [ ] = $ filename ; } } } $ unused_files = array_diff ( $ disk_files , $ used_files ) ; sort ( $ unused_files ) ; return array_combine ( $ unused_files , $ unused_files ) ; }
A list of media files not already linked to a media object.

@param Tree $tree

@return array
A list of media files not already linked to a media object .