HEX
Server: LiteSpeed
System: Linux srv1.dhviews.com 5.14.0-570.23.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Jun 24 11:27:16 EDT 2025 x86_64
User: bdedition (1723)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/bdedition/public_html/core/app/Http/Helpers/helpers.php
<?php

use Carbon\Carbon;
use App\Lib\Captcha;
use App\Notify\Notify;
use App\Lib\ClientInfo;
use App\Lib\CurlRequest;
use App\Lib\FileManager;
use App\Models\Frontend;
use App\Constants\Status;
use App\Models\Advertise;
use App\Models\Extension;
use Illuminate\Support\Str;
use App\Models\GeneralSetting;
use Laramin\Utility\VugiChugi;
use App\Lib\GoogleAuthenticator;
use Illuminate\Support\Facades\Cache;
function systemDetails()
{
    $system['name'] = 'News Lab';
    $system['version'] = '2.0.1';
    $system['build_version'] = '5.0.9';
    return $system;
}

function slug($string)
{
    return Str::slug($string);
}

function verificationCode($length)
{
    if ($length == 0) return 0;
    $min = pow(10, $length - 1);
    $max = (int) ($min - 1) . '9';
    return random_int($min, $max);
}

function getNumber($length = 8)
{
    $characters = '1234567890';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

function activeTemplate($asset = false)
{
    $template = session('template') ?? gs('active_template');
    if ($asset) return 'assets/templates/' . $template . '/';
    return 'templates.' . $template . '.';
}

function activeTemplateName()
{
    $template = session('template') ?? gs('active_template');
    return $template;
}

function siteLogo($type = null)
{
    $name = $type ? "/logo_$type.png" : '/logo.png';
    return getImage(getFilePath('logoIcon') . $name);
}
function siteFavicon()
{
    return getImage(getFilePath('logoIcon') . '/favicon.png');
}

function loadReCaptcha()
{
    return Captcha::reCaptcha();
}

function loadCustomCaptcha($width = '100%', $height = 46, $bgColor = '#003')
{
    return Captcha::customCaptcha($width, $height, $bgColor);
}

function verifyCaptcha()
{
    return Captcha::verify();
}

function loadExtension($key)
{
    $extension = Extension::where('act', $key)->where('status', Status::ENABLE)->first();
    return $extension ? $extension->generateScript() : '';
}

function removeElement($array, $value)
{
    return array_diff($array, (is_array($value) ? $value : array($value)));
}

function cryptoQR($wallet)
{
    return "https://api.qrserver.com/v1/create-qr-code/?data=$wallet&size=300x300&ecc=m";
}

function keyToTitle($text)
{
    return ucfirst(preg_replace("/[^A-Za-z0-9 ]/", ' ', $text));
}

function titleToKey($text)
{
    return strtolower(str_replace(' ', '_', $text));
}

function strLimit($title = null, $length = 10)
{
    return Str::limit($title, $length);
}

function getIpInfo()
{
    $ipInfo = ClientInfo::ipInfo();
    return $ipInfo;
}

function osBrowser()
{
    $osBrowser = ClientInfo::osBrowser();
    return $osBrowser;
}

function getTemplates()
{
    $param['purchasecode'] = env("PURCHASECODE");
    $param['website'] = @$_SERVER['HTTP_HOST'] . @$_SERVER['REQUEST_URI'] . ' - ' . env("APP_URL");
    $url = VugiChugi::gttmp() . systemDetails()['name'];
    $response = CurlRequest::curlPostContent($url, $param);
    if ($response) {
        return $response;
    } else {
        return null;
    }
}

function getPageSections($arr = false)
{
    $jsonUrl = resource_path('views/') . str_replace('.', '/', activeTemplate()) . 'sections.json';
    $sections = json_decode(file_get_contents($jsonUrl));
    if ($arr) {
        $sections = json_decode(file_get_contents($jsonUrl), true);
        ksort($sections);
    }
    return $sections;
}

function getImage($image, $size = null)
{
    $clean = '';
    if (file_exists($image) && is_file($image)) {
        return asset($image) . $clean;
    }
    if ($size) {
        return route('placeholder.image', $size);
    }
    return asset('assets/images/default.png');
}

function notify($user, $templateName, $shortCodes = null, $sendVia = null, $createLog = true, $pushImage = null)
{
    $globalShortCodes = [
        'site_name' => gs('site_name'),
        'site_currency' => gs('cur_text'),
        'currency_symbol' => gs('cur_sym'),
    ];

    if (gettype($user) == 'array') {
        $user = (object) $user;
    }

    $shortCodes = array_merge($shortCodes ?? [], $globalShortCodes);

    $notify = new Notify($sendVia);
    $notify->templateName = $templateName;
    $notify->shortCodes = $shortCodes;
    $notify->user = $user;
    $notify->createLog = $createLog;
    $notify->pushImage = $pushImage;
    $notify->userColumn = isset($user->id) ? $user->getForeignKey() : 'user_id';
    $notify->send();
}

function getPaginate($paginate = null)
{
    if (!$paginate) {
        $paginate = gs('paginate_number');
    }
    return $paginate;
}

function paginateLinks($data)
{
    return $data->appends(request()->all())->links();
}

function menuActive($routeName, $type = null, $param = null)
{
    if ($type == 3) $class = 'side-menu--open';
    elseif ($type == 2) $class = 'sidebar-submenu__open';
    else $class = 'active';

    if (is_array($routeName)) {
        foreach ($routeName as $key => $value) {
            if (request()->routeIs($value)) return $class;
        }
    } elseif (request()->routeIs($routeName)) {
        if ($param) {
            $routeParam = array_values(@request()->route()->parameters ?? []);
            if (strtolower(@$routeParam[0]) == strtolower($param)) return $class;
            else return;
        }
        return $class;
    }
}

function fileUploader($file, $location, $size = null, $old = null, $thumb = null, $filename = null)
{
    $fileManager = new FileManager($file);
    $fileManager->path = $location;
    $fileManager->size = $size;
    $fileManager->old = $old;
    $fileManager->thumb = $thumb;
    $fileManager->filename = $filename;
    $fileManager->upload();
    return $fileManager->filename;
}

function fileManager()
{
    return new FileManager();
}

function getFilePath($key)
{
    return fileManager()->$key()->path;
}

function getFileSize($key)
{
    return fileManager()->$key()->size;
}

function getFileExt($key)
{
    return fileManager()->$key()->extensions;
}

function bn_number($number) {
    $search = ['0','1','2','3','4','5','6','7','8','9'];
    $replace = ['০','১','২','৩','৪','৫','৬','৭','৮','৯'];
    return str_replace($search, $replace, $number);
}

function diffForHumans($date)
{
    $lang = session()->get('lang');
    Carbon::setLocale($lang ?? 'bn');
    $diff = Carbon::parse($date)->diffForHumans();
    $diff = str_replace(
        [' second ago',' seconds ago', ' minute ago', ' minutes ago', ' hour ago',' hours ago', ' day ago', ' days ago', ' week ago', ' weeks ago', ' month ago', ' months ago', ' year ago', ' years ago'],
        [' সেকেন্ড আগে',' সেকেন্ড আগে', ' মিনিট আগে', ' মিনিট আগে', ' ঘন্টা আগে', ' ঘন্টা আগে', ' দিন আগে', ' দিন আগে', ' সপ্তাহ আগে', ' সপ্তাহ আগে', ' মাস আগে', ' মাস আগে', ' বছর আগে', ' বছর আগে'],
        $diff
    );
    return bn_number($diff);
}

// function bn_number($number) {
//     $search = ['0','1','2','3','4','5','6','7','8','9'];
//     $replace = ['০','১','২','৩','৪','৫','৬','৭','৮','৯'];
//     return str_replace($search, $replace, $number);
// }

// function diffForHumans($date)
// {
//     $lang = session()->get('lang');
//     Carbon::setlocale($lang);
//     return Carbon::parse($date)->diffForHumans();
// }

function showDateTime($date, $format = 'Y-m-d h:i A')
{
    if (!$date) {
        return '-';
    }
    $lang = session()->get('lang');
    Carbon::setlocale($lang ?? 'en');
    return Carbon::parse($date)->translatedFormat($format);
}

function getContent($dataKeys, $singleQuery = false, $limit = null, $orderById = false)
{
    $templateName = activeTemplateName();
    if ($singleQuery) {
        $content = Frontend::where('tempname', $templateName)->where('data_keys', $dataKeys)->orderBy('id', 'desc')->first();
    } else {
        $article = Frontend::where('tempname', $templateName);
        $article->when($limit != null, function ($q) use ($limit) {
            return $q->limit($limit);
        });
        if ($orderById) {
            $content = $article->where('data_keys', $dataKeys)->orderBy('id')->get();
        } else {
            $content = $article->where('data_keys', $dataKeys)->orderBy('id', 'desc')->get();
        }
    }
    return $content;
}

function verifyG2fa($user, $code, $secret = null)
{
    $authenticator = new GoogleAuthenticator();
    if (!$secret) {
        $secret = $user->tsc;
    }
    $oneCode = $authenticator->getCode($secret);
    $userCode = $code;
    if ($oneCode == $userCode) {
        $user->tv = Status::YES;
        $user->save();
        return true;
    } else {
        return false;
    }
}

function urlPath($routeName, $routeParam = null)
{
    if ($routeParam == null) {
        $url = route($routeName);
    } else {
        $url = route($routeName, $routeParam);
    }
    $basePath = route('home');
    $path = str_replace($basePath, '', $url);
    return $path;
}

function showMobileNumber($number)
{
    $length = strlen($number);
    return substr_replace($number, '***', 2, $length - 4);
}

function showEmailAddress($email)
{
    $endPosition = strpos($email, '@') - 1;
    return substr_replace($email, '***', 1, $endPosition);
}

function getRealIP()
{
    $ip = $_SERVER["REMOTE_ADDR"];
    //Deep detect ip
    if (filter_var(@$_SERVER['HTTP_FORWARDED'], FILTER_VALIDATE_IP)) {
        $ip = $_SERVER['HTTP_FORWARDED'];
    }
    if (filter_var(@$_SERVER['HTTP_FORWARDED_FOR'], FILTER_VALIDATE_IP)) {
        $ip = $_SERVER['HTTP_FORWARDED_FOR'];
    }
    if (filter_var(@$_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP)) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    if (filter_var(@$_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP)) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }
    if (filter_var(@$_SERVER['HTTP_X_REAL_IP'], FILTER_VALIDATE_IP)) {
        $ip = $_SERVER['HTTP_X_REAL_IP'];
    }
    if (filter_var(@$_SERVER['HTTP_CF_CONNECTING_IP'], FILTER_VALIDATE_IP)) {
        $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
    }
    if ($ip == '::1') {
        $ip = '127.0.0.1';
    }

    return $ip;
}

function appendQuery($key, $value)
{
    return request()->fullUrlWithQuery([$key => $value]);
}

function dateSort($a, $b)
{
    return strtotime($a) - strtotime($b);
}

function dateSorting($arr)
{
    usort($arr, "dateSort");
    return $arr;
}

function gs($key = null)
{
    $general = Cache::get('GeneralSetting');
    if (!$general) {
        $general = GeneralSetting::first();
        Cache::put('GeneralSetting', $general);
    }
    if ($key) return @$general->$key;
    return $general;
}

function isImage($string)
{
    $allowedExtensions = array('jpg', 'jpeg', 'png', 'gif');
    $fileExtension = pathinfo($string, PATHINFO_EXTENSION);
    if (in_array($fileExtension, $allowedExtensions)) {
        return true;
    } else {
        return false;
    }
}

function isHtml($string)
{
    if (preg_match('/<.*?>/', $string)) {
        return true;
    } else {
        return false;
    }
}

function convertToReadableSize($size)
{
    preg_match('/^(\d+)([KMG])$/', $size, $matches);
    $size = (int)$matches[1];
    $unit = $matches[2];

    if ($unit == 'G') return $size . 'GB';
    if ($unit == 'M') return $size . 'MB';
    if ($unit == 'K') return $size . 'KB';
    return $size . $unit;
}

function frontendImage($sectionName, $image, $size = null, $seo = false)
{
    if ($seo) return getImage('assets/images/frontend/' . $sectionName . '/seo/' . $image, $size);
    return getImage('assets/images/frontend/' . $sectionName . '/' . $image, $size);
}

function getCountryJson()
{
    return json_decode(file_get_contents(resource_path('views/partials/country.json')));
}

function advertisements($size)
{
    $advertisement = Advertise::where('size', $size)->where('status', Status::ENABLE)->inRandomOrder()->first();
    if (!empty($advertisement)) {
        if ($advertisement->type == Status::BANNER_ADVERTISE) return '<a  target="_blank" href="' . $advertisement->redirect_url . '"><img src="' . getImage(getFilePath('advertisement') . '/' . $advertisement->content, $advertisement->size) . '" alt="advertisement image" class="w-100"></a>';

        if ($advertisement->type == 2) return $advertisement->content;
    } else {
        return '';
    }
}

if (!function_exists('getDesignationTitle')) {
    function getDesignationTitle($designation)
    {
        $designations = [
            'peb' => 'President of the Editorial Board',
            'advisor' => 'Advisor',
            'editor' => 'Editor',
            'executiveEditor' => 'Executive Editor',
            'managingEditor' => 'Managing Editor',
            'deputyEditor' => 'Deputy Editor',
            'jointEditor' => 'Joint Editor',
            'associateEditor' => 'Associate Editor',
            'newsEditor' => 'News Editor',
            'assistantEditor' => 'Assistant Editor',
            'featureEditor' => 'Feature Editor',
            'specialCorrespondent' => 'Special Correspondent',
            'cityEditor' => 'City Editor',
            'jointNewsEditor' => 'Joint News Editor',
            'chiefCorrespondent' => 'Chief Correspondent',
            'subEditor' => 'Sub-Editor',
            'chiefSubEditor' => 'Chief Sub-Editor',
            'staffEditor' => 'Staff Editor',
            'sportsEditor' => 'Sports Editor',
            'editorialAssistant' => 'Editorial Assistant',
            'staffCorrespondent' => 'Staff Correspondent',
            'ownCorrespondent' => 'Own Correspondent',
            'sportsCorrespondent' => 'Sports Correspondent',
            'artist' => 'Artist',
        ];

        return $designations[$designation] ?? 'Unknown Designation';
    }
}

if (!function_exists('getDesignations')) {
    function getDesignations()
    {
        return [
            'peb' => __('President of the Editorial Board'),
            'advisor' => __('Advisor'),
            'editor' => __('Editor'),
            'executiveEditor' => __('Executive Editor'),
            'managingEditor' => __('Managing Editor'),
            'deputyEditor' => __('Deputy Editor'),
            'jointEditor' => __('Joint Editor'),
            'associateEditor' => __('Associate Editor'),
            'newsEditor' => __('News Editor'),
            'assistantEditor' => __('Assistant Editor'),
            'featureEditor' => __('Feature Editor'),
            'specialCorrespondent' => __('Special Correspondent'),
            'cityEditor' => __('City Editor'),
            'jointNewsEditor' => __('Joint News Editor'),
            'chiefCorrespondent' => __('Chief Correspondent'),
            'subEditor' => __('Sub-Editor'),
            'chiefSubEditor' => __('Chief Sub-Editor'),
            'staffEditor' => __('Staff Editor'),
            'sportsEditor' => __('Sports Editor'),
            'editorialAssistant' => __('Editorial Assistant'),
            'staffCorrespondent' => __('Staff Correspondent'),
            'ownCorrespondent' => __('Own Correspondent'),
            'sportsCorrespondent' => __('Sports Correspondent'),
            'artist' => __('Artist'),
        ];
    }
}