OwlCyberSecurity - MANAGER
Edit File: cleantalk-comments-checkspam.min.js.map
{"version":3,"file":"cleantalk-comments-checkspam.min.js","sources":["cleantalk-comments-checkspam.js"],"sourcesContent":["// Printf for JS\nString.prototype.printf = function() { // eslint-disable-line no-extend-native\n let formatted = this;\n for ( let arg in arguments ) { // eslint-disable-line guard-for-in,prefer-rest-params\n let beforeFormatted = formatted.substring(0, formatted.indexOf('%s', 0));\n let afterFormatted = formatted.substring(formatted.indexOf('%s', 0)+2, formatted.length);\n // eslint-disable-next-line guard-for-in,prefer-rest-params\n formatted = beforeFormatted + arguments[arg] + afterFormatted;\n }\n return formatted;\n};\n\n// Flags\nlet ctWorking = false;\nlet ctNewCheck = true;\nlet ctCoolingDownFlag = false;\nlet ctCloseAnimate = true;\nlet ctAccurateCheck = false;\nlet ctPause = false;\nlet ctPrevAccurate = ctCommentsCheck.ct_prev_accurate;\nlet ctPrevFrom = ctCommentsCheck.ct_prev_from;\nlet ctPrevTill = ctCommentsCheck.ct_prev_till;\n// Settings\nlet ctCoolDownTime = 90000;\nlet ctRequestsCounter = 0;\nlet ctMaxRequests = 60;\n// Variables\nlet ctAjaxNonce = ctCommentsCheck.ct_ajax_nonce;\nlet ctCommentsTotal = 0;\nlet ctCommentsChecked = 0;\nlet ctCommentsSpam = 0;\nlet ctCommentsBad = 0;\nlet ctUnchecked = 'unset';\nlet ctDateFrom = 0;\nlet ctDateTill = 0;\n\n/**\n * @param {mixed} to\n * @param {string} id\n */\nfunction animateComment(to, id) { // eslint-disable-line no-unused-vars\n if (ctCloseAnimate) {\n if (to==0.3) {\n jQuery('#comment-'+id).fadeTo(200, to, function() {\n animateComment(1, id);\n });\n } else {\n jQuery('#comment-'+id).fadeTo(200, to, function() {\n animateComment(0.3, id);\n });\n }\n } else {\n ctCloseAnimate =true;\n }\n}\n\n/**\n * clear comments\n */\nfunction ctClearComments() {\n let from = 0; let till = 0;\n if (jQuery('#ct_allow_date_range').is(':checked')) {\n from = jQuery('#ct_date_range_from').val();\n till = jQuery('#ct_date_range_till').val();\n }\n let ctSecure = location.protocol === 'https:' ? '; secure' : '';\n document.cookie = 'apbct_check_comments_offset' + '=' + 0 + '; path=/; samesite=lax' + ctSecure;\n\n let data = {\n 'action': 'ajax_clear_comments',\n 'security': ctAjaxNonce,\n 'from': from,\n 'till': till,\n };\n\n jQuery.ajax({\n type: 'POST',\n url: ajaxurl,\n data: data,\n success: function(msg) {\n ctShowInfo();\n ctSendComments();\n },\n });\n}\n\n/**\n * Continues the check after cooldown time\n * Called by ct_send_users();\n */\nfunction ctCoolingDownToggle() {\n ctCoolingDownFlag = false;\n ctSendComments();\n ctShowInfo();\n}\n\n/**\n * send comments\n */\nfunction ctSendComments() {\n if (ctCoolingDownFlag === true) {\n return;\n }\n\n if (ctRequestsCounter >= ctMaxRequests) {\n setTimeout(ctCoolingDownToggle, ctCoolDownTime);\n ctRequestsCounter = 0;\n ctCoolingDownFlag = true;\n return;\n } else {\n ctRequestsCounter++;\n }\n\n let data = {\n 'action': 'ajax_check_comments',\n 'security': ctAjaxNonce,\n 'new_check': ctNewCheck,\n 'unchecked': ctUnchecked,\n 'offset': Number(ctGetCookie('apbct_check_comments_offset')),\n };\n\n if (ctAccurateCheck) {\n data['accurate_check'] = true;\n }\n\n if (ctDateFrom && ctDateTill) {\n data['from'] = ctDateFrom;\n data['till'] = ctDateTill;\n }\n\n jQuery.ajax({\n type: 'POST',\n url: ajaxurl,\n data: data,\n success: function(msg) {\n msg = jQuery.parseJSON(msg);\n\n if (parseInt(msg.error)) {\n ctWorking = false;\n if (!confirm(msg.error_message+'. Do you want to proceed?')) {\n let newHref = 'edit-comments.php?page=ct_check_spam';\n if (ctDateFrom != 0 && ctDateTill != 0) {\n newHref+='&from='+ctDateFrom+'&till='+ctDateTill;\n }\n location.href = newHref;\n } else {\n ctSendComments();\n }\n } else {\n ctNewCheck = false;\n let offset = Number(ctGetCookie('apbct_check_comments_offset')) + 100;\n\n if (parseInt(msg.end) == 1 || ctPause === true) {\n if (parseInt(msg.end) == 1) {\n document.cookie = 'ct_paused_spam_check=0; path=/; samesite=lax';\n }\n ctWorking = false;\n jQuery('#ct_working_message').hide();\n let newHref = 'edit-comments.php?page=ct_check_spam';\n if (ctDateFrom != 0 && ctDateTill != 0) {\n newHref+='&from='+ctDateFrom+'&till='+ctDateTill;\n }\n\n document.cookie = 'apbct_check_comments_offset' + '=' + offset + '; path=/; samesite=lax'+ctSecure;\n\n location.href = newHref;\n } else if (parseInt(msg.end) == 0) {\n ctCommentsChecked += msg.checked;\n ctCommentsSpam += msg.spam;\n ctCommentsBad += msg.bad;\n ctCommentsTotal += msg.total;\n ctUnchecked = ctCommentsTotal - ctCommentsChecked - ctCommentsBad;\n let statusString = String(ctCommentsCheck.ct_status_string);\n statusString = statusString.printf(ctCommentsChecked, ctCommentsSpam, ctCommentsBad);\n if (parseInt(ctCommentsSpam) > 0) {\n statusString += ctCommentsCheck.ct_status_string_warning;\n }\n jQuery('#ct_checking_status').html(statusString);\n jQuery('#ct_error_message').hide();\n // If DB woks not properly\n if (+ctCommentsTotal < ctCommentsChecked + ctCommentsBad) {\n document.cookie = 'ct_comments_start_check=1; path=/; samesite=lax';\n location.href = 'edit-comments.php?page=ct_check_spam';\n }\n\n document.cookie = 'apbct_check_comments_offset' + '=' + offset + '; path=/; samesite=lax'+ctSecure;\n\n ctSendComments();\n }\n }\n },\n error: function(jqXHR, textStatus, errorThrown) {\n jQuery('#ct_error_message').show();\n jQuery('#cleantalk_ajax_error').html(textStatus);\n jQuery('#cleantalk_js_func').html('Check comments');\n setTimeout(ctSendComments(), 3000);\n },\n timeout: 25000,\n });\n}\n\n/**\n * show info\n */\nfunction ctShowInfo() {\n if (ctWorking) {\n if (ctCoolingDownFlag == true) {\n jQuery('#ct_cooling_notice').html('Waiting for API to cool down. (About a minute)');\n jQuery('#ct_cooling_notice').show();\n return;\n } else {\n jQuery('#ct_cooling_notice').hide();\n }\n\n if (!ctCommentsTotal) {\n let data = {\n 'action': 'ajax_info_comments',\n 'security': ctAjaxNonce,\n };\n\n if (ctDateFrom && ctDateTill) {\n data['from'] = ctDateFrom;\n data['till'] = ctDateTill;\n }\n\n jQuery.ajax({\n type: 'POST',\n url: ajaxurl,\n data: data,\n success: function(msg) {\n msg = jQuery.parseJSON(msg);\n jQuery('#ct_checking_status').html(msg.message);\n ctCommentsTotal = msg.total;\n ctCommentsSpam = msg.spam;\n ctCommentsChecked = msg.checked;\n ctCommentsBad = msg.bad;\n },\n error: function(jqXHR, textStatus, errorThrown) {\n jQuery('#ct_error_message').show();\n jQuery('#cleantalk_ajax_error').html(textStatus);\n jQuery('#cleantalk_js_func').html('Check comments');\n setTimeout(ctShowInfo(), 3000);\n },\n timeout: 15000,\n });\n }\n }\n}\n\n/**\n * Function to toggle dependences\n *\n * @param {object} obj\n * @param {mixed} secondary\n */\nfunction ctToggleDepended(obj, secondary) { // eslint-disable-line no-unused-vars\n secondary = secondary || null;\n\n let depended = jQuery(obj.data('depended'));\n let state = obj.data('state');\n\n if (!state && !secondary) {\n obj.data('state', true);\n depended.removeProp('disabled');\n } else {\n obj.data('state', false);\n depended.prop('disabled', true);\n depended.removeProp('checked');\n if (depended.data('depended')) {\n ctToggleDepended(depended, true);\n }\n }\n}\n\n/**\n * trash all\n *\n * @param {object} e\n */\nfunction ctTrashAll( e ) {\n let data = {\n 'action': 'ajax_trash_all',\n 'security': ctAjaxNonce,\n };\n\n jQuery('.' + e.target.id).addClass('disabled');\n jQuery('.spinner').css('visibility', 'visible');\n jQuery.ajax({\n type: 'POST',\n url: ajaxurl,\n data: data,\n success: function( msg ) {\n if ( msg > 0 ) {\n jQuery('#cleantalk_comments_left').html(msg);\n ctTrashAll( e );\n } else {\n jQuery('.' + e.target.id).removeClass('disabled');\n jQuery('.spinner').css('visibility', 'hidden');\n location.href='edit-comments.php?page=ct_check_spam';\n }\n },\n error: function(jqXHR, textStatus, errorThrown) {\n jQuery('#ct_error_message').show();\n jQuery('#cleantalk_ajax_error').html(textStatus);\n jQuery('#cleantalk_js_func').html('Check comments');\n setTimeout(ctTrashAll( e ), 3000);\n },\n timeout: 25000,\n });\n}\n\n/**\n * spam all\n *\n * @param {object} e\n */\nfunction ctSpamAll( e ) {\n let data = {\n 'action': 'ajax_spam_all',\n 'security': ctAjaxNonce,\n };\n\n jQuery('.' + e.target.id).addClass('disabled');\n jQuery('.spinner').css('visibility', 'visible');\n jQuery.ajax({\n type: 'POST',\n url: ajaxurl,\n data: data,\n success: function( msg ) {\n if ( msg > 0 ) {\n jQuery('#cleantalk_comments_left').html(msg);\n ctSpamAll( e );\n } else {\n jQuery('.' + e.target.id).removeClass('disabled');\n jQuery('.spinner').css('visibility', 'hidden');\n location.href='edit-comments.php?page=ct_check_spam';\n }\n },\n error: function(jqXHR, textStatus, errorThrown) {\n jQuery('#ct_error_message').show();\n jQuery('#cleantalk_ajax_error').html(textStatus);\n jQuery('#cleantalk_js_func').html('Check comments');\n setTimeout(ctSpamAll( e ), 3000);\n },\n timeout: 25000,\n });\n}\n\njQuery(document).ready(function() {\n // Prev check parameters\n if (ctPrevAccurate) {\n jQuery('#ct_accurate_check').prop('checked', true);\n }\n if (ctPrevFrom) {\n jQuery('#ct_allow_date_range').prop('checked', true).data('state', true);\n jQuery('#ct_date_range_from').removeProp('disabled').val(ctPrevFrom);\n jQuery('#ct_date_range_till').removeProp('disabled').val(ctPrevTill);\n }\n\n // Toggle dependences\n jQuery('#ct_allow_date_range').on('change', function() {\n document.cookie = 'ct_spam_dates_from='+ jQuery('#ct_date_range_from').val() +'; path=/; samesite=lax';\n document.cookie = 'ct_spam_dates_till='+ jQuery('#ct_date_range_till').val() +'; path=/; samesite=lax';\n if ( this.checked ) {\n document.cookie = 'ct_spam_dates_allowed=1; path=/; samesite=lax';\n jQuery('.ct_date').prop('checked', true).attr('disabled', false);\n } else {\n document.cookie = 'ct_spam_dates_allowed=0; path=/; samesite=lax';\n jQuery('.ct_date').prop('disabled', true).attr('disabled', true);\n }\n });\n\n jQuery.datepicker.setDefaults(jQuery.datepicker.regional['en']);\n var dates = jQuery('#ct_date_range_from, #ct_date_range_till').datepicker( // eslint-disable-line no-var\n {\n dateFormat: 'M d yy',\n maxDate: '+0D',\n changeMonth: true,\n changeYear: true,\n showAnim: 'slideDown',\n onSelect: function(selectedDate) {\n let option = this.id == 'ct_date_range_from' ? 'minDate' : 'maxDate';\n let instance = jQuery( this ).data( 'datepicker' );\n let date = jQuery.datepicker.parseDate(\n instance.settings.dateFormat || jQuery.datepicker._defaults.dateFormat,\n selectedDate, instance.settings);\n dates.not(this).datepicker('option', option, date);\n document.cookie = 'ct_spam_dates_from='+ jQuery('#ct_date_range_from').val() +'; path=/; samesite=lax';\n document.cookie = 'ct_spam_dates_till='+ jQuery('#ct_date_range_till').val() +'; path=/; samesite=lax';\n },\n },\n );\n\n // eslint-disable-next-line require-jsdoc\n function ctStartCheck(continueCheck) {\n continueCheck = continueCheck || null;\n\n if (jQuery('#ct_allow_date_range').is(':checked')) {\n ctDateFrom = jQuery('#ct_date_range_from').val();\n ctDateTill = jQuery('#ct_date_range_till').val();\n\n if (!(ctDateFrom != '' && ctDateTill != '')) {\n alert('Please, specify a date range.');\n return;\n }\n }\n\n if (jQuery('#ct_accurate_check').is(':checked')) {\n ctAccurateCheck = true;\n }\n\n if (\n jQuery('#ct_accurate_check').is(':checked') &&\n ! jQuery('#ct_allow_date_range').is(':checked')\n ) {\n alert('Please, select a date range.');\n return;\n }\n\n jQuery('.ct_to_hide').hide();\n jQuery('#ct_working_message').show();\n jQuery('#ct_preloader').show();\n jQuery('#ct_pause').show();\n\n ctWorking = true;\n\n if (continueCheck) {\n ctShowInfo();\n ctSendComments();\n } else {\n ctClearComments();\n }\n }\n\n // Check comments\n jQuery('#ct_check_spam_button').click(function() {\n document.cookie = 'ct_paused_spam_check=0; path=/; samesite=lax';\n ctStartCheck(false);\n });\n jQuery('#ct_proceed_check_button').click(function() {\n ctStartCheck(true);\n });\n\n // Pause the check\n jQuery('#ct_pause').on('click', function() {\n ctPause = true;\n let ctCheck = {\n 'accurate': ctAccurateCheck,\n 'from': ctDateFrom,\n 'till': ctDateTill,\n };\n document.cookie = 'ct_paused_spam_check=' + JSON.stringify(ctCheck) + '; path=/; samesite=lax';\n });\n\n\n if (ctCommentsCheck.start === '1') {\n document.cookie = 'ct_comments_start_check=0; expires=' + new Date(0).toUTCString() + '; path=/; samesite=lax';\n jQuery('#ct_check_spam_button').click();\n }\n\n // Delete all spam comments\n jQuery('.ct_trash_all').click(function( e ) {\n if (!confirm(ctCommentsCheck.ct_confirm_trash_all)) {\n return false;\n }\n\n ctTrashAll( e );\n });\n\n // Mark as spam all spam comments\n jQuery('.ct_spam_all').click(function( e ) {\n if (!confirm(ctCommentsCheck.ct_confirm_spam_all)) {\n return false;\n }\n\n ctSpamAll( e );\n });\n\n /**\n * Checked ct_accurate_check\n */\n jQuery('#ct_accurate_check').change(function() {\n if (this.checked) {\n jQuery('#ct_allow_date_range').prop('checked', true);\n jQuery('.ct_date').prop('checked', true).attr('disabled', false);\n }\n });\n});\n\n\n/**\n * Get cookie by name\n * @param {string} name\n * @return {string|undefined}\n */\nfunction ctGetCookie(name) {\n let matches = document.cookie.match(new RegExp(\n '(?:^|; )' + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + '=([^;]*)',\n ));\n return matches ? decodeURIComponent(matches[1]) : undefined;\n}\n"],"names":["let","ctWorking","String","prototype","printf","formatted","this","arg","arguments","beforeFormatted","substring","indexOf","afterFormatted","length","ctNewCheck","ctCoolingDownFlag","ctCloseAnimate","ctAccurateCheck","ctPause","ctPrevAccurate","ctCommentsCheck","ct_prev_accurate","ctPrevFrom","ct_prev_from","ctPrevTill","ct_prev_till","ctCoolDownTime","ctRequestsCounter","ctMaxRequests","ctAjaxNonce","ct_ajax_nonce","ctCommentsTotal","ctCommentsChecked","ctCommentsSpam","ctCommentsBad","ctUnchecked","ctDateFrom","ctDateTill","animateComment","to","id","jQuery","fadeTo","ctClearComments","from","till","is","val","ctSecure","location","protocol","data","document","cookie","action","security","ajax","type","url","ajaxurl","success","msg","ctShowInfo","ctSendComments","ctCoolingDownToggle","setTimeout","new_check","unchecked","offset","Number","ctGetCookie","parseJSON","parseInt","error","confirm","error_message","newHref","href","end","hide","checked","spam","bad","total","statusString","ct_status_string","ct_status_string_warning","html","jqXHR","textStatus","errorThrown","show","timeout","message","ctToggleDepended","obj","secondary","depended","prop","removeProp","ctTrashAll","e","target","addClass","css","removeClass","ctSpamAll","name","matches","match","RegExp","replace","decodeURIComponent","undefined","ready","on","attr","datepicker","setDefaults","regional","dates","dateFormat","maxDate","changeMonth","changeYear","showAnim","onSelect","selectedDate","option","instance","date","parseDate","settings","_defaults","not","ctStartCheck","continueCheck","alert","click","ctCheck","accurate","JSON","stringify","start","Date","toUTCString","ct_confirm_trash_all","ct_confirm_spam_all","change"],"mappings":"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"}