PHP 7.4.33
Preview: WucUserFilesImport.php Size: 4.78 KB
/var/www/multi-event-cfp.bitkit.dk/httpdocs/app/Imports/WucUserFilesImport.php
<?php

namespace App\Imports;

use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use App\Models\User;
use Maatwebsite\Excel\Concerns\SkipsEmptyRows;
use App\Models\File;
use Illuminate\Support\Facades\Storage;

class WucUserFilesImport implements ToModel, WithHeadingRow, SkipsEmptyRows
{

    /**
     * @param array $row
     *
     * @return User|null
     */
    public function model(array $row)
    {

        //our user
        $ourUser = User::whereEmail($row['email'])->first();


        if ($row['avatar']) {
            if (Storage::exists('wuc/public/media/' . $row['id'] . '/' . $row['avatar'])) {
                $files = storage_path('app/wuc/public/media/' . $row['id'] . '/' . $row['avatar']);

                //saving file
                $file = new File();

                $file->model_id = $ourUser->id;
                $file->model = 'App\Models\User';
                $file->filename = $row['avatar'];
                $file->save_name = 'avatar' . '.' . pathinfo($row['avatar'], PATHINFO_EXTENSION);
                $file->extension = pathinfo($row['avatar'], PATHINFO_EXTENSION);

                $info  = getimagesize($files);

                $file->type = isset($info['mime']) ? $info['mime'] : '';

                $file->context = 'user.avatar';
                $file->public = 1;
                $file->filepath = 'public/media/users/' . $ourUser->id . '/images/';
                $file->public_path = 'storage/media/users/' . $ourUser->id . '/images/' . $file->save_name;
                $file->created_at = $row['created_at'];
                $file->updated_at = $row['updated_at'];

                $file->save();

                //file stored to session
                session()->push('userAvatarFiles', $file);

                //put file to our project storage path
                Storage::putFileAs('public/media/users/' . $ourUser->id . '/images/', $files, $file->save_name, 'public');

                //file contents for user avatar field
                $fileContents = json_decode(json_encode(array(
                    'filename' =>  $file->filename,
                    'filepath' => $file->filepath,
                    'extension' =>  $file->extension,
                    'file_id' => $file->id,
                    'public_path' => $file->public_path,
                    'save_name' => $file->save_name,
                    'value' => $file->public_path,
                )), true, JSON_UNESCAPED_SLASHES);


                $ourUser->avatar = $fileContents;

                $ourUser->save();
            }
        }

        if ($row['company_logo']) {

            if (Storage::exists('wuc/public/media/' . $row['id'] . '/' . $row['company_logo'])) {
                $files = storage_path('app/wuc/public/media/' . $row['id'] . '/' . $row['company_logo']);

                //saving file
                $file = new File();

                $file->model_id = $ourUser->id;
                $file->model = 'App\Models\User';
                $file->filename = $row['company_logo'];
                $file->save_name = 'company_logo' . '.' . pathinfo($row['company_logo'], PATHINFO_EXTENSION);
                $file->extension = pathinfo($row['company_logo'], PATHINFO_EXTENSION);

                $info  = getimagesize($files);

                $file->type = isset($info['mime']) ? $info['mime'] : '';

                $file->context = 'user.company_logo';
                $file->public = 1;
                $file->filepath = 'public/media/users/' . $ourUser->id . '/images/';
                $file->public_path = 'storage/media/users/' . $ourUser->id . '/images/' . $file->save_name;
                $file->created_at = $row['created_at'];
                $file->updated_at = $row['updated_at'];

                $file->save();

                //file stored to session
                session()->push('userCompanyLogoFiles', $file);

                //put file to our project storage path
                Storage::putFileAs('public/media/users/' . $ourUser->id . '/images/', $files, $file->save_name, 'public');

                //file contents for user company_logo field
                $fileContents = json_decode(json_encode(array(
                    'filename' =>  $file->filename,
                    'filepath' => $file->filepath,
                    'extension' =>  $file->extension,
                    'file_id' => $file->id,
                    'public_path' => $file->public_path,
                    'save_name' => $file->save_name,
                    'value' => $file->public_path,
                )), true, JSON_UNESCAPED_SLASHES);


                $ourUser->company_logo = $fileContents;

                $ourUser->save();
            }
        }


        var_dump('success');
    }


    /**
     * Headings
     */
    public function headingRow(): int
    {
        return 1;
    }
}

Directory Contents

Dirs: 1 × Files: 4
Name Size Perms Modified Actions
Sheets DIR
- drwxr-xr-x 2025-04-07 06:15:39
Edit Download
6.59 KB lrw-rw-r-- 2026-02-03 05:38:24
Edit Download
23.98 KB lrw-rw-r-- 2026-02-03 05:38:20
Edit Download
12.76 KB lrw-r--r-- 2024-02-09 12:37:30
Edit Download
4.78 KB lrw-r--r-- 2024-02-09 12:37:30
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).