perf: move PHP session/config logic outside table loop to reduce RAM usage

This commit is contained in:
mahdahar 2026-03-09 12:33:31 +07:00
parent 4fcf17c905
commit 70517d68f0

View File

@ -1,3 +1,16 @@
<?php
$configFile = include __DIR__ . '/config.php';
$roleMap = ['superuser' => 'superuser', 'admin' => 'admin', 'lab analyst' => 'lab', 'phlebotomist' => 'phlebo', 'customer service' => 'cs'];
$userRole = strtolower(session('userrole') ?? '');
$configKey = $roleMap[$userRole] ?? '';
$previewEnabled = $configFile[$configKey]['previewEnabled'] ?? false;
$userRoleId = (int) session('userroleid');
$userId = (string) session('userid');
$userLevel = (int) session()->get('userlevel');
$isPhlebo = $userRoleId === 3;
$isAdminSuper = !in_array($userRoleId, [3, 4]);
$canUnval = $userLevel <= 1;
?>
<div class="card bg-base-100 shadow-xl border border-base-200 h-full"> <div class="card bg-base-100 shadow-xl border border-base-200 h-full">
<div class="card-body p-0 flex flex-col h-full"> <div class="card-body p-0 flex flex-col h-full">
@ -210,15 +223,8 @@
<td class="text-center"> <td class="text-center">
<i class="fa fa-file-pdf" :class="req.ISPDF ? 'text-success' : 'text-base-300'"></i> <i class="fa fa-file-pdf" :class="req.ISPDF ? 'text-success' : 'text-base-300'"></i>
</td> </td>
<?php
$configFile = include __DIR__ . '/config.php';
$roleMap = ['superuser' => 'superuser', 'admin' => 'admin', 'lab analyst' => 'lab', 'phlebotomist' => 'phlebo', 'customer service' => 'cs'];
$userRole = strtolower(session('userrole') ?? '');
$configKey = $roleMap[$userRole] ?? '';
$previewEnabled = $configFile[$configKey]['previewEnabled'] ?? false;
?>
<td> <td>
<?php if (session('userroleid') == 3): ?> <?php if ($isPhlebo): ?>
<span class="text-xs font-bold" :class="req.VAL1USER && req.VAL2USER ? 'text-success' : 'text-warning'" x-text="req.VAL1USER && req.VAL2USER ? 'Ready' : 'Pending'"></span> <span class="text-xs font-bold" :class="req.VAL1USER && req.VAL2USER ? 'text-success' : 'text-warning'" x-text="req.VAL1USER && req.VAL2USER ? 'Ready' : 'Pending'"></span>
<?php else: ?> <?php else: ?>
<?php if ($previewEnabled): ?> <?php if ($previewEnabled): ?>
@ -277,15 +283,13 @@ $previewEnabled = $configFile[$configKey]['previewEnabled'] ?? false;
<i class="fa fa-file-pdf mr-2"></i> PDF Eng <i class="fa fa-file-pdf mr-2"></i> PDF Eng
</a> </a>
</li> </li>
<?php if (!in_array(session('userroleid'), [3, 4])): ?> <?php if ($isAdminSuper): ?>
<li> <li>
<a @click="openGenerateDialog(req.SP_ACCESSNUMBER)"> <a @click="openGenerateDialog(req.SP_ACCESSNUMBER)">
<i class="fa fa-file-pdf mr-2"></i> <i class="fa fa-file-pdf mr-2"></i>
<span>Generate Result</span> <span>Generate Result</span>
</a> </a>
</li> </li>
<?php endif; ?>
<?php if (!in_array(session('userroleid'), [3, 4])): ?>
<li x-show="!req.REPORT_LANG || req.REPORT_LANG != 1"> <li x-show="!req.REPORT_LANG || req.REPORT_LANG != 1">
<a @click="openEngResultDialog(req)"> <a @click="openEngResultDialog(req)">
<i class="fa fa-language mr-2"></i> <i class="fa fa-language mr-2"></i>
@ -321,9 +325,9 @@ $previewEnabled = $configFile[$configKey]['previewEnabled'] ?? false;
</div> </div>
<ul tabindex="0" <ul tabindex="0"
class="dropdown-content menu bg-base-100 rounded-box z-50 w-48 p-2 shadow-lg border border-base-300 text-xs"> class="dropdown-content menu bg-base-100 rounded-box z-50 w-48 p-2 shadow-lg border border-base-300 text-xs">
<?php if (!in_array(session('userroleid'), [3, 4])): ?> <?php if ($isAdminSuper): ?>
<li x-show="req.ISVAL == 1 && req.ISPENDING != 1 && (req.VAL1USER == '<?= session('userid'); ?>' || req.VAL2USER == '<?= session('userid'); ?>')"> <li x-show="req.ISVAL == 1 && req.ISPENDING != 1 && (req.VAL1USER == '<?= $userId; ?>' || req.VAL2USER == '<?= $userId; ?>')">
<?php if (session()->get('userlevel') <= 1): ?> <?php if ($canUnval): ?>
<a @click="openUnvalDialog(req.SP_ACCESSNUMBER)" class="text-error hover:bg-error/10"> <a @click="openUnvalDialog(req.SP_ACCESSNUMBER)" class="text-error hover:bg-error/10">
<i class="fa fa-times-circle mr-2"></i> UnVal <i class="fa fa-times-circle mr-2"></i> UnVal
</a> </a>