Files
sccs_laravel/app/Helpers/Helpers.php
2025-11-04 16:23:40 +05:00

141 lines
7.1 KiB
PHP

<?php // Code within app\Helpers\Helper.php
namespace App\Helpers;
use App\Models\Setting;
use Config;
use Illuminate\Support\Str;
class Helpers
{
public static function applClasses()
{
// 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' => 'en',
'direction' => env('MIX_CONTENT_DIRECTION', 'ltr'),
];
// if any key missing of array from custom.php file it will be merge and set a default value from dataDefault array and store in data variable
$data = array_merge($DefaultData, config('custom.custom'));
// All options available in the template
$allOptions = [
'mainLayoutType' => array('vertical', 'horizontal'),
'theme' => array('light' => 'light', 'dark' => 'dark-layout', 'bordered' => 'bordered-layout', 'semi-dark' => 'semi-dark-layout'),
'sidebarCollapsed' => array(true, false),
'showMenu' => array(true, false),
'layoutWidth' => array('full', 'boxed'),
'navbarColor' => array('bg-primary', 'bg-info', 'bg-warning', 'bg-success', 'bg-danger', 'bg-dark'),
'horizontalMenuType' => array('floating' => 'navbar-floating', 'static' => 'navbar-static', 'sticky' => 'navbar-sticky'),
'horizontalMenuClass' => array('static' => '', 'sticky' => 'fixed-top', 'floating' => 'floating-nav'),
'verticalMenuNavbarType' => array('floating' => 'navbar-floating', 'static' => 'navbar-static', 'sticky' => 'navbar-sticky', 'hidden' => 'navbar-hidden'),
'navbarClass' => array('floating' => 'floating-nav', 'static' => 'navbar-static-top', 'sticky' => 'fixed-top', 'hidden' => 'd-none'),
'footerType' => array('static' => 'footer-static', 'sticky' => 'footer-fixed', 'hidden' => 'footer-hidden'),
'pageHeader' => array(true, false),
'contentLayout' => array('default', 'content-left-sidebar', 'content-right-sidebar', 'content-detached-left-sidebar', 'content-detached-right-sidebar'),
'blankPage' => array(false, true),
'sidebarPositionClass' => array('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' => array('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' => array('en' => 'en', 'fr' => 'fr', 'de' => 'de', 'pt' => 'pt'),
'direction' => array('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 (isset($data[$key]) && $data[$key] !== null) {
// data key should not be exist 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 {
// if data key not set or
$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($layoutClasses['defaultLanguage']);
}
// sidebar Collapsed
if ($layoutClasses['sidebarCollapsed'] == 'true') {
$layoutClasses['sidebarClass'] = "menu-collapsed";
}
// blank page class
if ($layoutClasses['blankPage'] == 'true') {
$layoutClasses['blankPageClass'] = "blank-page";
}
return $layoutClasses;
}
public static function updatePageConfig($pageConfigs)
{
$demo = 'custom';
if (isset($pageConfigs)) {
if (count($pageConfigs) > 0) {
foreach ($pageConfigs as $config => $val) {
Config::set('custom.' . $demo . '.' . $config, $val);
}
}
}
}
}