LobbySIO/index.php
2021-09-22 16:32:35 -04:00

1146 lines
73 KiB
PHP

<?php
/*
* Copyright (C) 2018 josh.north@point808.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
ini_set('session.gc_maxlifetime', 24*60*60); // MIN SESSION
ini_set('session.gc_probability', 1); // GC RATES
ini_set('session.gc_divisor', 100); // TIMES
ini_set('session.use_cookies', '1');
ini_set('session.use_only_cookies', '0');
ini_set('session.cookie_lifetime', '0');
ini_set('session.cookie_secure', '1');
ini_set('session.cookie_httponly', '0');
ini_set('session.cookie_samesite', 'Lax');
session_save_path('.tmp'); // TEMP
spl_autoload_register();
session_start(); // START
require_once __DIR__ . '/autoload.php'; // AUTOLOAD
require_once __DIR__ . '/src/Misc/defuse-crypto.phar';
use App\LobbySIO\Config\Registry;
use Defuse\Crypto\Crypto;
$Users = new \App\LobbySIO\Database\Users();
if (Registry::AUTHMETHOD == 'SAML') {
//simplesaml
require_once('../simplesamlphp/lib/_autoload.php');
$auth = new \SimpleSAML\Auth\Simple(Registry::AUTHIDP);
//$auth->requireAuth();
$auth->isAuthenticated();
if (!$auth->isAuthenticated()) {
$attributes = 'none';
} else {
$attributes = $auth->getAttributes();
$saml_user_email = $attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0];
$saml_user_info = $Users->getUserInfoByEmail($saml_user_email, "1", "0");
$saml_user_id = $saml_user_info["0"]["users_id"];
}
$session = \SimpleSAML\Session::getSessionFromRequest();
$session->cleanup();
}
$StaticFunctions = new \App\LobbySIO\Misc\StaticFunctions(); // DEFAULT CLASSES
$encKey = $StaticFunctions->loadEncryptionKeyFromConfig();
$SiteInfo = new \App\LobbySIO\Database\SiteInfo();
if (isset($_SESSION['user_id'])) { // LOGGED IN? GET USER OBJECT
if (isset($saml_user_id)) {
$sessuserid=$saml_user_id;
} else {
$sessuserid=$_SESSION['user_id'];
}
} elseif (!isset($_SESSION['user_id'])) {
if (isset($saml_user_id)) {
$sessuserid=$saml_user_id;
} else {
$sessuserid='2';
}
$session_user = $Users->getUserInfo($sessuserid, "1", "0"); }
if (isset($session_user)) { // GET UID OR SET TO KIOSK
$uid = $session_user["0"]["users_id"];} else { $uid = "2"; }
$app_disp_lang = filter_input(INPUT_COOKIE, 'app_disp_lang', FILTER_SANITIZE_FULL_SPECIAL_CHARS); // SETUP LANGUAGE
if(!isset($app_disp_lang)) {
$app_disp_lang=$StaticFunctions->getDefaultLanguage(); }
$siteidcookie = filter_input(INPUT_COOKIE, 'app_site', FILTER_SANITIZE_FULL_SPECIAL_CHARS); // SETUP SITE
foreach($SiteInfo->getSite("0", $uid, "0", "0") as $arr) {
$lookup_array[$arr['sites_id']]=1; }
if(isset($lookup_array[$siteidcookie])) {
$siteid = $siteidcookie; } else { $siteid = "1"; }
if(!isset($siteid)) { $siteid="1"; }
$Translate = new \App\LobbySIO\Language\Translate($app_disp_lang); // SETUP TRANSLATOR
$transLang = $Translate->userLanguage();
$VisitTypeInfo = new \App\LobbySIO\Database\VisitTypeInfo(); // ADDITIONAL CLASSES
$IDTypeInfo = new \App\LobbySIO\Database\IDTypeInfo();
$VisitInfo = new \App\LobbySIO\Database\VisitInfo();
$VisitActions = new \App\LobbySIO\Database\VisitActions();
$app_current_pagename = $transLang['STR_COMMON_HOME']; // PAGE SETUP
$app_current_pageicon = '<i class="fas fa-home"></i> ';
require_once("inc/header.inc.php");
$urlsrc=basename(filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_URL));
//header("X-Frame-Options: SAMEORIGIN");
//header("X-Content-Type-Options: nosniff");
//header("Content-Security-Policy: script-src 'self' 'unsafe-inline'; script-src-elem 'self'; script-src-attr 'self'; style-src 'self'; style-src-elem 'self'; style-src-attr 'self'; img-src 'self'; connect-src 'self'; frame-src 'self'; font-src 'self'; media-src 'self'; object-src 'self'; manifest-src 'self'; worker-src 'self'; prefetch-src 'self'; form-action 'self'; frame-ancestors 'self'; default-src 'self'", false);
if (!empty($_GET['a'])) {
echo '<pre>' . print_r($_POST, true) . '</pre>';
echo 'Verification has been : ' . (Classes\Misc\Csrf::verifyToken('home') ? 'successful' : 'unsuccessful');
}
Classes\Visit::dbprefix();
?>
<?php if ($StaticFunctions->getUserSessionStatus() == false) { ?>
<!-- START GUEST CONTENT -->
<div class="container-fluid">
<div class="row">&nbsp;</div>
<div class="row row-cols-1">
<div class="col d-grid gap-2">
<div class="alert alert-info text-center"><?php echo $transLang['WELCOMETO'] . " " . $SiteInfo->getSite($siteid, $uid, "0", "0")[0]["sites_name"]; ?></div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row row-cols-1">
<div class="col d-grid gap-2">
<button class="btn btn-outline-danger btn-lg btn-block" tabindex="-1" role="button" aria-disabled="true" disabled><i class="fas fa-4x fa-sign-in-alt"></i><img src="<?php echo $StaticFunctions->getLogoText(); ?>" height="140" width="370" nonce="<?=$_SESSION['nonceStr']?>"></img><i class="fas fa-4x fa-sign-out-alt"></i><br /><h1><?php echo $transLang['APP_NAME']; ?></h1></button>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">&nbsp;</div>
<div class="row row-cols-2">
<div class="col d-grid gap-2">
<a href="signin.php" class="btn btn-success btn-lg" tabindex="-1" role="button">&nbsp<br />&nbsp<br /><i class="fas fa-sign-in-alt"></i><br /><?php echo $transLang['CUSTSIGNIN']; ?><br />&nbsp<br />&nbsp</a>
</div>
<div class="col d-grid gap-2">
<a href="signout.php" class="btn btn-info btn-lg" tabindex="-1" role="button">&nbsp<br />&nbsp<br /><i class="fas fa-sign-out-alt"></i><br /><?php echo $transLang['CUSTSIGNOUT']; ?><br />&nbsp<br />&nbsp</a>
</div>
</div>
</div>
<!-- END GUEST CONTENT -->
<?php } else { ?>
<?php
//on login see if user name fields are set and if not copy from saml when using saml, and then reload
if (Registry::AUTHMETHOD == 'SAML') {
if ($StaticFunctions->getUserSessionStatus() == true) {
if (empty($Users->readUserFirstAndLast($uid)[0]["users_lastname"])) {
$Users->updateSamlFirstAndLast($uid, $attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname'][0], $attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname'][0]);
?>
<!-- START USER INIT CONTENT -->
<div class="container-fluid">
<div class="row">&nbsp;</div>
<div class="row row-cols-1">
<div class="col d-grid gap-2">
<a class="btn btn-outline-success btn-lg btn-block" tabindex="-1" role="button" aria-disabled="true" href="index.php"><?php echo $transLang['REFRESH']; ?></a>
</div>
</div>
</div>
<!-- END USER INIT CONTENT -->
<?php die; } } } ?>
<!-- AUTHENTICATED -->
<?php // FILTER POSTED DATA
$form_data = filter_input_array(INPUT_POST, [
'fd_formAction' => (string)FILTER_SANITIZE_STRING,
'fd_siteId' => (int)FILTER_VALIDATE_INT,
'fd_isVendor' => (int)FILTER_VALIDATE_INT,
'fd_manualTimeDate' => (string)FILTER_SANITIZE_STRING,
'fd_firstName' => (string)FILTER_SANITIZE_STRING,
'fd_lastName' => (string)FILTER_SANITIZE_STRING,
'fd_carNum' => (string)FILTER_SANITIZE_STRING,
'fd_ssaNum' => (string)FILTER_SANITIZE_STRING,
'fd_visitorCompany' => (string)FILTER_SANITIZE_STRING,
'form_data_contact1' => (string)FILTER_SANITIZE_STRING,
'form_data_contact2' => (string)FILTER_SANITIZE_STRING,
'form_data_workstart' => (string)FILTER_SANITIZE_STRING,
'form_data_workend' => (string)FILTER_SANITIZE_STRING,
'fd_visitType' => (int)FILTER_VALIDATE_INT,
'fd_escortRequired' => (int)FILTER_VALIDATE_INT,
'fd_visitorSignature' => (string)FILTER_SANITIZE_STRING,
'fd_escortSignature' => (string)FILTER_SANITIZE_STRING,
'fd_escortName' => (string)FILTER_SANITIZE_STRING,
'db_vendorinfo_id' => (string)FILTER_SANITIZE_STRING,
'db_vendorinfo_checklistrequired' => (string)FILTER_SANITIZE_STRING,
'db_vendorinfo_routinework' => (string)FILTER_SANITIZE_STRING,
'db_vendorinfo_nonroutinework' => (string)FILTER_SANITIZE_STRING,
'fd_routineornonroutine' => (int)FILTER_VALIDATE_INT,
'db_vendorinfo_coi' => (string)FILTER_SANITIZE_STRING,
'db_vendorinfo_worksummary' => (string)FILTER_SANITIZE_STRING,
'db_vendorinfo_equipmentsummary' => (string)FILTER_SANITIZE_STRING,
'fd_voidVisitId' => (int)FILTER_VALIDATE_INT,
'fd_voidVisitNotes' => (string)FILTER_SANITIZE_STRING,
'db_vendorinfo_checklistcompleted' => (int)FILTER_VALIDATE_INT,
'db_vendorinfo_workcompleted' => (int)FILTER_VALIDATE_INT,
'db_vendorinfo_sitecleanup' => (int)FILTER_VALIDATE_INT,
'db_vendorinfo_doccompleted' => (int)FILTER_VALIDATE_INT,
'outtime' => (string)FILTER_SANITIZE_STRING,
'endvisit' => (string)FILTER_SANITIZE_STRING
]);
?>
<?php if (!empty($form_data['endvisit'])) { // MANUAL SIGN OUT
if (!empty($form_data['outtime'])) {
$newdate = new DateTime($form_data['outtime'], new DateTimeZone($timezone));
$newdate->setTimeZone(new DateTimeZone('UTC'));
$postdate=$newdate->format('Y-m-d H:i:s');
echo $VisitActions->endVisit($form_data['endvisit'], $postdate);
} else {
echo $VisitActions->endVisit($form_data['endvisit'], $StaticFunctions->getUTC());
}
} ?>
<?php if(!empty($form_data['fd_formAction'])){ // DECLINE VISIT
if($form_data['fd_formAction']==='actionVoidVisit'){
ob_start();
$VisitActions->voidVisit(
$form_data['fd_voidVisitId'],
"0",
$form_data['fd_voidVisitNotes'] );
ob_end_clean(); unset($form_data); } } ?>
<?php if(!empty($form_data['fd_formAction'])){ // COMPLETE VENDOR FORM FINAL STAGE
if($form_data['fd_formAction']==='actionVendorComplete'){
ob_start();
$VisitActions->setInfoVendorVisitFinal(
$form_data['db_vendorinfo_id'],
$form_data['db_vendorinfo_checklistcompleted'],
$form_data['db_vendorinfo_workcompleted'],
$form_data['db_vendorinfo_sitecleanup'],
$uid,
$form_data['db_vendorinfo_doccompleted'] );
ob_end_clean(); unset($form_data); } } ?>
<?php if(!empty($form_data['fd_formAction'])){ // CONFIRM VENDOR FORM INITIAL STAGE
if($form_data['fd_formAction']==='actionVendorConfirmation'){
ob_start();
if($form_data['fd_routineornonroutine']===(int)0){
$fdroutinework=(int)1;
$fdnonroutinework=(int)0;
}elseif($form_data['fd_routineornonroutine']===(int)1){
$fdroutinework=(int)0;
$fdnonroutinework=(int)1;
}
$VisitActions->setInfoVendorVisitInitial(
$form_data['db_vendorinfo_id'],
$form_data['db_vendorinfo_checklistrequired'],
$fdroutinework,
$fdnonroutinework,
$form_data['db_vendorinfo_coi'],
$form_data['db_vendorinfo_worksummary'],
$form_data['db_vendorinfo_equipmentsummary'] );
ob_end_clean(); unset($form_data); } } ?>
<?php if(!empty($form_data['fd_formAction'])){ // MANUAL SIGN IN
if($form_data['fd_formAction']==='actionManualSignIn'){
ob_start();
if(!empty($form_data['fd_manualTimeDate'])){ // CONVERT LOCAL TO UTC IF SET
$manualdate = new DateTime($form_data['fd_manualTimeDate'], new DateTimeZone($timezone));
$manualdate->setTimeZone(new DateTimeZone('UTC'));
$form_data['fd_manualTimeDate']=$manualdate->format('Y-m-d H:i:s');
} else {
$form_data['fd_manualTimeDate'] = $StaticFunctions->getUTC(); // OTHERWISE USE NOW()UTC
}
$visitid = $VisitActions->newVisit( // ADD VISIT RECORD
Crypto::encrypt($form_data['fd_firstName'], $encKey),
Crypto::encrypt($form_data['fd_lastName'], $encKey),
Crypto::encrypt($form_data['fd_visitorCompany'], $encKey),
$form_data['fd_visitType'],
$form_data['fd_manualTimeDate'],
$form_data['fd_visitorSignature'],
$form_data['fd_siteId'], "1",
$form_data['fd_escortSignature'],
$form_data['fd_escortName'],
empty($form_data['fd_carNum'])?"":$form_data['fd_carNum'],
empty($form_data['fd_ssaNum'])?"":$form_data['fd_ssaNum'],
empty($form_data['fd_isVendor'])?(int)0:$form_data['fd_isVendor']);
if($form_data['fd_isVendor'] === (int)1) { // ADD VENDOR RECORD IF REQUIRED
$vendorid = $VisitActions->setInfoVendorVisitNew(
$visitid,
empty($form_data['form_data_contact1'])?"":$form_data['form_data_contact1'],
empty($form_data['form_data_contact2'])?"":$form_data['form_data_contact2'],
empty($form_data['form_data_workstart'])?"":$form_data['form_data_workstart'],
empty($form_data['form_data_workend'])?"":$form_data['form_data_workend']);
}
ob_end_clean(); unset($form_data); } } ?>
<?php // APPROVE VISITOR
if (!empty($_POST['approvevisit'])) {
if (empty($_POST['id_type'])) { $id_type_error=1; } else {$id_type_error=0;};
if (empty($_POST['badge'])) { $badge_error=1; } else {$badge_error=0;};
if (empty($_POST['initials'])) { $initials_error=1; } else {$initials_error=0;};
if($SiteInfo->getSite($siteid, $uid, "0", "0")[0]["sites_region"] == "US") {
if (empty($_POST['citizen'])) { $citizen_error=(int)'1'; } elseif ($_POST['citizen']==='00') { $citizen_error=(int)'1'; } else { $citizen_error=(int)'0'; };
}elseif($SiteInfo->getSite($siteid, $uid, "0", "0")[0]["sites_region"] == "EMEA" || $SiteInfo->getSite($siteid, $uid, "0", "0")[0]["sites_region"] == "CAN"){
$_POST['citizen']=NULL;
$citizen_error=(int)'0';
}
if (isset($_POST['id_type']) && $_POST['id_type']===1 && isset($_POST['id_reference'])) { $id_reference_error=0; } elseif (isset($_POST['id_type']) && $_POST['id_type']===1 && empty($_POST['id_reference'])) { $id_reference_error=1; } else { $id_reference_error=0; };
if ($id_type_error+$badge_error+$initials_error+$citizen_error+$id_reference_error===0) {
$approved=2;
echo $VisitActions->approveVisit($_POST['approvevisit'], $_POST['id_type'], $_POST['id_reference'], $_POST['citizen'], $_POST['badge'], $_POST['initials'], $approved);
}
}
// check all unapproved or approved
$approval = "1";
// Set up pagination
$page_num = 1;
if(!empty($_GET['pnum'])):
$page_num = filter_input(INPUT_GET, 'pnum', FILTER_VALIDATE_INT);
if(false === $page_num):
$page_num = 1;
endif;
endif;
$offset = ($page_num - 1) * $StaticFunctions->getPageRows();
$row_count = count($VisitInfo->getVisitInfo($siteid, $approval, "empty", "%", "%", "%", "%", "%", "%"));
$page_count = 0;
if (0 === $row_count): else: $page_count = (int)ceil($row_count / $StaticFunctions->getPageRows()); if($page_num > $page_count): $page_num = 1; endif; endif;
?>
<!-- modals -->
<script nonce="<?=$_SESSION['nonceStr']?>">
$(document).on("click", ".open-voidModal", function (e) {
e.preventDefault();
var _self = $(this);
var myVoidId = _self.data('id');
$("#fd_voidVisitId").val(myVoidId);
$(_self.attr('href')).modal('show');
});
</script>
<!-- void notes -->
<!-- START VOID MODAL -->
<div class="modal fade" id="voidModal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="termsModalLongTitle"><?php echo $transLang['DECLINE']; ?></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<form class="form form-approve" method="post">
<input type="hidden" name="fd_formAction" id="fd_formAction" value="actionVoidVisit" />
<div class="row row-cols-1">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['NOTES']; ?></span>
<input type="hidden" name="fd_voidVisitId" id="fd_voidVisitId" value="" />
<textarea class="form-control" id="fd_voidVisitNotes" name="fd_voidVisitNotes" placeholder="<?php echo $transLang['NOTES_PLACEHOLDER']; ?>"></textarea>
</div>
</div>
</div>
<div class="row row-cols-1">
<div class="col d-grid gap-2">
<button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal"><i class="fas fa-ban"></i>&nbsp;<?php echo $transLang['STR_COMMON_CANCEL']; ?></button>
<button type="submit" class="btn btn-danger btn-sm"><i class="fas fa-thumbs-down"></i>&nbsp;<?php echo $transLang['DECLINE']; ?></button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- END VOID MODAL -->
<!-- START VISITS LIST -->
<div class="container-fluid">
<div class="row row-cols-3 mb-2">
<div class="col d-grid gap-2">
<h2><i class="fas fa-home"></i> <?php echo $transLang['ACTIVEVISITS']; ?></h2>
</div>
<div class="col d-grid gap-2 text-center">
<ul class="pagination pagination-sm">
<li class="page-item disabled"><a class="page-link" href="#" tabindex="-1"><?php echo $transLang['STR_COMMON_PAGE']; ?></a></li>
<?php for ($i = 1; $i <= $page_count; $i++): ?>
<li class="page-item<?php if ($i === $page_num): echo ' active'; else: echo ' '; endif; ?>"><a class="page-link" href="<?php echo filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_URL) . '?pnum=' . $i; ?>"><?php echo $i; ?></a></li>
<?php endfor; ?>
</ul>
</div>
<div class="col text-end">
<a data-bs-toggle="modal" data-bs-target="#signinModal" href="#signinModal" name="signinModal" type="button" class="btn btn-info btn-lg open-signinModal"><i class="fa fas fa-sign-in-alt"></i> <?php echo $transLang['STR_SIGNIN_MANUAL']; ?></a>
<a href="index.php" type="button" class="btn btn-primary btn-lg"><i class="fa fa-redo"></i> <?php echo $transLang['REFRESH']; ?></a>
</div>
</div>
<!-- START MANUAL SIGNIN FORM MODAL -->
<div class="modal fade" id="signinModal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header text-light bg-secondary">
<h5 class="modal-title" id="termsModalLongTitle"><?php echo $transLang['SIGNIN']; ?></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<form method="post">
<input type="hidden" name="fd_formAction" id="fd_formAction" value="actionManualSignIn" />
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text" data-bs-toggle="datetimepicker" data-target=".datetimepicker-fd_manualTimeDate">Sign In Date/Time&nbsp;<i class="fas fa-clock"></i></span>
<input placeholder="" name="fd_manualTimeDate" type="text" class="form-control bg-white datetimepicker-input datetimepicker-fd_manualTimeDate" id="datetimepicker-fd_manualTimeDate" data-toggle="datetimepicker" data-target=".datetimepicker-fd_manualTimeDate"/>
<script type="text/javascript" nonce="<?=$_SESSION['nonceStr']?>">
$(function () {
$('.datetimepicker-fd_manualTimeDate').datetimepicker({'timeZone': '<?php echo $timezone; ?>', 'sideBySide':true, 'format':'YYYY-MM-DD HH:mm:ss', 'allowInputToggle': true });
});
</script>
</div>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['FIRSTNAME']; ?></span>
<input class="form-control" id="fd_firstName" name="fd_firstName" />
</div>
</div>
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['LASTNAME']; ?></span>
<input class="form-control" id="fd_lastName" name="fd_lastName" />
</div>
</div>
</div>
<input type="hidden" name="fd_siteId" id="fd_siteId" value="<?php echo $siteid; ?>" />
<input type="hidden" name="fd_visitorSignature" id="fd_visitorSignature" value="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAAyCAQAAACzWFxqAAAAXklEQVR42u3RMQEAAAzCsOHf9CxwcqQSmpymigVABASIgAARECACAkRABASIgAARECACAkRABASIgAARECACAkRABASIgAARECACAkRABASIgAARECACAkRABASI2h4b9QAzse8LYwAAAABJRU5ErkJggg==" />
<?php if($SiteInfo->getSite($siteid, $uid, "0", "0")[0]["sites_region"] == "EMEA") { ?>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="input-group mb-3">
<span class="input-group-text"><?php echo $transLang['CARNUM']; ?></span>
<input type="text" id="fd_carNum" name="fd_carNum" class="form-control" placeholder="<?php echo $transLang['CARNUM']; ?>" required autofocus>
</div>
</div>
<div class="col d-grid gap-2">
<div class="input-group mb-3">
<span class="input-group-text"><?php echo $transLang['SSANUM']; ?></span>
<input type="text" id="fd_ssaNum" name="fd_ssaNum" class="form-control" placeholder="<?php echo $transLang['SSANUM']; ?>" required autofocus>
</div>
</div>
</div>
<?php } ?>
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['COMPANY']; ?></span>
<input class="form-control" id="fd_visitorCompany" name="fd_visitorCompany" />
</div>
</div>
</div>
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" id="vendorrequiredswitch" name="vendorrequiredswitch">
<label class="form-check-label" for="vendorrequiredswitch"><?php echo $transLang['STR_VENDORINFO_VENDOR_TITLE']; ?></label>
</div>
</div>
</div>
<div id="vendorrequiredsection">
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_CONTACT1_TITLE']; ?></span>
<input class="form-control" id="form_data_contact1" name="form_data_contact1" />
</div>
</div>
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_CONTACT2_TITLE']; ?></span>
<input class="form-control" id="form_data_contact2" name="form_data_contact2" />
</div>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text" data-bs-toggle="datetimepicker" data-target=".datetimepicker-form_data_workstart"><?php echo $transLang['STR_VENDORINFO_WORKSTART_TITLE']; ?>&nbsp;<i class="fas fa-clock"></i></span>
<input placeholder="" name="form_data_workstart" type="text" class="form-control bg-white datetimepicker-input datetimepicker-form_data_workstart" id="datetimepicker-form_data_workstart" data-toggle="datetimepicker" data-target=".datetimepicker-form_data_workstart"/>
<script type="text/javascript" nonce="<?=$_SESSION['nonceStr']?>">
$(function () {
$('.datetimepicker-form_data_workstart').datetimepicker({'timeZone': '<?php echo $timezone; ?>', 'sideBySide':true, 'format':'YYYY-MM-DD HH:mm:ss', 'allowInputToggle': true, 'defaultDate':'<?php echo $timenow; ?>' });
});
</script>
</div>
</div>
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text" data-bs-toggle="datetimepicker" data-target=".datetimepicker-form_data_workend"><?php echo $transLang['STR_VENDORINFO_WORKEND_TITLE']; ?>&nbsp;<i class="fas fa-clock"></i></span>
<input placeholder="" name="form_data_workend" type="text" class="form-control bg-white datetimepicker-input datetimepicker-form_data_workend" id="datetimepicker-form_data_workend" data-toggle="datetimepicker" data-target=".datetimepicker-form_data_workend"/>
<script type="text/javascript" nonce="<?=$_SESSION['nonceStr']?>">
$(function () {
$('.datetimepicker-form_data_workend').datetimepicker({'timeZone': '<?php echo $timezone; ?>', 'sideBySide':true, 'format':'YYYY-MM-DD HH:mm:ss', 'allowInputToggle': true, 'defaultDate':'<?php echo date('Y-m-d H:i:s', time()+43200); ?>' });
});
</script>
</div>
</div>
</div>
</div>
<script type="text/javascript" nonce="<?=$_SESSION['nonceStr']?>">
$('#vendorrequiredswitch').change(function() {
var checkedEscortValue=$("#vendorrequiredswitch").is(":checked");
if (checkedEscortValue === true) {
$('#vendorrequiredsection').show();
$('#escortrequiredsection').hide();
$('#escortrequiredswitchsection').hide();
$('#fd_escortName').removeAttr('required');
$('#fd_escortName').removeAttr('data-error');
$('#form_data_contact1').attr('required', '');
$('#form_data_contact1').attr('data-error', 'This field is required.');
$('#form_data_contact2').attr('required', '');
$('#form_data_contact2').attr('data-error', 'This field is required.');
$('#form_data_workstart').attr('required', '');
$('#form_data_workstart').attr('data-error', 'This field is required.');
$('#form_data_workend').attr('required', '');
$('#form_data_workend').attr('data-error', 'This field is required.');
} else {
$('#vendorrequiredsection').hide();
$('#escortrequiredswitchsection').show();
$('#fd_escortName').removeAttr('required');
$('#fd_escortName').removeAttr('data-error');
$('#form_data_contact1').removeAttr('required');
$('#form_data_contact1').removeAttr('data-error');
$('#form_data_contact2').removeAttr('required');
$('#form_data_contact2').removeAttr('data-error');
$('#form_data_workstart').removeAttr('required');
$('#form_data_workstart').removeAttr('data-error');
$('#form_data_workend').removeAttr('required');
$('#form_data_workend').removeAttr('data-error');
}
});
$('#vendorrequiredswitch').trigger("change");
</script>
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['REASON']; ?></span>
<select class="form-select" id="fd_visitType" name="fd_visitType" required>
<option value="" selected><?php echo $transLang['SELECTREASON']; ?></option><?php foreach($VisitTypeInfo->getInfoVisitType("%","%") as $vtrow): ?>
<option value="<?php echo $vtrow['visittypes_id']; ?>">[<?php if($vtrow['visittypes_isvendor']===0){echo "Visitor";}elseif($vtrow['visittypes_isvendor']===1){echo "Vendor";} ?>] <?php echo $transLang[$vtrow['visittypes_name']]; ?></option><?php endforeach; ?>
</select>
</div>
</div>
</div>
<div class="row row-cols-1 mb-2" id="escortrequiredswitchsection" name="escortrequiredswitchsection">
<div class="col d-grid gap-2">
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" id="escortrequiredswitch" name="escortrequiredswitch">
<label class="form-check-label" for="escortrequiredswitch"><?php echo $transLang['ESECTION']; ?></label>
</div>
</div>
</div>
<div class="row row-cols-1 mb-2" id="escortrequiredsection" name="escortrequiredsection">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['ENAME']; ?></span>
<input type="text" id="fd_escortName" name="fd_escortName" class="form-control" placeholder="<?php echo $transLang['ETAG']; ?>" autofocus>
</div>
</div>
</div>
<script type="text/javascript" nonce="<?=$_SESSION['nonceStr']?>">
$('#escortrequiredswitch').change(function() {
var checkedEscortValue=$("#escortrequiredswitch").is(":checked");
if (checkedEscortValue === true) {
$('#escortrequiredsection').show();
$('#fd_escortName').attr('required', '');
$('#fd_escortName').attr('data-error', 'This field is required.');
} else {
$('#escortrequiredsection').hide();
$('#fd_escortName').removeAttr('required');
$('#fd_escortName').removeAttr('data-error');
}
});
$('#escortrequiredswitch').trigger("change");
</script>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal"><i class="fas fa-ban"></i>&nbsp;<?php echo $transLang['STR_COMMON_CANCEL']; ?></button>
</div>
<div class="col d-grid gap-2">
<button type="submit" class="btn btn-success"><i class="fas fa-save"></i>&nbsp;<?php echo $transLang['STR_COMMON_SAVE']; ?></button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- END MANUAL SIGNIN FORM MODAL -->
<div class="row row-cols-1">
<div class="col d-grid gap-2">
<table class="table table-sm table-responsive-sm text-nowrap">
<thead class="thead-dark">
<tr>
<th class="small col-xs-1"><?php echo $transLang['TIMEREASON']; ?></th><th class="small col-xs-2"><?php echo $transLang['NAME']; ?></th><th class="small col-xs-2"><?php echo $transLang['ESCORT']; ?></th><th class="small col-xs-2"><?php echo $transLang['VALIDATIONS']; ?></th><th class="small col-xs-2"><?php echo $transLang['BADGEINITIALS']; ?></th><?php if($SiteInfo->getSite($siteid, $uid, "0", "0")[0]["sites_region"] == "EMEA") { ?><th class="small col-xs-1"><?=$transLang['DETAILS']?></th><?php } ?><th class="small col-xs-1"><?php echo $transLang['ACTIONS']; ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($VisitInfo->getVisitInfo($siteid, $approval, "empty", "%", "%", "%", "%", $StaticFunctions->getPageRows(), $offset) as $row):
$visitid = $row['visits_id'];
$timein = new DateTime($row['visits_intime'], new DateTimeZone('UTC'));
$timein->setTimezone(new DateTimeZone("$timezone"));
$timein_disp = $timein->format('Y-m-d H:i:s');
if(!empty($row['visits_carnum'])) { $carnum=$row['visits_carnum']; } else { $carnum="";}
if(!empty($row['visits_ssanum'])) { $ssanum=$row['visits_ssanum']; } else { $ssanum="";}
if(!empty($row['visits_isvendor'])) { $isvendor=$row['visits_isvendor']; } else { $isvendor="";}
if(!empty($row['visits_approved'])) { $visitapproved=$row['visits_approved']; } else { $visitapproved="";}
?>
<?php if($isvendor===1 && $visitapproved===1){ ?>
<!-- START INITIAL VENDOR FORM MODAL -->
<?php foreach ($VisitInfo->getInfoVendorVisitInitial($visitid) as $rowvn) {
$db_vendorinfo_id = $rowvn['db_vendorinfo_id'];
$db_vendorinfo_contact1 = $rowvn['db_vendorinfo_contact1'];
$db_vendorinfo_contact2 = $rowvn['db_vendorinfo_contact2'];
$db_vendorinfo_workstart = $rowvn['db_vendorinfo_workstart'];
$db_vendorinfo_workend = $rowvn['db_vendorinfo_workend'];
$db_vendorinfo_customerimpacted = $rowvn['db_vendorinfo_customerimpacted'];
$db_vendorinfo_checklistrequired= $rowvn['db_vendorinfo_checklistrequired'];
$db_vendorinfo_routinework = $rowvn['db_vendorinfo_routinework'];
$db_vendorinfo_nonroutinework = $rowvn['db_vendorinfo_nonroutinework'];
$db_vendorinfo_coi = $rowvn['db_vendorinfo_coi'];
$db_vendorinfo_worksummary = $rowvn['db_vendorinfo_worksummary'];
$db_vendorinfo_equipmentsummary = $rowvn['db_vendorinfo_equipmentsummary'];
if ($db_vendorinfo_routinework === 1 || $db_vendorinfo_nonroutinework === 1) {
if (!empty($db_vendorinfo_worksummary) && !empty($db_vendorinfo_equipmentsummary)){$initialvendorformcomplete=1;}
} else {$initialvendorformcomplete=0;}
?>
<div class="modal fade" id="vendorModal-<?php echo $visitid; ?>" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header text-light bg-secondary">
<h5 class="modal-title" id="termsModalLongTitle"><?php echo $transLang['STR_VENDORINFO_FORM_TITLE']; ?></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<form method="post">
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<p><?php echo $transLang['STR_VENDORINFO_DOCUMENTATIONREQUIRED_DESC']; ?></p>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<input type="hidden" name="fd_formAction" id="fd_formAction" value="actionVendorConfirmation" />
<input type="hidden" name="db_vendorinfo_id" id="db_vendorinfo_id" value="<?php echo $db_vendorinfo_id; ?>" />
<span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_CONTACT1_TITLE']; ?></span>
<input class="form-control" id="db_vendorinfo_contact1" name="db_vendorinfo_contact1" placeholder="<?php echo $db_vendorinfo_contact1; ?>" value="<?php echo $db_vendorinfo_contact1; ?>" disabled />
</div>
</div>
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_CONTACT2_TITLE']; ?></span>
<input class="form-control" id="db_vendorinfo_contact2" name="db_vendorinfo_contact2" placeholder="<?php echo $db_vendorinfo_contact2; ?>" value="<?php echo $db_vendorinfo_contact2; ?>" disabled />
</div>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_WORKSTART_TITLE']; ?></span>
<input class="form-control" id="db_vendorinfo_workstart" name="db_vendorinfo_workstart" placeholder="<?php echo $db_vendorinfo_workstart; ?>" value="<?php echo $db_vendorinfo_workstart; ?>" disabled />
</div>
</div>
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_WORKEND_TITLE']; ?></span>
<input class="form-control" id="db_vendorinfo_workend" name="db_vendorinfo_workend" placeholder="<?php echo $db_vendorinfo_workend; ?>" value="<?php echo $db_vendorinfo_workend; ?>" disabled />
</div>
</div>
</div>
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_CUSTOMERIMPACTED_TITLE']; ?></span>
<input class="form-control" id="db_vendorinfo_customerimpacted" name="db_vendorinfo_customerimpacted" placeholder="<?php echo $db_vendorinfo_customerimpacted; ?>" value="<?php echo $db_vendorinfo_customerimpacted; ?>" disabled />
</div>
</div>
</div>
<div class="border border-warning">
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<p><strong><?php echo $transLang['STR_VENDORINFO_VALIDATIONINITIAL']; ?></strong></p>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="form-check form-switch">
<input type="hidden" name="db_vendorinfo_checklistrequired" value="0" />
<input class="form-check-input" name="db_vendorinfo_checklistrequired" value="1" type="checkbox" id="db_vendorinfo_checklistrequired" <?php if (isset($db_vendorinfo_checklistrequired) && $db_vendorinfo_checklistrequired === 1) {echo "checked";}?>>
<label class="form-check-label" for="db_vendorinfo_checklistrequired"><span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_CHECKLISTREQUIRED_DESC']; ?>"><?php echo $transLang['STR_VENDORINFO_CHECKLISTREQUIRED_TITLE']; ?></span></label>
</div>
</div>
<div class="col d-grid gap-2 routineornot">
<div class="form-check form-switch">
<input type="hidden" name="db_vendorinfo_coi" value="0" />
<input class="form-check-input" name="db_vendorinfo_coi" value="1" type="checkbox" id="db_vendorinfo_coi" <?php if (isset($db_vendorinfo_coi) && $db_vendorinfo_coi === 1) {echo "checked";}?>>
<label class="form-check-label" for="db_vendorinfo_coi"><span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_COI_DESC']; ?>"><?php echo $transLang['STR_VENDORINFO_COI_TITLE']; ?></span></label>
</div>
</div>
</div>
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<div class="btn-group" role="group" data-toggle="button">
<input type="radio" class="btn-check" name="fd_routineornonroutine" autocomplete="off" value="0" id="fd_routinework-<?=$db_vendorinfo_id?>" <?php if (isset($db_vendorinfo_routinework) && $db_vendorinfo_routinework === 1) {echo "checked";}?> required/>
<label class="btn btn-outline-primary" for="fd_routinework-<?=$db_vendorinfo_id?>"><?php echo $transLang['STR_VENDORINFO_ROUTINEWORK_TITLE']; ?></label>
<input type="radio" class="btn-check" name="fd_routineornonroutine" autocomplete="off" value="1" id="fd_nonroutinework-<?=$db_vendorinfo_id?>" <?php if (isset($db_vendorinfo_nonroutinework) && $db_vendorinfo_nonroutinework === 1) {echo "checked";}?> required/>
<label class="btn btn-outline-primary" for="fd_nonroutinework-<?=$db_vendorinfo_id?>"><?php echo $transLang['STR_VENDORINFO_NONROUTINEWORK_TITLE']; ?></label>
</div>
</div>
</div>
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_WORKSUMMARY_DESC']; ?>"><span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_WORKSUMMARY_TITLE']; ?></span></span>
<input class="form-control" id="db_vendorinfo_worksummary" name="db_vendorinfo_worksummary" placeholder="<?php echo $db_vendorinfo_worksummary; ?>" value="<?php echo $db_vendorinfo_worksummary; ?>" required/>
</div>
</div>
</div>
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_EQUIPMENTSUMMARY_DESC']; ?>"><span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_EQUIPMENTSUMMARY_TITLE']; ?></span></span>
<input class="form-control" id="db_vendorinfo_equipmentsummary" name="db_vendorinfo_equipmentsummary" placeholder="<?php echo $db_vendorinfo_equipmentsummary; ?>" value="<?php echo $db_vendorinfo_equipmentsummary; ?>" required />
</div>
</div>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal"><i class="fas fa-ban"></i>&nbsp;<?php echo $transLang['STR_COMMON_CANCEL']; ?></button>
</div>
<div class="col d-grid gap-2">
<button type="submit" class="btn btn-success"><i class="fas fa-save"></i>&nbsp;<?php echo $transLang['STR_COMMON_SAVE']; ?></button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- END INITIAL VENDOR FORM MODAL -->
<?php } } ?>
<?php if($isvendor===1 && $visitapproved===2){ ?>
<!-- START FINAL VENDOR FORM MODAL -->
<?php foreach ($VisitInfo->getInfoVendorVisitFinal($visitid) as $rowvm) {
$db_vendorinfo_id = $rowvm['db_vendorinfo_id'];
$db_vendorinfo_contact1 = $rowvm['db_vendorinfo_contact1'];
$db_vendorinfo_contact2 = $rowvm['db_vendorinfo_contact2'];
$db_vendorinfo_workstart = $rowvm['db_vendorinfo_workstart'];
$db_vendorinfo_workend = $rowvm['db_vendorinfo_workend'];
$db_vendorinfo_customerimpacted = $rowvm['db_vendorinfo_customerimpacted'];
$db_vendorinfo_checklistrequired = $rowvm['db_vendorinfo_checklistrequired'];
$db_vendorinfo_routinework = $rowvm['db_vendorinfo_routinework'];
$db_vendorinfo_nonroutinework = $rowvm['db_vendorinfo_nonroutinework'];
$db_vendorinfo_coi = $rowvm['db_vendorinfo_coi'];
$db_vendorinfo_worksummary = $rowvm['db_vendorinfo_worksummary'];
$db_vendorinfo_equipmentsummary = $rowvm['db_vendorinfo_equipmentsummary'];
$db_vendorinfo_checklistcompleted = $rowvm['db_vendorinfo_checklistcompleted'];
$db_vendorinfo_workcompleted = $rowvm['db_vendorinfo_workcompleted'];
$db_vendorinfo_sitecleanup = $rowvm['db_vendorinfo_sitecleanup'];
$db_vendorinfo_doccompleted = $rowvm['db_vendorinfo_doccompleted'];
if ($db_vendorinfo_workcompleted === 1 && $db_vendorinfo_sitecleanup === 1) { $finalvendorformcomplete=1; } else { $finalvendorformcomplete=0; }
?>
<div class="modal fade" id="vendorFinalModal-<?php echo $visitid; ?>" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header text-light bg-secondary">
<h5 class="modal-title" id="termsModalLongTitle"><?php echo $transLang['STR_VENDORINFO_FORM_TITLE']; ?></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<form method="post">
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<p><?php echo $transLang['STR_VENDORINFO_DOCUMENTATIONREQUIRED_DESC']; ?></p>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<input type="hidden" name="fd_formAction" id="fd_formAction" value="actionVendorComplete" />
<input type="hidden" name="db_vendorinfo_id" id="db_vendorinfo_id" value="<?php echo $db_vendorinfo_id; ?>" />
<span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_CONTACT1_TITLE']; ?></span>
<input class="form-control" id="db_vendorinfo_contact1" name="db_vendorinfo_contact1" placeholder="<?php echo $db_vendorinfo_contact1; ?>" value="<?php echo $db_vendorinfo_contact1; ?>" disabled />
</div>
</div>
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_CONTACT2_TITLE']; ?></span>
<input class="form-control" id="db_vendorinfo_contact2" name="db_vendorinfo_contact2" placeholder="<?php echo $db_vendorinfo_contact2; ?>" value="<?php echo $db_vendorinfo_contact2; ?>" disabled />
</div>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_WORKSTART_TITLE']; ?></span>
<input class="form-control" id="db_vendorinfo_workstart" name="db_vendorinfo_workstart" placeholder="<?php echo $db_vendorinfo_workstart; ?>" value="<?php echo $db_vendorinfo_workstart; ?>" disabled />
</div>
</div>
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_WORKEND_TITLE']; ?></span>
<input class="form-control" id="db_vendorinfo_workend" name="db_vendorinfo_workend" placeholder="<?php echo $db_vendorinfo_workend; ?>" value="<?php echo $db_vendorinfo_workend; ?>" disabled />
</div>
</div>
</div>
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_CUSTOMERIMPACTED_TITLE']; ?></span>
<input class="form-control" id="db_vendorinfo_customerimpacted" name="db_vendorinfo_customerimpacted" placeholder="<?php echo $db_vendorinfo_customerimpacted; ?>" value="<?php echo $db_vendorinfo_customerimpacted; ?>" disabled />
</div>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="form-check form-switch">
<input type="hidden" name="db_vendorinfo_checklistrequired" value="0" />
<input class="form-check-input" name="db_vendorinfo_checklistrequired" value="1" type="checkbox" id="db_vendorinfo_checklistrequired" <?php if (isset($db_vendorinfo_checklistrequired) && $db_vendorinfo_checklistrequired === 1) {echo "checked";}?> disabled>
<label class="form-check-label" for="db_vendorinfo_checklistrequired"><span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_CHECKLISTREQUIRED_DESC']; ?>"><?php echo $transLang['STR_VENDORINFO_CHECKLISTREQUIRED_TITLE']; ?></span></label>
</div>
</div>
<div class="col d-grid gap-2">
<div class="form-check form-switch">
<input type="hidden" name="db_vendorinfo_routinework" value="0" />
<input class="form-check-input" name="db_vendorinfo_routinework" value="1" type="checkbox" id="db_vendorinfo_routinework" <?php if (isset($db_vendorinfo_routinework) && $db_vendorinfo_routinework === 1) {echo "checked";}?> disabled>
<label class="form-check-label" for="db_vendorinfo_routinework"><span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_ROUTINEWORK_DESC']; ?>"><?php echo $transLang['STR_VENDORINFO_ROUTINEWORK_TITLE']; ?></span></label>
</div>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="form-check form-switch">
<input type="hidden" name="db_vendorinfo_coi" value="0" />
<input class="form-check-input" name="db_vendorinfo_coi" value="1" type="checkbox" id="db_vendorinfo_coi" <?php if (isset($db_vendorinfo_coi) && $db_vendorinfo_coi === 1) {echo "checked";}?> disabled>
<label class="form-check-label" for="db_vendorinfo_coi"><span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_COI_DESC']; ?>"><?php echo $transLang['STR_VENDORINFO_COI_TITLE']; ?></span></label>
</div>
</div>
<div class="col d-grid gap-2">
<div class="form-check form-switch">
<input type="hidden" name="db_vendorinfo_nonroutinework" value="0" />
<input class="form-check-input" name="db_vendorinfo_nonroutinework" value="1" type="checkbox" id="db_vendorinfo_nonroutinework" <?php if (isset($db_vendorinfo_nonroutinework) && $db_vendorinfo_nonroutinework === 1) {echo "checked";}?> disabled>
<label class="form-check-label" for="db_vendorinfo_nonroutinework"><span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_NONROUTINEWORK_DESC']; ?>"><?php echo $transLang['STR_VENDORINFO_NONROUTINEWORK_TITLE']; ?></span></label>
</div>
</div>
</div>
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_WORKSUMMARY_DESC']; ?>"><span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_WORKSUMMARY_TITLE']; ?></span></span>
<input class="form-control" id="db_vendorinfo_worksummary" name="db_vendorinfo_worksummary" placeholder="<?php echo $db_vendorinfo_worksummary; ?>" value="<?php echo $db_vendorinfo_worksummary; ?>" disabled />
</div>
</div>
</div>
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<div class="input-group input-group-sm mb-0">
<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_EQUIPMENTSUMMARY_DESC']; ?>"><span class="input-group-text"><?php echo $transLang['STR_VENDORINFO_EQUIPMENTSUMMARY_TITLE']; ?></span></span>
<input class="form-control" id="db_vendorinfo_equipmentsummary" name="db_vendorinfo_equipmentsummary" placeholder="<?php echo $db_vendorinfo_equipmentsummary; ?>" value="<?php echo $db_vendorinfo_equipmentsummary; ?>" disabled />
</div>
</div>
</div>
<div class="border border-warning">
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<p><strong><?php echo $transLang['STR_VENDORINFO_VALIDATIONFINAL']; ?></strong></p>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="form-check form-switch">
<input type="hidden" name="db_vendorinfo_checklistcompleted" value="0" />
<input class="form-check-input" name="db_vendorinfo_checklistcompleted" value="1" type="checkbox" id="db_vendorinfo_checklistcompleted" <?php if (isset($db_vendorinfo_checklistcompleted) && $db_vendorinfo_checklistcompleted === 1) {echo "checked";}?>>
<label class="form-check-label" for="db_vendorinfo_checklistcompleted"><span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_CHECKLISTCOMPLETED_DESC']; ?>"><?php echo $transLang['STR_VENDORINFO_CHECKLISTCOMPLETED_TITLE']; ?></span></label>
</div>
</div>
<div class="col d-grid gap-2">
<div class="form-check form-switch">
<input type="hidden" name="db_vendorinfo_workcompleted" value="0" />
<input class="form-check-input" name="db_vendorinfo_workcompleted" value="1" type="checkbox" id="db_vendorinfo_workcompleted" <?php if (isset($db_vendorinfo_workcompleted) && $db_vendorinfo_workcompleted === 1) {echo "checked";}?> required/>
<label class="form-check-label" for="db_vendorinfo_workcompleted"><span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_WORKCOMPLETED_DESC']; ?>"><?php echo $transLang['STR_VENDORINFO_WORKCOMPLETED_TITLE']; ?></span></label>
</div>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<div class="form-check form-switch">
<input type="hidden" name="db_vendorinfo_sitecleanup" value="0" />
<input class="form-check-input" name="db_vendorinfo_sitecleanup" value="1" type="checkbox" id="db_vendorinfo_sitecleanup" <?php if (isset($db_vendorinfo_sitecleanup) && $db_vendorinfo_sitecleanup === 1) {echo "checked";}?> required/>
<label class="form-check-label" for="db_vendorinfo_sitecleanup"><span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_SITECLEANUP_DESC']; ?>"><?php echo $transLang['STR_VENDORINFO_SITECLEANUP_TITLE']; ?></span></label>
</div>
</div>
<div class="col d-grid gap-2">
<div class="form-check form-switch">
<input type="hidden" name="db_vendorinfo_doccompleted" value="0" />
<input class="form-check-input" name="db_vendorinfo_doccompleted" value="1" type="checkbox" id="db_vendorinfo_doccompleted" <?php if (isset($db_vendorinfo_doccompleted) && $db_vendorinfo_doccompleted === 1) {echo "checked";}?>>
<label class="form-check-label" for="db_vendorinfo_doccompleted"><span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="<?php echo $transLang['STR_VENDORINFO_DOCCOMPLETED_DESC']; ?>"><?php echo $transLang['STR_VENDORINFO_DOCCOMPLETED_TITLE']; ?></span></label>
</div>
</div>
</div>
<div class="row row-cols-1 mb-2">
<div class="col d-grid gap-2">
<p><?php echo $transLang['STR_VENDORINFO_FOOTERWARNING']; ?></p>
</div>
</div>
</div>
<div class="row row-cols-2 mb-2">
<div class="col d-grid gap-2">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal"><i class="fas fa-ban"></i>&nbsp;<?php echo $transLang['STR_COMMON_CANCEL']; ?></button>
</div>
<div class="col d-grid gap-2">
<button type="submit" class="btn btn-success"><i class="fas fa-save"></i>&nbsp;<?php echo $transLang['STR_COMMON_SAVE']; ?></button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- END FINAL VENDOR FORM MODAL -->
<?php }
}
?>
<?php if($row['visits_approved']===2) { ?>
<tr class="alert alert-success">
<?php } else { ?>
<tr class="alert alert-warning">
<?php } ?>
<form class="form form-approve" method="post">
<td class="small">
<div>
<span class="badge bg-light text-dark"><?php echo $timein_disp; ?></span>
</div>
<div>
<span class="badge bg-light text-dark"><?php echo $transLang[$VisitTypeInfo->getInfoVisitType("%", $row['visits_reason'])[0]["visittypes_name"]]; ?></span>
</div>
</td>
<td class="small"><?php echo Crypto::decrypt($row['visits_lastname'], $encKey) . ", " . Crypto::decrypt($row['visits_firstname'], $encKey); ?><br><img src="<?php echo $row['visits_signature']; ?>" width="200" height="50" nonce="<?=$_SESSION['nonceStr']?>"></img></td>
<td class="small"><?php if (!empty($row['visits_escort'])) {echo $row['visits_escort'] . '<br /><img src="' . $row['visits_escort_signature'] . '" width="200" height="50" nonce="'.$_SESSION['nonceStr'].'"></img>'; } ?></td>
<td class="small">
<?php if($row['visits_approved'] === 2) { ?>
<div>
<span class="badge bg-light text-dark"><?php echo $transLang['ID_TYPE']; ?></span> <?php echo $transLang[$IDTypeInfo->getIDTypeInfo($row['visits_id_type'])[0]["idtypes_name"]]; ?>
</div>
<?php if($row['visits_id_type']===1) { ?>
<div>
<span class="badge bg-light text-dark"><?php echo $transLang['TICKET']; ?></span> <?php echo $row['visits_id_reference']; ?>
</div>
<?php } ?>
<?php if($SiteInfo->getSite($siteid, $uid, "0", "0")[0]["sites_region"] == "US") { ?>
<div>
<span class="badge bg-light text-dark"><?php echo $transLang['COUNTRY']; ?>?</span> <?php echo $VisitInfo->getCountryInfo($row['visits_citizen'])[0]["countries_name"]; ?>
</div>
<?php } ?>
</td>
<td class="small">
<div>
<span class="badge bg-light text-dark"><?php echo $transLang['BADGE']; ?></span> <?php echo $row['visits_badge']; ?>
</div>
<div>
<span class="badge bg-light text-dark"><?php echo $transLang['SIGNINBY']; ?></span> <?php echo $Users->readUserFirstAndLast($row['visits_initials'])[0]["users_firstname"] . " " . $Users->readUserFirstAndLast($row['visits_initials'])[0]["users_lastname"]; ?>&nbsp;
</div>
<?php if($isvendor===1) { ?>
<div class="input-group input-group-sm mb-0">
<?php if ($finalvendorformcomplete===1) { ?>
<span class="badge bg-success text-dark"><?php echo $transLang['STR_TAGS_FORMCOMPLETE_TITLE']; ?></span>&nbsp;
<?php } else { ?>
<span class="badge bg-info text-dark"><?php echo $transLang['STR_TAGS_FORMINCOMPLETE_TITLE']; ?></span>&nbsp;
<?php } ?>
<a data-bs-toggle="modal" data-bs-target="#vendorFinalModal-<?php echo $visitid; ?>" data-id="<?php echo $visitid; ?>" href="#vendorFinalModal-<?php echo $visitid; ?>" name="vendorFinalModal-<?php echo $visitid; ?>" value="<?php echo $visitid; ?>" class="open-vendorFinalModal-<?php echo $visitid; ?>"><?php echo $transLang['STR_VENDORINFO_FORM_TITLE']; ?></a>
</div>
<?php } ?>
</td>
<?php if($SiteInfo->getSite($siteid, $uid, "0", "0")[0]["sites_region"] == "EMEA") { ?>
<td class="small"><span class="badge bg-light text-dark"><?=$transLang['CARNUM']?></span><?php echo $carnum; ?><br /><span class="badge bg-light text-dark"><?=$transLang['SSANUM']?></span><?php echo $ssanum; ?></td>
<?php } ?>
<td class="small">
<div class="input-group input-group-sm mb-0 d-grid gap-2">
<button type="submit" name="endvisit" value="<?php echo $visitid; ?>" class="btn btn-warning btn-block btn-sm <?php if ($isvendor===1 && $finalvendorformcomplete===0) { echo "disabled"; } ?>"><i class="fas fa-sign-out-alt"></i>&nbsp<?php echo $transLang['SIGNOUT']; ?></button>
</div>
<div class="input-group input-group-sm mb-0">
<span class="input-group-text" data-bs-toggle="datetimepicker" data-target=".datetimepicker-<?php echo $visitid; ?>"><i class="fas fa-clock"></i></span>
<input placeholder="<?php echo $transLang['OPTIONAL']; ?>" name="outtime" type="text" class="form-control form-control-sm bg-white datetimepicker-input datetimepicker-<?php echo $visitid; ?>" id="datetimepicker-<?php echo $visitid; ?>" data-toggle="datetimepicker" data-target=".datetimepicker-<?php echo $visitid; ?>"/>
<script type="text/javascript" nonce="<?=$_SESSION['nonceStr']?>">
$(function () {
$('.datetimepicker-<?php echo $visitid; ?>').datetimepicker({'timeZone': '<?php echo $timezone; ?>', 'sideBySide':true, 'format':'YYYY-MM-DD HH:mm:ss', 'allowInputToggle': true });
});
</script>
</div>
</td>
<?php } else { ?>
<?php if($isvendor===1 && $initialvendorformcomplete===0) { echo ''; } else { ?>
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['ID_TYPE']; ?></span>
<select class="form-control form-control-sm bg-white form-select<?php if( isset($id_type_error) && $id_type_error===1 && $_POST['approvevisit'] == $visitid ) { echo " is-invalid"; } ?>" id="id_type-<?php echo $visitid; ?>" name="id_type">
<option value="" selected><?php echo $transLang['SELECTID']; ?></option>
<?php foreach($IDTypeInfo->getIDTypeInfo("%") as $row): ?>
<option value="<?php echo $row['idtypes_id']; ?>"><?php echo $transLang[$row['idtypes_name']]; ?></option>
<?php endforeach; ?>
</select>
<div class="invalid-feedback"><?php echo $transLang['STR_COMMON_REQUIRED']; ?></div>
</div>
<div id="ticket-<?php echo $visitid; ?>" name="ticket-<?php echo $visitid; ?>" class="input-group input-group-sm mb-0"><span class="input-group-text"><?php echo $transLang['TICKET']; ?></span>
<input class="form-control form-control-sm bg-white<?php if( isset($id_reference_error) && $id_reference_error === 1 && $_POST['approvevisit'] == $visitid ) { echo " is-invalid"; } ?>" type="text" id="id_reference-<?php echo $visitid; ?>" name="id_reference">
<div class="invalid-feedback"><?php echo $transLang['STR_COMMON_REQUIRED']; ?></div>
</div>
<script type="text/javascript" nonce="<?=$_SESSION['nonceStr']?>">
$('#id_type-<?php echo $visitid; ?>').change(function() {
if ($(this).val() === "1") {
$('#ticket-<?php echo $visitid; ?>').show();
$('#id_reference-<?php echo $visitid; ?>').attr('required', '');
$('#id_reference-<?php echo $visitid; ?>').attr('data-error', 'This field is required.');
} else {
$('#ticket-<?php echo $visitid; ?>').hide();
$('#id_reference-<?php echo $visitid; ?>').removeAttr('required');
$('#id_reference-<?php echo $visitid; ?>').removeAttr('data-error');
}
});
$('#id_type-<?php echo $visitid; ?>').trigger("change");
</script>
<?php if($SiteInfo->getSite($siteid, $uid, "0", "0")[0]["sites_region"] == "US") { ?>
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['COUNTRY']; ?></span>
<select class="form-control form-control-sm bg-white form-select<?php if( isset($citizen_error) && $citizen_error===1 && $_POST['approvevisit'] == $visitid ) { echo " is-invalid"; } ?>" id="citizen-<?php echo $visitid; ?>" name="citizen">
<option value=00 selected><?php echo $transLang['COUNTRY']; ?></option>
<?php foreach ($VisitInfo->getCountryInfo('%') as $row) { ?>
<option value="<?php echo $row['countries_id']; ?>" data-sanctioned="<?php echo $row['countries_ban']; ?>"><?php echo $row['countries_name']; ?></option>
<?php } ?>
</select>
<div class="invalid-feedback"><?php echo $transLang['STR_COMMON_REQUIRED']; ?></div>
</div>
<div id="citizen-ban-<?php echo $visitid; ?>" name="ban-<?php echo $visitid; ?>" class="input-group input-group-sm mb-0">
<span class="badge bg-danger"><?php echo $transLang['STR_COMMON_SANCTIONED']; ?></span>
</div>
<script type="text/javascript" nonce="<?=$_SESSION['nonceStr']?>">
$('#citizen-<?php echo $visitid; ?>').change(function() {
var controlbox = $(this);
var isSanctioned = controlbox.find(':selected').data('sanctioned');
if (isSanctioned === 1) {
$('#citizen-ban-<?php echo $visitid; ?>').show();
$('#approvevisit-<?php echo $visitid; ?>').attr('disabled', '');
} else {
$('#citizen-ban-<?php echo $visitid; ?>').hide();
$('#approvevisit-<?php echo $visitid; ?>').removeAttr('disabled', '');
}
});
$('#citizen-<?php echo $visitid; ?>').trigger("change");
</script>
<?php } ?>
<?php } ?>
<td class="small">
<?php if($isvendor===1 && $initialvendorformcomplete===0) { echo ''; } else { ?>
<div class="input-group input-group-sm mb-0">
<span class="input-group-text"><?php echo $transLang['BADGE']; ?></span>
<input type="text" id="badge" name="badge" class="form-control form-control-sm bg-white<?php if( isset($badge_error) && $badge_error===1 && $_POST['approvevisit'] == $visitid ) { echo " is-invalid"; } ?>" autofocus maxlength="15">
<div class="invalid-feedback"><?php echo $transLang['STR_COMMON_REQUIRED']; ?></div>
</div>
<?php } ?>
<?php if($isvendor===1) { ?>
<div class="input-group input-group-sm mb-0">
<?php if(empty($initialvendorformcomplete)) {$initialvendorformcomplete=0;}; if ($initialvendorformcomplete===1) { ?>
<span class="badge bg-success text-dark"><?php echo $transLang['STR_TAGS_FORMCOMPLETE_TITLE']; ?></span>&nbsp;
<?php } else { ?>
<span class="badge bg-info text-dark"><?php echo $transLang['STR_TAGS_FORMINCOMPLETE_TITLE']; ?></span>&nbsp;
<?php } ?>
<a data-bs-toggle="modal" data-bs-target="#vendorModal-<?php echo $visitid; ?>" data-id="<?php echo $visitid; ?>" href="#vendorModal-<?php echo $visitid; ?>" name="vendorModal-<?php echo $visitid; ?>" value="<?php echo $visitid; ?>" class="open-vendorModal-<?php echo $visitid; ?>"><?php echo $transLang['STR_VENDORINFO_FORM_TITLE']; ?></a>
</div>
<?php } ?>
<input class="form-control form-control-sm" type="hidden" id="initials" name="initials" placeholder="<?php echo $uid; ?>" value="<?php echo $uid; ?>">
</td>
<?php if($SiteInfo->getSite($siteid, $uid, "0", "0")[0]["sites_region"] == "EMEA") { ?>
<td class="small"><span class="badge bg-light text-dark"><?=$transLang['CARNUM']?></span><?php echo $carnum; ?><br /><span class="badge bg-light text-dark"><?=$transLang['SSANUM']?></span><?php echo $ssanum; ?></td>
<?php } ?>
<td class="small">
<div class="input-group input-group-sm mb-0 d-grid gap-2">
<button type="submit" name="approvevisit" id="approvevisit-<?php echo $visitid; ?>" value="<?php echo $visitid; ?>" class="btn btn-success btn-block btn-sm <?php if(empty($initialvendorformcomplete)) {$initialvendorformcomplete=0;}; if ($isvendor===1 && $initialvendorformcomplete===0) { echo "disabled"; }; ?>"><i class="fas fa-thumbs-up"></i>&nbsp;<?php echo $transLang['STR_COMMON_APPROVE']; ?></button>
</div>
<div class="input-group input-group-sm mb-0 d-grid gap-2">
<a data-bs-toggle="modal" data-bs-target="#voidModal" data-id="<?php echo $visitid; ?>" href="#voidModal" name="fd_voidVisitId" value="<?php echo $visitid; ?>" class="btn btn-danger btn-block btn-sm open-voidModal"><i class="fas fa-thumbs-down"></i>&nbsp;<?php echo $transLang['DECLINE']; ?></a>
</div>
<div class="input-group input-group-sm mb-0">
<span class="input-group-text" data-bs-toggle="datetimepicker" data-target=".datetimepicker-<?php echo $visitid; ?>"><i class="fas fa-clock"></i></span>
<input placeholder="<?php echo $transLang['OPTIONAL']; ?>" name="outtime" type="text" class="form-control form-control-sm bg-white datetimepicker-input datetimepicker-<?php echo $visitid; ?>" id="datetimepicker-<?php echo $visitid; ?>" data-toggle="datetimepicker" data-target=".datetimepicker-<?php echo $visitid; ?>" />
<script type="text/javascript" nonce="<?=$_SESSION['nonceStr']?>">
$(function () {
$('.datetimepicker-<?php echo $visitid; ?>').datetimepicker({'sideBySide':true, 'format':'YYYY-MM-DD HH:mm:ss', 'allowInputToggle': true });
});
</script>
</div>
</td>
<?php } ?>
</form>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
<div class="row row-cols-3 mb-2">
<div class="col d-grid gap-2">
&nbsp;
</div>
<div class="col d-grid gap-2 text-center">
<ul class="pagination pagination-sm">
<li class="page-item disabled"><a class="page-link" href="#" tabindex="-1"><?php echo $transLang['STR_COMMON_PAGE']; ?></a></li>
<?php for ($i = 1; $i <= $page_count; $i++): ?>
<li class="page-item<?php if ($i === $page_num): echo ' active'; else: echo ' '; endif; ?>"><a class="page-link" href="<?php echo filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_URL) . '?pnum=' . $i; ?>"><?php echo $i; ?></a></li>
<?php endfor; ?>
</ul>
</div>
<div class="col d-grid gap-2">
&nbsp;
</div>
</div>
<hr />
</div>
<!-- END VISITS LIST -->
<?php } require_once("inc/footer.inc.php");