sekolah_adiwiyata/app/Helpers/custom.php

156 lines
6.5 KiB
PHP

<?php
use App\Models\Master\MasterMenu;
use App\Models\Master\MasterAccessMenu;
if (!function_exists('permission')) {
/**
* @param $access
* @param $key
* @param string $method
* @param bool $view
*
* @return mixed
*/
function permission($access, $key, string $method = 'menu', bool $view = false): mixed
{
if (@session('group_id') != 1) {
if ($method == 'module') {
if (is_array($access)) {
$model = MasterAccessMenu::where('module', 'LIKE', "{$key}%")->where('ms_group_id', session('group_id'))->first();
$query = count(array_intersect((array)$access, (array)$model->access));
} else {
$query = MasterAccessMenu::where($access, true)->where('module', 'LIKE', $key.'%')->where('ms_group_id', session('group_id'))->count();
}
} else {
$query = MasterAccessMenu::where($access, true)->where('ms_menu_id', $key)->where('ms_group_id', session('group_id'))->count();
}
if ($query > 0) {
return true;
} else {
return false;
}
} else {
return true;
}
}
}
if (!function_exists('renderMenu')) {
/**
* Loops through a folder and requires all PHP files
* Searches sub-directories as well.
*
* @param $folder
*/
function renderMenu()
{
$active = true;
$parent = MasterMenu::where('status',true)->where('menu_type','sidebar')->where('parent_id',0)->get();
$html = '';
foreach ($parent as $p1) {
// echo $p1->MsMenuId.'<br>';
$child2 = MasterMenu::where('status',true)->where('menu_type','sidebar')->where('parent_id',$p1->MsMenuId)->get();
$access1 = permission('is_read', $p1->MsMenuId, 'menu', true);
$ch1 = count($child2) > 0 ? '' : '';
$link1 = count($child2) > 0 ? '' : 'menu-link';
if ($access1) {
$active1 = $active ? ' ' . null : null;
$html .= '<li class="' . $ch1 . $active1 . '"><a class="' . $link1 . '" href="' . url($p1->url) . '"><i class="' . $p1->menu_icons . '"></i> <span class="nav-link-text" data-i18n="nav.application_intel">' . @$p1->title.'</span>';
if (count($child2) > 0) {
$html .= '</a>';
$html .= '<ul class="menu-subs">';
foreach ($child2 as $p2) {
$child3 = MasterMenu::where('status',true)->where('menu_type','sidebar')->where('parent_id',$p2->MsMenuId)->get();
$access2 = permission('is_read', $p2->MsMenuId, 'menu', true);
$ch2 = count($child3) > 0 ? '' : '';
$link2 = count($child3) > 0 ? '' : 'menu-link';
if ($access2) {
$active2 = $active ? ' ' . null : null;
$html .= '<li class="' . $ch2 . '"><a class="' . $link2 . $active2 . '" href="' . url($p2->url) . '"> <i class="' . $p2->menu_icons . '"></i> <span class="nav-link-text" data-i18n="nav.application_intel">' . @$p2->title.'<span>';
if (count($child3) > 0) {
$html .= '</a>';
$html .= '<ul>';
foreach ($child3 as $p3) {
$child4 = MasterMenu::where('status',true)->where('menu_type','sidebar')->where('parent_id',$p3->MsMenuId)->get();
$access3 = permission('is_read', $p3->MsMenuId, 'menu', true);
$ch3 = count($child4) > 0 ? '' : '';
$link3 = count($child4) > 0 ? '' : 'menu-link';
if ($access3) {
$active3 = $active ? ' ' . null : null;
$html .= '<li class="' . $ch3 . '"><a class="' . $link3 . $active3 . '" href="' . url($p3->url) . '"> <span class="nav-link-text" data-i18n="nav.application_intel">' . @$p3->title.'</span>';
if (count($child4) > 0) {
$html .= '</a>';
$html .= '<ul class="menu-subs">';
foreach ($child4 as $p4) {
$html .= '<li class=" ' . null . '"><a class="menu-link" href="' . url($p4->url) . '"> <span class="nav-link-text" data-i18n="nav.application_intel">' . @$p4->title.'<span>';
}
$html .= '</ul>';
} else {
$html .= '</a>';
}
$html .= '</li>';
}
}
$html .= '</ul>';
} else {
$html .= '</a>';
}
$html .= '</li>';
}
}
$html .= '</ul>';
} else {
$html .= '</a>';
}
$html .= '</li>';
}
}
return $html;
}
}
if (!function_exists('include_route_files')) {
/**
* Loops through a folder and requires all PHP files
* Searches sub-directories as well.
*
* @param $folder
*/
function include_route_files($folder)
{
include_files_in_folder($folder);
}
}
if (!function_exists('include_files_in_folder')) {
/**
* Loops through a folder and requires all PHP files
* Searches sub-directories as well.
*
* @param $folder
*/
function include_files_in_folder($folder)
{
try {
$rdi = new RecursiveDirectoryIterator($folder);
$it = new RecursiveIteratorIterator($rdi);
while ($it->valid()) {
if (!$it->isDot() && $it->isFile() && $it->isReadable() && $it->current()->getExtension() === 'php') {
require $it->key();
}
$it->next();
}
} catch (Exception $e) {
echo $e->getMessage();
}
}
}