HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.30
System: Linux iZj6c1151k3ad370bosnmsZ 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64
User: root (0)
PHP: 7.4.30
Disabled: NONE
Upload Files
File: //var/www/html/inventory.breadsecret.com/view/user/list.php
<?php
include("view/layout/meta.php");
include("view/layout/head.php");
?>
<style>
.modal.fade .modal-dialog {
  transition: transform 0.3s ease-out, opacity 0.3s ease-out;
}
</style>
<div class="main-panel">
<?php
include("view/layout/headExt.php");
?>  			
   <div class="container">
      <div class="">
         <!--
         <div class="page-header">
            <h3 class="fw-bold mb-3">Avatars</h3>
            <ul class="breadcrumbs mb-3">
               <li class="nav-home">
                  <a href="#">
                     <i class="icon-home"></i>
                  </a>
               </li>
               <li class="separator">
                  <i class="icon-arrow-right"></i>
               </li>
               <li class="nav-item">
                  <a href="#">Base</a>
               </li>
               <li class="separator">
                  <i class="icon-arrow-right"></i>
               </li>
               <li class="nav-item">
                  <a href="#">Avatars</a>
               </li>
            </ul>
         </div>
         -->
         </div>

         <div class="row">
            <div class="col-md-12">
               <div class="card">
               <div class="card-header">
                  <div class="d-flex align-items-center">
                      <h4 class="card-title"><?=L('menu.user');?></h4>
                      <button class="btn btn-primary btn-round btn-sm ms-auto addUserBtn">
                        <i class="fa fa-plus"></i>
                      </button>
                    </div>    
               </div>
               <div class="card-body">
                  <div class="table-responsive">
                     <table id="userTable" class="display table table-striped table-hover dataTable">
                     <?=Controller\user::genTableHeader();?>
                     <?=Controller\user::genTableFooter();?>                     
                     <tbody>
                     <?php
                        $content = Controller\user::genTableContentData();
                        foreach($content as $listObj) {
                           echo Controller\user::genTableBodyRow($listObj);                                    
                        } 
                     ?>
                     </tbody>
                     </table>
                  </div>
               </div>
               </div>
            </div>
         </div>
      </div>
      <?php include("view/layout/foot.php"); ?>   
   </div>
   
</div>
<?php
include("view/layout/js.php");
include("view/layout/endpage.php");
?>
<script>
   $(document).ready(function () {

      var myCallback = function () { 

         var table = $('.dataTable').DataTable(); // Initialize your DataTable
         var lastColumnIndex = table.columns().count() - 1; // Get the last column index
         table.columns().every(function() {
            var column = this;

            if (column.index() === lastColumnIndex) {
                  return; // exits the function, being the last (and desired) column
            }
            
            var select = $('<select class="form-select"><option value=""></option></select>')
               .appendTo($(column.footer()).empty())
               .on('change', function() {

               var val = $.fn.dataTable.util.escapeRegex(
                  $(this).val()
               );
               column
                  .search(val ? '^' + val + '$' : '', true, false)
                  .draw();
               });

            column.data().unique().sort().each(function(d, j) {
               select.append('<option value="' + d + '">' + d + '</option>')
            });
         });            
      };     

      var userTable = $("#userTable").DataTable({
         pageLength: 25,
         processing: false,
         serverSide: true,
         serverMethod: 'post',
         ajax: '<?=$request->baseUrl();?>/script/userList.php',
         "columns": [
            { data: 'column_userID' },
            { data: 'column_userName' },
            { data: 'column_userEmail' },
            { data: 'column_userPhone' },
            { data: 'column_userRole' },
            { data: 'column_userStatus' },
            { data: 'column_function' },                   
         ],
         rowId: 'column_userID', 
         initComplete: function () {
         this.api()
            .columns([0,1,2,3,4,5])
            .every(function () {
               var column = this;
               var select = $(
               '<select class="form-select"><option value=""></option></select>'
               )
               .appendTo($(column.footer()).empty())
               .on("change", function () {
                  var val = $.fn.dataTable.util.escapeRegex($(this).val());

                  column
                     .search(val ? "^" + val + "$" : "", true, false)
                     .draw();
               });

               column
               .data()
               .unique()
               .sort()
               .each(function (d, j) {
                  select.append(
                     '<option value="' + d + '">' + d + "</option>"
                  );
               });
            });
         },
      });

      $(".addUserBtn").click(function(e){
         var button = $(e.currentTarget);
         e.preventDefault();
         ajaxFunc.apiCall("GET", "user/formAdd", null, null,  function (form_data) { 
            if(form_data.content.success) {
               $('#msgBox').one('show.bs.modal', function (ev) {
                  var modal = $(this);
                  modal.find('#msgBoxLabel').html("<?=L('Add');?> <?=L('Record');?>");
                     modal.find('.modal-dialog').addClass("modal-xl");
                     modal.find('.modal-body').html(form_data.content.message);
                     modal.find('#msgBoxBtnPri').off('click');
                     modal.find('#msgBoxBtnPri').on('click', function (event) {  
                        if(document.getElementById("form-addUser")!==null){    
                           var data = new FormData(document.getElementById("form-addUser"));  
                           ajaxFunc.apiCall("POST", "user", data, "multipart/form-data", function(return_data){
                              if(return_data.content.success) {
                                 $("#msgBox").modal("hide");    
                                 swal({
                                    title: return_data.content.message,
                                    text: return_data.content.message,
                                    type: "warning",
                                    buttons: {
                                       confirm: {
                                          text: "<?=L('OK');?>",
                                          className: "btn btn-success",
                                       }
                                    },
                                 }).then((willOK) => {
                                    if (willOK) {
                                       userTable.ajax.reload(myCallback, false);        
                                    } 
                                 });    
                              } else {
                                 $("#form-addUser").find(".form-group").removeClass("has-error");
                                 $("#form-addUser").find(".form-group").find(".hintHelp").text("");
                                 $("#form-addUser").find("#"+return_data.content.field).closest(".form-group").addClass("has-error");
                                 $("#form-addUser").find("#"+return_data.content.field+"Help").text(return_data.content.message);
                                 $("#form-addUser").find("#"+return_data.content.field).focus();
                              }
                           });
                        }      
                     });  
                       
               }).modal('show')

               $('#msgBox').on('hidden.bs.modal', function (e) {
                  $(this).find('.modal-dialog').removeClass("modal-xl");
               }) 
            } else {
               
               if(form_data.content.note=="signIn") {
                  showLoginNotice(form_data.content.message);
               } else {
                  $('#msgBox').one('show.bs.modal', function (ev) {                 
                     var modal = $(this);
                     modal.find('#msgBoxLabel').html("<?=L('Add');?> <?=L('Record');?>");
                     modal.find('.modal-body').html(form_data.content.message);                     
                     modal.find('#msgBoxBtnPri').on('click', function (event) {  
                        $("#msgBox").modal("hide");   
                     });                               
                  }).modal('show')   
               } 
               
            }      
         });
      });

      $('#userTable tbody').on('click', '.btnEdit', function (e) {
         e.preventDefault();
         var button = $(e.currentTarget);
         ajaxFunc.apiCall("GET", "user/formEdit/"+button.data('id'), null, null,  function (form_data) { 

            if(form_data.content.success) {

               $('#msgBox').one('show.bs.modal', function (ev) {                 
                  var modal = $(this);
                  modal.find('#msgBoxLabel').html("<?=L('Edit');?> <?=L('Record');?>");
                  modal.find('.modal-dialog').addClass("modal-xl");
                     modal.find('.modal-body').html(form_data.content.message);                                    
                     modal.find('#msgBoxBtnPri').on('click', function (event) {  
                        
                        if(document.getElementById("form-editUser")!==null){    
                           var data = new FormData(document.getElementById("form-editUser"));  
                           ajaxFunc.apiCall("POST", "user/"+button.data('id'), data, "multipart/form-data", function(return_data){
                              if(return_data.content.success) {
                                 $("#msgBox").modal("hide");    
                                 swal({
                                    title: return_data.content.message,
                                    text: return_data.content.message,
                                    type: "warning",
                                    buttons: {
                                       confirm: {
                                          text: "<?=L('OK');?>",
                                          className: "btn btn-success",
                                       }
                                    },
                                 }).then((willOK) => {
                                    if (willOK) {
                                       userTable.ajax.reload(myCallback, false);    
                                    } 
                                 });    
                              } else {
                                 $("#form-editUser").find(".form-group").removeClass("has-error");
                                 $("#form-editUser").find(".form-group").find(".hintHelp").text("");
                                 $("#form-editUser").find("#"+return_data.content.field).closest(".form-group").addClass("has-error");
                                 $("#form-editUser").find("#"+return_data.content.field+"Help").text(return_data.content.message);
                                 $("#form-editUser").find("#"+return_data.content.field).focus();
                              }
                           });
                        } 
                        
                     });                   
                                 
               }).modal('show')

               $('#msgBox').on('hidden.bs.modal', function (e) {
                  $(this).find('.modal-dialog').removeClass("modal-xl");
               }) 

            } else {
               if(form_data.content.note=="signIn") {
                  showLoginNotice(form_data.content.message);
               } else {
                  $('#msgBox').one('show.bs.modal', function (ev) {                 
                     var modal = $(this);
                     modal.find('#msgBoxLabel').html("<?=L('Edit');?> <?=L('Record');?>");
                     modal.find('.modal-body').html(form_data.content.message);                     
                     modal.find('#msgBoxBtnPri').on('click', function (event) {  
                        $("#msgBox").modal("hide");   
                     });                               
                  }).modal('show')     
               }             
            }
         });

      });

      $('#userTable tbody').on('click', '.btnDel', function (e) {

         e.preventDefault();

         var button = $(e.currentTarget);

         swal({
            title: "<?=L('DeleteAlertTitle');?>",
            text: "<?=L('DeleteAlertMessage');?>",
            type: "warning",
            buttons: {
               confirm: {
                  text: "<?=L('Y');?>",
                  className: "btn btn-success",
               },                
               cancel: {
                  visible: true,
                  text: "<?=L('N');?>",
                  className: "btn btn-danger",
               },
            },
         }).then((willDelete) => {
            if (willDelete) {

               ajaxFunc.apiCall("DELETE", "user/"+button.data('id'), null, null, function(return_data){
                  if(return_data.content.success) {
                     swal(return_data.content.message, {
                        icon: "success",
                        buttons: {
                           confirm: {
                              className: "btn btn-success",
                           },
                        },
                     }).then((willReload) => {
                        if (willReload) {
                           userTable.ajax.reload(myCallback, false);   
                        }
                     });                          
                  } else {
                     swal(return_data.content.message, {
                        icon: "error",
                        buttons: {
                           confirm: {
                              className: "btn btn-danger",
                           },
                        },
                     });                    
                  }
               });
            } 
         });
         
      });

      $('#userTable tbody').on('click', '.btnView', function (e) {
         e.preventDefault();
         var button = $(e.currentTarget);
         show_user_detail(button.data('id'));
      });

      $('#userTable').on('click', 'tbody tr td:not(:last-child)', function(e) {
         e.preventDefault();
         show_user_detail($(this).parent().attr('id'));                 
      });   
      
      function show_user_detail(userID) {
         ajaxFunc.apiCall("GET", "user/formView/1/"+userID, null, null,  function (form_data) { 
            if(form_data.content.success) {
               $('#msgBox').one('show.bs.modal', function (ev) {                 
                  var modal = $(this);
                  modal.find('.modal-dialog').addClass("modal-xl");
                  modal.find('#msgBoxLabel').html("<?=L('View');?> <?=L('user.info');?>");
                  if(form_data.content.success) {
                     modal.find('.modal-body').html(form_data.content.message);                      
                     modal.find('#msgBoxBtnPri').on('click', function (event) {  
                        $("#msgBox").modal("hide");   
                     });     
                  } else {
                     modal.find('.modal-body').html(form_data.content.message);
                     modal.find('#msgBoxBtnPri').on('click', function (event) {  
                        $("#msgBox").modal("hide");   
                     });                    
                  }
                  
                  $("#form-viewUser input").attr('disabled','disabled');
                  $("#form-viewUser select").attr('disabled','disabled');
                                 
               }).modal('show')

               $('#msgBox').on('hidden.bs.modal', function (e) {
                  $(this).find('.modal-dialog').removeClass("modal-xl");
               }) 
            } else {
               if(form_data.content.note=="signIn") {
                  showLoginNotice(form_data.content.message);
               } else {
                  $('#msgBox').one('show.bs.modal', function (ev) {                 
                     var modal = $(this);
                     modal.find('#msgBoxLabel').html("<?=L('View');?> <?=L('user.info');?>");
                     modal.find('.modal-body').html(form_data.content.message);                     
                     modal.find('#msgBoxBtnPri').on('click', function (event) {  
                        $("#msgBox").modal("hide");   
                     });                               
                  }).modal('show')   
               }               
            }
         });
       
      }          

   });
</script>