app/Functions/FunctionsImport.php
public static function createMediaObject($level, $gedrec, Tree $tree): string
    {
        if (preg_match('/\n\d FILE (.+)/', $gedrec, $file_match)) {
            $file = $file_match[1];
        } else {
            $file = '';
        }

        if (preg_match('/\n\d TITL (.+)/', $gedrec, $file_match)) {
            $titl = $file_match[1];
        } else {
            $titl = '';
        }

        // Have we already created a media object with the same title/filename?
        $xref = DB::table('media_file')
            ->where('m_file', '=', $tree->id())
            ->where('descriptive_title', '=', $titl)
            ->where('multimedia_file_refn', '=', mb_substr($file, 0, 248))
            ->value('m_id');

        if (!$xref) {
            $xref = $tree->getNewXref();
            // renumber the lines
            $gedrec = preg_replace_callback('/\n(\d+)/', static function (array $m) use ($level): string {
                return "\n" . ($m[1] - $level);
            }, $gedrec);
            // convert to an object
            $gedrec = str_replace("\n0 OBJE\n", '0 @' . $xref . "@ OBJE\n", $gedrec);

            // Fix Legacy GEDCOMS
            $gedrec = preg_replace('/\n1 FORM (.+)\n1 FILE (.+)\n1 TITL (.+)/', "\n1 FILE $2\n2 FORM $1\n2 TITL $3", $gedrec);

            // Fix FTB GEDCOMS
            $gedrec = preg_replace('/\n1 FORM (.+)\n1 TITL (.+)\n1 FILE (.+)/', "\n1 FILE $3\n2 FORM $1\n2 TITL $2", $gedrec);

            // Fix RM7 GEDCOMS
            $gedrec = preg_replace('/\n1 FILE (.+)\n1 FORM (.+)\n1 TITL (.+)/', "\n1 FILE $1\n2 FORM $2\n2 TITL $3", $gedrec);

            // Create new record
            $record = new Media($xref, $gedrec, null, $tree);

            DB::table('media')->insert([
                'm_id'     => $xref,
                'm_file'   => $tree->id(),
                'm_gedcom' => $gedrec,
            ]);

            foreach ($record->mediaFiles() as $media_file) {
                DB::table('media_file')->insert([
                    'm_id'                 => $xref,
                    'm_file'               => $tree->id(),
                    'multimedia_file_refn' => mb_substr($media_file->filename(), 0, 248),
                    'multimedia_format'    => mb_substr($media_file->format(), 0, 4),
                    'source_media_type'    => mb_substr($media_file->type(), 0, 15),
                    'descriptive_title'    => mb_substr($media_file->title(), 0, 248),
                ]);
            }
        }

        return "\n" . $level . ' OBJE @' . $xref . '@';
    }
public static function createMediaObject($level, $gedrec, Tree $tree): string
    {
        if (preg_match('/\n\d FILE (.+)/', $gedrec, $file_match)) {
            $file = $file_match[1];
        } else {
            $file = '';
        }

        if (preg_match('/\n\d TITL (.+)/', $gedrec, $file_match)) {
            $titl = $file_match[1];
        } else {
            $titl = '';
        }

        // Have we already created a media object with the same title/filename?
        $xref = DB::table('media_file')
            ->where('m_file', '=', $tree->id())
            ->where('descriptive_title', '=', $titl)
            ->where('multimedia_file_refn', '=', mb_substr($file, 0, 248))
            ->value('m_id');

        if (!$xref) {
            $xref = $tree->getNewXref();
            // renumber the lines
            $gedrec = preg_replace_callback('/\n(\d+)/', static function (array $m) use ($level): string {
                return "\n" . ($m[1] - $level);
            }, $gedrec);
            // convert to an object
            $gedrec = str_replace("\n0 OBJE\n", '0 @' . $xref . "@ OBJE\n", $gedrec);

            // Fix Legacy GEDCOMS
            $gedrec = preg_replace('/\n1 FORM (.+)\n1 FILE (.+)\n1 TITL (.+)/', "\n1 FILE $2\n2 FORM $1\n2 TITL $3", $gedrec);

            // Fix FTB GEDCOMS
            $gedrec = preg_replace('/\n1 FORM (.+)\n1 TITL (.+)\n1 FILE (.+)/', "\n1 FILE $3\n2 FORM $1\n2 TITL $2", $gedrec);

            // Fix RM7 GEDCOMS
            $gedrec = preg_replace('/\n1 FILE (.+)\n1 FORM (.+)\n1 TITL (.+)/', "\n1 FILE $1\n2 FORM $2\n2 TITL $3", $gedrec);

            // Create new record
            $record = new Media($xref, $gedrec, null, $tree);

            DB::table('media')->insert([
                'm_id'     => $xref,
                'm_file'   => $tree->id(),
                'm_gedcom' => $gedrec,
            ]);

            foreach ($record->mediaFiles() as $media_file) {
                DB::table('media_file')->insert([
                    'm_id'                 => $xref,
                    'm_file'               => $tree->id(),
                    'multimedia_file_refn' => mb_substr($media_file->filename(), 0, 248),
                    'multimedia_format'    => mb_substr($media_file->format(), 0, 4),
                    'source_media_type'    => mb_substr($media_file->type(), 0, 15),
                    'descriptive_title'    => mb_substr($media_file->title(), 0, 248),
                ]);
            }
        }

        return "\n" . $level . ' OBJE @' . $xref . '@';
    }
public static function createMediaObject ( $ level , $ gedrec , Tree $ tree ) : string { if ( preg_match ( '/\n\d FILE (.+)/' , $ gedrec , $ file_match ) ) { $ file = $ file_match [ 1 ] ; } else { $ file = '' ; } if ( preg_match ( '/\n\d TITL (.+)/' , $ gedrec , $ file_match ) ) { $ titl = $ file_match [ 1 ] ; } else { $ titl = '' ; } // Have we already created a media object with the same title/filename? $ xref = DB :: table ( 'media_file' ) -> where ( 'm_file' , '=' , $ tree -> id ( ) ) -> where ( 'descriptive_title' , '=' , $ titl ) -> where ( 'multimedia_file_refn' , '=' , mb_substr ( $ file , 0 , 248 ) ) -> value ( 'm_id' ) ; if ( ! $ xref ) { $ xref = $ tree -> getNewXref ( ) ; // renumber the lines $ gedrec = preg_replace_callback ( '/\n(\d+)/' , static function ( array $ m ) use ( $ level ) : string { return "\n" . ( $ m [ 1 ] - $ level ) ; } , $ gedrec ) ; // convert to an object $ gedrec = str_replace ( "\n0 OBJE\n" , '0 @' . $ xref . "@ OBJE\n" , $ gedrec ) ; // Fix Legacy GEDCOMS $ gedrec = preg_replace ( '/\n1 FORM (.+)\n1 FILE (.+)\n1 TITL (.+)/' , "\n1 FILE $2\n2 FORM $1\n2 TITL $3" , $ gedrec ) ; // Fix FTB GEDCOMS $ gedrec = preg_replace ( '/\n1 FORM (.+)\n1 TITL (.+)\n1 FILE (.+)/' , "\n1 FILE $3\n2 FORM $1\n2 TITL $2" , $ gedrec ) ; // Fix RM7 GEDCOMS $ gedrec = preg_replace ( '/\n1 FILE (.+)\n1 FORM (.+)\n1 TITL (.+)/' , "\n1 FILE $1\n2 FORM $2\n2 TITL $3" , $ gedrec ) ; // Create new record $ record = new Media ( $ xref , $ gedrec , null , $ tree ) ; DB :: table ( 'media' ) -> insert ( [ 'm_id' => $ xref , 'm_file' => $ tree -> id ( ) , 'm_gedcom' => $ gedrec , ] ) ; foreach ( $ record -> mediaFiles ( ) as $ media_file ) { DB :: table ( 'media_file' ) -> insert ( [ 'm_id' => $ xref , 'm_file' => $ tree -> id ( ) , 'multimedia_file_refn' => mb_substr ( $ media_file -> filename ( ) , 0 , 248 ) , 'multimedia_format' => mb_substr ( $ media_file -> format ( ) , 0 , 4 ) , 'source_media_type' => mb_substr ( $ media_file -> type ( ) , 0 , 15 ) , 'descriptive_title' => mb_substr ( $ media_file -> title ( ) , 0 , 248 ) , ] ) ; } } return "\n" . $ level . ' OBJE @' . $ xref . '@' ; }
Create a new media object, from inline media data.

@param int    $level
@param string $gedrec
@param Tree   $tree

@return string
Create a new media object from inline media data .