<?php
use Carbon\Carbon;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\File;
use Nwidart\Modules\Facades\Module;
use Illuminate\Support\Facades\DB;
use Modules\Core\Library\License;
use Modules\LandingPage\Entities\LandingPage;
if (!function_exists('getDomainFromURL')) {
function getDomainFromURL($url) {
$parse = parse_url($url);
return $parse['host'];
}
}
if (!function_exists('is_slug')) {
function is_slug($str) {
return preg_match('/^[a-z0-9]+(-?[a-z0-9]+)*$/i', $str);
}
}
if (!function_exists('getEstablishedIn')) {
function getEstablishedIn()
{
$array = array();
for ($counter = date('Y'); $counter > 1917; $counter--) {
$array[$counter] = $counter;
}
return $array;
}
}
if (!function_exists('getNumOffices')) {
function getNumOffices()
{
$array = ['1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '11' => '11', '12' => '12', '13' => '13', '14' => '14', '15' => '15', '16' => '16', '17' => '17', '18' => '18', '19' => '19', '20' => '20'];
return $array;
}
}
if (!function_exists('getCurencies')) {
function getCurencies()
{
$array = ['AED' => 'AED', 'AF' => 'AF', 'ALL' => 'ALL', 'ANG' => 'ANG', 'ARS' => 'ARS', 'AUD' => 'AUD', 'AWG' => 'AWG', 'AZ' => 'AZ', 'BAM' => 'BAM', 'BBD' => 'BBD', 'BG' => 'BG', 'BMD' => 'BMD', 'BOB' => 'BOB', 'BRL' => 'BRL', 'BWP' => 'BWP', 'BYR' => 'BYR', 'CAD' => 'CAD', 'CHF' => 'CHF', 'CLP' => 'CLP', 'CNY' => 'CNY', 'COP' => 'COP', 'CRC' => 'CRC', 'CUP' => 'CUP', 'CZK' => 'CZK', 'DKK' => 'DKK', 'DOP' => 'DOP', 'EGP' => 'EGP', 'EUR' => 'EUR', 'FKP' => 'FKP', 'GBP' => 'GBP', 'GHC' => 'GHC', 'GIP' => 'GIP', 'GTQ' => 'GTQ', 'GYD' => 'GYD', 'HNL' => 'HNL', 'HUF' => 'HUF', 'IDR' => 'IDR', 'ILS' => 'ILS', 'INR' => 'INR', 'IRR' => 'IRR', 'ISK' => 'ISK', 'JEP' => 'JEP', 'JMD' => 'JMD', 'JPY' => 'JPY', 'KGS' => 'KGS', 'KHR' => 'KHR', 'KYD' => 'KYD', 'KZT' => 'KZT', 'LAK' => 'LAK', 'LBP' => 'LBP', 'LKR' => 'LKR', 'LRD' => 'LRD', 'LTL' => 'LTL', 'LVL' => 'LVL', 'MKD' => 'MKD', 'MNT' => 'MNT', 'MUR' => 'MUR', 'MX' => 'MX', 'MYR' => 'MYR', 'MZ' => 'MZ', 'NAD' => 'NAD', 'NG' => 'NG', 'NIO' => 'NIO', 'NOK' => 'NOK', 'NPR' => 'NPR', 'NZD' => 'NZD', 'OMR' => 'OMR', 'PAB' => 'PAB', 'PE' => 'PE', 'PHP' => 'PHP', 'PKR' => 'PKR', 'PL' => 'PL', 'PYG' => 'PYG', 'QAR' => 'QAR', 'RO' => 'RO', 'RSD' => 'RSD', 'RUB' => 'RUB', 'SAR' => 'SAR', 'SBD' => 'SBD', 'SCR' => 'SCR', 'SEK' => 'SEK', 'SGD' => 'SGD', 'SHP' => 'SHP', 'SOS' => 'SOS', 'SRD' => 'SRD', 'SVC' => 'SVC', 'SYP' => 'SYP', 'THB' => 'THB', 'TRY' => 'TRY', 'TTD' => 'TTD', 'TVD' => 'TVD', 'TWD' => 'TWD', 'UAH' => 'UAH', 'USD' => 'USD', 'UYU' => 'UYU', 'UZS' => 'UZS', 'VEF' => 'VEF', 'VND' => 'VND', 'YER' => 'YER', 'ZAR' => 'ZAR', 'ZWD' => 'ZWD',];
return $array;
}
}
if (!function_exists('getNumEmployees')) {
function getNumEmployees()
{
$array = ['1-10' => '1-10', '11-50' => '11-50', '51-100' => '51-100', '101-200' => '101-200', '201-300' => '201-300', '301-600' => '301-600', '601-1000' => '601-1000', '1001-1500' => '1001-1500', '1501-2000' => '1501-2000', '2001-2500' => '2001-2500', '2501-3000' => '2501-3000', '3001-3500' => '3001-3500', '3501-4000' => '3501-4000', '4001-4500' => '4001-4500', '4501-5000' => '4501-5000', '5000+' => '5000+'];
return $array;
}
}
if (!function_exists('routeName')) {
function routeName() {
return \Request::route()->getName();
}
}
if (!function_exists('ruleMailChimpForAddContact')) {
function ruleMailChimpForAddContact($landing_page,$form_data) {
if (isset($landing_page->settings['intergration'])) {
$intergration = $landing_page->settings['intergration'];
if (isset($intergration['type']) && $intergration['type'] != "none") {
// Check field email exits and valid.
$field_values = $form_data->field_values;
if (isset($field_values['email']) && !empty($field_values['email'])) {
if (filter_var($field_values['email'], FILTER_VALIDATE_EMAIL)) {
return true;
}
}
}
}
return false;
}
}
if (!function_exists('getColorStatus')) {
function getColorStatus($status = '') {
switch ($status) {
case 'OPEN':
# code...
return "primary";
break;
case 'COMPLETED':
# code..
return "success";
break;
case 'CANCELED':
# code...
return "danger";
break;
default:
# code...
return $status;
break;
}
}
}
if (!function_exists('getValueIfKeyIsset')) {
function getValueIfKeyIsset($array, $key) {
if (isset($array[$key])) {
if (is_numeric($array[$key])) {
return intval($array[$key]);
}
return $array[$key];
}
return null;
}
}
if (!function_exists('checkIssetAndNotEmptyKeys')) {
function checkIssetAndNotEmptyKeys($array = [], $array_keys = []) {
foreach ($array_keys as $key) {
if (!isset($array[$key]) || empty($array[$key])) {
return false;
}
}
return true;
}
}
if (!function_exists('getLandingPageCurrentURL')) {
function getLandingPageCurrentURL(LandingPage $page) {
$url = "http://";
if ($page) {
if ($page->domain_type == 0) {
$url .= $page->sub_domain;
}else{
$url .= $page->custom_domain;
}
}
return $url;
}
}
if (!function_exists('QueryJsonPage')) {
function QueryJsonPage($json = '', $type='') {
$q = new Jsonq($json);
$res = $q->where('type', '=', $type)->get()->result();
return $res;
}
}
if (!function_exists('getAppDomain')) {
function getAppDomain() {
$app_url = config('app.url');
$parse = parse_url($app_url);
$domain_main = $parse['host'];
return $domain_main;
}
}
if (!function_exists('publishLangModule')) {
function publishLangModule($name_module = "") {
if(!empty($name_module)) {
$module = Module::find($name_module);
if (!$module) {
return false;
}
$path_lang_module = $module->getPath().'/Resources'.'/lang/en';
if(File::exists($path_lang_module)) {
File::copyDirectory($path_lang_module, resource_path('lang/en'));
}
return true;
// call
}else{
// publish lang all module
$all_modules = Module::all();
foreach ($all_modules as $item) {
$path_lang_module = $item->getPath().'/Resources'.'/lang/en';
if(File::exists($path_lang_module)) {
File::copyDirectory($path_lang_module, resource_path('lang/en'));
}
}
}
return true;
}
}
if (!function_exists('getAllJSModules')) {
function getAllAssetsModulesForApp($type = '') {
// publish lang all module
$html = "";
$types_arr = array("css", "js");
if (!in_array($type, $types_arr)) {
return $html;
}
$all_modules = Module::all();
foreach ($all_modules as $module) {
$path_assets = $module->getPath().'/Resources'.'/assets/app/'.$type;
if(File::exists($path_assets)) {
$files = File::allfiles($path_assets);
foreach ($files as $item) {
if (!empty($item->getContents())) {
if ($type == "css") {
$html .= "<link rel='stylesheet' href=".Module::asset($module->getLowerName().':app/css/'.$item->getFilename()).">\n";
}
elseif($type == "js"){
$html .= "<script src=".Module::asset($module->getLowerName().':app/js/'.$item->getFilename())." ></script>\n";
}
}
}
}
}
return $html;
}
}
if(!function_exists("check_product_purchase")){
function check_product_purchase($product_id){
$item = DB::table('purchase_managers')->where('product_id', $product_id)->first();
if(empty($item)){
return false;
}
return $item;
}
}
if(!function_exists("get_latest_version_product_id")){
function get_latest_version_product_id($product_id){
$license = new License($product_id);
$response = $license->getLatestVersion();
if ($response['status'] == true) {
return $response;
}
return false;
}
}
if(!function_exists("get_percentage")){
function get_percentage($total, $number)
{
if ( $total > 0 ) {
return number_format(($number / $total) * 100);
} else {
return 0;
}
}
}
if(!function_exists("random_color")){
function random_color()
{
$items = array("primary", "success", "info", "warning", "danger" , "secondary", "dark");
return $items[array_rand($items)];
}
}
if(!function_exists("get_color_chart_count")){
function get_color_chart_count($count = 0)
{
$items = ["#4353FF", "#1cc88a", "#36b9cc", "#f6c23e", "#e74a3b","#5a5c69", "#3366cc","#dc3912","#ff9900","#109618","#990099","#0099c6","#dd4477","#66aa00","#b82e2e","#316395","#3366cc","#994499","#22aa99","#aaaa11","#6633cc","#e67300","#8b0707","#651067","#329262","#5574a6","#3b3eac","#b77322","#16d620","#b91383","#f4359e","#9c5935","#a9c413","#2a778d","#668d1c","#bea413","#0c5922","#743411"];
$output = array_slice($items, 0, $count);
return $output;
// return $items[array_rand($items)];
}
}
if(!function_exists("getDeviceTracking")){
function getDeviceTracking($tracking){
if($tracking->isMobile()){
return "Mobile";
}
elseif($tracking->isTablet()){
return "Tablet";
}
elseif($tracking->isDesktop()){
return "Desktop";
}
else{
return "Unknown";
}
}
}
/*Settings*/
if(!function_exists("get_option")){
function get_option($key, $value = ""){
if (File::exists(storage_path('installed'))){
$option = DB::table('settings')->where('key', $key)->first();
if(empty($option)){
DB::table('settings')->insert(
['key' => $key, 'value' => $value]
);
return $value;
}else{
return $option->value;
}
}
return $value;
}
}
if(!function_exists("update_option")){
function update_option($key, $value){
$option = DB::table('settings')->where('key', $key)->first();
if(empty($option)){
DB::table('settings')->insert(
['key' => $key, 'value' => $value]
);
}else{
DB::table('settings')
->where('key', $key)
->update(['value' => $value]);
}
}
}
if (!function_exists('getPaymentsvailable')) {
function getPaymentsvailable() {
$modules = Module::all();
$payments = [];
if ($modules) {
foreach ($modules as $module) {
$name_module = $module->getLowerName();
$config = config($name_module.'.payment');
if(!empty($config)){
if (count($config) > 0) {
foreach ($config as $item) {
$payments[] = $item;
}
}
}
}
}
return $payments;
}
}
if (!function_exists('accountSettingPayments')) {
function accountSettingPayments($data = []) {
$modules = Module::all();
$html = "";
$config_module = [];
$modules_sort = [];
if ($modules) {
foreach ($modules as $module) {
$name_module = $module->getLowerName();
$menu_config = config($name_module.'.menu');
if(view()->exists($name_module.'::moduletemplates.module-account-payment') && !empty($menu_config['account_payment_position'])){
$tmp['name'] = $name_module;
$tmp['account_payment_position'] = $menu_config['account_payment_position'];
$modules_sort[] = $tmp;
}
}
// sort
usort($modules_sort, function ($item1, $item2) {
return $item1['account_payment_position'] <=> $item2['account_payment_position'];
});
// get view Template
foreach ($modules_sort as $item) {
$html .= view($item['name'].'::moduletemplates.module-account-payment',compact('data'))->render();
}
}
return $html;
}
}
if (!function_exists('settingPayments')) {
function settingPayments($data = []) {
$modules = Module::all();
$html = "";
$config_module = [];
$modules_sort = [];
if ($modules) {
foreach ($modules as $module) {
$name_module = $module->getLowerName();
$menu_config = config($name_module.'.menu');
if(view()->exists($name_module.'::moduletemplates.module-setting-payment') && !empty($menu_config['setting_payment_position'])){
$tmp['name'] = $name_module;
$tmp['setting_payment_position'] = $menu_config['setting_payment_position'];
$modules_sort[] = $tmp;
}
}
// sort
usort($modules_sort, function ($item1, $item2) {
return $item1['setting_payment_position'] <=> $item2['setting_payment_position'];
});
// get view Template
foreach ($modules_sort as $item) {
$html .= view($item['name'].'::moduletemplates.module-setting-payment')->render();
}
}
return $html;
}
}
if (!function_exists('paymentSkins')) {
function paymentSkins($data = []) {
$modules = Module::all();
$html = "";
$config_module = [];
$modules_sort = [];
if ($modules) {
foreach ($modules as $module) {
$name_module = $module->getLowerName();
$menu_config = config($name_module.'.menu');
if(view()->exists($name_module.'::moduletemplates.module-payment-skins') && !empty($menu_config['payment_skins_position'])){
$tmp['name'] = $name_module;
$tmp['payment_skins_position'] = $menu_config['payment_skins_position'];
$modules_sort[] = $tmp;
}
}
// sort
usort($modules_sort, function ($item1, $item2) {
return $item1['payment_skins_position'] <=> $item2['payment_skins_position'];
});
// get view Template
foreach ($modules_sort as $item) {
$html .= view($item['name'].'::moduletemplates.module-payment-skins',compact('data'))->render();
}
}
return $html;
}
}
if (!function_exists('menuHeaderSkins')) {
function menuHeaderSkins($data = []) {
$modules = Module::all();
$html = "";
$config_module = [];
$modules_sort = [];
if ($modules) {
foreach ($modules as $module) {
$name_module = $module->getLowerName();
$menu_config = config($name_module.'.menu');
if(view()->exists($name_module.'::moduletemplates.module-header-skins') && !empty($menu_config['header_skins_position'])){
$tmp['name'] = $name_module;
$tmp['header_skins_position'] = $menu_config['header_skins_position'];
$modules_sort[] = $tmp;
}
}
// sort
usort($modules_sort, function ($item1, $item2) {
return $item1['header_skins_position'] <=> $item2['header_skins_position'];
});
// get view Template
foreach ($modules_sort as $item) {
$html .= view($item['name'].'::moduletemplates.module-header-skins')->render();
}
}
return $html;
}
}
if (!function_exists('menuBottomSkins')) {
function menuBottomSkins($data = []) {
$modules = Module::all();
$html = "";
$config_module = [];
$modules_sort = [];
if ($modules) {
foreach ($modules as $module) {
$name_module = $module->getLowerName();
$menu_config = config($name_module.'.menu');
if(view()->exists($name_module.'::moduletemplates.module-bottom-skins') && !empty($menu_config['bottom_skins_position'])){
$tmp['name'] = $name_module;
$tmp['bottom_skins_position'] = $menu_config['bottom_skins_position'];
$modules_sort[] = $tmp;
}
}
// sort
usort($modules_sort, function ($item1, $item2) {
return $item1['bottom_skins_position'] <=> $item2['bottom_skins_position'];
});
// get view Template
foreach ($modules_sort as $item) {
$html .= view($item['name'].'::moduletemplates.module-bottom-skins',compact('data'))->render();
}
}
return $html;
}
}
if (!function_exists('menuSiderbar')) {
function menuSiderbar($data = []) {
$modules = Module::all();
$html = "";
$config_module = [];
$modules_sort = [];
if ($modules) {
foreach ($modules as $module) {
$name_module = $module->getLowerName();
$menu_config = config($name_module.'.menu');
if(view()->exists($name_module.'::moduletemplates.module-sidebar') && !empty($menu_config['siderbar_position'])){
$tmp['name'] = $name_module;
$tmp['siderbar_position'] = $menu_config['siderbar_position'];
$modules_sort[] = $tmp;
}
}
// sort
usort($modules_sort, function ($item1, $item2) {
return $item1['siderbar_position'] <=> $item2['siderbar_position'];
});
// get view Template
foreach ($modules_sort as $item) {
$html .= view($item['name'].'::moduletemplates.module-sidebar')->render();
}
}
return $html;
}
}
if (!function_exists('menuAdminSettingSiderbar')) {
function menuAdminSettingSiderbar($data = []) {
$modules = Module::all();
$html = "";
$config_module = [];
$modules_sort = [];
if ($modules) {
// sort module with siderbar position
foreach ($modules as $module) {
$name_module = $module->getLowerName();
$menu_config = config($name_module.'.menu');
if(view()->exists($name_module.'::moduletemplates.module-setting-sidebar') && !empty($menu_config['siderbar_setting_position'])){
$tmp['name'] = $name_module;
$tmp['siderbar_setting_position'] = $menu_config['siderbar_setting_position'];
$modules_sort[] = $tmp;
}
}
// sort
usort($modules_sort, function ($item1, $item2) {
return $item1['siderbar_setting_position'] <=> $item2['siderbar_setting_position'];
});
// get view template
foreach ($modules_sort as $item) {
$html .= view($item['name'].'::moduletemplates.module-setting-sidebar')->render();
}
}
return $html;
}
}
if (!function_exists('menuHeaderTopLeft')) {
function menuHeaderTopLeft($data = []) {
$modules = Module::all();
$html = "";
$config_module = [];
$modules_sort = [];
if ($modules) {
// sort module with siderbar position
foreach ($modules as $module) {
$name_module = $module->getLowerName();
$menu_config = config($name_module.'.menu');
if(view()->exists($name_module.'::moduletemplates.module-header-top-left') && !empty($menu_config['header_top_left'])){
$tmp['name'] = $name_module;
$tmp['header_top_left'] = $menu_config['header_top_left'];
$modules_sort[] = $tmp;
}
}
// sort
usort($modules_sort, function ($item1, $item2) {
return $item1['header_top_left'] <=> $item2['header_top_left'];
});
// get view template
foreach ($modules_sort as $item) {
$html .= view($item['name'].'::moduletemplates.module-header-top-left')->render();
}
}
return $html;
}
}
if (!function_exists('menuHeaderTop')) {
function menuHeaderTop($data = []) {
$modules = Module::all();
$html = "";
$config_module = [];
$modules_sort = [];
if ($modules) {
// sort module with siderbar position
foreach ($modules as $module) {
$name_module = $module->getLowerName();
$menu_config = config($name_module.'.menu');
if(view()->exists($name_module.'::moduletemplates.module-header-top') && !empty($menu_config['header_top'])){
$tmp['name'] = $name_module;
$tmp['header_top'] = $menu_config['header_top'];
$modules_sort[] = $tmp;
}
}
// sort
usort($modules_sort, function ($item1, $item2) {
return $item1['header_top'] <=> $item2['header_top'];
});
// get view template
foreach ($modules_sort as $item) {
$html .= view($item['name'].'::moduletemplates.module-header-top')->render();
}
}
return $html;
}
}
if (!function_exists('generateRandomString')) {
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
}
if (!function_exists('getAllImagesContentMedia')) {
function getAllImagesContentMedia(){
$path = public_path('storage/content_media');
if(!File::exists($path)) {
File::makeDirectory($path, $mode = 0755, true, true);
}
$images_url = [];
$files = File::files($path);
foreach ($files as $item) {
# code...
$images_url[] = URL::to('/storage/content_media')."/".$item->getFilename();
}
return $images_url;
}
}
if (!function_exists('getAllImagesUser')) {
function getAllImagesUser($user_id){
$path = public_path('storage/user_storage/'.$user_id);
if(!File::exists($path)) {
File::makeDirectory($path, $mode = 0755, true, true);
}
$images_url = [];
$files = File::files($path);
foreach ($files as $item) {
# code...
$images_url[] = URL::to('/storage/user_storage/'.$user_id)."/".$item->getFilename();
}
return $images_url;
}
}
if (!function_exists('getAllContentTemplate')) {
function getAllContentTemplate(){
$path = public_path('storage/content_media');
$images_url = [];
$files = File::files($path);
foreach ($files as $item) {
# code...
$images_url[] = URL::to('/storage/content_media')."/".$item->getFilename();
}
return $images_url;
}
}
if (!function_exists('replaceVarContentStyle')) {
function replaceVarContentStyle($item=""){
// Image URL: ##image_url##
$results = array();
$image_url = URL::to('/storage/content_media')."/";
$temp = $item;
if (is_object($item)) {
if (isset($item->content)) {
$temp->content = str_replace('##image_url##', $image_url, $item->content);
}
if (isset($item->style)) {
$temp->style = str_replace('##image_url##', $image_url, $item->style);
}
if (isset($item->thank_you_page)) {
$temp->thank_you_page = str_replace('##image_url##', $image_url, $item->thank_you_page);
}
if (isset($item->thank_you_style)) {
$temp->thank_you_style = str_replace('##image_url##', $image_url, $item->thank_you_style);
}
}
else{
if (isset($item)) {
$temp = str_replace('##image_url##', $image_url, $item);
}
}
return $temp;
}
}
if (!function_exists('saveImgBase64')) {
function saveImgBase64($param, $folder)
{
list($extension, $content) = explode(';', $param);
$tmpExtension = explode('/', $extension);
preg_match('/.([0-9]+) /', microtime(), $m);
$fileName = sprintf('img%s%s.%s', date('YmdHis'), $m[1], $tmpExtension[1]);
$content = explode(',', $content)[1];
$storage = Storage::disk('public');
$checkDirectory = $storage->exists($folder);
if (!$checkDirectory) {
$storage->makeDirectory($folder);
}
$storage->put($folder . '/' . $fileName, base64_decode($content), 'public');
return $fileName;
}
}
if (!function_exists('cleanImages')) {
function cleanImages(){
$path = public_path('storage/thumb_templates');
$images_url = [];
$files = File::files($path);
foreach ($files as $item) {
# code...
//$block = Template::where('thumb',$item->getFilename())->first();
if (!$block) {
$path_delete = $path."/".$item->getFilename();
if(File::exists($path_delete)) {
File::delete($path_delete);
}
}
}
die("done");
}
}
if (!function_exists('deleteImageWithPath')) {
function deleteImageWithPath($path_delete){
if(File::exists($path_delete)) {
File::delete($path_delete);
}
}
}
if (!function_exists('setEnv')) {
function setEnv($data)
{
if (empty($data) || !is_array($data) || !is_file(base_path('.env'))) {
return false;
}
$env = file_get_contents(base_path('.env'));
$env = explode("\n", $env);
foreach ($data as $data_key => $data_value) {
$updated = false;
foreach ($env as $env_key => $env_value) {
$entry = explode('=', $env_value, 2);
// Check if new or old key
if ($entry[0] == $data_key) {
$env[$env_key] = $data_key . '=' . $data_value;
$updated = true;
} else {
$env[$env_key] = $env_value;
}
}
// Lets create if not available
if (!$updated) {
$env[] = $data_key . '=' . $data_value;
}
}
$env = implode("\n", $env);
file_put_contents(base_path('.env'), $env);
return true;
}
}
if (!function_exists('format_time')) {
/**
* @param Carbon $timestamp
* @param string $format
* @return string
*/
function format_time(Carbon $timestamp, $format = 'j M Y H:i')
{
$first = Carbon::create(0000, 0, 0, 00, 00, 00);
if ($timestamp->lte($first)) {
return '';
}
return $timestamp->format($format);
}
}
if (!function_exists('date_from_database')) {
/**
* @param string $time
* @param string $format
* @return string
*/
function date_from_database($time, $format = 'Y-m-d')
{
if (empty($time)) {
return $time;
}
return format_time(Carbon::parse($time), $format);
}
}
if (!function_exists('human_file_size')) {
/**
* @param int $bytes
* @param int $precision
* @return string
*/
function human_file_size($bytes, $precision = 2): string
{
$units = ['B', 'kB', 'MB', 'GB', 'TB'];
$bytes = max($bytes, 0);
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
$pow = min($pow, count($units) - 1);
$bytes /= pow(1024, $pow);
return number_format($bytes, $precision, ',', '.') . ' ' . $units[$pow];
}
}
if (!function_exists('get_file_data')) {
/**
* @param string $file
* @param bool $toArray
* @return bool|mixed
*/
function get_file_data($file, $toArray = true)
{
$file = File::get($file);
if (!empty($file)) {
if ($toArray) {
return json_decode($file, true);
}
return $file;
}
if (!$toArray) {
return null;
}
return [];
}
}
if (!function_exists('change_file_json')) {
/**
* @param string $file
* @param bool $toArray
* @return bool|mixed
*/
function change_file_json($file, $key_change, $value_change)
{
$jsonString = file_get_contents($file);
$data = json_decode($jsonString, true);
$data[$key_change] = $value_change;
$newJsonString = json_encode($data);
file_put_contents($file, $newJsonString);
}
}
if (!function_exists('json_encode_prettify')) {
/**
* @param array $data
* @return string
*/
function json_encode_prettify($data)
{
return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
}
}
if (!function_exists('save_file_data')) {
/**
* @param string $path
* @param array|string $data
* @param bool $json
* @return bool|mixed
*/
function save_file_data($path, $data, $json = true)
{
try {
if ($json) {
$data = json_encode_prettify($data);
}
if (!File::isDirectory(File::dirname($path))) {
File::makeDirectory(File::dirname($path), 493, true);
}
File::put($path, $data);
return true;
} catch (Exception $exception) {
info($exception->getMessage());
return false;
}
}
}
if (!function_exists('scan_folder')) {
/**
* @param string $path
* @param array $ignoreFiles
* @return array
*/
function scan_folder($path, $ignoreFiles = [])
{
try {
if (File::isDirectory($path)) {
$data = array_diff(scandir($path), array_merge(['.', '..', '.DS_Store'], $ignoreFiles));
natsort($data);
return $data;
}
return [];
} catch (Exception $exception) {
return [];
}
}
}
if (!function_exists('get_device_type')) {
function get_device_type($user_agent) {
$mobile_regex = '/(?:phone|windows\s+phone|ipod|blackberry|(?:android|bb\d+|meego|silk|googlebot) .+? mobile|palm|windows\s+ce|opera mini|avantgo|mobilesafari|docomo)/i';
$tablet_regex = '/(?:ipad|playbook|(?:android|bb\d+|meego|silk)(?! .+? mobile))/i';
if(preg_match_all($mobile_regex, $user_agent)) {
return 'mobile';
} else {
if(preg_match_all($tablet_regex, $user_agent)) {
return 'tablet';
} else {
return 'desktop';
}
}
}
}
if (!function_exists('get_country_from_country_code')) {
function get_country_from_country_code($code) {
$code = mb_strtoupper($code);
$country_list = get_countries_array();
if(!isset($country_list[$code])) {
return __('Unknown');
} else {
return $country_list[$code];
}
}
}
if (!function_exists('get_countries_array')) {
function get_countries_array() {
return [
'AF' => 'Afghanistan',
'AX' => 'Aland Islands',
'AL' => 'Albania',
'DZ' => 'Algeria',
'AS' => 'American Samoa',
'AD' => 'Andorra',
'AO' => 'Angola',
'AI' => 'Anguilla',
'AQ' => 'Antarctica',
'AG' => 'Antigua and Barbuda',
'AR' => 'Argentina',
'AM' => 'Armenia',
'AW' => 'Aruba',
'AU' => 'Australia',
'AT' => 'Austria',
'AZ' => 'Azerbaijan',
'BS' => 'Bahamas',
'BH' => 'Bahrain',
'BD' => 'Bangladesh',
'BB' => 'Barbados',
'BY' => 'Belarus',
'BE' => 'Belgium',
'BZ' => 'Belize',
'BJ' => 'Benin',
'BM' => 'Bermuda',
'BT' => 'Bhutan',
'BO' => 'Bolivia',
'BQ' => 'Bonaire, Saint Eustatius and Saba',
'BA' => 'Bosnia and Herzegovina',
'BW' => 'Botswana',
'BV' => 'Bouvet Island',
'BR' => 'Brazil',
'IO' => 'British Indian Ocean Territory',
'VG' => 'British Virgin Islands',
'BN' => 'Brunei',
'BG' => 'Bulgaria',
'BF' => 'Burkina Faso',
'BI' => 'Burundi',
'KH' => 'Cambodia',
'CM' => 'Cameroon',
'CA' => 'Canada',
'CV' => 'Cape Verde',
'KY' => 'Cayman Islands',
'CF' => 'Central African Republic',
'TD' => 'Chad',
'CL' => 'Chile',
'CN' => 'China',
'CX' => 'Christmas Island',
'CC' => 'Cocos Islands',
'CO' => 'Colombia',
'KM' => 'Comoros',
'CK' => 'Cook Islands',
'CR' => 'Costa Rica',
'HR' => 'Croatia',
'CU' => 'Cuba',
'CW' => 'Curacao',
'CY' => 'Cyprus',
'CZ' => 'Czech Republic',
'CD' => 'Democratic Republic of the Congo',
'DK' => 'Denmark',
'DJ' => 'Djibouti',
'DM' => 'Dominica',
'DO' => 'Dominican Republic',
'TL' => 'East Timor',
'EC' => 'Ecuador',
'EG' => 'Egypt',
'SV' => 'El Salvador',
'GQ' => 'Equatorial Guinea',
'ER' => 'Eritrea',
'EE' => 'Estonia',
'ET' => 'Ethiopia',
'FK' => 'Falkland Islands',
'FO' => 'Faroe Islands',
'FJ' => 'Fiji',
'FI' => 'Finland',
'FR' => 'France',
'GF' => 'French Guiana',
'PF' => 'French Polynesia',
'TF' => 'French Southern Territories',
'GA' => 'Gabon',
'GM' => 'Gambia',
'GE' => 'Georgia',
'DE' => 'Germany',
'GH' => 'Ghana',
'GI' => 'Gibraltar',
'GR' => 'Greece',
'GL' => 'Greenland',
'GD' => 'Grenada',
'GP' => 'Guadeloupe',
'GU' => 'Guam',
'GT' => 'Guatemala',
'GG' => 'Guernsey',
'GN' => 'Guinea',
'GW' => 'Guinea-Bissau',
'GY' => 'Guyana',
'HT' => 'Haiti',
'HM' => 'Heard Island and McDonald Islands',
'HN' => 'Honduras',
'HK' => 'Hong Kong',
'HU' => 'Hungary',
'IS' => 'Iceland',
'IN' => 'India',
'ID' => 'Indonesia',
'IR' => 'Iran',
'IQ' => 'Iraq',
'IE' => 'Ireland',
'IM' => 'Isle of Man',
'IL' => 'Israel',
'IT' => 'Italy',
'CI' => 'Ivory Coast',
'JM' => 'Jamaica',
'JP' => 'Japan',
'JE' => 'Jersey',
'JO' => 'Jordan',
'KZ' => 'Kazakhstan',
'KE' => 'Kenya',
'KI' => 'Kiribati',
'XK' => 'Kosovo',
'KW' => 'Kuwait',
'KG' => 'Kyrgyzstan',
'LA' => 'Laos',
'LV' => 'Latvia',
'LB' => 'Lebanon',
'LS' => 'Lesotho',
'LR' => 'Liberia',
'LY' => 'Libya',
'LI' => 'Liechtenstein',
'LT' => 'Lithuania',
'LU' => 'Luxembourg',
'MO' => 'Macao',
'MK' => 'Macedonia',
'MG' => 'Madagascar',
'MW' => 'Malawi',
'MY' => 'Malaysia',
'MV' => 'Maldives',
'ML' => 'Mali',
'MT' => 'Malta',
'MH' => 'Marshall Islands',
'MQ' => 'Martinique',
'MR' => 'Mauritania',
'MU' => 'Mauritius',
'YT' => 'Mayotte',
'MX' => 'Mexico',
'FM' => 'Micronesia',
'MD' => 'Moldova',
'MC' => 'Monaco',
'MN' => 'Mongolia',
'ME' => 'Montenegro',
'MS' => 'Montserrat',
'MA' => 'Morocco',
'MZ' => 'Mozambique',
'MM' => 'Myanmar',
'NA' => 'Namibia',
'NR' => 'Nauru',
'NP' => 'Nepal',
'NL' => 'Netherlands',
'NC' => 'New Caledonia',
'NZ' => 'New Zealand',
'NI' => 'Nicaragua',
'NE' => 'Niger',
'NG' => 'Nigeria',
'NU' => 'Niue',
'NF' => 'Norfolk Island',
'KP' => 'North Korea',
'MP' => 'Northern Mariana Islands',
'NO' => 'Norway',
'OM' => 'Oman',
'PK' => 'Pakistan',
'PW' => 'Palau',
'PS' => 'Palestinian Territory',
'PA' => 'Panama',
'PG' => 'Papua New Guinea',
'PY' => 'Paraguay',
'PE' => 'Peru',
'PH' => 'Philippines',
'PN' => 'Pitcairn',
'PL' => 'Poland',
'PT' => 'Portugal',
'PR' => 'Puerto Rico',
'QA' => 'Qatar',
'CG' => 'Republic of the Congo',
'RE' => 'Reunion',
'RO' => 'Romania',
'RU' => 'Russia',
'RW' => 'Rwanda',
'BL' => 'Saint Barthelemy',
'SH' => 'Saint Helena',
'KN' => 'Saint Kitts and Nevis',
'LC' => 'Saint Lucia',
'MF' => 'Saint Martin',
'PM' => 'Saint Pierre and Miquelon',
'VC' => 'Saint Vincent and the Grenadines',
'WS' => 'Samoa',
'SM' => 'San Marino',
'ST' => 'Sao Tome and Principe',
'SA' => 'Saudi Arabia',
'SN' => 'Senegal',
'RS' => 'Serbia',
'SC' => 'Seychelles',
'SL' => 'Sierra Leone',
'SG' => 'Singapore',
'SX' => 'Sint Maarten',
'SK' => 'Slovakia',
'SI' => 'Slovenia',
'SB' => 'Solomon Islands',
'SO' => 'Somalia',
'ZA' => 'South Africa',
'GS' => 'South Georgia and the South Sandwich Islands',
'KR' => 'South Korea',
'SS' => 'South Sudan',
'ES' => 'Spain',
'LK' => 'Sri Lanka',
'SD' => 'Sudan',
'SR' => 'Suriname',
'SJ' => 'Svalbard and Jan Mayen',
'SZ' => 'Swaziland',
'SE' => 'Sweden',
'CH' => 'Switzerland',
'SY' => 'Syria',
'TW' => 'Taiwan',
'TJ' => 'Tajikistan',
'TZ' => 'Tanzania',
'TH' => 'Thailand',
'TG' => 'Togo',
'TK' => 'Tokelau',
'TO' => 'Tonga',
'TT' => 'Trinidad and Tobago',
'TN' => 'Tunisia',
'TR' => 'Turkey',
'TM' => 'Turkmenistan',
'TC' => 'Turks and Caicos Islands',
'TV' => 'Tuvalu',
'VI' => 'U.S. Virgin Islands',
'UG' => 'Uganda',
'UA' => 'Ukraine',
'AE' => 'United Arab Emirates',
'GB' => 'United Kingdom',
'US' => 'United States',
'UM' => 'United States Minor Outlying Islands',
'UY' => 'Uruguay',
'UZ' => 'Uzbekistan',
'VU' => 'Vanuatu',
'VA' => 'Vatican',
'VE' => 'Venezuela',
'VN' => 'Vietnam',
'WF' => 'Wallis and Futuna',
'EH' => 'Western Sahara',
'YE' => 'Yemen',
'ZM' => 'Zambia',
'ZW' => 'Zimbabwe',
];
}
}
if (!function_exists('nr')) {
function nr($number, $decimals = 0, $extra = false) {
if($extra) {
$formatted_number = $number;
$touched = false;
if(!$touched && (!is_array($extra) || (is_array($extra) && in_array('B', $extra)))) {
if($number > 999999999) {
$formatted_number = number_format($number / 1000000000, $decimals, '.', ',') . 'B';
$touched = true;
}
}
if(!$touched && (!is_array($extra) || (is_array($extra) && in_array('M', $extra)))) {
if($number > 999999) {
$formatted_number = number_format($number / 1000000, $decimals, '.', ',') . 'M';
$touched = true;
}
}
if(!$touched && (!is_array($extra) || (is_array($extra) && in_array('K', $extra)))) {
if($number > 999) {
$formatted_number = number_format($number / 1000, $decimals, '.', ',') . 'K';
$touched = true;
}
}
if($decimals > 0) {
$dotzero = '.' . str_repeat('0', $decimals);
$formatted_number = str_replace($dotzero, '', $formatted_number);
}
return $formatted_number;
}
if($number == 0) {
return 0;
}
return number_format($number, $decimals, '.', ',');
}
}
if (!function_exists('get_language_from_locale')) {
function get_language_from_locale($locale) {
$languages = get_locale_languages_array();
if(!isset($languages[$locale])) {
return __('Unknown');
} else {
return $languages[$locale];
}
}
}
if (!function_exists('get_locale_languages_array')) {
function get_locale_languages_array() {
return [
'ab' => 'Abkhazian',
'aa' => 'Afar',
'af' => 'Afrikaans',
'ak' => 'Akan',
'sq' => 'Albanian',
'am' => 'Amharic',
'ar' => 'Arabic',
'an' => 'Aragonese',
'hy' => 'Armenian',
'as' => 'Assamese',
'av' => 'Avaric',
'ae' => 'Avestan',
'ay' => 'Aymara',
'az' => 'Azerbaijani',
'bm' => 'Bambara',
'ba' => 'Bashkir',
'eu' => 'Basque',
'be' => 'Belarusian',
'bn' => 'Bengali',
'bh' => 'Bihari languages',
'bi' => 'Bislama',
'bs' => 'Bosnian',
'br' => 'Breton',
'bg' => 'Bulgarian',
'my' => 'Burmese',
'ca' => 'Catalan, Valencian',
'km' => 'Central Khmer',
'ch' => 'Chamorro',
'ce' => 'Chechen',
'ny' => 'Chichewa, Chewa, Nyanja',
'zh' => 'Chinese',
'cu' => 'Church Slavonic, Old Bulgarian, Old Church Slavonic',
'cv' => 'Chuvash',
'kw' => 'Cornish',
'co' => 'Corsican',
'cr' => 'Cree',
'hr' => 'Croatian',
'cs' => 'Czech',
'da' => 'Danish',
'dv' => 'Divehi, Dhivehi, Maldivian',
'nl' => 'Dutch, Flemish',
'dz' => 'Dzongkha',
'en' => 'English',
'eo' => 'Esperanto',
'et' => 'Estonian',
'ee' => 'Ewe',
'fo' => 'Faroese',
'fj' => 'Fijian',
'fi' => 'Finnish',
'fr' => 'French',
'ff' => 'Fulah',
'gd' => 'Gaelic, Scottish Gaelic',
'gl' => 'Galician',
'lg' => 'Ganda',
'ka' => 'Georgian',
'de' => 'German',
'ki' => 'Gikuyu, Kikuyu',
'el' => 'Greek (Modern)',
'kl' => 'Greenlandic, Kalaallisut',
'gn' => 'Guarani',
'gu' => 'Gujarati',
'ht' => 'Haitian, Haitian Creole',
'ha' => 'Hausa',
'he' => 'Hebrew',
'hz' => 'Herero',
'hi' => 'Hindi',
'ho' => 'Hiri Motu',
'hu' => 'Hungarian',
'is' => 'Icelandic',
'io' => 'Ido',
'ig' => 'Igbo',
'id' => 'Indonesian',
'ia' => 'Interlingua (International Auxiliary Language Association)',
'ie' => 'Interlingue',
'iu' => 'Inuktitut',
'ik' => 'Inupiaq',
'ga' => 'Irish',
'it' => 'Italian',
'ja' => 'Japanese',
'jv' => 'Javanese',
'kn' => 'Kannada',
'kr' => 'Kanuri',
'ks' => 'Kashmiri',
'kk' => 'Kazakh',
'rw' => 'Kinyarwanda',
'kv' => 'Komi',
'kg' => 'Kongo',
'ko' => 'Korean',
'kj' => 'Kwanyama, Kuanyama',
'ku' => 'Kurdish',
'ky' => 'Kyrgyz',
'lo' => 'Lao',
'la' => 'Latin',
'lv' => 'Latvian',
'lb' => 'Letzeburgesch, Luxembourgish',
'li' => 'Limburgish, Limburgan, Limburger',
'ln' => 'Lingala',
'lt' => 'Lithuanian',
'lu' => 'Luba-Katanga',
'mk' => 'Macedonian',
'mg' => 'Malagasy',
'ms' => 'Malay',
'ml' => 'Malayalam',
'mt' => 'Maltese',
'gv' => 'Manx',
'mi' => 'Maori',
'mr' => 'Marathi',
'mh' => 'Marshallese',
'ro' => 'Moldovan, Moldavian, Romanian',
'mn' => 'Mongolian',
'na' => 'Nauru',
'nv' => 'Navajo, Navaho',
'nd' => 'Northern Ndebele',
'ng' => 'Ndonga',
'ne' => 'Nepali',
'se' => 'Northern Sami',
'no' => 'Norwegian',
'nb' => 'Norwegian Bokmål',
'nn' => 'Norwegian Nynorsk',
'ii' => 'Nuosu, Sichuan Yi',
'oc' => 'Occitan (post 1500)',
'oj' => 'Ojibwa',
'or' => 'Oriya',
'om' => 'Oromo',
'os' => 'Ossetian, Ossetic',
'pi' => 'Pali',
'pa' => 'Panjabi, Punjabi',
'ps' => 'Pashto, Pushto',
'fa' => 'Persian',
'pl' => 'Polish',
'pt' => 'Portuguese',
'qu' => 'Quechua',
'rm' => 'Romansh',
'rn' => 'Rundi',
'ru' => 'Russian',
'sm' => 'Samoan',
'sg' => 'Sango',
'sa' => 'Sanskrit',
'sc' => 'Sardinian',
'sr' => 'Serbian',
'sn' => 'Shona',
'sd' => 'Sindhi',
'si' => 'Sinhala, Sinhalese',
'sk' => 'Slovak',
'sl' => 'Slovenian',
'so' => 'Somali',
'st' => 'Sotho, Southern',
'nr' => 'South Ndebele',
'es' => 'Spanish, Castilian',
'su' => 'Sundanese',
'sw' => 'Swahili',
'ss' => 'Swati',
'sv' => 'Swedish',
'tl' => 'Tagalog',
'ty' => 'Tahitian',
'tg' => 'Tajik',
'ta' => 'Tamil',
'tt' => 'Tatar',
'te' => 'Telugu',
'th' => 'Thai',
'bo' => 'Tibetan',
'ti' => 'Tigrinya',
'to' => 'Tonga (Tonga Islands)',
'ts' => 'Tsonga',
'tn' => 'Tswana',
'tr' => 'Turkish',
'tk' => 'Turkmen',
'tw' => 'Twi',
'ug' => 'Uighur, Uyghur',
'uk' => 'Ukrainian',
'ur' => 'Urdu',
'uz' => 'Uzbek',
've' => 'Venda',
'vi' => 'Vietnamese',
'vo' => 'Volap_k',
'wa' => 'Walloon',
'cy' => 'Welsh',
'fy' => 'Western Frisian',
'wo' => 'Wolof',
'xh' => 'Xhosa',
'yi' => 'Yiddish',
'yo' => 'Yoruba',
'za' => 'Zhuang, Chuang',
'zu' => 'Zulu'
];
}
}
if (!function_exists('get_chart_data')) {
function get_chart_data(Array $main_array) {
$results = [];
foreach($main_array as $date_label => $data) {
foreach($data as $label_key => $label_value) {
if(!isset($results[$label_key])) {
$results[$label_key] = [];
}
$results[$label_key][] = $label_value;
}
}
foreach($results as $key => $value) {
$results[$key] = '["' . implode('", "', $value) . '"]';
}
$results['labels'] = '["' . implode('", "', array_keys($main_array)) . '"]';
return $results;
}
}