| Server IP : 172.67.134.116 / Your IP : 216.73.217.68 Web Server : Apache System : Linux server.rehabsharif.com 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64 User : nobi37te ( 1003) PHP Version : 8.2.33 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/nobi37te/public_html/wp-content/plugins/security-malware-firewall/js/ |
Upload File : |
{"version":3,"file":"spbc-table.min.js","sources":["spbc-table.js"],"sourcesContent":["let spbcBulkAction = null;\nconst noConfirmActions = spbcGetNoConfirmActions(spbcPublic);\n\n/**\n * Reloads scanner accordion and set all the listeners\n * @param {string|null} interactControlTab ajaxResult If is set, will use this var as interactivity data.\n * @param {string|null} updateText\n */\nfunction spbcReloadAccordion(interactControlTab = null, updateText = '') {\n spbcSendAJAXRequest(\n {action: 'spbc_scanner_tab__reload_accordion'},\n {\n notJson: true,\n callback: function(result, data, params, obj) {\n jQuery(obj).accordion('destroy');\n jQuery(obj).html(result);\n jQuery(obj).accordion({\n header: 'h3',\n heightStyle: 'content',\n collapsible: true,\n active: false,\n });\n spbcTblBulkActionsListen();\n spbcTblRowActionsListen();\n spbcTblPaginationListen();\n spbcTblSortListen();\n spbcStartShowHide();\n if (interactControlTab !== null && updateText !== null) {\n interactScannerTab(interactControlTab, updateText);\n }\n },\n },\n jQuery('#spbc_scan_accordion'),\n );\n}\n\n/**\n * Open refreshed tab after scanner reload.\n * @param {string} controlTab\n * @param {string} updateText\n */\nfunction interactScannerTab(controlTab, updateText) {\n let refreshControlTabSelector;\n let headerSelector;\n let headerUpdateStatus;\n\n if (\n typeof(controlTab) !== 'string' ||\n controlTab === '' ||\n typeof(updateText) !== 'string' ||\n updateText === ''\n ) {\n return;\n }\n\n // init refresh controlled tabs\n refreshControlTabSelector = jQuery('#spbc_scan_accordion div[refresh_control_tab=\"' + controlTab + '\"]')[0];\n\n // init header to click\n headerSelector = 'h3[aria-controls=spbc_scan_accordion_tab_' + controlTab + ']';\n headerSelector = jQuery(headerSelector)[0];\n\n if (\n typeof(refreshControlTabSelector) === 'undefined' ||\n typeof(headerSelector) === 'undefined'\n ) {\n return;\n }\n\n // show updated caption\n jQuery('<div class=\"spbc_accordion_header_caption__update_status\"></div>')\n .appendTo(headerSelector);\n headerUpdateStatus = jQuery('.spbc_accordion_header_caption__update_status');\n jQuery('<div class=\"spbc_accordion_header_caption__updated\">' + updateText + '</div>')\n .appendTo(headerUpdateStatus);\n\n // do click to open tab\n headerSelector.click();\n\n // highlight header\n refreshControlTabSelector.setAttribute(\n 'class',\n 'ui-accordion-header ui-corner-top ui-state-default ui-accordion-icons ui-accordion-header-active',\n );\n\n // hide all actions on partial reload\n jQuery('.row-actions').hide();\n}\n\n/**\n * Table bulk actions\n */\nfunction spbcTblBulkActionsListen() {\n jQuery('.tbl-bulk_actions-all--apply')\n .off('click')\n .on('click', function() {\n // @ToDo perhaps spbcScanner.active is not defined anywhere.\n // check this and implement `active` status in the right place\n if ( spbcScanner.active ) {\n alert(spbcTableLocalize.scannerIsActive);\n return;\n }\n\n let self = jQuery(this);\n let spbcCurrentAccordionName = jQuery(this)[0].parentElement.parentElement.id;\n console.log('actions-all--apply', spbcCurrentAccordionName);\n\n let allowedBulkActions = [\n 'approve',\n 'disapprove',\n 'send',\n 'check_analysis_status',\n 'approve_page',\n 'disapprove_page',\n 'cure',\n 'delete_from_analysis_log',\n 'restore',\n ];\n let action = self.siblings('select').children()[self.siblings('select').first()[0].selectedIndex].value;\n\n if ( allowedBulkActions.indexOf( action ) !== -1 ) {\n if (!noConfirmActions.any.includes(action)) {\n if (!confirm(spbcTable.warning_bulk)) {\n return;\n }\n }\n let data = {\n action: 'spbc_tbl-action--bulk',\n add_action: action,\n status: self.parents('.tbl-root').attr('type'),\n };\n\n if (action === 'cure') {\n spbcScannerCureBulk(self, true);\n return;\n }\n\n if (action === 'restore') {\n spbcScannerRestoreBulk(self, true, spbcCurrentAccordionName);\n }\n\n if (action === 'delete_from_analysis_log') {\n const selectedItems = self.closest('#spbc_tbl__scanner_analysis_log').find('.cb-select');\n let fileIds = [];\n\n selectedItems.each(function(index, element) {\n const elementId = jQuery(element).val();\n fileIds.push(elementId);\n });\n data.file_ids = fileIds;\n }\n\n let params = {\n button: this,\n spinner: self.children('.tbl-preloader--small'),\n callback: function(out) {\n spbcReloadAccordion();\n if ( action === 'check_analysis_status' && typeof out !== 'undefined') {\n let html = '<p> Analysis status updated.' +\n ' Total: ' + out.counters.total +\n ', updated: ' + out.counters.updated +\n ', skipped: ' + out.counters.skipped +\n ', failed: ' + out.counters.failed +\n ', queued: ' + out.counters.queued +\n '</p>';\n spbcModal.open().put( html );\n }\n if ( action === 'send' && typeof out !== 'undefined') {\n let html = '<p> Files have been sent: ' +\n out.files_sent_counter +\n '</p>';\n spbcModal.open().put(html);\n }\n },\n errorOutput: function( errorText, comment ) {\n if ( comment ) {\n errorText = errorText + '<br>Additional information:<br>' + comment;\n }\n spbcModal.open().putError( errorText );\n },\n timeout: 60000,\n };\n\n spbcSendAJAXRequest(data, params);\n } else {\n alert('This action is not supported for all files yet =(');\n }\n });\n\n jQuery('.tbl-bulk_actions--apply')\n .off('click')\n .on('click', function(e) {\n let self = spbcBulkAction || jQuery(this);\n let action = self.siblings('select').children()[self.siblings('select').first()[0].selectedIndex].value;\n if (!spbcBulkAction && !noConfirmActions.any.includes(action) && !confirm(spbcTable.warning_bulk)) {\n return;\n }\n\n spbcBulkAction = self;\n let spbcCurrentAccordionName = spbcBulkAction[0].parentElement.parentElement.id;\n console.log('actions--apply', spbcCurrentAccordionName);\n\n if (action === 'cure') {\n spbcScannerCureBulk(jQuery(this), false);\n spbcBulkAction = null;\n return;\n }\n\n if (action === 'restore') {\n spbcScannerRestoreBulk(jQuery(this), false, spbcCurrentAccordionName);\n spbcBulkAction = null;\n return;\n }\n\n if (action === 'delete_from_analysis_log') {\n spbcScannerAnalysisLogDeleteFromLog(jQuery(this));\n spbcBulkAction = null;\n return;\n }\n\n if (action === 'allow' || action === 'ban') {\n let sendAction = action === 'ban' ? 'deny' : action;\n let items = self.parents('.tbl-root').find('.cb-select:checked');\n if (items) {\n self.children('.tbl-preloader--small').show();\n items.each(function() {\n let ip = jQuery(this).parents('tr').find('.tbl-row_action--'+action).data('ip');\n spbcSecLogsFilterIp(ip, sendAction, true);\n jQuery(this).prop('checked', false);\n });\n }\n self.children('.tbl-preloader--small').hide();\n let msg = action === 'allow' ? 'Allowed' : 'Banned';\n let html = '<p> Success. Selected IPs have been ' +\n msg +\n '. Changes will be applied within 10 minutes.' +\n '</p>';\n spbcModal.open().put( html );\n setTimeout(spbcReloadAccordion, 1900);\n spbcBulkAction = null;\n return;\n }\n\n if ( action !== '-1' && self.parents('.tbl-root').find('.cb-select').is(':checked') ) {\n self.children('.tbl-preloader--small').show();\n // eslint-disable-next-line max-len\n if (self.parents('.tbl-root').find('.cb-select:checked').first().parents('tr').find('.tbl-row_action--'+action)[0]) {\n self\n .parents('.tbl-root')\n .find('.cb-select:checked')\n .first()\n .parents('tr')\n .find('.tbl-row_action--'+action)\n .click();\n self.parents('.tbl-root').find('.cb-select:checked').first().prop('checked', false);\n } else {\n self.parents('.tbl-root').find('.cb-select:checked').first().prop('checked', false);\n self.click();\n }\n } else {\n self.children('.tbl-preloader--small').hide();\n spbcBulkAction = null;\n if ( action === 'check_analysis_status' || action === 'disapprove' ) {\n let html = '<p> All available files are updated.' + '</p>';\n spbcModal.open().put( html );\n }\n if ( action === 'send') {\n let html = '<p> All available files are sent.' + '</p>';\n spbcModal.open().put( html );\n }\n setTimeout(spbcReloadAccordion, 1900);\n }\n // reset spbcBulkAction if action is restricted\n if (noConfirmActions.restricted.includes(action)) {\n spbcBulkAction = null;\n }\n });\n}\n\n/**\n * Cure selected files\n * @param {obj} current\n * @param {boolean} allItems\n */\nfunction spbcScannerCureBulk(current, allItems = false) {\n let selectedIds = [];\n const selector = allItems ? '.cb-select' : '.cb-select:checked';\n let selectedItems = current.closest('#spbc_tbl__scanner_cure_log').find(selector);\n\n if (selectedItems.length === 0) {\n selectedItems = current.closest('#spbc_scan_accordion_tab_critical').find(selector);\n }\n\n if (selectedItems.length === 0) {\n alert('Please, select elements.');\n return;\n }\n\n selectedItems.each(function(index, element) {\n const elementId = jQuery(element).val();\n selectedIds.push(elementId);\n });\n\n const data = {\n action: 'spbc_cure_selected',\n security: spbcSettings.ajax_nonce,\n selectedIds: selectedIds,\n };\n jQuery.ajax({\n type: 'POST',\n url: spbcSettings.ajaxurl,\n data: data,\n beforeSend: function() {\n current\n .closest('#spbc_tbl__scanner_cure_log')\n .find('.tbl-button---white_blue .tbl-preloader--in_button')\n .show();\n },\n success: function(result) {\n current\n .closest('#spbc_tbl__scanner_cure_log')\n .find('.tbl-button---white_blue .tbl-preloader--in_button')\n .hide();\n const displayData = result.data;\n // prepare output\n let divWrapper = document.createElement('div');\n let pMessage = document.createElement('p');\n let pCounters = document.createElement('p');\n let divFiles = document.createElement('div');\n let bSeeMore = document.createElement('b');\n let pSeeMore = document.createElement('p');\n bSeeMore.innerHTML = 'See more details in the threats log.';\n pSeeMore.append(bSeeMore);\n const failedToCure = displayData.hasOwnProperty('failed_to_cure') ? displayData.failed_to_cure : [];\n if (failedToCure.length > 0) {\n divFiles.innerHTML = failedToCure.join('</br>');\n }\n pMessage.innerHTML = displayData.message;\n pCounters.innerHTML += 'Cured: ' +\n (\n displayData.hasOwnProperty('cured_on_request') ?\n displayData.cured_on_request :\n 0\n );\n pCounters.innerHTML += ', already cured: ' +\n (\n displayData.hasOwnProperty('skipped') ?\n displayData.skipped :\n 0\n );\n pCounters.innerHTML += ', failed to cure: ' + failedToCure.length;\n\n divWrapper.append(pMessage);\n divWrapper.append(pCounters);\n divWrapper.append(divFiles);\n if (failedToCure.length > 0) {\n divWrapper.append(pSeeMore);\n }\n if (result.success) {\n spbcModal.open().put(divWrapper.outerHTML);\n } else {\n spbcModal.open().putError(divWrapper.outerHTML);\n }\n document.addEventListener('spbcModalClosed', function( e ) {\n spbcReloadAccordion();\n });\n },\n });\n}\n\n/**\n * Restore selected files\n * @param {obj} current\n * @param {boolean} allItems\n * @param {string|boolean} currentAccordionName\n */\nfunction spbcScannerRestoreBulk(current, allItems = false, currentAccordionName = false) {\n let selectedIds = [];\n const selector = allItems ? '.cb-select' : '.cb-select:checked';\n const selectedItems =\n currentAccordionName ?\n current.closest('#' + currentAccordionName).find(selector) :\n current.closest('#spbc_tbl__scanner_cure_log').find(selector);\n\n if (selectedItems.length === 0) {\n alert('Please, select elements.');\n return;\n }\n\n selectedItems.each(function(index, element) {\n const elementId = jQuery(element).val();\n selectedIds.push(elementId);\n });\n\n const data = {\n action: 'spbc_restore_selected',\n security: spbcSettings.ajax_nonce,\n selectedIds: selectedIds,\n };\n\n const isQuarantineLog = currentAccordionName === 'spbc_tbl__scanner_quarantined';\n\n if (isQuarantineLog) {\n data.action = 'spbc_restore_from_quarantine';\n }\n\n jQuery.ajax({\n type: 'POST',\n url: spbcSettings.ajaxurl,\n data: data,\n beforeSend: function() {\n current\n .closest(isQuarantineLog ? '#spbc_tbl__scanner_quarantined' : '#spbc_tbl__scanner_cure_log')\n .find('.tbl-button---white_blue .tbl-preloader--in_button')\n .show();\n },\n success: function(result) {\n if (isQuarantineLog) { \n if (result.success === false) {\n spbcModal.open().putError(result.data);\n }\n\n spbcReloadAccordion(null, result.data.message);\n return;\n }\n\n current\n .closest('#spbc_tbl__scanner_cure_log')\n .find('.tbl-button---white_blue .tbl-preloader--in_button')\n .hide();\n const displayData = result.data;\n // prepare output\n let divWrapper = document.createElement('div');\n let pMessage = document.createElement('p');\n let pCounters = document.createElement('p');\n let divFiles = document.createElement('div');\n const failedToRestore = displayData.hasOwnProperty('failed_to_restore') ?\n displayData.failed_to_restore :\n [];\n if (failedToRestore.length > 0) {\n divFiles.innerHTML = failedToRestore.join('</br>');\n }\n pMessage.innerHTML = displayData.message;\n pCounters.innerHTML += 'Restored: ' +\n (\n displayData.hasOwnProperty('restored_on_request') ?\n displayData.restored_on_request :\n 0\n );\n pCounters.innerHTML += ', unchanged or already restored: ' +\n (\n displayData.hasOwnProperty('skipped') ?\n displayData.skipped :\n 0\n );\n pCounters.innerHTML += ', failed to restore: ' + failedToRestore.length;\n\n divWrapper.append(pMessage);\n divWrapper.append(pCounters);\n divWrapper.append(divFiles);\n\n if (result.success) {\n spbcModal.open().put(divWrapper.outerHTML);\n } else {\n spbcModal.open().putError(divWrapper.outerHTML);\n }\n document.addEventListener('spbcModalClosed', function( e ) {\n spbcReloadAccordion();\n });\n },\n });\n}\n\n/**\n * Table row actions\n */\nfunction spbcTblRowActionsListen() {\n jQuery('.tbl-row_action--ajax')\n .off('click')\n .on('click', function() {\n if ( spbcScanner.active ) {\n alert(spbcTableLocalize.scannerIsActive);\n return;\n }\n let self = jQuery(this);\n let data = {\n action: 'spbc_tbl-action--row',\n add_action: self.attr('row-action'),\n id: self.parents('.row-actions').attr('uid'),\n cols: self.parents('.row-actions').attr('cols_amount'),\n page_url: self.parent().attr('uid'),\n page_id: self.parent().attr('page_id'),\n };\n let params = {\n callback: spbcTblRowActionsCallback,\n errorOutput: function(msg, comment, hideSupportLink) {\n spbcModal.open().putError( msg, hideSupportLink );\n },\n spinner: self.parent().siblings('.tbl-preloader--tiny'),\n };\n\n // @ToDo delete this timeout after ready task #10014\n if ( self.attr('row-action') === 'delete' || self.attr('row-action') === 'quarantine' ) {\n params.timeout = 60000;\n }\n\n let fileName = self.parent().parent()[0].firstChild.innerHTML;\n let confirmationHeader = spbcTable['warning_h_'+self.attr('row-action')] || spbcTable.warning_default;\n let confirmationText = spbcTable['warning_t_'+self.attr('row-action')] || '';\n // init row actions with no confirm required\n if ( spbcBulkAction || noConfirmActions.any.includes(data.add_action) ) {\n // do not request user confirmation if the action is excluded or if it is a bulk action\n spbcSendAJAXRequest(data, params, self.parents('tr'));\n } else {\n // do request confirmation otherwise\n const yesButtonText = self.attr('row-action') === 'quarantine' ? 'Quarantine' : 'Yes';\n const noButtonText = self.attr('row-action') === 'quarantine' ? 'Cancel' : 'No';\n spbcModal.open().confirm(confirmationHeader, confirmationText, fileName, (confirmed) => {\n if (confirmed) {\n spbcSendAJAXRequest(data, params, self.parents('tr'));\n }\n }, yesButtonText, noButtonText);\n }\n });\n}\n\n/**\n * Row actions with no confirm required.\n * @param {object} spbcPublic Global localized SPBC object\n * @return {{}}\n */\nfunction spbcGetNoConfirmActions(spbcPublic) {\n let noConfirmActionsEmpty = {\n 'any': [],\n 'restricted': [],\n 'defaults': [],\n };\n let noConfirmActions = noConfirmActionsEmpty;\n try {\n if ( typeof spbcPublic !== 'undefined' && spbcPublic.hasOwnProperty('no_confirm_row_actions')) {\n noConfirmActions = JSON.parse(spbcPublic.no_confirm_row_actions);\n }\n if (\n typeof noConfirmActions.any.includes !== 'function' ||\n typeof noConfirmActions.restricted.includes !== 'function' ||\n typeof noConfirmActions.defaults.includes !== 'function'\n ) {\n noConfirmActions = noConfirmActionsEmpty;\n }\n } catch (e) {\n noConfirmActions = noConfirmActionsEmpty;\n }\n return noConfirmActions;\n}\n\n/**\n * Callback for table row actions\n *\n * @param {obj|string} result\n * @param {obj} data\n * @param {obj} params\n * @param {obj} obj\n */\nfunction spbcTblRowActionsCallback(result, data, params, obj) {\n if (result.color) {\n obj.css({background: result.background, color: result.color});\n }\n if (result.html) {\n obj.parent().parent().parent().prepend(result.html);\n setTimeout(function() {\n obj.fadeOut(300);\n }, 1500);\n if ( ! spbcBulkAction) {\n setTimeout(spbcReloadAccordion, 1900);\n }\n }\n\n if (\n data.add_action === 'copy_file_info'\n ) {\n if (result.success === true && result.data.file_info) {\n window.prompt(\n 'Copy the file info below and send it to ' + spbcSettings['wl_support_email'],\n result.data.file_info,\n );\n } else {\n let errorText = (typeof result.data.error !== 'undefined') ?\n result.data.error :\n 'Unknown copy_file_info error';\n spbcModal.open().putError( errorText );\n }\n }\n\n if (result.temp_html) {\n let tmp=obj.html();\n obj.html(result.temp_html);\n if (result.updated_template !== undefined) {\n let updatedType = result.updated_template_type;\n let template = result.updated_template;\n let rowsInTemplate = jQuery(template).find('.wp-list-table tbody tr');\n let countRowInTemplate = rowsInTemplate.length;\n let targetTab = jQuery('[aria-controls=\"spbc_scan_accordion_tab_' + updatedType + '\"]');\n\n if (targetTab.length > 0) {\n let table = jQuery('#spbc_tbl__scanner_' + updatedType);\n // Count files in header\n jQuery('.spbc_bad_type_count.' + updatedType + '_counter').text(countRowInTemplate);\n // Count rows in table\n let countExistingRows = table.find('.wp-list-table tbody tr').length;\n table.remove();\n jQuery('#spbc_scan_accordion_tab_' + updatedType).append(template);\n // Marked new rows\n jQuery(jQuery('#spbc_scan_accordion_tab_' + updatedType)\n .find('.wp-list-table tbody tr'))\n .each(function(index, element) {\n if (++index > countExistingRows) {\n jQuery(element).css('outline', '1px solid green');\n }\n });\n targetTab.click();\n } else {\n if (updatedType === 'analysis_log') {\n // eslint-disable-next-line max-len\n let tabHeaderTemplate = '<h3 class=\"ui-accordion-header ui-corner-top ui-state-default ui-accordion-icons ui-accordion-header-collapsed ui-corner-all\" role=\"tab\" id=\"ui-id-2\" aria-controls=\"spbc_scan_accordion_tab_analysis_log\" aria-selected=\"false\" aria-expanded=\"false\" tabindex=\"-1\"><span class=\"ui-accordion-header-icon ui-icon ui-icon-triangle-1-e\"></span><a href=\"#\">Analysis Log (<span class=\"spbc_bad_type_count analysis_log_counter\">' + countRowInTemplate + '</span>)</a></h3>';\n // eslint-disable-next-line max-len\n let tabBodyTemplate = '<div id=\"spbc_scan_accordion_tab_analysis_log\" class=\"ui-accordion-content ui-corner-bottom ui-helper-reset ui-widget-content\" aria-labelledby=\"ui-id-2\" role=\"tabpanel\" aria-hidden=\"true\" style=\"display: none;\"><p class=\"spbc_hint\">Files sent for analysis.</p><div id=\"spbc_tbl__scanner_analysis_log\" type=\"analysis_log\" class=\"tbl-root\">' +\n template +\n '</div>';\n jQuery('#spbc_scan_accordion_tab_critical').after(tabHeaderTemplate + tabBodyTemplate);\n targetTab.click();\n }\n }\n }\n setTimeout(function() {\n obj\n .html(tmp)\n .css({background: 'inherit'})\n .find('.column-primary .row-actions .tbl-row_action--' + data.add_action)\n .remove();\n spbcTblBulkActionsListen();\n spbcTblRowActionsListen();\n spbcStartShowHide();\n }, 5000);\n }\n if (spbcBulkAction) {\n spbcBulkAction.click();\n }\n}\n\n/**\n * Table pagination actions\n */\nfunction spbcTblPaginationListen() {\n let data = {action: 'spbc_tbl-pagination'};\n let params = {callback: spbcTblPaginationCallback, notJson: true};\n jQuery('.tbl-pagination--button').on('click', function() {\n jQuery(this).parents('.tbl-root').find('.tbl-pagination--button').attr('disabled', 'disabled');\n });\n jQuery('.tbl-pagination--go').on('click', function() {\n let self = jQuery(this);\n let obj = self.parents('.tbl-root');\n data.page = self.siblings('.tbl-pagination--curr_page').val();\n data.type = obj.attr('type');\n params.spinner = self.siblings('.tbl-preloader--small');\n spbcSendAJAXRequest(data, params, obj);\n });\n jQuery('.tbl-pagination--prev').on('click', function() {\n let self = jQuery(this);\n let obj = self.parents('.tbl-root');\n data.page = self.parents('.tbl-pagination--wrapper').attr('prev_page');\n data.type = obj.attr('type');\n params.spinner = self.siblings('.tbl-preloader--small');\n spbcSendAJAXRequest(data, params, obj);\n });\n jQuery('.tbl-pagination--next').on('click', function() {\n let self = jQuery(this);\n let obj = self.parents('.tbl-root');\n data.page = self.parents('.tbl-pagination--wrapper').attr('next_page');\n data.type = obj.attr('type');\n params.spinner = self.siblings('.tbl-preloader--small');\n spbcSendAJAXRequest(data, params, obj);\n });\n jQuery('.tbl-pagination--end').on('click', function() {\n let self = jQuery(this);\n let obj = self.parents('.tbl-root');\n data.page = self.parents('.tbl-pagination--wrapper').attr('last_page');\n data.type = obj.attr('type');\n params.spinner = self.siblings('.tbl-preloader--small');\n spbcSendAJAXRequest(data, params, obj);\n });\n jQuery('.tbl-pagination--start').on('click', function() {\n let self = jQuery(this);\n let obj = self.parents('.tbl-root');\n data.page = 1;\n data.type = obj.attr('type');\n params.spinner = self.siblings('.tbl-preloader--small');\n spbcSendAJAXRequest(data, params, obj);\n });\n}\n\n/**\n * Callback for Table pagination actions\n *\n * @param {obj|string} result\n * @param {obj} data\n * @param {obj} params\n * @param {obj} obj\n */\nfunction spbcTblPaginationCallback(result, data, params, obj) {\n jQuery(obj)\n .html(result)\n .find('.tbl-pagination--button').removeAttr('disabled');\n spbcTblBulkActionsListen();\n spbcTblRowActionsListen();\n spbcTblPaginationListen();\n spbcTblSortListen();\n spbcStartShowHide();\n}\n\n/**\n * Table sort actions\n */\nfunction spbcTblSortListen() {\n let params = {callback: spbcTblSortCallback, notJson: true};\n jQuery('.tbl-column-sortable').on('click', function(e) {\n if (e.target.classList.contains('tbl-sorting_indicator')) {\n let self = jQuery(this);\n let obj = self.parents('.tbl-root');\n let domain = obj.attr('type') == 'links'? jQuery('#spbc_tbl__scanner__outbound_links b').html(): '';\n let data = {\n action: 'spbc_tbl-sort',\n order_by: self.attr('id'),\n order: self.attr('sort_direction'),\n type: obj.attr('type'),\n domain: domain,\n };\n spbcSendAJAXRequest(data, params, obj);\n }\n });\n}\n\n/**\n * Callback for Table sort actions\n *\n * @param {obj|string} result\n * @param {obj} data\n * @param {obj} params\n * @param {obj} obj\n */\nfunction spbcTblSortCallback(result, data, params, obj) {\n jQuery(obj).html(result);\n spbcTblBulkActionsListen();\n spbcTblRowActionsListen();\n spbcTblPaginationListen();\n spbcTblSortListen();\n}\n\njQuery(document).ready(function() {\n // Table. Row actions handler\n spbcTblBulkActionsListen();\n spbcTblRowActionsListen();\n spbcTblPaginationListen();\n spbcTblSortListen();\n spbcEATUpdateIntervalStart();\n});\n\n/**\n * Switching table handler\n * Using by inline php code\n *\n * @param {obj} obj\n * @param {obj} table\n *\n */\nfunction spbcScannerSwitchTable(obj, table) {/* eslint-disable-line no-unused-vars */\n let _obj = jQuery(obj);\n let domain = _obj.parents('.row-actions').attr('uid');\n let data = {action: 'spbc_tbl-switch', type: table, domain: domain};\n let params = {callback: spbcTblPaginationCallback, notJson: true};\n spbcSendAJAXRequest(data, params, _obj.parents('.tbl-root'));\n}\n\n/**\n * Open/close table rows handler\n * Using by inline php code\n *\n * @param {string} blockId\n * @param {string} columnKey\n */\nfunction spbcShowHideRows(blockId, columnKey) {/* eslint-disable-line no-unused-vars */\n let className = '.' + columnKey + '_block_' + blockId;\n let block = jQuery(className);\n if (block.hasClass('mob_table_active')) {\n block.removeClass('mob_table_active');\n } else {\n block.addClass('mob_table_active');\n }\n}\n\n/**\n * Starts an interval to update the analysis log table and stats every 6 seconds.\n */\nfunction spbcEATUpdateIntervalStart() {\n setInterval(() => {\n // Check if the analysis log tab is present\n if (document.querySelector('div[refresh_control_tab=\"analysis_log\"]') !== null) {\n // Add a spinner to the analysis log tab header\n spbcEATAddSpinner();\n // Update the analysis log table\n spbcUpdateTableEAT();\n // Update the analysis log stats\n spbcUpdateStatsEAT();\n }\n }, 60000);\n}\n\n/**\n * Adds a spinner to the analysis log tab header if it doesn't already exist.\n */\nfunction spbcEATAddSpinner() {\n if (document.getElementById('analysis_log_counter_spinner') === null) {\n const refreshTab = document.querySelector('h3[aria-controls=\"spbc_scan_accordion_tab_analysis_log\"]');\n if (refreshTab !== null) {\n const spinner = document.createElement('img');\n spinner.class = 'spbc_preloader';\n // todo Probably we need a validation function of spbcSettings object\n spinner.alt = spbcSettings.spbcSpinner.altText;\n spinner.src = spbcSettings.spbcSpinner.imgSource;\n spinner.id = 'analysis_log_counter_spinner';\n spinner.style = 'display: none; height: 13px; position: relative; top: 2px; margin-left: 5px';\n refreshTab.append(spinner);\n }\n }\n spbcEATSwitchSpinner();\n}\n\n/**\n * Toggles the display of the spinner in the analysis log tab header.\n */\nfunction spbcEATSwitchSpinner() {\n const spinner = document.getElementById('analysis_log_counter_spinner');\n if (spinner !== null) {\n spinner.style.display = spinner.style.display === 'none' ?\n spinner.style.display = 'inline' :\n spinner.style.display = 'none';\n }\n}\n\n/**\n * Sends an AJAX request to update the analysis log table.\n */\nfunction spbcUpdateTableEAT() {\n // Define the tab name for the request\n let tabName = 'scanner';\n // Data object containing parameters for the AJAX request\n let data = {\n action: 'spbc_settings__draw_elements',\n tab_name: tabName,\n security: spbcSettings.ajax_nonce,\n };\n // Params object with additional settings for the AJAX request\n let currentParams = {\n callback: spbcUpdateTableCallbackEAT,\n notJson: true,\n additional: null,\n };\n // Send the AJAX request with the data and params objects\n spbcSendAJAXRequest( data, currentParams, null );\n}\n\n/**\n * Callback function to update the analysis log table with new HTML content.\n *\n * @param {string} allTablesHTML - The HTML content of all tables.\n */\nfunction spbcUpdateTableCallbackEAT(allTablesHTML) {\n // select the same table element to search in the current code and update from received\n const analysisTableSelector = '#spbc_tbl__scanner_analysis_log';\n const parser = new DOMParser();\n const allTablesHTMLParsed = parser.parseFromString(allTablesHTML, 'text/html');\n\n let newTabElement = null;\n let newTabElementInnerHTML = '';\n let currentTabElement = null;\n\n // get new analysis table element and its HTML\n newTabElement = allTablesHTMLParsed.querySelector(analysisTableSelector);\n if (newTabElement !== null && newTabElement.innerHTML !== '') {\n newTabElementInnerHTML = newTabElement.innerHTML;\n }\n\n // get current analysis table element and its HTML\n currentTabElement = document.querySelector(analysisTableSelector);\n if (currentTabElement !== null && currentTabElement.innerHTML === '') {\n currentTabElement = null;\n }\n\n // update analysis table element if it's changed and new data presented\n if (currentTabElement !== null && newTabElementInnerHTML !== '') {\n currentTabElement.innerHTML = newTabElementInnerHTML;\n }\n}\n\n/**\n * Sends an AJAX request to update the analysis log stats.\n */\nfunction spbcUpdateStatsEAT() {\n // Data object containing parameters for the AJAX request\n let data = {\n action: 'spbc_analysyis_files_stats__get_html',\n sub_action: 'give_me_html',\n security: spbcSettings.ajax_nonce,\n };\n // Params object with additional settings for the AJAX request\n let params = {\n callback: spbcUpdateStatsCallbackEAT,\n notJson: true,\n };\n // Send the AJAX request with the data and params objects\n spbcSendAJAXRequest(data, params);\n}\n\n/**\n * Callback function to update the analysis log stats with new HTML content.\n *\n * @param {string} newStatsHtml - The new HTML content for the stats.\n */\nfunction spbcUpdateStatsCallbackEAT(newStatsHtml) {\n // Get the element that displays the analysis files stats\n let info = document.getElementById('spbc_analysis_files_stats');\n // If the element exists, update its inner HTML with the new stats\n if (info) {\n info.innerHTML = newStatsHtml;\n }\n // Toggle the display of the spinner in the analysis log tab header\n spbcEATSwitchSpinner();\n}\n"],"names":["let","spbcBulkAction","noConfirmActions","spbcGetNoConfirmActions","spbcPublic","spbcReloadAccordion","interactControlTab","updateText","spbcSendAJAXRequest","action","notJson","callback","result","data","params","obj","jQuery","accordion","html","header","heightStyle","collapsible","active","spbcTblBulkActionsListen","spbcTblRowActionsListen","spbcTblPaginationListen","spbcTblSortListen","spbcStartShowHide","interactScannerTab","controlTab","refreshControlTabSelector","headerUpdateStatus","headerSelector","appendTo","click","setAttribute","hide","off","on","spbcScanner","alert","spbcTableLocalize","scannerIsActive","self","this","spbcCurrentAccordionName","parentElement","id","console","log","siblings","children","first","selectedIndex","value","indexOf","any","includes","confirm","spbcTable","warning_bulk","add_action","status","parents","attr","spbcScannerCureBulk","spbcScannerRestoreBulk","selectedItems","closest","find","fileIds","each","index","element","elementId","val","push","file_ids","button","spinner","out","counters","total","updated","skipped","failed","queued","spbcModal","open","put","files_sent_counter","errorOutput","errorText","comment","putError","timeout","e","spbcScannerAnalysisLogDeleteFromLog","sendAction","items","msg","show","ip","spbcSecLogsFilterIp","prop","setTimeout","is","restricted","current","allItems","selectedIds","selector","length","security","spbcSettings","ajax_nonce","ajax","type","url","ajaxurl","beforeSend","success","displayData","divWrapper","document","createElement","pMessage","pCounters","divFiles","bSeeMore","pSeeMore","failedToCure","innerHTML","append","hasOwnProperty","failed_to_cure","join","message","cured_on_request","outerHTML","addEventListener","currentAccordionName","isQuarantineLog","failedToRestore","failed_to_restore","restored_on_request","cols","page_url","parent","page_id","spbcTblRowActionsCallback","hideSupportLink","yesButtonText","noButtonText","fileName","firstChild","confirmationHeader","warning_default","confirmationText","confirmed","noConfirmActionsEmpty","defaults","JSON","parse","no_confirm_row_actions","color","css","background","prepend","fadeOut","file_info","window","prompt","error","temp_html","tmp","undefined","updated_template","updatedType","updated_template_type","template","countRowInTemplate","targetTab","table","text","countExistingRows","remove","tabHeaderTemplate","tabBodyTemplate","after","spbcTblPaginationCallback","page","removeAttr","spbcTblSortCallback","domain","target","classList","contains","order_by","order","spbcScannerSwitchTable","_obj","spbcShowHideRows","blockId","columnKey","block","hasClass","removeClass","addClass","spbcEATUpdateIntervalStart","setInterval","querySelector","spbcEATAddSpinner","spbcUpdateTableEAT","spbcUpdateStatsEAT","refreshTab","getElementById","class","alt","spbcSpinner","altText","src","imgSource","style","spbcEATSwitchSpinner","display","tab_name","spbcUpdateTableCallbackEAT","additional","allTablesHTML","analysisTableSelector","newTabElementInnerHTML","currentTabElement","newTabElement","DOMParser","parseFromString","sub_action","spbcUpdateStatsCallbackEAT","newStatsHtml","info","ready"],"mappings":"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"}