shell bypass 403

UnknownSec Shell

: /home/bouloter/sms/app/Helpers/ [ drwxr-xr-x ]

name : Helper.php
<?php // Code within app\Helpers\Helper.php

namespace App\Helpers;

use App\Models\AppConfig;
use App\Models\Contacts;
use App\Models\Language;
use DateTime;
use DateTimeZone;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Session;

class Helper
{

    /**
     * @return array
     */

    public static function applClasses(): array
    {
        if (config('app.theme_layout_type') == 'vertical') {
            $data = config('custom.vertical');
        } else {
            $data = config('custom.horizontal');
        }

        // default data array
        $DefaultData = [
                'mainLayoutType'         => 'vertical',
                'theme'                  => 'light',
                'sidebarCollapsed'       => false,
                'navbarColor'            => '',
                'horizontalMenuType'     => 'floating',
                'verticalMenuNavbarType' => 'floating',
                'footerType'             => 'static', //footer
                'layoutWidth'            => 'boxed',
                'showMenu'               => true,
                'bodyClass'              => '',
                'pageClass'              => '',
                'pageHeader'             => true,
                'contentLayout'          => 'default',
                'blankPage'              => false,
                'defaultLanguage'        => env('APP_LOCALE'),
                'direction'              => env('MIX_CONTENT_DIRECTION'),
        ];

        // if any key missing of array from custom.php file it will be merged and set a default value from dataDefault array and store in data variable
        $data = array_merge($DefaultData, $data);

        // All options available in the template
        $allOptions = [
                'mainLayoutType'         => ['vertical', 'horizontal'],
                'theme'                  => ['light' => 'light', 'dark' => 'dark-layout', 'bordered' => 'bordered-layout', 'semi-dark' => 'semi-dark-layout'],
                'sidebarCollapsed'       => [true, false],
                'showMenu'               => [true, false],
                'layoutWidth'            => ['full', 'boxed'],
                'navbarColor'            => ['bg-primary', 'bg-info', 'bg-warning', 'bg-success', 'bg-danger', 'bg-dark'],
                'horizontalMenuType'     => ['floating' => 'navbar-floating', 'static' => 'navbar-static', 'sticky' => 'navbar-sticky'],
                'horizontalMenuClass'    => ['static' => '', 'sticky' => 'fixed-top', 'floating' => 'floating-nav'],
                'verticalMenuNavbarType' => ['floating' => 'navbar-floating', 'static' => 'navbar-static', 'sticky' => 'navbar-sticky', 'hidden' => 'navbar-hidden'],
                'navbarClass'            => ['floating' => 'floating-nav', 'static' => 'navbar-static-top', 'sticky' => 'fixed-top', 'hidden' => 'd-none'],
                'footerType'             => ['static' => 'footer-static', 'sticky' => 'footer-fixed', 'hidden' => 'footer-hidden'],
                'pageHeader'             => [true, false],
                'contentLayout'          => ['default', 'content-left-sidebar', 'content-right-sidebar', 'content-detached-left-sidebar', 'content-detached-right-sidebar'],
                'blankPage'              => [false, true],
                'sidebarPositionClass'   => ['content-left-sidebar' => 'sidebar-left', 'content-right-sidebar' => 'sidebar-right', 'content-detached-left-sidebar' => 'sidebar-detached sidebar-left', 'content-detached-right-sidebar' => 'sidebar-detached sidebar-right', 'default' => 'default-sidebar-position'],
                'contentsidebarClass'    => ['content-left-sidebar' => 'content-right', 'content-right-sidebar' => 'content-left', 'content-detached-left-sidebar' => 'content-detached content-right', 'content-detached-right-sidebar' => 'content-detached content-left', 'default' => 'default-sidebar'],
                'defaultLanguage'        => ['en' => 'en', 'fr' => 'fr', 'pt' => 'pt', 'af' => 'af', 'ar' => 'ar', 'es' => 'es', 'it' => 'it', 'ko' => 'ko', 'sl' => 'sl', 'zh' => 'zh'],
                'direction'              => ['ltr', 'rtl'],
        ];

        //if mainLayoutType value empty or not match with default options in custom.php config file then set a default value
        foreach ($allOptions as $key => $value) {
            if (array_key_exists($key, $DefaultData)) {
                if (gettype($DefaultData[$key]) === gettype($data[$key])) {
                    // data key should be string
                    if (is_string($data[$key])) {
                        // data key should not be empty
                        if (true) {
                            // data key should not be existed inside allOptions array's sub array
                            if ( ! array_key_exists($data[$key], $value)) {
                                // ensure that passed value should be match with any of allOptions array value
                                $result = array_search($data[$key], $value, 'strict');
                                if (empty($result) && $result !== 0) {
                                    $data[$key] = $DefaultData[$key];
                                }
                            }
                        }
                    }
                } else {
                    $data[$key] = $DefaultData[$key];
                }
            }
        }

        //layout classes
        $layoutClasses = [
                'theme'                  => $data['theme'],
                'layoutTheme'            => $allOptions['theme'][$data['theme']],
                'sidebarCollapsed'       => $data['sidebarCollapsed'],
                'showMenu'               => $data['showMenu'],
                'layoutWidth'            => $data['layoutWidth'],
                'verticalMenuNavbarType' => $allOptions['verticalMenuNavbarType'][$data['verticalMenuNavbarType']],
                'navbarClass'            => $allOptions['navbarClass'][$data['verticalMenuNavbarType']],
                'navbarColor'            => $data['navbarColor'],
                'horizontalMenuType'     => $allOptions['horizontalMenuType'][$data['horizontalMenuType']],
                'horizontalMenuClass'    => $allOptions['horizontalMenuClass'][$data['horizontalMenuType']],
                'footerType'             => $allOptions['footerType'][$data['footerType']],
                'sidebarClass'           => '',
                'bodyClass'              => $data['bodyClass'],
                'pageClass'              => $data['pageClass'],
                'pageHeader'             => $data['pageHeader'],
                'blankPage'              => $data['blankPage'],
                'blankPageClass'         => '',
                'contentLayout'          => $data['contentLayout'],
                'sidebarPositionClass'   => $allOptions['sidebarPositionClass'][$data['contentLayout']],
                'contentsidebarClass'    => $allOptions['contentsidebarClass'][$data['contentLayout']],
                'mainLayoutType'         => $data['mainLayoutType'],
                'defaultLanguage'        => $allOptions['defaultLanguage'][$data['defaultLanguage']],
                'direction'              => $data['direction'],
        ];
        // set default language if session hasn't locale value the set default language
        if ( ! Session::has('locale')) {
            app()->setLocale(env('APP_LOCALE'));
        }

        // sidebar Collapsed
        if ($layoutClasses['sidebarCollapsed'] == 'true') {
            $layoutClasses['sidebarClass'] = "menu-collapsed";
        }

        // blank page class
        if ($layoutClasses['blankPage'] == 'true') {
            $layoutClasses['blankPageClass'] = "blank-page";
        }

        return $layoutClasses;
    }

    /**
     * @param $pageConfigs
     *
     * @return bool
     */
    public static function updatePageConfig($pageConfigs): bool
    {
        $demo = config('app.theme_layout_type');
        if (isset($pageConfigs)) {
            if (count($pageConfigs) > 0) {
                foreach ($pageConfigs as $config => $val) {
                    Config::set('custom.'.$demo.'.'.$config, $val);
                }
            }
        }

        return false;
    }

    /**
     * @return string
     */
    public static function home_route(): string
    {
        if (Gate::allows('access backend')) {
            return route('admin.home');
        }

        return route('user.home');
    }


    /**
     * @param  Request  $request
     *
     * @return bool
     */
    public static function is_admin_route(Request $request): bool
    {
        $action = $request->route()->getAction();

        return 'App\Http\Controllers\Admin' === $action['namespace'];
    }

    /**
     * @param  string  $value
     *
     * @return mixed
     */

    public static function app_config(string $value = '')
    {
        $conf = AppConfig::where('setting', $value)->first();

        return $conf->value;
    }

    /**
     * Get all countries.
     *
     * @return array
     */
    public static function countries(): array
    {
        $countries   = [];
        $countries[] = ['code' => 'AF', 'name' => 'Afghanistan', 'd_code' => '+93'];
        $countries[] = ['code' => 'AL', 'name' => 'Albania', 'd_code' => '+355'];
        $countries[] = ['code' => 'DZ', 'name' => 'Algeria', 'd_code' => '+213'];
        $countries[] = ['code' => 'AS', 'name' => 'American Samoa', 'd_code' => '+1'];
        $countries[] = ['code' => 'AD', 'name' => 'Andorra', 'd_code' => '+376'];
        $countries[] = ['code' => 'AO', 'name' => 'Angola', 'd_code' => '+244'];
        $countries[] = ['code' => 'AI', 'name' => 'Anguilla', 'd_code' => '+1'];
        $countries[] = ['code' => 'AG', 'name' => 'Antigua', 'd_code' => '+1'];
        $countries[] = ['code' => 'AR', 'name' => 'Argentina', 'd_code' => '+54'];
        $countries[] = ['code' => 'AM', 'name' => 'Armenia', 'd_code' => '+374'];
        $countries[] = ['code' => 'AW', 'name' => 'Aruba', 'd_code' => '+297'];
        $countries[] = ['code' => 'AU', 'name' => 'Australia', 'd_code' => '+61'];
        $countries[] = ['code' => 'AT', 'name' => 'Austria', 'd_code' => '+43'];
        $countries[] = ['code' => 'AZ', 'name' => 'Azerbaijan', 'd_code' => '+994'];
        $countries[] = ['code' => 'BH', 'name' => 'Bahrain', 'd_code' => '+973'];
        $countries[] = ['code' => 'BD', 'name' => 'Bangladesh', 'd_code' => '+880'];
        $countries[] = ['code' => 'BB', 'name' => 'Barbados', 'd_code' => '+1'];
        $countries[] = ['code' => 'BY', 'name' => 'Belarus', 'd_code' => '+375'];
        $countries[] = ['code' => 'BE', 'name' => 'Belgium', 'd_code' => '+32'];
        $countries[] = ['code' => 'BZ', 'name' => 'Belize', 'd_code' => '+501'];
        $countries[] = ['code' => 'BJ', 'name' => 'Benin', 'd_code' => '+229'];
        $countries[] = ['code' => 'BM', 'name' => 'Bermuda', 'd_code' => '+1'];
        $countries[] = ['code' => 'BT', 'name' => 'Bhutan', 'd_code' => '+975'];
        $countries[] = ['code' => 'BO', 'name' => 'Bolivia', 'd_code' => '+591'];
        $countries[] = ['code' => 'BA', 'name' => 'Bosnia and Herzegovina', 'd_code' => '+387'];
        $countries[] = ['code' => 'BW', 'name' => 'Botswana', 'd_code' => '+267'];
        $countries[] = ['code' => 'BR', 'name' => 'Brazil', 'd_code' => '+55'];
        $countries[] = ['code' => 'IO', 'name' => 'British Indian Ocean Territory', 'd_code' => '+246'];
        $countries[] = ['code' => 'VG', 'name' => 'British Virgin Islands', 'd_code' => '+1'];
        $countries[] = ['code' => 'BN', 'name' => 'Brunei', 'd_code' => '+673'];
        $countries[] = ['code' => 'BG', 'name' => 'Bulgaria', 'd_code' => '+359'];
        $countries[] = ['code' => 'BF', 'name' => 'Burkina Faso', 'd_code' => '+226'];
        $countries[] = ['code' => 'MM', 'name' => 'Burma Myanmar', 'd_code' => '+95'];
        $countries[] = ['code' => 'BI', 'name' => 'Burundi', 'd_code' => '+257'];
        $countries[] = ['code' => 'KH', 'name' => 'Cambodia', 'd_code' => '+855'];
        $countries[] = ['code' => 'CM', 'name' => 'Cameroon', 'd_code' => '+237'];
        $countries[] = ['code' => 'CA', 'name' => 'Canada', 'd_code' => '+1'];
        $countries[] = ['code' => 'CV', 'name' => 'Cape Verde', 'd_code' => '+238'];
        $countries[] = ['code' => 'KY', 'name' => 'Cayman Islands', 'd_code' => '+1'];
        $countries[] = ['code' => 'CF', 'name' => 'Central African Republic', 'd_code' => '+236'];
        $countries[] = ['code' => 'TD', 'name' => 'Chad', 'd_code' => '+235'];
        $countries[] = ['code' => 'CL', 'name' => 'Chile', 'd_code' => '+56'];
        $countries[] = ['code' => 'CN', 'name' => 'China', 'd_code' => '+86'];
        $countries[] = ['code' => 'CO', 'name' => 'Colombia', 'd_code' => '+57'];
        $countries[] = ['code' => 'KM', 'name' => 'Comoros', 'd_code' => '+269'];
        $countries[] = ['code' => 'CK', 'name' => 'Cook Islands', 'd_code' => '+682'];
        $countries[] = ['code' => 'CR', 'name' => 'Costa Rica', 'd_code' => '+506'];
        $countries[] = ['code' => 'CI', 'name' => "Côte d'Ivoire", 'd_code' => '+225'];
        $countries[] = ['code' => 'HR', 'name' => 'Croatia', 'd_code' => '+385'];
        $countries[] = ['code' => 'CU', 'name' => 'Cuba', 'd_code' => '+53'];
        $countries[] = ['code' => 'CY', 'name' => 'Cyprus', 'd_code' => '+357'];
        $countries[] = ['code' => 'CZ', 'name' => 'Czech Republic', 'd_code' => '+420'];
        $countries[] = ['code' => 'CD', 'name' => 'Democratic Republic of Congo', 'd_code' => '+243'];
        $countries[] = ['code' => 'DK', 'name' => 'Denmark', 'd_code' => '+45'];
        $countries[] = ['code' => 'DJ', 'name' => 'Djibouti', 'd_code' => '+253'];
        $countries[] = ['code' => 'DM', 'name' => 'Dominica', 'd_code' => '+1'];
        $countries[] = ['code' => 'DO', 'name' => 'Dominican Republic', 'd_code' => '+1'];
        $countries[] = ['code' => 'EC', 'name' => 'Ecuador', 'd_code' => '+593'];
        $countries[] = ['code' => 'EG', 'name' => 'Egypt', 'd_code' => '+20'];
        $countries[] = ['code' => 'SV', 'name' => 'El Salvador', 'd_code' => '+503'];
        $countries[] = ['code' => 'GQ', 'name' => 'Equatorial Guinea', 'd_code' => '+240'];
        $countries[] = ['code' => 'ER', 'name' => 'Eritrea', 'd_code' => '+291'];
        $countries[] = ['code' => 'EE', 'name' => 'Estonia', 'd_code' => '+372'];
        $countries[] = ['code' => 'ET', 'name' => 'Ethiopia', 'd_code' => '+251'];
        $countries[] = ['code' => 'FK', 'name' => 'Falkland Islands', 'd_code' => '+500'];
        $countries[] = ['code' => 'FO', 'name' => 'Faroe Islands', 'd_code' => '+298'];
        $countries[] = ['code' => 'FM', 'name' => 'Federated States of Micronesia', 'd_code' => '+691'];
        $countries[] = ['code' => 'FJ', 'name' => 'Fiji', 'd_code' => '+679'];
        $countries[] = ['code' => 'FI', 'name' => 'Finland', 'd_code' => '+358'];
        $countries[] = ['code' => 'FR', 'name' => 'France', 'd_code' => '+33'];
        $countries[] = ['code' => 'GF', 'name' => 'French Guiana', 'd_code' => '+594'];
        $countries[] = ['code' => 'PF', 'name' => 'French Polynesia', 'd_code' => '+689'];
        $countries[] = ['code' => 'GA', 'name' => 'Gabon', 'd_code' => '+241'];
        $countries[] = ['code' => 'GE', 'name' => 'Georgia', 'd_code' => '+995'];
        $countries[] = ['code' => 'DE', 'name' => 'Germany', 'd_code' => '+49'];
        $countries[] = ['code' => 'GH', 'name' => 'Ghana', 'd_code' => '+233'];
        $countries[] = ['code' => 'GI', 'name' => 'Gibraltar', 'd_code' => '+350'];
        $countries[] = ['code' => 'GR', 'name' => 'Greece', 'd_code' => '+30'];
        $countries[] = ['code' => 'GL', 'name' => 'Greenland', 'd_code' => '+299'];
        $countries[] = ['code' => 'GD', 'name' => 'Grenada', 'd_code' => '+1'];
        $countries[] = ['code' => 'GP', 'name' => 'Guadeloupe', 'd_code' => '+590'];
        $countries[] = ['code' => 'GU', 'name' => 'Guam', 'd_code' => '+1'];
        $countries[] = ['code' => 'GT', 'name' => 'Guatemala', 'd_code' => '+502'];
        $countries[] = ['code' => 'GN', 'name' => 'Guinea', 'd_code' => '+224'];
        $countries[] = ['code' => 'GW', 'name' => 'Guinea-Bissau', 'd_code' => '+245'];
        $countries[] = ['code' => 'GY', 'name' => 'Guyana', 'd_code' => '+592'];
        $countries[] = ['code' => 'HT', 'name' => 'Haiti', 'd_code' => '+509'];
        $countries[] = ['code' => 'HN', 'name' => 'Honduras', 'd_code' => '+504'];
        $countries[] = ['code' => 'HK', 'name' => 'Hong Kong', 'd_code' => '+852'];
        $countries[] = ['code' => 'HU', 'name' => 'Hungary', 'd_code' => '+36'];
        $countries[] = ['code' => 'IS', 'name' => 'Iceland', 'd_code' => '+354'];
        $countries[] = ['code' => 'IN', 'name' => 'India', 'd_code' => '+91'];
        $countries[] = ['code' => 'ID', 'name' => 'Indonesia', 'd_code' => '+62'];
        $countries[] = ['code' => 'IR', 'name' => 'Iran', 'd_code' => '+98'];
        $countries[] = ['code' => 'IQ', 'name' => 'Iraq', 'd_code' => '+964'];
        $countries[] = ['code' => 'IE', 'name' => 'Ireland', 'd_code' => '+353'];
        $countries[] = ['code' => 'IL', 'name' => 'Israel', 'd_code' => '+972'];
        $countries[] = ['code' => 'IT', 'name' => 'Italy', 'd_code' => '+39'];
        $countries[] = ['code' => 'JM', 'name' => 'Jamaica', 'd_code' => '+1'];
        $countries[] = ['code' => 'JP', 'name' => 'Japan', 'd_code' => '+81'];
        $countries[] = ['code' => 'JO', 'name' => 'Jordan', 'd_code' => '+962'];
        $countries[] = ['code' => 'KZ', 'name' => 'Kazakhstan', 'd_code' => '+7'];
        $countries[] = ['code' => 'KE', 'name' => 'Kenya', 'd_code' => '+254'];
        $countries[] = ['code' => 'KI', 'name' => 'Kiribati', 'd_code' => '+686'];
        $countries[] = ['code' => 'XK', 'name' => 'Kosovo', 'd_code' => '+381'];
        $countries[] = ['code' => 'KW', 'name' => 'Kuwait', 'd_code' => '+965'];
        $countries[] = ['code' => 'KG', 'name' => 'Kyrgyzstan', 'd_code' => '+996'];
        $countries[] = ['code' => 'LA', 'name' => 'Laos', 'd_code' => '+856'];
        $countries[] = ['code' => 'LV', 'name' => 'Latvia', 'd_code' => '+371'];
        $countries[] = ['code' => 'LB', 'name' => 'Lebanon', 'd_code' => '+961'];
        $countries[] = ['code' => 'LS', 'name' => 'Lesotho', 'd_code' => '+266'];
        $countries[] = ['code' => 'LR', 'name' => 'Liberia', 'd_code' => '+231'];
        $countries[] = ['code' => 'LY', 'name' => 'Libya', 'd_code' => '+218'];
        $countries[] = ['code' => 'LI', 'name' => 'Liechtenstein', 'd_code' => '+423'];
        $countries[] = ['code' => 'LT', 'name' => 'Lithuania', 'd_code' => '+370'];
        $countries[] = ['code' => 'LU', 'name' => 'Luxembourg', 'd_code' => '+352'];
        $countries[] = ['code' => 'MO', 'name' => 'Macau', 'd_code' => '+853'];
        $countries[] = ['code' => 'MK', 'name' => 'Macedonia', 'd_code' => '+389'];
        $countries[] = ['code' => 'MG', 'name' => 'Madagascar', 'd_code' => '+261'];
        $countries[] = ['code' => 'MW', 'name' => 'Malawi', 'd_code' => '+265'];
        $countries[] = ['code' => 'MY', 'name' => 'Malaysia', 'd_code' => '+60'];
        $countries[] = ['code' => 'MV', 'name' => 'Maldives', 'd_code' => '+960'];
        $countries[] = ['code' => 'ML', 'name' => 'Mali', 'd_code' => '+223'];
        $countries[] = ['code' => 'MT', 'name' => 'Malta', 'd_code' => '+356'];
        $countries[] = ['code' => 'MH', 'name' => 'Marshall Islands', 'd_code' => '+692'];
        $countries[] = ['code' => 'MQ', 'name' => 'Martinique', 'd_code' => '+596'];
        $countries[] = ['code' => 'MR', 'name' => 'Mauritania', 'd_code' => '+222'];
        $countries[] = ['code' => 'MU', 'name' => 'Mauritius', 'd_code' => '+230'];
        $countries[] = ['code' => 'YT', 'name' => 'Mayotte', 'd_code' => '+262'];
        $countries[] = ['code' => 'MX', 'name' => 'Mexico', 'd_code' => '+52'];
        $countries[] = ['code' => 'MD', 'name' => 'Moldova', 'd_code' => '+373'];
        $countries[] = ['code' => 'MC', 'name' => 'Monaco', 'd_code' => '+377'];
        $countries[] = ['code' => 'MN', 'name' => 'Mongolia', 'd_code' => '+976'];
        $countries[] = ['code' => 'ME', 'name' => 'Montenegro', 'd_code' => '+382'];
        $countries[] = ['code' => 'MS', 'name' => 'Montserrat', 'd_code' => '+1'];
        $countries[] = ['code' => 'MA', 'name' => 'Morocco', 'd_code' => '+212'];
        $countries[] = ['code' => 'MZ', 'name' => 'Mozambique', 'd_code' => '+258'];
        $countries[] = ['code' => 'NA', 'name' => 'Namibia', 'd_code' => '+264'];
        $countries[] = ['code' => 'NR', 'name' => 'Nauru', 'd_code' => '+674'];
        $countries[] = ['code' => 'NP', 'name' => 'Nepal', 'd_code' => '+977'];
        $countries[] = ['code' => 'NL', 'name' => 'Netherlands', 'd_code' => '+31'];
        $countries[] = ['code' => 'AN', 'name' => 'Netherlands Antilles', 'd_code' => '+599'];
        $countries[] = ['code' => 'NC', 'name' => 'New Caledonia', 'd_code' => '+687'];
        $countries[] = ['code' => 'NZ', 'name' => 'New Zealand', 'd_code' => '+64'];
        $countries[] = ['code' => 'NI', 'name' => 'Nicaragua', 'd_code' => '+505'];
        $countries[] = ['code' => 'NE', 'name' => 'Niger', 'd_code' => '+227'];
        $countries[] = ['code' => 'NG', 'name' => 'Nigeria', 'd_code' => '+234'];
        $countries[] = ['code' => 'NU', 'name' => 'Niue', 'd_code' => '+683'];
        $countries[] = ['code' => 'NF', 'name' => 'Norfolk Island', 'd_code' => '+672'];
        $countries[] = ['code' => 'KP', 'name' => 'North Korea', 'd_code' => '+850'];
        $countries[] = ['code' => 'MP', 'name' => 'Northern Mariana Islands', 'd_code' => '+1'];
        $countries[] = ['code' => 'NO', 'name' => 'Norway', 'd_code' => '+47'];
        $countries[] = ['code' => 'OM', 'name' => 'Oman', 'd_code' => '+968'];
        $countries[] = ['code' => 'PK', 'name' => 'Pakistan', 'd_code' => '+92'];
        $countries[] = ['code' => 'PW', 'name' => 'Palau', 'd_code' => '+680'];
        $countries[] = ['code' => 'PS', 'name' => 'Palestine', 'd_code' => '+970'];
        $countries[] = ['code' => 'PA', 'name' => 'Panama', 'd_code' => '+507'];
        $countries[] = ['code' => 'PG', 'name' => 'Papua New Guinea', 'd_code' => '+675'];
        $countries[] = ['code' => 'PY', 'name' => 'Paraguay', 'd_code' => '+595'];
        $countries[] = ['code' => 'PE', 'name' => 'Peru', 'd_code' => '+51'];
        $countries[] = ['code' => 'PH', 'name' => 'Philippines', 'd_code' => '+63'];
        $countries[] = ['code' => 'PL', 'name' => 'Poland', 'd_code' => '+48'];
        $countries[] = ['code' => 'PT', 'name' => 'Portugal', 'd_code' => '+351'];
        $countries[] = ['code' => 'PR', 'name' => 'Puerto Rico', 'd_code' => '+1'];
        $countries[] = ['code' => 'QA', 'name' => 'Qatar', 'd_code' => '+974'];
        $countries[] = ['code' => 'CG', 'name' => 'Republic of the Congo', 'd_code' => '+242'];
        $countries[] = ['code' => 'RE', 'name' => 'Réunion', 'd_code' => '+262'];
        $countries[] = ['code' => 'RO', 'name' => 'Romania', 'd_code' => '+40'];
        $countries[] = ['code' => 'RU', 'name' => 'Russia', 'd_code' => '+7'];
        $countries[] = ['code' => 'RW', 'name' => 'Rwanda', 'd_code' => '+250'];
        $countries[] = ['code' => 'BL', 'name' => 'Saint Barthélemy', 'd_code' => '+590'];
        $countries[] = ['code' => 'SH', 'name' => 'Saint Helena', 'd_code' => '+290'];
        $countries[] = ['code' => 'KN', 'name' => 'Saint Kitts and Nevis', 'd_code' => '+1'];
        $countries[] = ['code' => 'MF', 'name' => 'Saint Martin', 'd_code' => '+590'];
        $countries[] = ['code' => 'PM', 'name' => 'Saint Pierre and Miquelon', 'd_code' => '+508'];
        $countries[] = ['code' => 'VC', 'name' => 'Saint Vincent and the Grenadines', 'd_code' => '+1'];
        $countries[] = ['code' => 'WS', 'name' => 'Samoa', 'd_code' => '+685'];
        $countries[] = ['code' => 'SM', 'name' => 'San Marino', 'd_code' => '+378'];
        $countries[] = ['code' => 'ST', 'name' => 'São Tomé and Príncipe', 'd_code' => '+239'];
        $countries[] = ['code' => 'SA', 'name' => 'Saudi Arabia', 'd_code' => '+966'];
        $countries[] = ['code' => 'SN', 'name' => 'Senegal', 'd_code' => '+221'];
        $countries[] = ['code' => 'RS', 'name' => 'Serbia', 'd_code' => '+381'];
        $countries[] = ['code' => 'SC', 'name' => 'Seychelles', 'd_code' => '+248'];
        $countries[] = ['code' => 'SL', 'name' => 'Sierra Leone', 'd_code' => '+232'];
        $countries[] = ['code' => 'SG', 'name' => 'Singapore', 'd_code' => '+65'];
        $countries[] = ['code' => 'SK', 'name' => 'Slovakia', 'd_code' => '+421'];
        $countries[] = ['code' => 'SI', 'name' => 'Slovenia', 'd_code' => '+386'];
        $countries[] = ['code' => 'SB', 'name' => 'Solomon Islands', 'd_code' => '+677'];
        $countries[] = ['code' => 'SO', 'name' => 'Somalia', 'd_code' => '+252'];
        $countries[] = ['code' => 'ZA', 'name' => 'South Africa', 'd_code' => '+27'];
        $countries[] = ['code' => 'KR', 'name' => 'South Korea', 'd_code' => '+82'];
        $countries[] = ['code' => 'ES', 'name' => 'Spain', 'd_code' => '+34'];
        $countries[] = ['code' => 'LK', 'name' => 'Sri Lanka', 'd_code' => '+94'];
        $countries[] = ['code' => 'LC', 'name' => 'St. Lucia', 'd_code' => '+1'];
        $countries[] = ['code' => 'SD', 'name' => 'Sudan', 'd_code' => '+249'];
        $countries[] = ['code' => 'SR', 'name' => 'Suriname', 'd_code' => '+597'];
        $countries[] = ['code' => 'SZ', 'name' => 'Swaziland', 'd_code' => '+268'];
        $countries[] = ['code' => 'SE', 'name' => 'Sweden', 'd_code' => '+46'];
        $countries[] = ['code' => 'CH', 'name' => 'Switzerland', 'd_code' => '+41'];
        $countries[] = ['code' => 'SY', 'name' => 'Syria', 'd_code' => '+963'];
        $countries[] = ['code' => 'TW', 'name' => 'Taiwan', 'd_code' => '+886'];
        $countries[] = ['code' => 'TJ', 'name' => 'Tajikistan', 'd_code' => '+992'];
        $countries[] = ['code' => 'TZ', 'name' => 'Tanzania', 'd_code' => '+255'];
        $countries[] = ['code' => 'TH', 'name' => 'Thailand', 'd_code' => '+66'];
        $countries[] = ['code' => 'BS', 'name' => 'The Bahamas', 'd_code' => '+1'];
        $countries[] = ['code' => 'GM', 'name' => 'The Gambia', 'd_code' => '+220'];
        $countries[] = ['code' => 'TL', 'name' => 'Timor-Leste', 'd_code' => '+670'];
        $countries[] = ['code' => 'TG', 'name' => 'Togo', 'd_code' => '+228'];
        $countries[] = ['code' => 'TK', 'name' => 'Tokelau', 'd_code' => '+690'];
        $countries[] = ['code' => 'TO', 'name' => 'Tonga', 'd_code' => '+676'];
        $countries[] = ['code' => 'TT', 'name' => 'Trinidad and Tobago', 'd_code' => '+1'];
        $countries[] = ['code' => 'TN', 'name' => 'Tunisia', 'd_code' => '+216'];
        $countries[] = ['code' => 'TR', 'name' => 'Turkey', 'd_code' => '+90'];
        $countries[] = ['code' => 'TM', 'name' => 'Turkmenistan', 'd_code' => '+993'];
        $countries[] = ['code' => 'TC', 'name' => 'Turks and Caicos Islands', 'd_code' => '+1'];
        $countries[] = ['code' => 'TV', 'name' => 'Tuvalu', 'd_code' => '+688'];
        $countries[] = ['code' => 'UG', 'name' => 'Uganda', 'd_code' => '+256'];
        $countries[] = ['code' => 'UA', 'name' => 'Ukraine', 'd_code' => '+380'];
        $countries[] = ['code' => 'AE', 'name' => 'United Arab Emirates', 'd_code' => '+971'];
        $countries[] = ['code' => 'GB', 'name' => 'United Kingdom', 'd_code' => '+44'];
        $countries[] = ['code' => 'US', 'name' => 'United States', 'd_code' => '+1'];
        $countries[] = ['code' => 'UY', 'name' => 'Uruguay', 'd_code' => '+598'];
        $countries[] = ['code' => 'VI', 'name' => 'US Virgin Islands', 'd_code' => '+1'];
        $countries[] = ['code' => 'UZ', 'name' => 'Uzbekistan', 'd_code' => '+998'];
        $countries[] = ['code' => 'VU', 'name' => 'Vanuatu', 'd_code' => '+678'];
        $countries[] = ['code' => 'VA', 'name' => 'Vatican City', 'd_code' => '+39'];
        $countries[] = ['code' => 'VE', 'name' => 'Venezuela', 'd_code' => '+58'];
        $countries[] = ['code' => 'VN', 'name' => 'Vietnam', 'd_code' => '+84'];
        $countries[] = ['code' => 'WF', 'name' => 'Wallis and Futuna', 'd_code' => '+681'];
        $countries[] = ['code' => 'YE', 'name' => 'Yemen', 'd_code' => '+967'];
        $countries[] = ['code' => 'ZM', 'name' => 'Zambia', 'd_code' => '+260'];
        $countries[] = ['code' => 'ZW', 'name' => 'Zimbabwe', 'd_code' => '+263'];

        return $countries;
    }


    /**
     * get timezone list
     *
     * @return array
     * @throws Exception
     */
    public static function timezoneList(): array
    {
        $timezoneIdentifiers = DateTimeZone::listIdentifiers();
        $utcTime             = new DateTime('now', new DateTimeZone('UTC'));

        $tempTimezones = [];
        foreach ($timezoneIdentifiers as $timezoneIdentifier) {
            $currentTimezone = new DateTimeZone($timezoneIdentifier);

            $tempTimezones[] = [
                    'offset'     => $currentTimezone->getOffset($utcTime),
                    'identifier' => $timezoneIdentifier,
            ];
        }
        usort($tempTimezones, function ($a, $b) {
            return ($a['offset'] == $b['offset'])
                    ? strcmp($a['identifier'], $b['identifier'])
                    : $a['offset'] - $b['offset'];
        });

        $timezoneList = [];
        foreach ($tempTimezones as $tz) {
            $sign                            = ($tz['offset'] > 0) ? '+' : '-';
            $offset                          = gmdate('H:i', abs($tz['offset']));
            $timezoneList[$tz['identifier']] = '(UTC '.$sign.$offset.') '.
                    $tz['identifier'];
        }

        return $timezoneList;
    }


    /**
     * Check if exec() function is available.
     *
     * @return bool
     */

    public static function exec_enabled(): bool
    {
        try {
            // make a small test
         //   exec('ls');

            return function_exists('exec') && ! in_array('exec', array_map('trim', explode(', ', ini_get('disable_functions'))));
        } catch (Exception) {
            return false;
        }
    }

    /**
     * application menu
     *
     * @return array[]
     */
    public static function menuData(): array
    {
        return [
                "admin"    => [
                        [
                                "url"    => url(config('app.admin_path')."/dashboard"),
                                'slug'   => config('app.admin_path')."/dashboard",
                                "name"   => "Dashboard",
                                "i18n"   => "Dashboard",
                                "icon"   => "home",
                                "access" => "access backend",
                        ],
                        [
                                "url"     => "",
                                "name"    => "Customer",
                                "icon"    => "users",
                                "i18n"    => "Customer",
                                "access"  => "view customer|view subscription",
                                "submenu" => [
                                        [
                                                "url"    => url(config('app.admin_path')."/customers"),
                                                'slug'   => config('app.admin_path')."/customers",
                                                "name"   => "Customers",
                                                "i18n"   => "Customers",
                                                "access" => "view customer",
                                                "icon"   => "users",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/subscriptions"),
                                                'slug'   => config('app.admin_path')."/subscriptions",
                                                "name"   => "Subscriptions",
                                                "i18n"   => "Subscriptions",
                                                "access" => "view subscription",
                                                "icon"   => "credit-card",
                                        ],
                                ],
                        ],
                        [
                                "url"     => "",
                                "name"    => "Plan",
                                "i18n"    => "Plan",
                                "icon"    => "credit-card",
                                "access"  => "manage plans|manage currencies",
                                "submenu" => [
                                        [
                                                "url"    => url(config('app.admin_path')."/plans"),
                                                'slug'   => config('app.admin_path')."/plans",
                                                "name"   => "Plans",
                                                "i18n"   => "Plans",
                                                "access" => "manage plans",
                                                "icon"   => "credit-card",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/currencies"),
                                                'slug'   => config('app.admin_path')."/currencies",
                                                "name"   => "Currencies",
                                                "i18n"   => "Currencies",
                                                "access" => "manage currencies",
                                                "icon"   => "dollar-sign",
                                        ],
                                ],
                        ],
                        [
                                "url"     => "",
                                "name"    => "Sending",
                                "icon"    => "send",
                                "i18n"    => "Sending",
                                "access"  => "view sender_id|view keywords|view sending_servers|view phone_numbers|view tags",
                                "submenu" => [
                                        [
                                                "url"    => url(config('app.admin_path')."/sending-servers"),
                                                'slug'   => config('app.admin_path')."/sending-servers",
                                                "name"   => "Sending Servers",
                                                "i18n"   => "Sending Servers",
                                                "access" => "view sending_servers",
                                                "icon"   => "send",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/senderid"),
                                                'slug'   => config('app.admin_path')."/senderid",
                                                "name"   => "Sender ID",
                                                "i18n"   => "Sender ID",
                                                "access" => "view sender_id",
                                                "icon"   => "book",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/phone-numbers"),
                                                'slug'   => config('app.admin_path')."/phone-numbers",
                                                "name"   => "Numbers",
                                                "i18n"   => "Numbers",
                                                "access" => "view phone_numbers",
                                                "icon"   => "phone",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/keywords"),
                                                'slug'   => config('app.admin_path')."/keywords",
                                                "name"   => "Keywords",
                                                "i18n"   => "Keywords",
                                                "access" => "view keywords",
                                                "icon"   => "hash",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/tags"),
                                                'slug'   => config('app.admin_path')."/tags",
                                                "name"   => "Template Tags",
                                                "i18n"   => "Template Tags",
                                                "access" => "view tags",
                                                "icon"   => "tag",
                                        ],
                                ],
                        ],
                        [
                                "url"     => "",
                                "name"    => "Security",
                                "i18n"    => "Security",
                                "icon"    => "shield",
                                "access"  => "view blacklist|view spam_word",
                                "submenu" => [
                                        [
                                                "url"    => url(config('app.admin_path')."/blacklists"),
                                                'slug'   => config('app.admin_path')."/blacklists",
                                                "name"   => "Blacklist",
                                                "i18n"   => "Blacklist",
                                                "access" => "view blacklist",
                                                "icon"   => "user-x",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/spam-word"),
                                                'slug'   => config('app.admin_path')."/spam-word",
                                                "name"   => "Spam Word",
                                                "i18n"   => "Spam Word",
                                                "access" => "view spam_word",
                                                "icon"   => "x-square",
                                        ],
                                ],
                        ],
                        [
                                "url"     => "",
                                "name"    => "Administrator",
                                "i18n"    => "Administrator",
                                "icon"    => "user",
                                "access"  => "view administrator|view roles",
                                "submenu" => [
                                        [
                                                "url"    => url(config('app.admin_path')."/administrators"),
                                                'slug'   => config('app.admin_path')."/administrators",
                                                "name"   => "Administrators",
                                                "i18n"   => "Administrators",
                                                "access" => "view administrator",
                                                "icon"   => "users",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/roles"),
                                                'slug'   => config('app.admin_path')."/roles",
                                                "name"   => "Admin Roles",
                                                "i18n"   => "Admin Roles",
                                                "access" => "view roles",
                                                "icon"   => "user-check",
                                        ],
                                ],
                        ],
                        [
                                "url"     => "",
                                "name"    => "Settings",
                                "i18n"    => "Settings",
                                "icon"    => "settings",
                                "access"  => "general settings|view languages|view payment_gateways|view email_templates|manage update_application",
                                "submenu" => [
                                        [
                                                "url"    => url(config('app.admin_path')."/settings"),
                                                'slug'   => config('app.admin_path')."/settings",
                                                "name"   => "All Settings",
                                                "i18n"   => "All Settings",
                                                "access" => "general settings",
                                                "icon"   => "settings",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/countries"),
                                                'slug'   => config('app.admin_path')."/countries",
                                                "name"   => "Countries",
                                                "i18n"   => "Countries",
                                                "access" => "general settings",
                                                "icon"   => "map-pin",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/languages"),
                                                'slug'   => config('app.admin_path')."/languages",
                                                "name"   => "Language",
                                                "i18n"   => "Language",
                                                "access" => "view languages",
                                                "icon"   => "globe",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/payment-gateways"),
                                                'slug'   => config('app.admin_path')."/payment-gateways",
                                                "name"   => "Payment Gateways",
                                                "i18n"   => "Payment Gateways",
                                                "access" => "view payment_gateways",
                                                "icon"   => "shopping-bag",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/email-templates"),
                                                'slug'   => config('app.admin_path')."/email-templates",
                                                "name"   => "Email Templates",
                                                "i18n"   => "Email Templates",
                                                "access" => "view email_templates",
                                                "icon"   => "mail",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/update-application"),
                                                'slug'   => config('app.admin_path')."/update-application",
                                                "name"   => "Update Application",
                                                "i18n"   => "Update Application",
                                                "access" => "manage update_application",
                                                "icon"   => "upload",
                                        ],
                                ],
                        ],
                        [
                                "url"     => "",
                                "name"    => "Reports",
                                "i18n"    => "Reports",
                                "icon"    => "bar-chart-2",
                                "access"  => "view invoices|view sms_history",
                                "submenu" => [
                                        [
                                                "url"    => url(config('app.admin_path')."/invoices"),
                                                'slug'   => config('app.admin_path')."/invoices",
                                                "name"   => "All Invoices",
                                                "i18n"   => "All Invoices",
                                                "access" => "view invoices",
                                                "icon"   => "pie-chart",
                                        ],
                                        [
                                                "url"    => url(config('app.admin_path')."/reports"),
                                                'slug'   => config('app.admin_path')."/reports",
                                                "name"   => "SMS History",
                                                "i18n"   => "SMS History",
                                                "access" => "view sms_history",
                                                "icon"   => "bar-chart-2",
                                        ],
                                ],
                        ],
                        [
                                "url"    => url(config('app.admin_path')."/customizer"),
                                'slug'   => config('app.admin_path')."/customizer",
                                "name"   => "Theme Customizer",
                                "i18n"   => "Theme Customizer",
                                "icon"   => "grid",
                                "access" => "general settings",
                        ],
                ],
                "customer" => [
                        [
                                "url"    => url("dashboard"),
                                'slug'   => "dashboard",
                                "name"   => "Dashboard",
                                "i18n"   => "Dashboard",
                                "icon"   => "home",
                                "access" => "access_backend",
                        ],
                        [
                                "url"     => "",
                                "name"    => "Reports",
                                "i18n"    => "Reports",
                                "icon"    => "bar-chart-2",
                                "access"  => "view_reports",
                                "submenu" => [
                                        [
                                                "url"    => url("reports/all"),
                                                'slug'   => "reports/all",
                                                "name"   => "All Messages",
                                                "i18n"   => "All Messages",
                                                "access" => "view_reports",
                                                "icon"   => "bar-chart-2",
                                        ],
                                        [
                                                "url"    => url("reports/received"),
                                                'slug'   => "reports/received",
                                                "name"   => "Received Messages",
                                                "i18n"   => "Received Messages",
                                                "access" => "view_reports",
                                                "icon"   => "phone-incoming",
                                        ],
                                        [
                                                "url"    => url("reports/sent"),
                                                'slug'   => "reports/sent",
                                                "name"   => "Sent Messages",
                                                "i18n"   => "Sent Messages",
                                                "access" => "view_reports",
                                                "icon"   => "phone-outgoing",
                                        ],
                                        [
                                                "url"    => url("reports/campaigns"),
                                                'slug'   => "reports/campaigns",
                                                "name"   => "Campaigns",
                                                "i18n"   => "Campaigns",
                                                "access" => "view_reports",
                                                "icon"   => "pie-chart",
                                        ],
                                ],
                        ],
                        [
                                "url"    => url("contacts"),
                                'slug'   => "contacts",
                                "name"   => "Contacts",
                                "i18n"   => "Contacts",
                                "icon"   => "user",
                                "access" => "view_contact_group|create_contact_group|update_contact_group|delete_contact_group|view_contact|create_contact|update_contact|delete_contact",
                        ],
                        [
                                "url"     => "",
                                "name"    => "Sending",
                                "icon"    => "send",
                                "i18n"    => "Sending",
                                "access"  => "create_sending_servers|view_numbers|view_keywords|view_sender_id|sms_template",
                                "submenu" => [
                                        [
                                                "url"    => url("sending-servers"),
                                                'slug'   => "sending-servers",
                                                "name"   => "Sending Servers",
                                                "i18n"   => "Sending Servers",
                                                "access" => "create_sending_servers",
                                                "icon"   => "send",
                                        ],
                                        [
                                                "url"    => url("senderid"),
                                                'slug'   => "senderid",
                                                "name"   => "Sender ID",
                                                "i18n"   => "Sender ID",
                                                "access" => "view_sender_id",
                                                "icon"   => "book",
                                        ],
                                        [
                                                "url"    => url("numbers"),
                                                'slug'   => "numbers",
                                                "name"   => "Numbers",
                                                "i18n"   => "Numbers",
                                                "access" => "view_numbers",
                                                "icon"   => "phone",
                                        ],
                                        [
                                                "url"    => url("keywords"),
                                                'slug'   => "keywords",
                                                "name"   => "Keywords",
                                                "i18n"   => "Keywords",
                                                "access" => "view_keywords",
                                                "icon"   => "hash",
                                        ],
                                        [
                                                "url"    => url("templates"),
                                                'slug'   => "templates",
                                                "name"   => "SMS Template",
                                                "i18n"   => "SMS Template",
                                                "access" => "sms_template",
                                                "icon"   => "smartphone",
                                        ],
                                ],
                        ],
                        [
                                "url"    => url("blacklists"),
                                'slug'   => "blacklists",
                                "name"   => "Blacklist",
                                "i18n"   => "Blacklist",
                                "icon"   => "shield",
                                "access" => "view_blacklist|create_blacklist|update_blacklist|delete_blacklist",
                        ],
                        [
                                "url"     => "",
                                "name"    => "SMS",
                                "i18n"    => "SMS",
                                "icon"    => "message-square",
                                "access"  => "sms_campaign_builder|sms_quick_send|sms_bulk_messages",
                                "submenu" => [
                                        [
                                                "url"    => url("sms/campaign-builder"),
                                                'slug'   => "sms/campaign-builder",
                                                "name"   => "Campaign Builder",
                                                "i18n"   => "Campaign Builder",
                                                "access" => "sms_campaign_builder",
                                                "icon"   => "server",
                                        ],
                                        [
                                                "url"    => url("sms/quick-send"),
                                                'slug'   => "sms/quick-send",
                                                "name"   => "Quick Send",
                                                "i18n"   => "Quick Send",
                                                "access" => "sms_quick_send",
                                                "icon"   => "send",
                                        ],
                                        [
                                                "url"    => url("sms/import"),
                                                'slug'   => "sms/import",
                                                "name"   => "Send Using File",
                                                "i18n"   => "Send Using File",
                                                "access" => "sms_bulk_messages",
                                                "icon"   => "file-text",
                                        ],
                                ],
                        ],
                        [
                                "url"     => "",
                                "name"    => "Voice",
                                "i18n"    => "Voice",
                                "icon"    => "phone-call",
                                "access"  => "voice_campaign_builder|voice_quick_send|voice_bulk_messages",
                                "submenu" => [
                                        [
                                                "url"    => url("voice/campaign-builder"),
                                                'slug'   => "voice/campaign-builder",
                                                "name"   => "Campaign Builder",
                                                "i18n"   => "Campaign Builder",
                                                "access" => "voice_campaign_builder",
                                                "icon"   => "server",
                                        ],
                                        [
                                                "url"    => url("voice/quick-send"),
                                                'slug'   => "voice/quick-send",
                                                "name"   => "Quick Send",
                                                "i18n"   => "Quick Send",
                                                "access" => "voice_quick_send",
                                                "icon"   => "send",
                                        ],
                                        [
                                                "url"    => url("voice/import"),
                                                'slug'   => "voice/import",
                                                "name"   => "Send Using File",
                                                "i18n"   => "Send Using File",
                                                "access" => "voice_bulk_messages",
                                                "icon"   => "file-text",
                                        ],
                                ],
                        ],
                        [
                                "url"     => "",
                                "name"    => "MMS",
                                "i18n"    => "MMS",
                                "icon"    => "image",
                                "access"  => "mms_campaign_builder|mms_quick_send|mms_bulk_messages",
                                "submenu" => [
                                        [
                                                "url"    => url("mms/campaign-builder"),
                                                'slug'   => "mms/campaign-builder",
                                                "name"   => "Campaign Builder",
                                                "i18n"   => "Campaign Builder",
                                                "access" => "mms_campaign_builder",
                                                "icon"   => "server",
                                        ],
                                        [
                                                "url"    => url("mms/quick-send"),
                                                'slug'   => "mms/quick-send",
                                                "name"   => "Quick Send",
                                                "i18n"   => "Quick Send",
                                                "access" => "mms_quick_send",
                                                "icon"   => "send",
                                        ],
                                        [
                                                "url"    => url("mms/import"),
                                                'slug'   => "mms/import",
                                                "name"   => "Send Using File",
                                                "i18n"   => "Send Using File",
                                                "access" => "mms_bulk_messages",
                                                "icon"   => "file-text",
                                        ],
                                ],
                        ],
                        [
                                "url"     => "",
                                "name"    => "WhatsApp",
                                "i18n"    => "WhatsApp",
                                "icon"    => "message-circle",
                                "access"  => "whatsapp_campaign_builder|whatsapp_quick_send|whatsapp_bulk_messages",
                                "submenu" => [
                                        [
                                                "url"    => url("whatsapp/campaign-builder"),
                                                'slug'   => "whatsapp/campaign-builder",
                                                "name"   => "Campaign Builder",
                                                "i18n"   => "Campaign Builder",
                                                "access" => "whatsapp_campaign_builder",
                                                "icon"   => "server",
                                        ],
                                        [
                                                "url"    => url("whatsapp/quick-send"),
                                                'slug'   => "whatsapp/quick-send",
                                                "name"   => "Quick Send",
                                                "i18n"   => "Quick Send",
                                                "access" => "whatsapp_quick_send",
                                                "icon"   => "send",
                                        ],
                                        [
                                                "url"    => url("whatsapp/import"),
                                                'slug'   => "whatsapp/import",
                                                "name"   => "Send Using File",
                                                "i18n"   => "Send Using File",
                                                "access" => "whatsapp_bulk_messages",
                                                "icon"   => "file-text",
                                        ],
                                ],
                        ],
                        [
                                "url"    => url("chat-box"),
                                'slug'   => "chat-box",
                                "name"   => "Chat Box",
                                "i18n"   => "Chat Box",
                                "icon"   => "slack",
                                "access" => "chat_box",
                        ],

                        [
                                "url"    => url("developers"),
                                'slug'   => "developers",
                                "name"   => "Developers",
                                "i18n"   => "Developers",
                                "icon"   => "terminal",
                                "access" => "developers",
                        ],
                ],
        ];
    }

    public static function languages()
    {
        $lang_count  = Language::where('status', 1)->count();
        $availLocale = Session::get('available_languages');

        if ( ! isset($availLocale) || count($availLocale) !== $lang_count) {
            $availLocale = Language::where('status', 1)->cursor()->map(function ($lang) {
                return [
                        'name'     => $lang->name,
                        'code'     => $lang->code,
                        'iso_code' => $lang->iso_code,
                ];
            })->toArray();

            Session::put('available_languages', $availLocale);
        }

        return $availLocale;
    }


    /**
     * make round-robin
     *
     * @param  array  $teams
     * @param  int|null  $rounds
     * @param  bool  $shuffle
     * @param  int|null  $seed
     *
     * @return array
     */
    public static function makeRoundRobin(array $teams, int $rounds = null, bool $shuffle = true, int $seed = null): array
    {
        $teamCount = count($teams);

        if ($teamCount < 2) {
            return [];
        }
        //Account for odd number of teams by adding a bye
        if ($teamCount % 2 === 1) {
            $teams[]   = null;
            $teamCount += 1;
        }
        if ($shuffle) {
            //Seed shuffle with random_int for better randomness if seed is null
            try {
                srand($seed ?? random_int(PHP_INT_MIN, PHP_INT_MAX));
            } catch (Exception) {
            }
            shuffle($teams);
        } elseif ( ! is_null($seed)) {
            //Generate friendly notice that seed is set but shuffle is set to false
            trigger_error('Seed parameter has no effect when shuffle parameter is set to false');
        }
        $halfTeamCount = $teamCount / 2;
        if ($rounds === null) {
            $rounds = $teamCount - 1;
        }
        $schedule = [];
        for ($round = 1; $round <= $rounds; $round += 1) {
            foreach ($teams as $key => $team) {
                if ($key >= $halfTeamCount) {
                    break;
                }
                $team1 = $team;
                $team2 = $teams[$key + $halfTeamCount];
                //Home-away swapping
                $matchup            = $round % 2 === 0 ? [$team1, $team2] : [$team2, $team1];
                $schedule[$round][] = $matchup;
            }

            $itemCount = count($teams);

            if ($itemCount < 3) {
                return [];
            }
            $lastIndex = $itemCount - 1;
            /**
             * Though not technically part of the round-robin algorithm, odd-even
             * factor differentiation included to have intuitive behavior for arrays
             * with an odd number of elements
             */
            $factor          = (int) ($itemCount % 2 === 0 ? $itemCount / 2 : ($itemCount / 2) + 1);
            $topRightIndex   = $factor - 1;
            $topRightItem    = $teams[$topRightIndex];
            $bottomLeftIndex = $factor;
            $bottomLeftItem  = $teams[$bottomLeftIndex];
            for ($i = $topRightIndex; $i > 0; $i -= 1) {
                $teams[$i] = $teams[$i - 1];
            }
            for ($i = $bottomLeftIndex; $i < $lastIndex; $i += 1) {
                $teams[$i] = $teams[$i + 1];
            }
            $teams[1]          = $bottomLeftItem;
            $teams[$lastIndex] = $topRightItem;
        }

        return $schedule;
    }


    /**
     * voice regions
     *
     * @return string[]
     */
    public static function voice_regions(): array
    {
        return [
                "de-DE" => "German, Germany",
                "en-AU" => "English, Australia",
                "en-GB" => "English, UK",
                "en-US" => "English, US",
                "es-ES" => "Spanish, Spain",
                "es-MX" => "Spanish, Mexico",
                "es-US" => "Spanish, US",
                "fr-CA" => "French, Canada",
                "fr-FR" => "French, France",
                "is-IS" => "Icelandic, Iceland",
                "it-IT" => "Italian, Italy",
                "ja-JP" => "Japanese, Japan",
                "ko-KR" => "Korean, Korea",
                "nl-NL" => "Dutch, Netherlands",
                "pl-PL" => "Polish, Poland",
                "pt-BR" => "Portuguese, Brazil",
                "ro-RO" => "Romanian, Romania",
                "ru-RU" => "Russian, Russia",
                "zh-CN" => "Chinese (Mandarin",
                "da-DK" => "Danish, Denmark",
                "en-IN" => "English, Indian",
                "cy-GB" => "Welsh, Wales",
                "nb-NO" => "Norwegian, Norway",
                "pt-PT" => "Portuguese, Portugal",
                "sv-SE" => "Swedish, Sweden",
                "tr-TR" => "Turkish, Turkey",
                "el-GR" => "Greek, Greece",
                "zh-HK" => "Chinese, Hong",
                "id-ID" => "Indonesian, Indonesia",
                "vi-VN" => "Vietnamese, Vietnam",
                "th-TH" => "Thai, Thailand",
                "ta-IN" => "Tamil, India",
                "ms-MY" => "Malay, Malaysia",
        ];
    }

    public static function greetingMessage()
    {
        /* This sets the $time variable to the current hour in the 24-hour clock format */
        $time = date("H");
        /* If the time is less than 1200 hours, show good morning */
        if ($time < "12") {
            return __('locale.labels.greeting_message', [
                    'time' => __('locale.labels.good_morning'),
                    'name' => auth()->user()->displayName(),
            ]);
        } elseif ($time >= "12" && $time < "17") {
            return __('locale.labels.greeting_message', [
                    'time' => __('locale.labels.good_afternoon'),
                    'name' => auth()->user()->displayName(),
            ]);
        } elseif ($time >= "17" && $time < "19") {
            return __('locale.labels.greeting_message', [
                    'time' => __('locale.labels.good_evening'),
                    'name' => auth()->user()->displayName(),
            ]);
        } else {
            return __('locale.labels.greeting_message', [
                    'time' => __('locale.labels.good_night'),
                    'name' => auth()->user()->displayName(),
            ]);
        }
    }

    public static function contactName($number)
    {
        $contact = Contacts::where('phone', $number)->first();

        if ($contact && $contact->first_name != null) {
            return $contact->first_name.' '.$contact->last_name;
        }

        return $number;
    }


    /**
     * @param  array  $items
     *
     * @return int|string|null
     */
   public static function randProb(array $items): int|string|null
   {
        $totalProbability = 0; // This is defined to keep track of the total amount of entries

        foreach ($items as $probability) {
            $totalProbability += $probability;
        }

        $stopAt = rand(0, $totalProbability); // This picks a random entry to select
        $currentProbability = 0; // The current entry count, when this reaches $stopAt the winner is chosen

        foreach ($items as $item => $probability) { // Go through each possible item
            $currentProbability += $probability; // Add the probability to our $currentProbability tracker
            if ($currentProbability >= $stopAt) { // When we reach the $stopAt variable, we have found our winner
                return $item;
            }
        }

        return null;
    }

}

© 2025 UnknownSec
afwwrfwafr45458465
Password