Plugin Directory

Changeset 3049762


Ignore:
Timestamp:
03/12/2024 12:50:25 PM (2 years ago)
Author:
alexandergull
Message:

Update to 2.130

Location:
security-malware-firewall
Files:
1047 added
11 deleted
22 edited

Legend:

Unmodified
Added
Removed
  • security-malware-firewall/trunk/inc/admin-templates/field-templates/time.php

    r2933306 r3049762  
    1010     . ($data['required'] ? ' required="required"' : '')
    1111     . '>';
    12 echo '<input type = "hidden" id = "user_timezone" name = "user_timezone" value = "">';
  • security-malware-firewall/trunk/inc/spbc-admin.php

    r3041922 r3049762  
    11<?php
    22
     3use CleantalkSP\SpbctWP\Cron;
    34use CleantalkSP\SpbctWP\Scanner\Cure;
    45use CleantalkSP\SpbctWP\Escape;
     
    230231    }
    231232    return $res;
     233}
     234
     235add_filter('upgrader_post_install', 'spbc_plugin_install__run_vulnerability_check_cron', 999, 3);
     236
     237/**
     238 * Hook wrapper for upgrader_post_install. Run Vulnerability request to research.cleantalk.org to fill the vulnerabilities database
     239 * when a plugin installation performed.
     240 * @param $response
     241 * @param $hook_extra
     242 * @param $result
     243 * @return void
     244 * @psalm-suppress UnusedParam
     245 */
     246function spbc_plugin_install__run_vulnerability_check_cron($response, $hook_extra, $result)
     247{
     248    if (
     249            isset($hook_extra, $hook_extra['type'], $hook_extra['action']) &&
     250            $hook_extra['type'] === 'plugin' &&
     251            $hook_extra['action'] === 'install'
     252    ) {
     253        Cron::updateTask('check_vulnerabilities', 'spbc_security_check_vulnerabilities', 86400, time() + 30);
     254    }
    232255}
    233256
  • security-malware-firewall/trunk/inc/spbc-auth.php

    r3028558 r3049762  
    346346    $brand_name = $spbc->data['wl_brandname'];
    347347    $support_link = $spbc->data['wl_support_url'];
     348    $code_lifetime = round(SPBC_2FA_KEY_TTL / 60, 0, PHP_ROUND_HALF_DOWN);
    348349
    349350    wp_mail(
     
    356357        // Message
    357358        sprintf(
    358             __('Two factor authentication code for user "%s" on "%s" website is %d' . PHP_EOL . 'Lifetime of the code is 5 minutes.' . PHP_EOL . PHP_EOL . esc_html__($brand_name) . ' ' . esc_url($support_link), 'security-malware-firewall'),
     359            __('Two factor authentication code for user "%s" on "%s" website is %d' . PHP_EOL . 'Lifetime of the code is %d minutes.' . PHP_EOL . PHP_EOL . esc_html__($brand_name) . ' ' . esc_url($support_link), 'security-malware-firewall'),
    359360            $user->user_login,
    360361            parse_url(get_option('home'), PHP_URL_HOST),
    361             $key
     362            $key,
     363            $code_lifetime
    362364        )
    363365    );
  • security-malware-firewall/trunk/inc/spbc-scanner.php

    r3041922 r3049762  
    192192    global $wpdb;
    193193    $count = $wpdb->get_results(
    194         'SELECT COUNT(link_id) AS cnt FROM ' . SPBC_TBL_SCAN_LINKS,
     194        'SELECT COUNT(DISTINCT domain)
     195                FROM ' . SPBC_TBL_SCAN_LINKS . ';',
    195196        OBJECT_K
    196197    );
     
    421422    //Heuristic
    422423    $heuristic_scanner = new \CleantalkSP\Common\Scanner\HeuristicAnalyser\Controller();
    423     $file_to_check = new \CleantalkSP\Common\Scanner\HeuristicAnalyser\Structures\FileInfo(
    424         $file_path,
    425         $full_hash
    426     );
     424    $file_to_check = new Scanner\FileInfoExtended(array('path' => $file_path));
    427425    $result_heur = $heuristic_scanner->scanFile($file_to_check, $root_path);
    428426
     
    11431141                    status <> "QUARANTINED" AND
    11441142                    status <> "APPROVED_BY_USER" AND
    1145                     status <> "APPROVED_BY_CT"
     1143                    status <> "APPROVED_BY_CT" AND
     1144                    status <> "OK"
    11461145                    )
    11471146                AND (
    11481147                    last_sent IS NULL OR
    11491148                    pscan_status = "DANGEROUS"
    1150                 ) 
     1149                )
    11511150            )';
    11521151            break;
     
    12411240                    // Getting file && API call
    12421241
    1243                     $previous = json_decode($file_info['previous_state'], true);
     1242                    $previous = is_string($file_info['previous_state'])
     1243                        ? json_decode($file_info['previous_state'], true)
     1244                        : false;
    12441245
    12451246                    if ( ! $previous ) {
  • security-malware-firewall/trunk/inc/spbc-settings.php

    r3041922 r3049762  
    589589                                'parent'     => 'scanner__auto_start_manual',
    590590                                'required'   => true,
     591                            ),
     592                            'scanner__auto_start_manual_tz'                => array(
     593                                'type'       => 'field',
     594                                'input_type' => 'hidden',
     595                                'value'      => get_option('gmt_offset'),
    591596                            ),
    592597                            'scanner__outbound_links'                        => array(
     
    11251130                $elem['name'] = $elem_name;
    11261131
    1127                 $elem['value'] = isset($spbc->{$elem['value_source']}[ $elem_name ])
    1128                     ? $spbc->{$elem['value_source']}[ $elem_name ]
    1129                     : 0;
     1132                if ( ! isset($elem['value']) ) {
     1133                    $elem['value'] = isset($spbc->{$elem['value_source']}[ $elem_name ])
     1134                        ? $spbc->{$elem['value_source']}[ $elem_name ]
     1135                        : 0;
     1136                }
    11301137
    11311138                if (isset($elem['parent'])) {
     
    17571764    echo '<br/>';
    17581765
     1766    if ( is_main_site() ) {
     1767        /*
     1768         * Collect VA calls ro research.cleantalk.org
     1769         */
     1770        //get next call from Cron
     1771        $cron_task_info = SpbcCron::getTask('check_vulnerabilities');
     1772        $next_call = !empty($cron_task_info['next_call'])
     1773            ? date('M d Y H:i:s', (int)($cron_task_info['next_call'] + $spbc->data['site_utc_offset_in_seconds']))
     1774            : 'unknown';
     1775        $va_next_request = sprintf('%s %s', __('next call on', 'security-malware-firewall'), $next_call);
     1776
     1777        //get last call from Data
     1778        $last_call = !empty($spbc->data['spbc_security_check_vulnerabilities_last_call'])
     1779            ? date('M d Y H:i:s', (int)($spbc->data['spbc_security_check_vulnerabilities_last_call'] + $spbc->data['site_utc_offset_in_seconds']))
     1780            : 'unknown';
     1781        $va_last_request = sprintf('%s %s', __('last call on', 'security-malware-firewall'), $last_call);
     1782
     1783        $va_text = __('Closest vulnerabilities check requests preformed to', 'security-malware-firewall')
     1784            . ' '
     1785            . '<a href="https://research.cleantalk.org">research.cleantalk.org</a>';
     1786
     1787        $va_text = sprintf('%s: %s, %s', $va_text, $va_last_request, $va_next_request);
     1788        echo(Escape::escKsesPreset($va_text, 'spbc_settings__display__notifications'));
     1789    }
    17591790
    17601791    //cdn checker data
     
    21512182
    21522183    // HEADER
    2153     $message_about_log = sprintf(
    2154         __('This table contains details of all brute-force attacks and security actions made in the past 24 hours. Number of the last records shown: %d.', 'security-malware-firewall'),
    2155         SPBC_LAST_ACTIONS_TO_VIEW
    2156     );
     2184    $message_about_log = __('This table contains details of all brute-force attacks and security actions made in the past 24 hours.', 'security-malware-firewall');
    21572185
    21582186    if ( ! $spbc->data["wl_mode_enabled"] ) {
     
    28152843    global $spbc;
    28162844
    2817     $accessible_urls = $spbc->scanner_listing['accessible_urls'];
     2845    $accessible_urls = is_array($spbc->scanner_listing) && !empty($spbc->scanner_listing['accessible_urls'])
     2846        ? $spbc->scanner_listing['accessible_urls']
     2847        : array();
    28182848
    28192849    if (
     
    28382868    $out = array();
    28392869
    2840     $accessible_urls = $spbc->scanner_listing['accessible_urls'];
     2870    $accessible_urls = is_array($spbc->scanner_listing) && !empty($spbc->scanner_listing['accessible_urls'])
     2871        ? $spbc->scanner_listing['accessible_urls']
     2872        : array();
    28412873
    28422874    if (
     
    32853317                'html_before'       =>
    32863318                    sprintf(__('Links for <b>%s</b> domain.', 'security-malware-firewall'), Post::get('domain', null, 'word')) . ' '
    3287                     . sprintf(__('%sSee all domains%s', 'security-malware-firewall'), '<a href="#" onclick="spbc_scanner__switch_table(this, \'domains\');">', '</a>')
     3319                    . sprintf(__('%sSee all domains%s', 'security-malware-firewall'), '<a href="javascript://" onclick="spbc_scanner__switch_table(this, \'outbound_links\');">', '</a>')
    32883320                    . '<br /><br />',
    32893321                'func_data_prepare' => 'spbc_field_scanner__prepare_data__links',
  • security-malware-firewall/trunk/inc/spbc-tools.php

    r3041922 r3049762  
    496496    $period = $settings['scanner__auto_start__set_period'] ?: $period;
    497497
    498     $timezone = $settings['scanner__auto_start_manual_tz'] ?: (int) Post::get('user_timezone');
     498    $timezone = $settings['scanner__auto_start_manual_tz'] ?: (int) Post::get('spbc_settings[scanner__auto_start_manual_tz]');
    499499
    500500    $hour_minutes = $settings['scanner__auto_start_manual_time']
     
    502502        : explode(':', (string)current_time('H:i'));
    503503    $start_time = mktime((int)$hour_minutes[0], (int)$hour_minutes[1]) - $timezone * 3600 + $period;
     504
     505    // Hard fix - increments one more $period if the $start_time calculated in the past
     506    if ( time() > $start_time ) {
     507        $start_time += $period;
     508    }
    504509
    505510    return array(
  • security-malware-firewall/trunk/js/spbc-table.min.js

    r3022805 r3049762  
    1 function spbc_reload_accordion(){spbc_sendAJAXRequest({action:"spbc_scanner_tab__reload_accordion"},{notJson:!0,callback:function(t,e,a,n){jQuery(n).accordion("destroy"),jQuery(n).html(t),jQuery(n).accordion({header:"h3",heightStyle:"content",collapsible:!0,active:!1}),spbc_tbl__bulk_actions__listen(),spbc_tbl__row_actions__listen(),spbc_tbl__pagination__listen(),spbc_tbl__sort__listen(),spbcStartShowHide()}},jQuery("#spbc_scan_accordion"))}function spbc_tbl__bulk_actions__listen(){jQuery(".tbl-bulk_actions-all--apply").off("click").on("click",function(){if(spbc_scanner.active)alert(spbcTableLocalize.scannerIsActive);else{var t=jQuery(this),a=t.siblings("select").children()[t.siblings("select").first()[0].selectedIndex].value;if(-1!==["approve","disapprove","send","check_analysis_status","approve_page","disapprove_page","cure","delete_from_analysis_log"].indexOf(a)){if(confirm(spbcTable.warning_bulk)){var e={action:"spbc_tbl-action--bulk",add_action:a,status:t.parents(".tbl-root").attr("type")};if("cure"===a){var n=t.closest("#spbc_tbl__scanner_cure_log").find(".cb-select");let a=[];n.each(function(t,e){e=jQuery(e).val();a.push(e)}),e.selectedIds=a}if("delete_from_analysis_log"===a){n=t.closest("#spbc_tbl__scanner_analysis_log").find(".cb-select");let a=[];n.each(function(t,e){e=jQuery(e).val();a.push(e)}),e.file_ids=a}n={button:this,spinner:t.children(".tbl-preloader--small"),callback:function(t){var e;spbc_reload_accordion(),"check_analysis_status"===a&&(e="<p> Analysis status updated. Total: "+t.counters.total+", updated: "+t.counters.updated+", skipped: "+t.counters.skipped+", failed: "+t.counters.failed+", queued: "+t.counters.queued+"</p>",spbcModal.open().put(e)),"send"===a&&(e="<p> Files have been sent: "+t.files_sent_counter+"</p>",spbcModal.open().put(e))},errorOutput:function(t,e){e&&(t=t+"<br>Additional information:<br>"+e),spbcModal.open().putError(t)},timeout:6e4};spbc_sendAJAXRequest(e,n)}}else alert("This action is not supported for all files yet =(")}}),jQuery(".tbl-bulk_actions--apply").off("click").on("click",function(t){if(spbc_bulk_action||confirm(spbcTable.warning_bulk)){var a=spbc_bulk_action||jQuery(this),n=(spbc_bulk_action=a).siblings("select").children()[a.siblings("select").first()[0].selectedIndex].value;if("cure"===n)spbc_scanner__cure_selected(jQuery(this));else if("delete_from_analysis_log"===n)spbc_scanner_analysis_log_delete_from_log(jQuery(this));else if("allow"===n||"ban"===n){let e="ban"===n?"deny":n;var s=a.parents(".tbl-root").find(".cb-select:checked"),s=(s&&(a.children(".tbl-preloader--small").show(),s.each(function(){var t=jQuery(this).parents("tr").find(".tbl-row_action--"+n).data("ip");spbc_sec_logs__filter_ip(t,e,!0),jQuery(this).prop("checked",!1)})),a.children(".tbl-preloader--small").hide(),"allow"===n?"Allowed":"Banned"),s="<p> Success. Selected IPs have been "+s+". Changes will be applied within 10 minutes.</p>";spbcModal.open().put(s),void setTimeout(spbc_reload_accordion,1900)}else"-1"!==n&&a.parents(".tbl-root").find(".cb-select").is(":checked")?(a.children(".tbl-preloader--small").show(),a.parents(".tbl-root").find(".cb-select:checked").first().parents("tr").find(".tbl-row_action--"+n)[0]?(a.parents(".tbl-root").find(".cb-select:checked").first().parents("tr").find(".tbl-row_action--"+n).click(),a.parents(".tbl-root").find(".cb-select:checked").first().prop("checked",!1)):(a.parents(".tbl-root").find(".cb-select:checked").first().prop("checked",!1),a.click())):(a.children(".tbl-preloader--small").hide(),spbc_bulk_action=null,"check_analysis_status"===n&&spbcModal.open().put("<p> All available files are updated.</p>"),"send"===n&&spbcModal.open().put("<p> All available files are sent.</p>"),setTimeout(spbc_reload_accordion,1900))}})}function spbc_scanner__cure_selected(e){var t=e.closest("#spbc_tbl__scanner_cure_log").find(".cb-select:checked");let a=[];0===t.length&&alert("Please, select elements."),t.each(function(t,e){e=jQuery(e).val();a.push(e)});t={action:"spbc_cure_selected",security:spbcSettings.ajax_nonce,selectedIds:a};jQuery.ajax({type:"POST",url:spbcSettings.ajaxurl,data:t,beforeSend:function(){e.closest("#spbc_tbl__scanner_cure_log").find(".tbl-button---white_blue .tbl-preloader--in_button").show()},success:function(t){e.closest("#spbc_tbl__scanner_cure_log").find(".tbl-button---white_blue .tbl-preloader--in_button").hide(),t.success?(spbcModal.open().put(t.data),document.addEventListener("spbcModalClosed",function(t){document.location.reload()})):spbcModal.open().putError(t.data)}})}function spbc_tbl__row_actions__listen(){jQuery(".tbl-row_action--ajax").off("click").on("click",function(){var t,e,a,n;console.log("spbc_tbl__row_actions__listen click"),spbc_scanner.active?alert(spbcTableLocalize.scannerIsActive):(e={action:"spbc_tbl-action--row",add_action:(t=jQuery(this)).attr("row-action"),id:t.parents(".row-actions").attr("uid"),cols:t.parents(".row-actions").attr("cols_amount"),page_url:t.parent().attr("uid"),page_id:t.parent().attr("page_id")},a={callback:spbc_tbl__row_actions__callback,errorOutput:function(t){spbcModal.open().putError(t)},spinner:t.parent().siblings(".tbl-preloader--tiny")},!spbc_bulk_action&&(n=spbcTable["warning_"+t.attr("row-action")]||spbcTable.warning_default,"copy_file_info"===e.add_action||"check_analysis_status"===e.add_action||confirm(n))&&spbc_sendAJAXRequest(e,a,t.parents("tr")),spbc_bulk_action&&spbc_sendAJAXRequest(e,a,t.parents("tr")))})}function spbc_tbl__row_actions__callback(t,e,a,n){if(t.color&&n.css({background:t.background,color:t.color}),t.html&&(n.parent().parent().parent().prepend(t.html),setTimeout(function(){n.fadeOut(300)},1500),spbc_bulk_action||setTimeout(spbc_reload_accordion,1900)),"copy_file_info"===e.add_action&&(!0===t.success&&t.data.file_info?window.prompt("Copy the file info below and send it to [email protected]: ",t.data.file_info):(c=void 0!==t.data.error?t.data.error:"Unknown copy_file_info error",spbcModal.open().putError(c))),t.temp_html){var s=n.html();if(n.html(t.temp_html),void 0!==t.updated_template){var c=t.updated_template_type,t=t.updated_template,l=jQuery(t).find(".wp-list-table tbody tr").length,i=jQuery('[aria-controls="spbc_scan_accordion_tab_'+c+'"]');if(0<i.length){var o=jQuery("#spbc_tbl__scanner_"+c);jQuery(".spbc_bad_type_count."+c+"_counter").text(l);let a=o.find(".wp-list-table tbody tr").length;o.remove(),jQuery("#spbc_scan_accordion_tab_"+c).append(t),jQuery(jQuery("#spbc_scan_accordion_tab_"+c).find(".wp-list-table tbody tr")).each(function(t,e){++t>a&&jQuery(e).css("outline","1px solid green")}),i.click()}else"analysis_log"===c&&(o='<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">'+l+"</span>)</a></h3>",c='<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">'+t+"</div>",jQuery("#spbc_scan_accordion_tab_critical").after(o+c),i.click())}setTimeout(function(){n.html(s).css({background:"inherit"}).find(".column-primary .row-actions .tbl-row_action--"+e.add_action).remove(),spbc_tbl__bulk_actions__listen(),spbc_tbl__row_actions__listen(),spbcStartShowHide()},5e3)}spbc_bulk_action&&spbc_bulk_action.click()}function spbc_tbl__pagination__listen(){var a={action:"spbc_tbl-pagination"},n={callback:spbc_tbl__pagination__callback,notJson:!0};jQuery(".tbl-pagination--button").on("click",function(){jQuery(this).parents(".tbl-root").find(".tbl-pagination--button").attr("disabled","disabled")}),jQuery(".tbl-pagination--go").on("click",function(){var t=jQuery(this),e=t.parents(".tbl-root");a.page=t.siblings(".tbl-pagination--curr_page").val(),a.type=e.attr("type"),n.spinner=t.siblings(".tbl-preloader--small"),spbc_sendAJAXRequest(a,n,e)}),jQuery(".tbl-pagination--prev").on("click",function(){var t=jQuery(this),e=t.parents(".tbl-root");a.page=t.parents(".tbl-pagination--wrapper").attr("prev_page"),a.type=e.attr("type"),n.spinner=t.siblings(".tbl-preloader--small"),spbc_sendAJAXRequest(a,n,e)}),jQuery(".tbl-pagination--next").on("click",function(){var t=jQuery(this),e=t.parents(".tbl-root");a.page=t.parents(".tbl-pagination--wrapper").attr("next_page"),a.type=e.attr("type"),n.spinner=t.siblings(".tbl-preloader--small"),spbc_sendAJAXRequest(a,n,e)}),jQuery(".tbl-pagination--end").on("click",function(){var t=jQuery(this),e=t.parents(".tbl-root");a.page=t.parents(".tbl-pagination--wrapper").attr("last_page"),a.type=e.attr("type"),n.spinner=t.siblings(".tbl-preloader--small"),spbc_sendAJAXRequest(a,n,e)}),jQuery(".tbl-pagination--start").on("click",function(){var t=jQuery(this),e=t.parents(".tbl-root");a.page=1,a.type=e.attr("type"),n.spinner=t.siblings(".tbl-preloader--small"),spbc_sendAJAXRequest(a,n,e)})}function spbc_scanner__switch_table(t,e){t=jQuery(t),console.log(t.parents(".row-actions").attr("uid")),e={action:"spbc_tbl-switch",type:e,domain:t.parents(".row-actions").attr("uid")};spbc_sendAJAXRequest(e,{callback:spbc_tbl__pagination__callback,notJson:!0},t.parents(".tbl-root"))}function spbc_tbl__pagination__callback(t,e,a,n){jQuery(n).html(t).find(".tbl-pagination--button").removeAttr("disabled"),spbc_tbl__bulk_actions__listen(),spbc_tbl__row_actions__listen(),spbc_tbl__pagination__listen(),spbc_tbl__sort__listen(),spbcStartShowHide()}function spbc_tbl__sort__listen(){var a={callback:spbc_tbl__sort__callback,notJson:!0};jQuery(".tbl-column-sortable").on("click",function(t){var e;t.target.classList.contains("tbl-sorting_indicator")&&(e=(t=jQuery(this)).parents(".tbl-root"),t={action:"spbc_tbl-sort",order_by:t.attr("id"),order:t.attr("sort_direction"),type:e.attr("type")},spbc_sendAJAXRequest(t,a,e))})}function spbc_tbl__sort__callback(t,e,a,n){jQuery(n).html(t),spbc_tbl__bulk_actions__listen(),spbc_tbl__row_actions__listen(),spbc_tbl__pagination__listen(),spbc_tbl__sort__listen()}function show_hide_rows(t,e){e=jQuery("."+e+"_block_"+t);e.hasClass("mob_table_active")?e.removeClass("mob_table_active"):e.addClass("mob_table_active")}spbc_bulk_action=null,jQuery(document).ready(function(){spbc_tbl__bulk_actions__listen(),spbc_tbl__row_actions__listen(),spbc_tbl__pagination__listen(),spbc_tbl__sort__listen()});
     1function spbc_reload_accordion(){spbc_sendAJAXRequest({action:"spbc_scanner_tab__reload_accordion"},{notJson:!0,callback:function(t,e,a,n){jQuery(n).accordion("destroy"),jQuery(n).html(t),jQuery(n).accordion({header:"h3",heightStyle:"content",collapsible:!0,active:!1}),spbc_tbl__bulk_actions__listen(),spbc_tbl__row_actions__listen(),spbc_tbl__pagination__listen(),spbc_tbl__sort__listen(),spbcStartShowHide()}},jQuery("#spbc_scan_accordion"))}function spbc_tbl__bulk_actions__listen(){jQuery(".tbl-bulk_actions-all--apply").off("click").on("click",function(){if(spbc_scanner.active)alert(spbcTableLocalize.scannerIsActive);else{var t=jQuery(this),a=t.siblings("select").children()[t.siblings("select").first()[0].selectedIndex].value;if(-1!==["approve","disapprove","send","check_analysis_status","approve_page","disapprove_page","cure","delete_from_analysis_log"].indexOf(a)){if(confirm(spbcTable.warning_bulk)){var e={action:"spbc_tbl-action--bulk",add_action:a,status:t.parents(".tbl-root").attr("type")};if("cure"===a){var n=t.closest("#spbc_tbl__scanner_cure_log").find(".cb-select");let a=[];n.each(function(t,e){e=jQuery(e).val();a.push(e)}),e.selectedIds=a}if("delete_from_analysis_log"===a){n=t.closest("#spbc_tbl__scanner_analysis_log").find(".cb-select");let a=[];n.each(function(t,e){e=jQuery(e).val();a.push(e)}),e.file_ids=a}n={button:this,spinner:t.children(".tbl-preloader--small"),callback:function(t){var e;spbc_reload_accordion(),"check_analysis_status"===a&&(e="<p> Analysis status updated. Total: "+t.counters.total+", updated: "+t.counters.updated+", skipped: "+t.counters.skipped+", failed: "+t.counters.failed+", queued: "+t.counters.queued+"</p>",spbcModal.open().put(e)),"send"===a&&(e="<p> Files have been sent: "+t.files_sent_counter+"</p>",spbcModal.open().put(e))},errorOutput:function(t,e){e&&(t=t+"<br>Additional information:<br>"+e),spbcModal.open().putError(t)},timeout:6e4};spbc_sendAJAXRequest(e,n)}}else alert("This action is not supported for all files yet =(")}}),jQuery(".tbl-bulk_actions--apply").off("click").on("click",function(t){if(spbc_bulk_action||confirm(spbcTable.warning_bulk)){var a=spbc_bulk_action||jQuery(this),n=(spbc_bulk_action=a).siblings("select").children()[a.siblings("select").first()[0].selectedIndex].value;if("cure"===n)spbc_scanner__cure_selected(jQuery(this));else if("delete_from_analysis_log"===n)spbc_scanner_analysis_log_delete_from_log(jQuery(this));else if("allow"===n||"ban"===n){let e="ban"===n?"deny":n;var s=a.parents(".tbl-root").find(".cb-select:checked"),s=(s&&(a.children(".tbl-preloader--small").show(),s.each(function(){var t=jQuery(this).parents("tr").find(".tbl-row_action--"+n).data("ip");spbc_sec_logs__filter_ip(t,e,!0),jQuery(this).prop("checked",!1)})),a.children(".tbl-preloader--small").hide(),"allow"===n?"Allowed":"Banned"),s="<p> Success. Selected IPs have been "+s+". Changes will be applied within 10 minutes.</p>";spbcModal.open().put(s),void setTimeout(spbc_reload_accordion,1900)}else"-1"!==n&&a.parents(".tbl-root").find(".cb-select").is(":checked")?(a.children(".tbl-preloader--small").show(),a.parents(".tbl-root").find(".cb-select:checked").first().parents("tr").find(".tbl-row_action--"+n)[0]?(a.parents(".tbl-root").find(".cb-select:checked").first().parents("tr").find(".tbl-row_action--"+n).click(),a.parents(".tbl-root").find(".cb-select:checked").first().prop("checked",!1)):(a.parents(".tbl-root").find(".cb-select:checked").first().prop("checked",!1),a.click())):(a.children(".tbl-preloader--small").hide(),spbc_bulk_action=null,"check_analysis_status"===n&&spbcModal.open().put("<p> All available files are updated.</p>"),"send"===n&&spbcModal.open().put("<p> All available files are sent.</p>"),setTimeout(spbc_reload_accordion,1900))}})}function spbc_scanner__cure_selected(e){var t=e.closest("#spbc_tbl__scanner_cure_log").find(".cb-select:checked");let a=[];0===t.length&&alert("Please, select elements."),t.each(function(t,e){e=jQuery(e).val();a.push(e)});t={action:"spbc_cure_selected",security:spbcSettings.ajax_nonce,selectedIds:a};jQuery.ajax({type:"POST",url:spbcSettings.ajaxurl,data:t,beforeSend:function(){e.closest("#spbc_tbl__scanner_cure_log").find(".tbl-button---white_blue .tbl-preloader--in_button").show()},success:function(t){e.closest("#spbc_tbl__scanner_cure_log").find(".tbl-button---white_blue .tbl-preloader--in_button").hide(),t.success?(spbcModal.open().put(t.data),document.addEventListener("spbcModalClosed",function(t){document.location.reload()})):spbcModal.open().putError(t.data)}})}function spbc_tbl__row_actions__listen(){jQuery(".tbl-row_action--ajax").off("click").on("click",function(){var t,e,a,n;console.log("spbc_tbl__row_actions__listen click"),spbc_scanner.active?alert(spbcTableLocalize.scannerIsActive):(e={action:"spbc_tbl-action--row",add_action:(t=jQuery(this)).attr("row-action"),id:t.parents(".row-actions").attr("uid"),cols:t.parents(".row-actions").attr("cols_amount"),page_url:t.parent().attr("uid"),page_id:t.parent().attr("page_id")},a={callback:spbc_tbl__row_actions__callback,errorOutput:function(t){spbcModal.open().putError(t)},spinner:t.parent().siblings(".tbl-preloader--tiny")},!spbc_bulk_action&&(n=spbcTable["warning_"+t.attr("row-action")]||spbcTable.warning_default,"copy_file_info"===e.add_action||"check_analysis_status"===e.add_action||confirm(n))&&spbc_sendAJAXRequest(e,a,t.parents("tr")),spbc_bulk_action&&spbc_sendAJAXRequest(e,a,t.parents("tr")))})}function spbc_tbl__row_actions__callback(t,e,a,n){if(t.color&&n.css({background:t.background,color:t.color}),t.html&&(n.parent().parent().parent().prepend(t.html),setTimeout(function(){n.fadeOut(300)},1500),spbc_bulk_action||setTimeout(spbc_reload_accordion,1900)),"copy_file_info"===e.add_action&&(!0===t.success&&t.data.file_info?window.prompt("Copy the file info below and send it to [email protected]: ",t.data.file_info):(c=void 0!==t.data.error?t.data.error:"Unknown copy_file_info error",spbcModal.open().putError(c))),t.temp_html){var s=n.html();if(n.html(t.temp_html),void 0!==t.updated_template){var c=t.updated_template_type,t=t.updated_template,l=jQuery(t).find(".wp-list-table tbody tr").length,i=jQuery('[aria-controls="spbc_scan_accordion_tab_'+c+'"]');if(0<i.length){var o=jQuery("#spbc_tbl__scanner_"+c);jQuery(".spbc_bad_type_count."+c+"_counter").text(l);let a=o.find(".wp-list-table tbody tr").length;o.remove(),jQuery("#spbc_scan_accordion_tab_"+c).append(t),jQuery(jQuery("#spbc_scan_accordion_tab_"+c).find(".wp-list-table tbody tr")).each(function(t,e){++t>a&&jQuery(e).css("outline","1px solid green")}),i.click()}else"analysis_log"===c&&(o='<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">'+l+"</span>)</a></h3>",c='<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">'+t+"</div>",jQuery("#spbc_scan_accordion_tab_critical").after(o+c),i.click())}setTimeout(function(){n.html(s).css({background:"inherit"}).find(".column-primary .row-actions .tbl-row_action--"+e.add_action).remove(),spbc_tbl__bulk_actions__listen(),spbc_tbl__row_actions__listen(),spbcStartShowHide()},5e3)}spbc_bulk_action&&spbc_bulk_action.click()}function spbc_tbl__pagination__listen(){var a={action:"spbc_tbl-pagination"},n={callback:spbc_tbl__pagination__callback,notJson:!0};jQuery(".tbl-pagination--button").on("click",function(){jQuery(this).parents(".tbl-root").find(".tbl-pagination--button").attr("disabled","disabled")}),jQuery(".tbl-pagination--go").on("click",function(){var t=jQuery(this),e=t.parents(".tbl-root");a.page=t.siblings(".tbl-pagination--curr_page").val(),a.type=e.attr("type"),n.spinner=t.siblings(".tbl-preloader--small"),spbc_sendAJAXRequest(a,n,e)}),jQuery(".tbl-pagination--prev").on("click",function(){var t=jQuery(this),e=t.parents(".tbl-root");a.page=t.parents(".tbl-pagination--wrapper").attr("prev_page"),a.type=e.attr("type"),n.spinner=t.siblings(".tbl-preloader--small"),spbc_sendAJAXRequest(a,n,e)}),jQuery(".tbl-pagination--next").on("click",function(){var t=jQuery(this),e=t.parents(".tbl-root");a.page=t.parents(".tbl-pagination--wrapper").attr("next_page"),a.type=e.attr("type"),n.spinner=t.siblings(".tbl-preloader--small"),spbc_sendAJAXRequest(a,n,e)}),jQuery(".tbl-pagination--end").on("click",function(){var t=jQuery(this),e=t.parents(".tbl-root");a.page=t.parents(".tbl-pagination--wrapper").attr("last_page"),a.type=e.attr("type"),n.spinner=t.siblings(".tbl-preloader--small"),spbc_sendAJAXRequest(a,n,e)}),jQuery(".tbl-pagination--start").on("click",function(){var t=jQuery(this),e=t.parents(".tbl-root");a.page=1,a.type=e.attr("type"),n.spinner=t.siblings(".tbl-preloader--small"),spbc_sendAJAXRequest(a,n,e)})}function spbc_scanner__switch_table(t,e){var a=(t=jQuery(t)).parents(".row-actions").attr("uid");spbc_sendAJAXRequest({action:"spbc_tbl-switch",type:e,domain:a},{callback:spbc_tbl__pagination__callback,notJson:!0},t.parents(".tbl-root"))}function spbc_tbl__pagination__callback(t,e,a,n){jQuery(n).html(t).find(".tbl-pagination--button").removeAttr("disabled"),spbc_tbl__bulk_actions__listen(),spbc_tbl__row_actions__listen(),spbc_tbl__pagination__listen(),spbc_tbl__sort__listen(),spbcStartShowHide()}function spbc_tbl__sort__listen(){var n={callback:spbc_tbl__sort__callback,notJson:!0};jQuery(".tbl-column-sortable").on("click",function(t){var e,a;t.target.classList.contains("tbl-sorting_indicator")&&(a="links"==(e=(t=jQuery(this)).parents(".tbl-root")).attr("type")?jQuery("#spbc_tbl__scanner__outbound_links b").html():"",t={action:"spbc_tbl-sort",order_by:t.attr("id"),order:t.attr("sort_direction"),type:e.attr("type"),domain:a},spbc_sendAJAXRequest(t,n,e))})}function spbc_tbl__sort__callback(t,e,a,n){jQuery(n).html(t),spbc_tbl__bulk_actions__listen(),spbc_tbl__row_actions__listen(),spbc_tbl__pagination__listen(),spbc_tbl__sort__listen()}function show_hide_rows(t,e){e=jQuery("."+e+"_block_"+t);e.hasClass("mob_table_active")?e.removeClass("mob_table_active"):e.addClass("mob_table_active")}spbc_bulk_action=null,jQuery(document).ready(function(){spbc_tbl__bulk_actions__listen(),spbc_tbl__row_actions__listen(),spbc_tbl__pagination__listen(),spbc_tbl__sort__listen()});
    22//# sourceMappingURL=spbc-table.min.js.map
  • security-malware-firewall/trunk/js/spbc-table.min.js.map

    r3022805 r3049762  
    1 {"version":3,"file":"spbc-table.min.js","sources":["spbc-table.js"],"sourcesContent":["spbc_bulk_action = null;\n\n/**\n * Reloads scanner accordion and set all the listeners\n */\nfunction spbc_reload_accordion(){\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_scanner_tab__reload_accordion'},\n\t\t{\n\t\t\tnotJson: true,\n\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\tjQuery(obj).accordion('destroy');\n\t\t\t\tjQuery(obj).html(result);\n\t\t\t\tjQuery(obj).accordion({\n\t\t\t\t\theader: 'h3',\n\t\t\t\t\theightStyle: 'content',\n\t\t\t\t\tcollapsible: true,\n\t\t\t\t\tactive: false,\n\t\t\t\t});\n\t\t\t\tspbc_tbl__bulk_actions__listen();\n\t\t\t\tspbc_tbl__row_actions__listen();\n\t\t\t\tspbc_tbl__pagination__listen();\n\t\t\t\tspbc_tbl__sort__listen();\n\t\t\t\tspbcStartShowHide();\n\t\t\t},\n\t\t},\n\t\tjQuery('#spbc_scan_accordion')\n\t);\n}\n\n// TABLE BULK ACTIONS\nfunction spbc_tbl__bulk_actions__listen(){\n\n\tjQuery('.tbl-bulk_actions-all--apply')\n\t\t.off('click')\n\t\t.on('click', function(){\n\n\t\tif ( spbc_scanner.active ) {\n\t\t\talert(spbcTableLocalize.scannerIsActive);\n\t\t\treturn;\n\t\t}\n\n\t\tvar self = jQuery(this);\n\t\tvar allowed_bulk_actions = ['approve','disapprove','send','check_analysis_status','approve_page','disapprove_page','cure', 'delete_from_analysis_log'];\n\t\tvar action = self.siblings('select').children()[self.siblings('select').first()[0].selectedIndex].value;\n\n\t\tif( allowed_bulk_actions.indexOf( action ) !== -1 ){\n\n\t\t\tif(!confirm(spbcTable.warning_bulk))\n\t\t\t\treturn;\n\n\t\t\tvar data = {\n\t\t\t\taction: 'spbc_tbl-action--bulk',\n\t\t\t\tadd_action: action,\n\t\t\t\tstatus: self.parents('.tbl-root').attr('type'),\n\t\t\t};\n\n\t\t\tif (action === 'cure') {\n\t\t\t\tconst selectedItems = self.closest('#spbc_tbl__scanner_cure_log').find('.cb-select');\n\t\t\t\tlet selectedIds = [];\n\n\t\t\t\tselectedItems.each(function (index, element) {\n\t\t\t\t\tconst elementId = jQuery(element).val();\n\t\t\t\t\tselectedIds.push(elementId);\n\t\t\t\t});\n\t\t\t\tdata.selectedIds = selectedIds;\n\t\t\t}\n\n\t\t\tif (action === 'delete_from_analysis_log') {\n\t\t\t\tconst selectedItems = self.closest('#spbc_tbl__scanner_analysis_log').find('.cb-select');\n\t\t\t\tlet fileIds = [];\n\n\t\t\t\tselectedItems.each(function (index, element) {\n\t\t\t\t\tconst elementId = jQuery(element).val();\n\t\t\t\t\tfileIds.push(elementId);\n\t\t\t\t});\n\t\t\t\tdata.file_ids = fileIds;\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\tbutton: this,\n\t\t\t\tspinner: self.children('.tbl-preloader--small'),\n\t\t\t\tcallback: function(out) {\n\t\t\t\t\tspbc_reload_accordion();\n\t\t\t\t\tif ( action === 'check_analysis_status' && typeof out !== undefined){\n\t\t\t\t\t\tlet html = '<p> Analysis status updated.'\n\t\t\t\t\t\t\t+ ' Total: ' +  out.counters.total\n\t\t\t\t\t\t\t+ ', updated: ' +  out.counters.updated\n\t\t\t\t\t\t\t+ ', skipped: ' +  out.counters.skipped\n\t\t\t\t\t\t\t+ ', failed: ' + out.counters.failed\n\t\t\t\t\t\t\t+ ', queued: ' +  out.counters.queued\n\t\t\t\t\t\t\t+ '</p>';\n\t\t\t\t\t\tspbcModal.open().put( html );\n\t\t\t\t\t}\n\t\t\t\t\tif ( action === 'send' && typeof out !== undefined){\n\t\t\t\t\t\tlet html = '<p> Files have been sent: '\n\t\t\t\t\t\t\t+ out.files_sent_counter\n\t\t\t\t\t\t\t+ '</p>';\n\t\t\t\t\t\tspbcModal.open().put( html );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terrorOutput: function( error_text, comment ){\n\t\t\t\t\tif( comment ){\n\t\t\t\t\t\terror_text = error_text + '<br>Additional information:<br>' + comment;\n\t\t\t\t\t}\n\t\t\t\t\tspbcModal.open().putError( error_text );\n\t\t\t\t},\n\t\t\t\ttimeout: 60000,\n\t\t\t};\n\n\t\t\tspbc_sendAJAXRequest(data, params);\n\n\t\t}else{\n\t\t\talert('This action is not supported for all files yet =(')\n\t\t}\n\t});\n\n\tjQuery('.tbl-bulk_actions--apply')\n\t\t.off('click')\n\t\t.on('click', function(e){\n\n\t\tif(!spbc_bulk_action && !confirm(spbcTable.warning_bulk))\n\t\t\treturn;\n\n\t\tvar self = spbc_bulk_action || jQuery(this);\n\t\tspbc_bulk_action = self;\n\t\tvar action = self.siblings('select').children()[self.siblings('select').first()[0].selectedIndex].value;\n\n\t\tif (action === 'cure') {\n\t\t\tspbc_scanner__cure_selected(jQuery(this));\n\t\t\treturn;\n\t\t}\n\n\t\tif (action === 'delete_from_analysis_log') {\n\t\t\tspbc_scanner_analysis_log_delete_from_log(jQuery(this));\n\t\t\treturn;\n\t\t}\n\n\t\tif (action === 'allow' || action === 'ban') {\n\t\t\tlet send_action = action === 'ban' ? 'deny' : action;\n\t\t\tlet items = self.parents('.tbl-root').find('.cb-select:checked');\n\t\t\tif (items) {\n\t\t\t\tself.children('.tbl-preloader--small').show();\n\t\t\t\titems.each(function() {\n\t\t\t\t\tlet ip = jQuery(this).parents('tr').find('.tbl-row_action--'+action).data('ip');\n\t\t\t\t\tspbc_sec_logs__filter_ip(ip, send_action, true);\n\t\t\t\t\tjQuery(this).prop('checked', false);\n\t\t\t\t});\n\t\t\t}\n\t\t\tself.children('.tbl-preloader--small').hide();\n\t\t\tlet msg = action === 'allow' ? 'Allowed' : 'Banned';\n\t\t\tlet html = '<p> Success. Selected IPs have been ' + msg + '. Changes will be applied within 10 minutes.' + '</p>';\n\t\t\tspbcModal.open().put( html );\n\t\t\tsetTimeout(spbc_reload_accordion, 1900);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif( action !== '-1' && self.parents('.tbl-root').find('.cb-select').is(':checked') ){\n\t\t\tself.children('.tbl-preloader--small').show();\n\t\t\tif(self.parents('.tbl-root').find('.cb-select:checked').first().parents('tr').find('.tbl-row_action--'+action)[0]){\n\t\t\t\tself.parents('.tbl-root').find('.cb-select:checked').first().parents('tr').find('.tbl-row_action--'+action).click();\n\t\t\t\tself.parents('.tbl-root').find('.cb-select:checked').first().prop('checked', false);\n\t\t\t}else{\n\t\t\t\tself.parents('.tbl-root').find('.cb-select:checked').first().prop('checked', false);\n\t\t\t\tself.click();\n\t\t\t}\n\t\t}else{\n\t\t\tself.children('.tbl-preloader--small').hide();\n\t\t\tspbc_bulk_action = null;\n\t\t\tif ( action === 'check_analysis_status' && typeof out !== undefined){\n\t\t\t\tlet html = '<p> All available files are updated.' + '</p>';\n\t\t\t\tspbcModal.open().put( html );\n\t\t\t}\n\t\t\tif ( action === 'send' && typeof out !== undefined){\n\t\t\t\tlet html = '<p> All available files are sent.' + '</p>';\n\t\t\t\tspbcModal.open().put( html );\n\t\t\t}\n\t\t\tsetTimeout(spbc_reload_accordion, 1900);\n\t\t}\n\t});\n}\n\n/**\n * Cure selected files\n * @param current\n */\nfunction spbc_scanner__cure_selected(current)\n{\n\tconst selectedItems = current.closest('#spbc_tbl__scanner_cure_log').find('.cb-select:checked');\n\tlet selectedIds = [];\n\n\tif (selectedItems.length === 0) {\n\t\talert('Please, select elements.');\n\t}\n\n\tselectedItems.each(function (index, element) {\n\t\tconst elementId = jQuery(element).val();\n\t\tselectedIds.push(elementId);\n\t});\n\n\tconst data = {\n\t\taction: 'spbc_cure_selected',\n\t\tsecurity: spbcSettings.ajax_nonce,\n\t\tselectedIds: selectedIds,\n\t};\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tbeforeSend: function () {\n\t\t\tcurrent.closest('#spbc_tbl__scanner_cure_log').find('.tbl-button---white_blue .tbl-preloader--in_button').show();\n\t\t},\n\t\tsuccess: function(result) {\n\t\t\tcurrent.closest('#spbc_tbl__scanner_cure_log').find('.tbl-button---white_blue .tbl-preloader--in_button').hide();\n\t\t\tif (result.success) {\n\t\t\t\tspbcModal.open().put(result.data);\n\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\tdocument.location.reload();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tspbcModal.open().putError(result.data);\n\t\t\t}\n\t\t},\n\t});\n}\n\n// TABLE ROW ACTIONS\nfunction spbc_tbl__row_actions__listen(){\n\tjQuery('.tbl-row_action--ajax')\n\t\t.off('click')\n\t\t.on('click', function(){\n\t\tconsole.log('spbc_tbl__row_actions__listen click');\n\t\tif ( spbc_scanner.active ) {\n\t\t\talert(spbcTableLocalize.scannerIsActive);\n\t\t\treturn;\n\t\t}\n\t\tvar self = jQuery(this);\n\t\tvar data = {\n\t\t\taction: 'spbc_tbl-action--row',\n\t\t\tadd_action: self.attr('row-action'),\n\t\t\tid: self.parents('.row-actions').attr('uid'),\n\t\t\tcols: self.parents('.row-actions').attr('cols_amount'),\n\t\t\tpage_url: self.parent().attr('uid'),\n\t\t\tpage_id: self.parent().attr('page_id'),\n\t\t};\n\t\tvar params = {\n\t\t\tcallback: spbc_tbl__row_actions__callback,\n\t\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\t};\n\t\tif(!spbc_bulk_action){\n\t\t\tvar confirmation = spbcTable['warning_'+self.attr('row-action')] || spbcTable.warning_default;\n\t\t\tif ( data.add_action === 'copy_file_info' || data.add_action === 'check_analysis_status' || confirm(confirmation) ) {\n\t\t\t\tspbc_sendAJAXRequest(data, params, self.parents('tr'));\n\t\t\t}\n\t\t}\n\t\tif(spbc_bulk_action){\n\t\t\tspbc_sendAJAXRequest(data, params, self.parents('tr'));\n\t\t}\n\t});\n}\n\n\t// Callback for TABLE ROW ACTIONS\nfunction spbc_tbl__row_actions__callback(result, data, params, obj){\n\tif(result.color)    {obj.css({background: result.background, color: result.color});}\n\tif(result.html)     {\n\t\tobj.parent().parent().parent().prepend(result.html)\n\t\tsetTimeout(function(){obj.fadeOut(300);}, 1500);\n\t\tif( ! spbc_bulk_action) {\n\t\t\tsetTimeout(spbc_reload_accordion, 1900);\n\t\t}\n\t}\n\n\tif (\n\t\tdata.add_action === 'copy_file_info'\n\t) {\n\t\tif (result.success === true && result.data.file_info){\n\t\t\twindow.prompt(\"Copy the file info below and send it to [email protected]: \", result.data.file_info);\n\t\t} else {\n\t\t\tlet error_text = (typeof result.data.error !== 'undefined') ? result.data.error : 'Unknown copy_file_info error'\n\t\t\tspbcModal.open().putError( error_text );\n\t\t}\n\t}\n\n\tif(result.temp_html){\n\t\tvar tmp=obj.html(); \n\t\tobj.html(result.temp_html);\n\t\tif (result.updated_template !== undefined) {\n\t\t\tlet updatedType = result.updated_template_type;\n\t\t\tlet template = result.updated_template;\n\t\t\tlet rowsInTemplate = jQuery(template).find('.wp-list-table tbody tr');\n\t\t\tlet countRowInTemplate = rowsInTemplate.length;\n\t\t\tlet targetTab = jQuery('[aria-controls=\"spbc_scan_accordion_tab_' + updatedType + '\"]');\n\n\t\t\tif (targetTab.length > 0) {\n\t\t\t\tlet table = jQuery('#spbc_tbl__scanner_' + updatedType);\n\t\t\t\t// Count files in header\n\t\t\t\tjQuery('.spbc_bad_type_count.' + updatedType + '_counter').text(countRowInTemplate);\n\t\t\t\t// Count rows in table\n\t\t\t\tlet countExistingRows = table.find('.wp-list-table tbody tr').length;\n\t\t\t\ttable.remove();\n\t\t\t\tjQuery('#spbc_scan_accordion_tab_' + updatedType).append(template);\n\t\t\t\t// Marked new rows\n\t\t\t\tjQuery(jQuery('#spbc_scan_accordion_tab_' + updatedType).find('.wp-list-table tbody tr')).each(function (index, element) {\n\t\t\t\t\tif (++index > countExistingRows) {\n\t\t\t\t\t\tjQuery(element).css('outline', '1px solid green');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttargetTab.click();\n\t\t\t} else {\n\t\t\t\tif (updatedType === 'analysis_log') {\n\t\t\t\t\tlet 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\t\t\t\t\tlet 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\t\t\t\t\t\ttemplate +\n\t\t\t\t\t\t'</div>';\n\t\t\t\t\tjQuery('#spbc_scan_accordion_tab_critical').after(tabHeaderTemplate + tabBodyTemplate);\n\t\t\t\t\ttargetTab.click();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsetTimeout(function(){\n\t\t\tobj.html(tmp).css({background: 'inherit'}).find('.column-primary .row-actions .tbl-row_action--'+data.add_action).remove();\n\t\t\tspbc_tbl__bulk_actions__listen();\n\t\t\tspbc_tbl__row_actions__listen();\n\t\t\tspbcStartShowHide();\n\t\t},5000);\n\t}\n\tif(spbc_bulk_action)\n\t\tspbc_bulk_action.click();\n}\n\n// TABLE PAGINATION ACTIONS\nfunction spbc_tbl__pagination__listen(){\n\tvar data = {action: 'spbc_tbl-pagination',};\n\tvar params = {callback: spbc_tbl__pagination__callback, notJson: true,};\n\tjQuery('.tbl-pagination--button').on('click', function(){\n\t\tjQuery(this).parents('.tbl-root').find('.tbl-pagination--button').attr('disabled', 'disabled');\n\t});\n\tjQuery('.tbl-pagination--go').on('click', function(){\n\t\tvar self = jQuery(this);\n\t\tvar obj = self.parents('.tbl-root');\n\t\tdata.page = self.siblings('.tbl-pagination--curr_page').val();\n\t\tdata.type = obj.attr('type');\n\t\tparams.spinner = self.siblings('.tbl-preloader--small');\n\t\tspbc_sendAJAXRequest(data, params, obj);\n\t});\n\tjQuery('.tbl-pagination--prev').on('click', function(){\n\t\tvar self = jQuery(this);\n\t\tvar obj = self.parents('.tbl-root');\n\t\tdata.page = self.parents('.tbl-pagination--wrapper').attr('prev_page');\n\t\tdata.type = obj.attr('type');\n\t\tparams.spinner = self.siblings('.tbl-preloader--small');\n\t\tspbc_sendAJAXRequest(data, params, obj);\n\t});\n\tjQuery('.tbl-pagination--next').on('click', function(){\n\t\tvar self = jQuery(this);\n\t\tvar obj = self.parents('.tbl-root');\n\t\tdata.page = self.parents('.tbl-pagination--wrapper').attr('next_page');\n\t\tdata.type = obj.attr('type');\n\t\tparams.spinner = self.siblings('.tbl-preloader--small');\n\t\tspbc_sendAJAXRequest(data, params, obj);\n\t});\n\tjQuery('.tbl-pagination--end').on('click', function(){\n\t\tvar self = jQuery(this);\n\t\tvar obj = self.parents('.tbl-root');\n\t\tdata.page = self.parents('.tbl-pagination--wrapper').attr('last_page');\n\t\tdata.type = obj.attr('type');\n\t\tparams.spinner = self.siblings('.tbl-preloader--small');\n\t\tspbc_sendAJAXRequest(data, params, obj);\n\t});\n\tjQuery('.tbl-pagination--start').on('click', function(){\n\t\tvar self = jQuery(this);\n\t\tvar obj = self.parents('.tbl-root');\n\t\tdata.page = 1;\n\t\tdata.type = obj.attr('type');\n\t\tparams.spinner = self.siblings('.tbl-preloader--small');\n\t\tspbc_sendAJAXRequest(data, params, obj);\n\t});\n}\n\nfunction spbc_scanner__switch_table(obj, table){\n\tvar obj = jQuery(obj);\n\tconsole.log(obj.parents('.row-actions').attr('uid'));\n\tvar data = {action: 'spbc_tbl-switch', type: table, domain: obj.parents('.row-actions').attr('uid'),};\n\tvar params = {callback: spbc_tbl__pagination__callback, notJson: true,};\n\tspbc_sendAJAXRequest(data, params, obj.parents('.tbl-root'));\n}\n\n\t// Callback for TABLE PAGINATION ACTIONS\nfunction spbc_tbl__pagination__callback(result, data, params, obj){\n\t\n\tjQuery(obj)\n\t\t.html(result)\n\t\t.find('.tbl-pagination--button').removeAttr('disabled');\n\tspbc_tbl__bulk_actions__listen();\n\tspbc_tbl__row_actions__listen();\n\tspbc_tbl__pagination__listen();\n\tspbc_tbl__sort__listen();\n\tspbcStartShowHide();\n}\n\n// TABLE SORT ACTIONS\nfunction spbc_tbl__sort__listen(){\n\t\n\tvar params = {callback: spbc_tbl__sort__callback, notJson: true,};\n\tjQuery('.tbl-column-sortable').on('click', function(e){\n\t\tif (e.target.classList.contains('tbl-sorting_indicator')) {\n\t\t\tvar self = jQuery(this);\n\t\t\tvar obj = self.parents('.tbl-root');\n\t\t\tvar data = {\n\t\t\t\taction:   'spbc_tbl-sort',\n\t\t\t\torder_by: self.attr('id'),\n\t\t\t\torder:    self.attr('sort_direction'),\n\t\t\t\ttype:     obj.attr('type'),\n\t\t\t};\n\t\t\tspbc_sendAJAXRequest(data, params, obj);\n\t\t}\n\t});\n}\n\n\t// Callback for TABLE SORT ACTIONS\nfunction spbc_tbl__sort__callback(result, data, params, obj){\n\tjQuery(obj).html(result);\n\tspbc_tbl__bulk_actions__listen();\n\tspbc_tbl__row_actions__listen();\n\tspbc_tbl__pagination__listen();\n\tspbc_tbl__sort__listen();\n}\n\njQuery(document).ready(function(){\n\t\n\t// Table. Row actions handler\n\tspbc_tbl__bulk_actions__listen();\n\tspbc_tbl__row_actions__listen();\n\tspbc_tbl__pagination__listen();\n\tspbc_tbl__sort__listen();\n});\n\nfunction show_hide_rows(block_id, column_key) {\n\tlet className = '.' + column_key + '_block_' + block_id;\n\tlet block = jQuery(className);\n\tif (block.hasClass(\"mob_table_active\")){\n\t\tblock.removeClass(\"mob_table_active\")\n\t} else {\n\t\tblock.addClass(\"mob_table_active\");\n\t}\n}\n"],"names":["spbc_reload_accordion","spbc_sendAJAXRequest","action","notJson","callback","result","data","params","obj","jQuery","accordion","html","header","heightStyle","collapsible","active","spbc_tbl__bulk_actions__listen","spbc_tbl__row_actions__listen","spbc_tbl__pagination__listen","spbc_tbl__sort__listen","spbcStartShowHide","off","on","spbc_scanner","alert","spbcTableLocalize","scannerIsActive","self","this","siblings","children","first","selectedIndex","value","indexOf","confirm","spbcTable","warning_bulk","add_action","status","parents","attr","selectedItems","closest","find","let","selectedIds","each","index","element","elementId","val","push","fileIds","file_ids","button","spinner","out","counters","total","updated","skipped","failed","queued","spbcModal","open","put","files_sent_counter","errorOutput","error_text","comment","putError","timeout","e","spbc_bulk_action","spbc_scanner__cure_selected","spbc_scanner_analysis_log_delete_from_log","send_action","items","msg","show","ip","spbc_sec_logs__filter_ip","prop","hide","setTimeout","is","click","current","length","security","spbcSettings","ajax_nonce","ajax","type","url","ajaxurl","beforeSend","success","document","addEventListener","location","reload","confirmation","console","log","id","cols","page_url","parent","page_id","spbc_tbl__row_actions__callback","warning_default","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","append","tabHeaderTemplate","tabBodyTemplate","after","spbc_tbl__pagination__callback","page","spbc_scanner__switch_table","domain","removeAttr","spbc_tbl__sort__callback","target","classList","contains","order_by","order","show_hide_rows","block_id","column_key","block","hasClass","removeClass","addClass","ready"],"mappings":"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"}
     1{"version":3,"file":"spbc-table.min.js","sources":["spbc-table.js"],"sourcesContent":["spbc_bulk_action = null;\n\n/**\n * Reloads scanner accordion and set all the listeners\n */\nfunction spbc_reload_accordion(){\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_scanner_tab__reload_accordion'},\n\t\t{\n\t\t\tnotJson: true,\n\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\tjQuery(obj).accordion('destroy');\n\t\t\t\tjQuery(obj).html(result);\n\t\t\t\tjQuery(obj).accordion({\n\t\t\t\t\theader: 'h3',\n\t\t\t\t\theightStyle: 'content',\n\t\t\t\t\tcollapsible: true,\n\t\t\t\t\tactive: false,\n\t\t\t\t});\n\t\t\t\tspbc_tbl__bulk_actions__listen();\n\t\t\t\tspbc_tbl__row_actions__listen();\n\t\t\t\tspbc_tbl__pagination__listen();\n\t\t\t\tspbc_tbl__sort__listen();\n\t\t\t\tspbcStartShowHide();\n\t\t\t},\n\t\t},\n\t\tjQuery('#spbc_scan_accordion')\n\t);\n}\n\n// TABLE BULK ACTIONS\nfunction spbc_tbl__bulk_actions__listen(){\n\n\tjQuery('.tbl-bulk_actions-all--apply')\n\t\t.off('click')\n\t\t.on('click', function(){\n\n\t\tif ( spbc_scanner.active ) {\n\t\t\talert(spbcTableLocalize.scannerIsActive);\n\t\t\treturn;\n\t\t}\n\n\t\tvar self = jQuery(this);\n\t\tvar allowed_bulk_actions = ['approve','disapprove','send','check_analysis_status','approve_page','disapprove_page','cure', 'delete_from_analysis_log'];\n\t\tvar action = self.siblings('select').children()[self.siblings('select').first()[0].selectedIndex].value;\n\n\t\tif( allowed_bulk_actions.indexOf( action ) !== -1 ){\n\n\t\t\tif(!confirm(spbcTable.warning_bulk))\n\t\t\t\treturn;\n\n\t\t\tvar data = {\n\t\t\t\taction: 'spbc_tbl-action--bulk',\n\t\t\t\tadd_action: action,\n\t\t\t\tstatus: self.parents('.tbl-root').attr('type'),\n\t\t\t};\n\n\t\t\tif (action === 'cure') {\n\t\t\t\tconst selectedItems = self.closest('#spbc_tbl__scanner_cure_log').find('.cb-select');\n\t\t\t\tlet selectedIds = [];\n\n\t\t\t\tselectedItems.each(function (index, element) {\n\t\t\t\t\tconst elementId = jQuery(element).val();\n\t\t\t\t\tselectedIds.push(elementId);\n\t\t\t\t});\n\t\t\t\tdata.selectedIds = selectedIds;\n\t\t\t}\n\n\t\t\tif (action === 'delete_from_analysis_log') {\n\t\t\t\tconst selectedItems = self.closest('#spbc_tbl__scanner_analysis_log').find('.cb-select');\n\t\t\t\tlet fileIds = [];\n\n\t\t\t\tselectedItems.each(function (index, element) {\n\t\t\t\t\tconst elementId = jQuery(element).val();\n\t\t\t\t\tfileIds.push(elementId);\n\t\t\t\t});\n\t\t\t\tdata.file_ids = fileIds;\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\tbutton: this,\n\t\t\t\tspinner: self.children('.tbl-preloader--small'),\n\t\t\t\tcallback: function(out) {\n\t\t\t\t\tspbc_reload_accordion();\n\t\t\t\t\tif ( action === 'check_analysis_status' && typeof out !== undefined){\n\t\t\t\t\t\tlet html = '<p> Analysis status updated.'\n\t\t\t\t\t\t\t+ ' Total: ' +  out.counters.total\n\t\t\t\t\t\t\t+ ', updated: ' +  out.counters.updated\n\t\t\t\t\t\t\t+ ', skipped: ' +  out.counters.skipped\n\t\t\t\t\t\t\t+ ', failed: ' + out.counters.failed\n\t\t\t\t\t\t\t+ ', queued: ' +  out.counters.queued\n\t\t\t\t\t\t\t+ '</p>';\n\t\t\t\t\t\tspbcModal.open().put( html );\n\t\t\t\t\t}\n\t\t\t\t\tif ( action === 'send' && typeof out !== undefined){\n\t\t\t\t\t\tlet html = '<p> Files have been sent: '\n\t\t\t\t\t\t\t+ out.files_sent_counter\n\t\t\t\t\t\t\t+ '</p>';\n\t\t\t\t\t\tspbcModal.open().put( html );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terrorOutput: function( error_text, comment ){\n\t\t\t\t\tif( comment ){\n\t\t\t\t\t\terror_text = error_text + '<br>Additional information:<br>' + comment;\n\t\t\t\t\t}\n\t\t\t\t\tspbcModal.open().putError( error_text );\n\t\t\t\t},\n\t\t\t\ttimeout: 60000,\n\t\t\t};\n\n\t\t\tspbc_sendAJAXRequest(data, params);\n\n\t\t}else{\n\t\t\talert('This action is not supported for all files yet =(')\n\t\t}\n\t});\n\n\tjQuery('.tbl-bulk_actions--apply')\n\t\t.off('click')\n\t\t.on('click', function(e){\n\n\t\tif(!spbc_bulk_action && !confirm(spbcTable.warning_bulk))\n\t\t\treturn;\n\n\t\tvar self = spbc_bulk_action || jQuery(this);\n\t\tspbc_bulk_action = self;\n\t\tvar action = self.siblings('select').children()[self.siblings('select').first()[0].selectedIndex].value;\n\n\t\tif (action === 'cure') {\n\t\t\tspbc_scanner__cure_selected(jQuery(this));\n\t\t\treturn;\n\t\t}\n\n\t\tif (action === 'delete_from_analysis_log') {\n\t\t\tspbc_scanner_analysis_log_delete_from_log(jQuery(this));\n\t\t\treturn;\n\t\t}\n\n\t\tif (action === 'allow' || action === 'ban') {\n\t\t\tlet send_action = action === 'ban' ? 'deny' : action;\n\t\t\tlet items = self.parents('.tbl-root').find('.cb-select:checked');\n\t\t\tif (items) {\n\t\t\t\tself.children('.tbl-preloader--small').show();\n\t\t\t\titems.each(function() {\n\t\t\t\t\tlet ip = jQuery(this).parents('tr').find('.tbl-row_action--'+action).data('ip');\n\t\t\t\t\tspbc_sec_logs__filter_ip(ip, send_action, true);\n\t\t\t\t\tjQuery(this).prop('checked', false);\n\t\t\t\t});\n\t\t\t}\n\t\t\tself.children('.tbl-preloader--small').hide();\n\t\t\tlet msg = action === 'allow' ? 'Allowed' : 'Banned';\n\t\t\tlet html = '<p> Success. Selected IPs have been ' + msg + '. Changes will be applied within 10 minutes.' + '</p>';\n\t\t\tspbcModal.open().put( html );\n\t\t\tsetTimeout(spbc_reload_accordion, 1900);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif( action !== '-1' && self.parents('.tbl-root').find('.cb-select').is(':checked') ){\n\t\t\tself.children('.tbl-preloader--small').show();\n\t\t\tif(self.parents('.tbl-root').find('.cb-select:checked').first().parents('tr').find('.tbl-row_action--'+action)[0]){\n\t\t\t\tself.parents('.tbl-root').find('.cb-select:checked').first().parents('tr').find('.tbl-row_action--'+action).click();\n\t\t\t\tself.parents('.tbl-root').find('.cb-select:checked').first().prop('checked', false);\n\t\t\t}else{\n\t\t\t\tself.parents('.tbl-root').find('.cb-select:checked').first().prop('checked', false);\n\t\t\t\tself.click();\n\t\t\t}\n\t\t}else{\n\t\t\tself.children('.tbl-preloader--small').hide();\n\t\t\tspbc_bulk_action = null;\n\t\t\tif ( action === 'check_analysis_status' && typeof out !== undefined){\n\t\t\t\tlet html = '<p> All available files are updated.' + '</p>';\n\t\t\t\tspbcModal.open().put( html );\n\t\t\t}\n\t\t\tif ( action === 'send' && typeof out !== undefined){\n\t\t\t\tlet html = '<p> All available files are sent.' + '</p>';\n\t\t\t\tspbcModal.open().put( html );\n\t\t\t}\n\t\t\tsetTimeout(spbc_reload_accordion, 1900);\n\t\t}\n\t});\n}\n\n/**\n * Cure selected files\n * @param current\n */\nfunction spbc_scanner__cure_selected(current)\n{\n\tconst selectedItems = current.closest('#spbc_tbl__scanner_cure_log').find('.cb-select:checked');\n\tlet selectedIds = [];\n\n\tif (selectedItems.length === 0) {\n\t\talert('Please, select elements.');\n\t}\n\n\tselectedItems.each(function (index, element) {\n\t\tconst elementId = jQuery(element).val();\n\t\tselectedIds.push(elementId);\n\t});\n\n\tconst data = {\n\t\taction: 'spbc_cure_selected',\n\t\tsecurity: spbcSettings.ajax_nonce,\n\t\tselectedIds: selectedIds,\n\t};\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tbeforeSend: function () {\n\t\t\tcurrent.closest('#spbc_tbl__scanner_cure_log').find('.tbl-button---white_blue .tbl-preloader--in_button').show();\n\t\t},\n\t\tsuccess: function(result) {\n\t\t\tcurrent.closest('#spbc_tbl__scanner_cure_log').find('.tbl-button---white_blue .tbl-preloader--in_button').hide();\n\t\t\tif (result.success) {\n\t\t\t\tspbcModal.open().put(result.data);\n\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\tdocument.location.reload();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tspbcModal.open().putError(result.data);\n\t\t\t}\n\t\t},\n\t});\n}\n\n// TABLE ROW ACTIONS\nfunction spbc_tbl__row_actions__listen(){\n\tjQuery('.tbl-row_action--ajax')\n\t\t.off('click')\n\t\t.on('click', function(){\n\t\tconsole.log('spbc_tbl__row_actions__listen click');\n\t\tif ( spbc_scanner.active ) {\n\t\t\talert(spbcTableLocalize.scannerIsActive);\n\t\t\treturn;\n\t\t}\n\t\tvar self = jQuery(this);\n\t\tvar data = {\n\t\t\taction: 'spbc_tbl-action--row',\n\t\t\tadd_action: self.attr('row-action'),\n\t\t\tid: self.parents('.row-actions').attr('uid'),\n\t\t\tcols: self.parents('.row-actions').attr('cols_amount'),\n\t\t\tpage_url: self.parent().attr('uid'),\n\t\t\tpage_id: self.parent().attr('page_id'),\n\t\t};\n\t\tvar params = {\n\t\t\tcallback: spbc_tbl__row_actions__callback,\n\t\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\t};\n\t\tif(!spbc_bulk_action){\n\t\t\tvar confirmation = spbcTable['warning_'+self.attr('row-action')] || spbcTable.warning_default;\n\t\t\tif ( data.add_action === 'copy_file_info' || data.add_action === 'check_analysis_status' || confirm(confirmation) ) {\n\t\t\t\tspbc_sendAJAXRequest(data, params, self.parents('tr'));\n\t\t\t}\n\t\t}\n\t\tif(spbc_bulk_action){\n\t\t\tspbc_sendAJAXRequest(data, params, self.parents('tr'));\n\t\t}\n\t});\n}\n\n\t// Callback for TABLE ROW ACTIONS\nfunction spbc_tbl__row_actions__callback(result, data, params, obj){\n\tif(result.color)    {obj.css({background: result.background, color: result.color});}\n\tif(result.html)     {\n\t\tobj.parent().parent().parent().prepend(result.html)\n\t\tsetTimeout(function(){obj.fadeOut(300);}, 1500);\n\t\tif( ! spbc_bulk_action) {\n\t\t\tsetTimeout(spbc_reload_accordion, 1900);\n\t\t}\n\t}\n\n\tif (\n\t\tdata.add_action === 'copy_file_info'\n\t) {\n\t\tif (result.success === true && result.data.file_info){\n\t\t\twindow.prompt(\"Copy the file info below and send it to [email protected]: \", result.data.file_info);\n\t\t} else {\n\t\t\tlet error_text = (typeof result.data.error !== 'undefined') ? result.data.error : 'Unknown copy_file_info error'\n\t\t\tspbcModal.open().putError( error_text );\n\t\t}\n\t}\n\n\tif(result.temp_html){\n\t\tvar tmp=obj.html(); \n\t\tobj.html(result.temp_html);\n\t\tif (result.updated_template !== undefined) {\n\t\t\tlet updatedType = result.updated_template_type;\n\t\t\tlet template = result.updated_template;\n\t\t\tlet rowsInTemplate = jQuery(template).find('.wp-list-table tbody tr');\n\t\t\tlet countRowInTemplate = rowsInTemplate.length;\n\t\t\tlet targetTab = jQuery('[aria-controls=\"spbc_scan_accordion_tab_' + updatedType + '\"]');\n\n\t\t\tif (targetTab.length > 0) {\n\t\t\t\tlet table = jQuery('#spbc_tbl__scanner_' + updatedType);\n\t\t\t\t// Count files in header\n\t\t\t\tjQuery('.spbc_bad_type_count.' + updatedType + '_counter').text(countRowInTemplate);\n\t\t\t\t// Count rows in table\n\t\t\t\tlet countExistingRows = table.find('.wp-list-table tbody tr').length;\n\t\t\t\ttable.remove();\n\t\t\t\tjQuery('#spbc_scan_accordion_tab_' + updatedType).append(template);\n\t\t\t\t// Marked new rows\n\t\t\t\tjQuery(jQuery('#spbc_scan_accordion_tab_' + updatedType).find('.wp-list-table tbody tr')).each(function (index, element) {\n\t\t\t\t\tif (++index > countExistingRows) {\n\t\t\t\t\t\tjQuery(element).css('outline', '1px solid green');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttargetTab.click();\n\t\t\t} else {\n\t\t\t\tif (updatedType === 'analysis_log') {\n\t\t\t\t\tlet 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\t\t\t\t\tlet 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\t\t\t\t\t\ttemplate +\n\t\t\t\t\t\t'</div>';\n\t\t\t\t\tjQuery('#spbc_scan_accordion_tab_critical').after(tabHeaderTemplate + tabBodyTemplate);\n\t\t\t\t\ttargetTab.click();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsetTimeout(function(){\n\t\t\tobj.html(tmp).css({background: 'inherit'}).find('.column-primary .row-actions .tbl-row_action--'+data.add_action).remove();\n\t\t\tspbc_tbl__bulk_actions__listen();\n\t\t\tspbc_tbl__row_actions__listen();\n\t\t\tspbcStartShowHide();\n\t\t},5000);\n\t}\n\tif(spbc_bulk_action)\n\t\tspbc_bulk_action.click();\n}\n\n// TABLE PAGINATION ACTIONS\nfunction spbc_tbl__pagination__listen(){\n\tvar data = {action: 'spbc_tbl-pagination',};\n\tvar params = {callback: spbc_tbl__pagination__callback, notJson: true,};\n\tjQuery('.tbl-pagination--button').on('click', function(){\n\t\tjQuery(this).parents('.tbl-root').find('.tbl-pagination--button').attr('disabled', 'disabled');\n\t});\n\tjQuery('.tbl-pagination--go').on('click', function(){\n\t\tvar self = jQuery(this);\n\t\tvar obj = self.parents('.tbl-root');\n\t\tdata.page = self.siblings('.tbl-pagination--curr_page').val();\n\t\tdata.type = obj.attr('type');\n\t\tparams.spinner = self.siblings('.tbl-preloader--small');\n\t\tspbc_sendAJAXRequest(data, params, obj);\n\t});\n\tjQuery('.tbl-pagination--prev').on('click', function(){\n\t\tvar self = jQuery(this);\n\t\tvar obj = self.parents('.tbl-root');\n\t\tdata.page = self.parents('.tbl-pagination--wrapper').attr('prev_page');\n\t\tdata.type = obj.attr('type');\n\t\tparams.spinner = self.siblings('.tbl-preloader--small');\n\t\tspbc_sendAJAXRequest(data, params, obj);\n\t});\n\tjQuery('.tbl-pagination--next').on('click', function(){\n\t\tvar self = jQuery(this);\n\t\tvar obj = self.parents('.tbl-root');\n\t\tdata.page = self.parents('.tbl-pagination--wrapper').attr('next_page');\n\t\tdata.type = obj.attr('type');\n\t\tparams.spinner = self.siblings('.tbl-preloader--small');\n\t\tspbc_sendAJAXRequest(data, params, obj);\n\t});\n\tjQuery('.tbl-pagination--end').on('click', function(){\n\t\tvar self = jQuery(this);\n\t\tvar obj = self.parents('.tbl-root');\n\t\tdata.page = self.parents('.tbl-pagination--wrapper').attr('last_page');\n\t\tdata.type = obj.attr('type');\n\t\tparams.spinner = self.siblings('.tbl-preloader--small');\n\t\tspbc_sendAJAXRequest(data, params, obj);\n\t});\n\tjQuery('.tbl-pagination--start').on('click', function(){\n\t\tvar self = jQuery(this);\n\t\tvar obj = self.parents('.tbl-root');\n\t\tdata.page = 1;\n\t\tdata.type = obj.attr('type');\n\t\tparams.spinner = self.siblings('.tbl-preloader--small');\n\t\tspbc_sendAJAXRequest(data, params, obj);\n\t});\n}\n\nfunction spbc_scanner__switch_table(obj, table){\n\tvar obj = jQuery(obj);\n\tlet domain = obj.parents('.row-actions').attr('uid');\n\tvar data = {action: 'spbc_tbl-switch', type: table, domain: domain,};\n\tvar params = {callback: spbc_tbl__pagination__callback, notJson: true,};\n\tspbc_sendAJAXRequest(data, params, obj.parents('.tbl-root'));\n}\n\n\t// Callback for TABLE PAGINATION ACTIONS\nfunction spbc_tbl__pagination__callback(result, data, params, obj){\n\t\n\tjQuery(obj)\n\t\t.html(result)\n\t\t.find('.tbl-pagination--button').removeAttr('disabled');\n\tspbc_tbl__bulk_actions__listen();\n\tspbc_tbl__row_actions__listen();\n\tspbc_tbl__pagination__listen();\n\tspbc_tbl__sort__listen();\n\tspbcStartShowHide();\n}\n\n// TABLE SORT ACTIONS\nfunction spbc_tbl__sort__listen(){\n\t\n\tvar params = {callback: spbc_tbl__sort__callback, notJson: true,};\n\tjQuery('.tbl-column-sortable').on('click', function(e){\n\t\tif (e.target.classList.contains('tbl-sorting_indicator')) {\n\t\t\tvar self = jQuery(this);\n\t\t\tvar obj = self.parents('.tbl-root');\n\t\t\tlet domain = obj.attr('type') == 'links'? jQuery('#spbc_tbl__scanner__outbound_links b').html(): '';\n\t\t\tvar data = {\n\t\t\t\taction:   'spbc_tbl-sort',\n\t\t\t\torder_by: self.attr('id'),\n\t\t\t\torder:    self.attr('sort_direction'),\n\t\t\t\ttype:     obj.attr('type'),\n\t\t\t\tdomain: domain,\n\t\t\t};\n\t\t\tspbc_sendAJAXRequest(data, params, obj);\n\t\t}\n\t});\n}\n\n\t// Callback for TABLE SORT ACTIONS\nfunction spbc_tbl__sort__callback(result, data, params, obj){\n\tjQuery(obj).html(result);\n\tspbc_tbl__bulk_actions__listen();\n\tspbc_tbl__row_actions__listen();\n\tspbc_tbl__pagination__listen();\n\tspbc_tbl__sort__listen();\n}\n\njQuery(document).ready(function(){\n\t\n\t// Table. Row actions handler\n\tspbc_tbl__bulk_actions__listen();\n\tspbc_tbl__row_actions__listen();\n\tspbc_tbl__pagination__listen();\n\tspbc_tbl__sort__listen();\n});\n\nfunction show_hide_rows(block_id, column_key) {\n\tlet className = '.' + column_key + '_block_' + block_id;\n\tlet block = jQuery(className);\n\tif (block.hasClass(\"mob_table_active\")){\n\t\tblock.removeClass(\"mob_table_active\")\n\t} else {\n\t\tblock.addClass(\"mob_table_active\");\n\t}\n}\n"],"names":["spbc_reload_accordion","spbc_sendAJAXRequest","action","notJson","callback","result","data","params","obj","jQuery","accordion","html","header","heightStyle","collapsible","active","spbc_tbl__bulk_actions__listen","spbc_tbl__row_actions__listen","spbc_tbl__pagination__listen","spbc_tbl__sort__listen","spbcStartShowHide","off","on","spbc_scanner","alert","spbcTableLocalize","scannerIsActive","self","this","siblings","children","first","selectedIndex","value","indexOf","confirm","spbcTable","warning_bulk","add_action","status","parents","attr","selectedItems","closest","find","let","selectedIds","each","index","element","elementId","val","push","fileIds","file_ids","button","spinner","out","counters","total","updated","skipped","failed","queued","spbcModal","open","put","files_sent_counter","errorOutput","error_text","comment","putError","timeout","e","spbc_bulk_action","spbc_scanner__cure_selected","spbc_scanner_analysis_log_delete_from_log","send_action","items","msg","show","ip","spbc_sec_logs__filter_ip","prop","hide","setTimeout","is","click","current","length","security","spbcSettings","ajax_nonce","ajax","type","url","ajaxurl","beforeSend","success","document","addEventListener","location","reload","confirmation","console","log","id","cols","page_url","parent","page_id","spbc_tbl__row_actions__callback","warning_default","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","append","tabHeaderTemplate","tabBodyTemplate","after","spbc_tbl__pagination__callback","page","spbc_scanner__switch_table","domain","removeAttr","spbc_tbl__sort__callback","target","classList","contains","order_by","order","show_hide_rows","block_id","column_key","block","hasClass","removeClass","addClass","ready"],"mappings":"AAKA,SAASA,wBACRC,qBACC,CAACC,OAAQ,oCAAoC,EAC7C,CACCC,QAAS,CAAA,EACTC,SAAU,SAASC,EAAQC,EAAMC,EAAQC,GACxCC,OAAOD,CAAG,EAAEE,UAAU,SAAS,EAC/BD,OAAOD,CAAG,EAAEG,KAAKN,CAAM,EACvBI,OAAOD,CAAG,EAAEE,UAAU,CACrBE,OAAQ,KACRC,YAAa,UACbC,YAAa,CAAA,EACbC,OAAQ,CAAA,CACT,CAAC,EACDC,+BAA+B,EAC/BC,8BAA8B,EAC9BC,6BAA6B,EAC7BC,uBAAuB,EACvBC,kBAAkB,CACnB,CACD,EACAX,OAAO,sBAAsB,CAC9B,CACD,CAGA,SAASO,iCAERP,OAAO,8BAA8B,EACnCY,IAAI,OAAO,EACXC,GAAG,QAAS,WAEb,GAAKC,aAAaR,OACjBS,MAAMC,kBAAkBC,eAAe,MADxC,CAKA,IAAIC,EAAOlB,OAAOmB,IAAI,EAElB1B,EAASyB,EAAKE,SAAS,QAAQ,EAAEC,SAAS,EAAEH,EAAKE,SAAS,QAAQ,EAAEE,MAAM,EAAE,GAAGC,eAAeC,MAElG,GAA+C,CAAC,IAHrB,CAAC,UAAU,aAAa,OAAO,wBAAwB,eAAe,kBAAkB,OAAQ,4BAGlGC,QAAShC,CAAO,GAExC,GAAIiC,QAAQC,UAAUC,YAAY,EAAlC,CAGA,IAAI/B,EAAO,CACVJ,OAAQ,wBACRoC,WAAYpC,EACZqC,OAAQZ,EAAKa,QAAQ,WAAW,EAAEC,KAAK,MAAM,CAC9C,EAEA,GAAe,SAAXvC,EAAmB,CACtB,IAAMwC,EAAgBf,EAAKgB,QAAQ,6BAA6B,EAAEC,KAAK,YAAY,EACnFC,IAAIC,EAAc,GAElBJ,EAAcK,KAAK,SAAUC,EAAOC,GAC7BC,EAAYzC,OAAOwC,CAAO,EAAEE,IAAI,EACtCL,EAAYM,KAAKF,CAAS,CAC3B,CAAC,EACD5C,EAAKwC,YAAcA,CACpB,CAEA,GAAe,6BAAX5C,EAAuC,CACpCwC,EAAgBf,EAAKgB,QAAQ,iCAAiC,EAAEC,KAAK,YAAY,EACvFC,IAAIQ,EAAU,GAEdX,EAAcK,KAAK,SAAUC,EAAOC,GAC7BC,EAAYzC,OAAOwC,CAAO,EAAEE,IAAI,EACtCE,EAAQD,KAAKF,CAAS,CACvB,CAAC,EACD5C,EAAKgD,SAAWD,CACjB,CAEI9C,EAAS,CACZgD,OAAQ3B,KACR4B,QAAS7B,EAAKG,SAAS,uBAAuB,EAC9C1B,SAAU,SAASqD,GAElB,IAWK9C,EAZLX,sBAAsB,EACN,0BAAXE,IACAS,EAAO,uCACM8C,EAAIC,SAASC,MAC3B,cAAiBF,EAAIC,SAASE,QAC9B,cAAiBH,EAAIC,SAASG,QAC9B,aAAeJ,EAAIC,SAASI,OAC5B,aAAgBL,EAAIC,SAASK,OAC7B,OACHC,UAAUC,KAAK,EAAEC,IAAKvD,CAAK,GAEZ,SAAXT,IACAS,EAAO,6BACR8C,EAAIU,mBACJ,OACHH,UAAUC,KAAK,EAAEC,IAAKvD,CAAK,EAE7B,EACAyD,YAAa,SAAUC,EAAYC,GAC9BA,IACHD,EAAaA,EAAa,kCAAoCC,GAE/DN,UAAUC,KAAK,EAAEM,SAAUF,CAAW,CACvC,EACAG,QAAS,GACV,EAEAvE,qBAAqBK,EAAMC,CAAM,CA7D1B,CAAA,MAgEPiB,MAAM,mDAAmD,CAzE1D,CA2ED,CAAC,EAEDf,OAAO,0BAA0B,EAC/BY,IAAI,OAAO,EACXC,GAAG,QAAS,SAASmD,GAEtB,GAAIC,kBAAqBvC,QAAQC,UAAUC,YAAY,EAAvD,CAGA,IAAIV,EAAO+C,kBAAoBjE,OAAOmB,IAAI,EAEtC1B,GADJwE,iBAAmB/C,GACDE,SAAS,QAAQ,EAAEC,SAAS,EAAEH,EAAKE,SAAS,QAAQ,EAAEE,MAAM,EAAE,GAAGC,eAAeC,MAElG,GAAe,SAAX/B,EACHyE,4BAA4BlE,OAAOmB,IAAI,CAAC,OAIzC,GAAe,6BAAX1B,EACH0E,0CAA0CnE,OAAOmB,IAAI,CAAC,OAIvD,GAAe,UAAX1B,GAAiC,QAAXA,EAAkB,CAC3C2C,IAAIgC,EAAyB,QAAX3E,EAAmB,OAASA,EAC9C2C,IAAIiC,EAAQnD,EAAKa,QAAQ,WAAW,EAAEI,KAAK,oBAAoB,EAU3DmC,GATAD,IACHnD,EAAKG,SAAS,uBAAuB,EAAEkD,KAAK,EAC5CF,EAAM/B,KAAK,WACVF,IAAIoC,EAAKxE,OAAOmB,IAAI,EAAEY,QAAQ,IAAI,EAAEI,KAAK,oBAAoB1C,CAAM,EAAEI,KAAK,IAAI,EAC9E4E,yBAAyBD,EAAIJ,EAAa,CAAA,CAAI,EAC9CpE,OAAOmB,IAAI,EAAEuD,KAAK,UAAW,CAAA,CAAK,CACnC,CAAC,GAEFxD,EAAKG,SAAS,uBAAuB,EAAEsD,KAAK,EACvB,UAAXlF,EAAqB,UAAY,UACvCS,EAAO,uCAAyCoE,EAAuD,mDAC3Gf,UAAUC,KAAK,EAAEC,IAAKvD,CAAK,EAA3BqD,KACAqB,WAAWrF,sBAAuB,IAAI,CAGvC,KAEe,OAAXE,GAAmByB,EAAKa,QAAQ,WAAW,EAAEI,KAAK,YAAY,EAAE0C,GAAG,UAAU,GAChF3D,EAAKG,SAAS,uBAAuB,EAAEkD,KAAK,EACzCrD,EAAKa,QAAQ,WAAW,EAAEI,KAAK,oBAAoB,EAAEb,MAAM,EAAES,QAAQ,IAAI,EAAEI,KAAK,oBAAoB1C,CAAM,EAAE,IAC9GyB,EAAKa,QAAQ,WAAW,EAAEI,KAAK,oBAAoB,EAAEb,MAAM,EAAES,QAAQ,IAAI,EAAEI,KAAK,oBAAoB1C,CAAM,EAAEqF,MAAM,EAClH5D,EAAKa,QAAQ,WAAW,EAAEI,KAAK,oBAAoB,EAAEb,MAAM,EAAEoD,KAAK,UAAW,CAAA,CAAK,IAElFxD,EAAKa,QAAQ,WAAW,EAAEI,KAAK,oBAAoB,EAAEb,MAAM,EAAEoD,KAAK,UAAW,CAAA,CAAK,EAClFxD,EAAK4D,MAAM,KAGZ5D,EAAKG,SAAS,uBAAuB,EAAEsD,KAAK,EAC5CV,iBAAmB,KACH,0BAAXxE,GAEJ8D,UAAUC,KAAK,EAAEC,IADN,0CACgB,EAEZ,SAAXhE,GAEJ8D,UAAUC,KAAK,EAAEC,IADN,uCACgB,EAE5BmB,WAAWrF,sBAAuB,IAAI,EAxDhC,CA0DR,CAAC,CACF,CAMA,SAAS2E,4BAA4Ba,GAEpC,IAAM9C,EAAgB8C,EAAQ7C,QAAQ,6BAA6B,EAAEC,KAAK,oBAAoB,EAC9FC,IAAIC,EAAc,GAEW,IAAzBJ,EAAc+C,QACjBjE,MAAM,0BAA0B,EAGjCkB,EAAcK,KAAK,SAAUC,EAAOC,GAC7BC,EAAYzC,OAAOwC,CAAO,EAAEE,IAAI,EACtCL,EAAYM,KAAKF,CAAS,CAC3B,CAAC,EAEK5C,EAAO,CACZJ,OAAQ,qBACRwF,SAAUC,aAAaC,WACvB9C,YAAaA,CACd,EACArC,OAAOoF,KAAK,CACXC,KAAM,OACNC,IAAKJ,aAAaK,QAClB1F,KAAMA,EACN2F,WAAY,WACXT,EAAQ7C,QAAQ,6BAA6B,EAAEC,KAAK,oDAAoD,EAAEoC,KAAK,CAChH,EACAkB,QAAS,SAAS7F,GACjBmF,EAAQ7C,QAAQ,6BAA6B,EAAEC,KAAK,oDAAoD,EAAEwC,KAAK,EAC3G/E,EAAO6F,SACVlC,UAAUC,KAAK,EAAEC,IAAI7D,EAAOC,IAAI,EAChC6F,SAASC,iBAAiB,kBAAmB,SAAU3B,GACtD0B,SAASE,SAASC,OAAO,CAC1B,CAAC,GAEDtC,UAAUC,KAAK,EAAEM,SAASlE,EAAOC,IAAI,CAEvC,CACD,CAAC,CACF,CAGA,SAASW,gCACRR,OAAO,uBAAuB,EAC5BY,IAAI,OAAO,EACXC,GAAG,QAAS,WAEb,IAIIK,EACArB,EAQAC,EAMCgG,EApBLC,QAAQC,IAAI,qCAAqC,EAC5ClF,aAAaR,OACjBS,MAAMC,kBAAkBC,eAAe,GAIpCpB,EAAO,CACVJ,OAAQ,uBACRoC,YAHGX,EAAOlB,OAAOmB,IAAI,GAGJa,KAAK,YAAY,EAClCiE,GAAI/E,EAAKa,QAAQ,cAAc,EAAEC,KAAK,KAAK,EAC3CkE,KAAMhF,EAAKa,QAAQ,cAAc,EAAEC,KAAK,aAAa,EACrDmE,SAAUjF,EAAKkF,OAAO,EAAEpE,KAAK,KAAK,EAClCqE,QAASnF,EAAKkF,OAAO,EAAEpE,KAAK,SAAS,CACtC,EACIlC,EAAS,CACZH,SAAU2G,gCACV3C,YAAa,SAASW,GAAMf,UAAUC,KAAK,EAAEM,SAAUQ,CAAI,CAAG,EAC9DvB,QAAS7B,EAAKkF,OAAO,EAAEhF,SAAS,sBAAsB,CACvD,EACI6C,CAAAA,mBACC6B,EAAenE,UAAU,WAAWT,EAAKc,KAAK,YAAY,IAAML,UAAU4E,gBACrD,mBAApB1G,EAAKgC,YAAuD,0BAApBhC,EAAKgC,YAA0CH,QAAQoE,CAAY,IAC/GtG,qBAAqBK,EAAMC,EAAQoB,EAAKa,QAAQ,IAAI,CAAC,EAGpDkC,kBACFzE,qBAAqBK,EAAMC,EAAQoB,EAAKa,QAAQ,IAAI,CAAC,EAEvD,CAAC,CACF,CAGA,SAASuE,gCAAgC1G,EAAQC,EAAMC,EAAQC,GAqB9D,GApBGH,EAAO4G,OAAWzG,EAAI0G,IAAI,CAACC,WAAY9G,EAAO8G,WAAYF,MAAO5G,EAAO4G,KAAK,CAAC,EAC9E5G,EAAOM,OACTH,EAAIqG,OAAO,EAAEA,OAAO,EAAEA,OAAO,EAAEO,QAAQ/G,EAAOM,IAAI,EAClD0E,WAAW,WAAW7E,EAAI6G,QAAQ,GAAG,CAAE,EAAG,IAAI,EACxC3C,kBACLW,WAAWrF,sBAAuB,IAAI,GAKnB,mBAApBM,EAAKgC,aAEkB,CAAA,IAAnBjC,EAAO6F,SAAoB7F,EAAOC,KAAKgH,UAC1CC,OAAOC,OAAO,kEAAmEnH,EAAOC,KAAKgH,SAAS,GAElGjD,EAA2C,KAAA,IAAtBhE,EAAOC,KAAKmH,MAAyBpH,EAAOC,KAAKmH,MAAQ,+BAClFzD,UAAUC,KAAK,EAAEM,SAAUF,CAAW,IAIrChE,EAAOqH,UAAU,CACnB,IAAIC,EAAInH,EAAIG,KAAK,EAEjB,GADAH,EAAIG,KAAKN,EAAOqH,SAAS,EACOE,KAAAA,IAA5BvH,EAAOwH,iBAAgC,CAC1ChF,IAAIiF,EAAczH,EAAO0H,sBACrBC,EAAW3H,EAAOwH,iBAElBI,EADiBxH,OAAOuH,CAAQ,EAAEpF,KAAK,yBAAyB,EAC5B6C,OACpCyC,EAAYzH,OAAO,2CAA6CqH,EAAc,IAAI,EAEtF,GAAuB,EAAnBI,EAAUzC,OAAY,CACzB5C,IAAIsF,EAAQ1H,OAAO,sBAAwBqH,CAAW,EAEtDrH,OAAO,wBAA0BqH,EAAc,UAAU,EAAEM,KAAKH,CAAkB,EAElFpF,IAAIwF,EAAoBF,EAAMvF,KAAK,yBAAyB,EAAE6C,OAC9D0C,EAAMG,OAAO,EACb7H,OAAO,4BAA8BqH,CAAW,EAAES,OAAOP,CAAQ,EAEjEvH,OAAOA,OAAO,4BAA8BqH,CAAW,EAAElF,KAAK,yBAAyB,CAAC,EAAEG,KAAK,SAAUC,EAAOC,GAC3G,EAAED,EAAQqF,GACb5H,OAAOwC,CAAO,EAAEiE,IAAI,UAAW,iBAAiB,CAElD,CAAC,EACDgB,EAAU3C,MAAM,CACjB,KACqB,iBAAhBuC,IACCU,EAAoB,oaAAsaP,EAAqB,oBAC/cQ,EAAkB,qVACrBT,EACA,SACDvH,OAAO,mCAAmC,EAAEiI,MAAMF,EAAoBC,CAAe,EACrFP,EAAU3C,MAAM,EAGnB,CACAF,WAAW,WACV7E,EAAIG,KAAKgH,CAAG,EAAET,IAAI,CAACC,WAAY,SAAS,CAAC,EAAEvE,KAAK,iDAAiDtC,EAAKgC,UAAU,EAAEgG,OAAO,EACzHtH,+BAA+B,EAC/BC,8BAA8B,EAC9BG,kBAAkB,CACnB,EAAE,GAAI,CACP,CACGsD,kBACFA,iBAAiBa,MAAM,CACzB,CAGA,SAASrE,+BACR,IAAIZ,EAAO,CAACJ,OAAQ,qBAAsB,EACtCK,EAAS,CAACH,SAAUuI,+BAAgCxI,QAAS,CAAA,CAAK,EACtEM,OAAO,yBAAyB,EAAEa,GAAG,QAAS,WAC7Cb,OAAOmB,IAAI,EAAEY,QAAQ,WAAW,EAAEI,KAAK,yBAAyB,EAAEH,KAAK,WAAY,UAAU,CAC9F,CAAC,EACDhC,OAAO,qBAAqB,EAAEa,GAAG,QAAS,WACzC,IAAIK,EAAOlB,OAAOmB,IAAI,EAClBpB,EAAMmB,EAAKa,QAAQ,WAAW,EAClClC,EAAKsI,KAAOjH,EAAKE,SAAS,4BAA4B,EAAEsB,IAAI,EAC5D7C,EAAKwF,KAAOtF,EAAIiC,KAAK,MAAM,EAC3BlC,EAAOiD,QAAU7B,EAAKE,SAAS,uBAAuB,EACtD5B,qBAAqBK,EAAMC,EAAQC,CAAG,CACvC,CAAC,EACDC,OAAO,uBAAuB,EAAEa,GAAG,QAAS,WAC3C,IAAIK,EAAOlB,OAAOmB,IAAI,EAClBpB,EAAMmB,EAAKa,QAAQ,WAAW,EAClClC,EAAKsI,KAAOjH,EAAKa,QAAQ,0BAA0B,EAAEC,KAAK,WAAW,EACrEnC,EAAKwF,KAAOtF,EAAIiC,KAAK,MAAM,EAC3BlC,EAAOiD,QAAU7B,EAAKE,SAAS,uBAAuB,EACtD5B,qBAAqBK,EAAMC,EAAQC,CAAG,CACvC,CAAC,EACDC,OAAO,uBAAuB,EAAEa,GAAG,QAAS,WAC3C,IAAIK,EAAOlB,OAAOmB,IAAI,EAClBpB,EAAMmB,EAAKa,QAAQ,WAAW,EAClClC,EAAKsI,KAAOjH,EAAKa,QAAQ,0BAA0B,EAAEC,KAAK,WAAW,EACrEnC,EAAKwF,KAAOtF,EAAIiC,KAAK,MAAM,EAC3BlC,EAAOiD,QAAU7B,EAAKE,SAAS,uBAAuB,EACtD5B,qBAAqBK,EAAMC,EAAQC,CAAG,CACvC,CAAC,EACDC,OAAO,sBAAsB,EAAEa,GAAG,QAAS,WAC1C,IAAIK,EAAOlB,OAAOmB,IAAI,EAClBpB,EAAMmB,EAAKa,QAAQ,WAAW,EAClClC,EAAKsI,KAAOjH,EAAKa,QAAQ,0BAA0B,EAAEC,KAAK,WAAW,EACrEnC,EAAKwF,KAAOtF,EAAIiC,KAAK,MAAM,EAC3BlC,EAAOiD,QAAU7B,EAAKE,SAAS,uBAAuB,EACtD5B,qBAAqBK,EAAMC,EAAQC,CAAG,CACvC,CAAC,EACDC,OAAO,wBAAwB,EAAEa,GAAG,QAAS,WAC5C,IAAIK,EAAOlB,OAAOmB,IAAI,EAClBpB,EAAMmB,EAAKa,QAAQ,WAAW,EAClClC,EAAKsI,KAAO,EACZtI,EAAKwF,KAAOtF,EAAIiC,KAAK,MAAM,EAC3BlC,EAAOiD,QAAU7B,EAAKE,SAAS,uBAAuB,EACtD5B,qBAAqBK,EAAMC,EAAQC,CAAG,CACvC,CAAC,CACF,CAEA,SAASqI,2BAA2BrI,EAAK2H,GACxC,IACIW,GAAStI,EADHC,OAAOD,CAAG,GACHgC,QAAQ,cAAc,EAAEC,KAAK,KAAK,EAGnDxC,qBAFW,CAACC,OAAQ,kBAAmB4F,KAAMqC,EAAOW,OAAQA,CAAO,EACtD,CAAC1I,SAAUuI,+BAAgCxI,QAAS,CAAA,CAAK,EACnCK,EAAIgC,QAAQ,WAAW,CAAC,CAC5D,CAGA,SAASmG,+BAA+BtI,EAAQC,EAAMC,EAAQC,GAE7DC,OAAOD,CAAG,EACRG,KAAKN,CAAM,EACXuC,KAAK,yBAAyB,EAAEmG,WAAW,UAAU,EACvD/H,+BAA+B,EAC/BC,8BAA8B,EAC9BC,6BAA6B,EAC7BC,uBAAuB,EACvBC,kBAAkB,CACnB,CAGA,SAASD,yBAER,IAAIZ,EAAS,CAACH,SAAU4I,yBAA0B7I,QAAS,CAAA,CAAK,EAChEM,OAAO,sBAAsB,EAAEa,GAAG,QAAS,SAASmD,GACnD,IAEKjE,EACAsI,EAHDrE,EAAEwE,OAAOC,UAAUC,SAAS,uBAAuB,IAGlDL,EAA6B,UAD7BtI,GADAmB,EAAOlB,OAAOmB,IAAI,GACPY,QAAQ,WAAW,GACjBC,KAAK,MAAM,EAAchC,OAAO,sCAAsC,EAAEE,KAAK,EAAG,GAC7FL,EAAO,CACVJ,OAAU,gBACVkJ,SAAUzH,EAAKc,KAAK,IAAI,EACxB4G,MAAU1H,EAAKc,KAAK,gBAAgB,EACpCqD,KAAUtF,EAAIiC,KAAK,MAAM,EACzBqG,OAAQA,CACT,EACA7I,qBAAqBK,EAAMC,EAAQC,CAAG,EAExC,CAAC,CACF,CAGA,SAASwI,yBAAyB3I,EAAQC,EAAMC,EAAQC,GACvDC,OAAOD,CAAG,EAAEG,KAAKN,CAAM,EACvBW,+BAA+B,EAC/BC,8BAA8B,EAC9BC,6BAA6B,EAC7BC,uBAAuB,CACxB,CAWA,SAASmI,eAAeC,EAAUC,GAE7BC,EAAQhJ,OADI,IAAM+I,EAAa,UAAYD,CACnB,EACxBE,EAAMC,SAAS,kBAAkB,EACpCD,EAAME,YAAY,kBAAkB,EAEpCF,EAAMG,SAAS,kBAAkB,CAEnC,CAjcAlF,iBAAmB,KAgbnBjE,OAAO0F,QAAQ,EAAE0D,MAAM,WAGtB7I,+BAA+B,EAC/BC,8BAA8B,EAC9BC,6BAA6B,EAC7BC,uBAAuB,CACxB,CAAC"}
  • security-malware-firewall/trunk/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/Controller.php

    r3022805 r3049762  
    4242    private function scanFileForHeuristic(FileInfo $file_info, $root_path)
    4343    {
    44         $scanner = new HeuristicAnalyser(array('path' => $root_path . $file_info->path));
     44        if ( ! empty($file_info->content) ) {
     45            $params = ['content' => $file_info->content];
     46        } else {
     47            $params = ['path' => $root_path . $file_info->path];
     48        }
     49
     50        $scanner = new HeuristicAnalyser($params);
    4551
    4652        $output = new Verdict();
  • security-malware-firewall/trunk/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php

    r3041922 r3049762  
    591591
    592592        return $token->type === 'T_CONSTANT_ENCAPSED_STRING' &&
    593                is_callable(trim((string)$token->value, '\'')) &&
    594                in_array(trim((string)$token->value, '\''), $this->dangerous_decoded_values, true);
     593            is_callable(trim((string)$token->value, '\'')) &&
     594            in_array(trim((string)$token->value, '\''), $this->dangerous_decoded_values, true);
    595595    }
    596596
  • security-malware-firewall/trunk/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/Modules/Mathematics.php

    r3011278 r3049762  
    8383    {
    8484        $start_position = $this->tokens->next1[3];
     85        if ( is_null($start_position) ) {
     86            // Returns empty array if no more tokens forward
     87            return new ExtendedSplFixedArray();
     88        }
    8589        $closing_bracket_position = $this->tokens->searchForward($start_position, $closing_bracket);
    8690        $tokens_inside_brackets = $this->tokens->getRange($start_position, $closing_bracket_position - 1);
  • security-malware-firewall/trunk/lib/CleantalkSP/SpbctWP/Activator.php

    r3034394 r3049762  
    3535            // For all blogs
    3636            SpbcCron::addTask('scanner_update_signatures', 'spbc_scanner__signatures_update', 86400, time() + 100);
    37             SpbcCron::addTask('check_vulnerabilities', 'spbc_security_check_vulnerabilities', 86400, time() + 100);
     37            SpbcCron::updateTask('check_vulnerabilities', 'spbc_security_check_vulnerabilities', 86400, time() + 100);
    3838            SpbcCron::addTask('send_php_logs', 'spbc_PHP_logs__send', 3600, time() + 300);
    3939
     
    9090            SpbcCron::addTask('security_log_clear', 'spbc_security_log_clear', 86400, time() + 43200);
    9191            SpbcCron::addTask('get_brief_data', 'spbc_set_brief_data', 86400, time() + 1800);
    92             SpbcCron::addTask('check_vulnerabilities', 'spbc_security_check_vulnerabilities', 86400, time() + 100);
     92            SpbcCron::updateTask('check_vulnerabilities', 'spbc_security_check_vulnerabilities', 86400, time() + 100);
    9393            SpbcCron::addTask('cdn_check', 'spbc_cdn_checker__send_request', 86400, time() + 86400);
    9494
  • security-malware-firewall/trunk/lib/CleantalkSP/SpbctWP/Firewall/UploadChecker.php

    r3041922 r3049762  
    88use CleantalkSP\SpbctWP\Helpers\Helper;
    99use CleantalkSP\SpbctWP\Helpers\IP;
     10use CleantalkSP\SpbctWP\Scanner\FileInfoExtended;
    1011use CleantalkSP\SpbctWP\VulnerabilityAlarm\VulnerabilityAlarm;
    1112use CleantalkSP\Variables\Post;
    1213use CleantalkSP\Variables\Server;
     14use CleantalkSP\SpbctWP\Escape;
    1315
    1416class UploadChecker extends FirewallModule
     
    9698    private function runCheckForFilesGlobalVariable($global_files_variable)
    9799    {
     100        $trust_module = false;
     101        if (array_key_exists('trust_module', $_POST)) {
     102            $trust_module = $_POST['trust_module'];
     103        }
    98104        foreach ( $global_files_variable as $files ) {
    99105            if ( (empty($files['error']) || $files['error'] === UPLOAD_ERR_OK) ) {
     
    104110                        is_uploaded_file($file_path) &&
    105111                        is_readable($file_path) &&
    106                         in_array(Data::getMIMEType($file_path), $this->waf_file_mime_check)
     112                        in_array(Data::getMIMEType($file_path), $this->waf_file_mime_check) &&
     113                        $trust_module == false
    107114                    ) {
    108115                        //Check uploaded plugins and themes, this sign can be fired only on due $_FILES handling
     
    184191        //then check heuristics if signatures passed
    185192        $heuristic_scanner = new \CleantalkSP\Common\Scanner\HeuristicAnalyser\Controller();
    186         $file_to_check = new \CleantalkSP\Common\Scanner\HeuristicAnalyser\Structures\FileInfo($file_path);
     193        $file_to_check = new FileInfoExtended(array('path' => $file_path));
    187194        $heuristic_result = $heuristic_scanner->scanFile($file_to_check, '');
    188195
     
    302309        if ( $overall_result ) {
    303310            if (self::checkVulnerability($source)) {
     311                $message = '<b>' . __('If you want to continue the installation, add the file and click install.', 'security-malware-firewall') . '</b>';
     312                echo Escape::escKsesPreset($message, 'spbc_cdn_checker_table');
     313                ?>
     314                <form method="post" enctype="multipart/form-data" class="wp-upload-form"
     315                action="<?php echo esc_url(self_admin_url('update.php?action=upload-plugin')); ?>">
     316                    <?php wp_nonce_field('plugin-upload'); ?>
     317                    <label class="screen-reader-text" for="pluginzip">
     318                        <?php
     319                        /* translators: Hidden accessibility text. */
     320                        _e('Plugin zip file', 'security-malware-firewall');
     321                        ?>
     322                    </label>
     323                    <input type="hidden" name="trust_module" value="true">
     324                    <input type="hidden" name="file_path" id="file_path">
     325                    <input type="file" id="pluginzip" name="pluginzip" accept=".zip"/>
     326                    <?php submit_button(__('Install Now', 'security-malware-firewall'), '', 'install-plugin-submit', false); ?>
     327                </form>
     328                <?php
     329
    304330                return new \WP_Error(
    305331                    'spbct.plugin_check.malware_found',
  • security-malware-firewall/trunk/lib/CleantalkSP/SpbctWP/ListTable.php

    r3034394 r3049762  
    389389
    390390            // Sorting
    391             if ( in_array($column_key, $this->sortable) ) {
     391            if ( in_array($column_key, $this->sortable) && count($this->rows) != 1 ) {
    392392                $classes .= ' tbl-column-sortable';
    393393                $classes .= isset($this->order_by[$column_key]) ? ' tbl-column-sorted' : '';
  • security-malware-firewall/trunk/lib/CleantalkSP/SpbctWP/Scanner/DirectoryScan.php

    r3028558 r3049762  
    197197            }*/
    198198
    199             $file_to_check = new \CleantalkSP\Common\Scanner\HeuristicAnalyser\Structures\FileInfo(
    200                 $file['path'],
    201                 $file['full_hash']
    202             );
     199            $file_to_check = new FileInfoExtended($file['path']);
    203200            $heur_result = $heuristic_scanner->scanFile($file_to_check, $this->root);
    204201
  • security-malware-firewall/trunk/lib/CleantalkSP/SpbctWP/Scanner/FileInfoExtended.php

    r2933306 r3049762  
    6363    public $size;
    6464
     65    /**
     66     * @param array $file
     67     */
    6568    public function __construct($file)
    6669    {
    67         parent::__construct($file['path'], $file['full_hash']);
     70        parent::__construct($file['path']);
    6871        $this->source_type = isset($file['source_type']) ? $file['source_type'] : null;
    6972        $this->source = isset($file['source']) ? $file['source'] : null;
  • security-malware-firewall/trunk/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php

    r3026245 r3049762  
    413413        );
    414414
     415        function spbc_check_encoding($string)
     416        {
     417            if (spbc_check_ascii($string)) {
     418                return $string;
     419            }
     420
     421            $string = utf8_decode($string);
     422
     423            if (spbc_check_ascii($string)) {
     424                return $string;
     425            } else {
     426                return false;
     427            }
     428        }
     429
    415430        $fms_logs_data_prepare = [];
     431        $fms_skipped_urls_from_sending = [];
    416432        foreach ($fms_logs_data as $fms_value) {
    417             $weak_codes = json_decode($fms_value['weak_spots'], true)['CRITICAL'];
    418             $weak_codes_before = json_decode($fms_value['weak_spots'], true)['CONTENT_BEFORE'];
    419             $weak_codes_after = json_decode($fms_value['weak_spots'], true)['CONTENT_AFTER'];
     433            if (!is_string($fms_value['weak_spots'])) {
     434                $fms_skipped_urls_from_sending[] = array('url' => $fms_value['url'], 'skip_reason' => 'weak_spots is not a string');
     435                continue;
     436            }
     437
     438            $weak_spots_decoded = json_decode($fms_value['weak_spots'], true);
     439
     440            if ( is_null($weak_spots_decoded) ) {
     441                $fms_skipped_urls_from_sending[] = array('url' => $fms_value['url'], 'skip_reason' => 'can not decode JSON of weak_spots');
     442                continue;
     443            } else {
     444                $weak_codes         = !empty($weak_spots_decoded['CRITICAL'])       ? $weak_spots_decoded['CRITICAL']       : null;
     445                $weak_codes_before  = !empty($weak_spots_decoded['CONTENT_BEFORE']) ? $weak_spots_decoded['CONTENT_BEFORE'] : null;
     446                $weak_codes_after   = !empty($weak_spots_decoded['CONTENT_AFTER'])  ? $weak_spots_decoded['CONTENT_AFTER']  : null;
     447            }
    420448
    421449            if (is_null($weak_codes)) {
     450                $fms_skipped_urls_from_sending[] = array('url' => $fms_value['url'], 'skip_reason' => 'weak_spot has no CRITICAL severity');
    422451                continue;
    423452            }
     
    429458                $page_content_before_bad_code = $weak_codes_before[$weak_code_line];
    430459                $page_content_after_bad_code = $weak_codes_after[$weak_code_line];
     460
     461                if (
     462                    !spbc_check_encoding($weak_code) ||
     463                    !spbc_check_encoding($page_content_before_bad_code) ||
     464                    !spbc_check_encoding($weak_code)
     465                ) {
     466                    $fms_skipped_urls_from_sending[] = array('url' => $fms_value['url'], 'skip_reason' => 'non-ASCII symbols found in weak_spots or nearby code');
     467                    continue(2);
     468                }
    431469
    432470                if (strpos($weak_code, 'iframe') !== false) {
     
    444482                    $fms_value['url'],
    445483                    $weak_code,
    446                     spbc_check_ascii($weak_code)                    ? $weak_code                    : utf8_decode($weak_code),
    447                     spbc_check_ascii($page_content_before_bad_code) ? $page_content_before_bad_code : utf8_decode($page_content_before_bad_code),
    448                     spbc_check_ascii($page_content_after_bad_code)  ? $page_content_after_bad_code  : utf8_decode($page_content_after_bad_code),
     484                    $page_content_before_bad_code,
     485                    $page_content_after_bad_code,
    449486                    get_the_modified_date('Y-m-d H:i:s', $fms_value['page_id']),
    450487                    $weak_type
    451488                ];
    452489            }
     490        }
     491
     492        // save skipped url to the data for further investigations
     493        if ( ! empty($fms_skipped_urls_from_sending) ) {
     494            $spbc->data['fms_log_skipped_urls_from_sending'] = $fms_skipped_urls_from_sending;
     495            $spbc->save('data');
    453496        }
    454497
     
    472515            );
    473516            if ( ! empty($result_fms['error']) ) {
    474                 throw new \Exception(' Frontend result send: ' . $result_fms['error_message']);
     517                $error_msg = 'Unknown error.';
     518                if (isset($result_fms['error_message'])) {
     519                    $error_msg = $result_fms['error_message'];
     520                } elseif (is_string($result_fms['error'])) {
     521                    $error_msg = $result_fms['error'];
     522                }
     523                throw new \Exception(' Frontend result send: ' . $error_msg);
    475524            }
    476525        }
  • security-malware-firewall/trunk/lib/CleantalkSP/SpbctWP/Scanner/ScannerQueue.php

    r3041922 r3049762  
    10651065                weak_spots = \'\'
    10661066                WHERE status   =   \'DENIED_BY_CT\'
    1067                 AND full_hash NOT IN (\'' . $where . '\');'
     1067                AND full_hash NOT IN (\'' . $where . '\')
     1068                AND status <> \'QUARANTINED\';'
    10681069            );
    10691070
     
    10791080                severity =   \'CRITICAL\',
    10801081                weak_spots = \'{"DENIED_HASH":{"1":["denied_hash"]}}\'
    1081                 WHERE full_hash IN (\'' . $where . '\');'
     1082                WHERE full_hash IN (\'' . $where . '\')
     1083                AND status <> \'QUARANTINED\';'
    10821084            );
    10831085
     
    16191621                'end'       => true,
    16201622                'message'   => __(
    1621                     'Files sending sheduled',
     1623                    'Files sending scheduled',
    16221624                    'security-malware-firewall'
    16231625                ),
     
    17471749                            $file_to_check_with_heuristic = $file_to_check_with_heuristic[0];
    17481750
    1749                             $file_to_check = new \CleantalkSP\Common\Scanner\HeuristicAnalyser\Structures\FileInfo(
    1750                                 $file['path'],
    1751                                 $file['full_hash']
    1752                             );
     1751                            $file_to_check = new FileInfoExtended($file['path']);
    17531752                            $result = $heuristic_scanner->scanFile($file_to_check, $root_path);
    17541753
  • security-malware-firewall/trunk/lib/CleantalkSP/SpbctWP/VulnerabilityAlarm/VulnerabilityAlarmService.php

    r3041922 r3049762  
    6262        if ( empty($plugin->rs_app_version_max) ) {
    6363            return true;
     64        }
     65
     66        // if no rs_app_version_min provided, makes module
     67        // think that all the version below rs_app_version_max is vulnerable
     68        if ( empty($plugin->rs_app_version_min) ) {
     69            $plugin->rs_app_version_min = '0.0';
    6470        }
    6571
  • security-malware-firewall/trunk/lib/CleantalkSP/SpbctWP/VulnerabilityAlarm/VulnerabilityAlarmView.php

    r3041922 r3049762  
    1919        $alarm_text = esc_html__('Security by CleanTalk', 'security-malware-firewall');
    2020        $alarm_text .= ': ';
    21         $alarm_text .= esc_html__('The plugin contains known vulnerability', 'security-malware-firewall');
     21        $alarm_text .= esc_html__('This version contains known vulnerability', 'security-malware-firewall');
    2222        $alarm_cve_url = $plugin_report->CVE;
    2323        $delete_text = esc_html__('It is strongly recommended to delete the plugin.', 'security-malware-firewall');
  • security-malware-firewall/trunk/readme.txt

    r3041922 r3049762  
    11=== Security & Malware scan by CleanTalk ===
    2 Contributors: glomberg, artemacleantalk, alexandergull
     2Contributors: glomberg, alexandergull, sergefcleantalk
    33Tags: security, firewall, malware, wordpress security, brute force
    44Requires at least: 3.0
    55Tested up to: 6.4
    66Requires PHP: 5.6
    7 Stable tag: 2.129
     7Stable tag: 2.130
    88License: GPLv2
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    333333
    334334== Changelog ==
     335
     336= 2.130 Mar 12 2024 =
     337* Mod. UploadChecker. Now user can proceed the module installation even if got warning from the UploadChecker.
     338* Mod. Outbound links accordion. Layout refactored.
     339* Mod. Vulnerability Alarm. Run request to research.cleantalk.org after any plugin installation.
     340* Fix. Scanner. Heuristic scan by mathematics module fixed.
     341* Fix. Code. Common lib `cleantalk/spbct-heuristic-analyser` updated.
     342* Fix. Scanner. Auto scan scheduling fixed.
     343* Fix. Frontend scanner. Sending logs. Bad encoding cases handled. Log record keys number fixed.
    335344
    336345= 2.129 Feb 26 2024 =
  • security-malware-firewall/trunk/security-malware-firewall.php

    r3041922 r3049762  
    66Description: Security & Malware scan by CleanTalk to protect your website from online threats and viruses. IP/Country FireWall, Web application FireWall. Detailed stats and logs to have full control.
    77Author: CleanTalk Security
    8 Version: 2.129
     8Version: 2.130
    99Author URI: https://cleantalk.org
    1010Text Domain: security-malware-firewall
     
    248248function spbc_security_check_vulnerabilities()
    249249{
     250    global $spbc;
    250251    try {
    251252        VulnerabilityAlarm::checkVulnerabilities();
     253        $spbc->data['spbc_security_check_vulnerabilities_last_call'] = time();
     254        $spbc->save('data');
    252255    } catch ( \Exception $exception ) {
    253256        return ['error' => $exception->getMessage()];
Note: See TracChangeset for help on using the changeset viewer.