// global vars var wpmdb = wpmdb || {}; wpmdb.common = { hooks: [], call_stack: [], non_fatal_errors: '', migration_error: false }; wpmdb.functions = {}; /** * Toggle proper translated strings based on migration type selected. * * To show the properly translated strings for the selected push or pull * migration type, we need to hide all strings then show the right * translated strings based on the migration type selected. * * @see https://github.com/deliciousbrains/wp-migrate-db-pro/issues/764 * * @return void */ function wpmdb_toggle_migration_action_text() { jQuery( '.action-text' ).hide(); jQuery( '.action-text.' + jQuery( 'input[name=action]:checked' ).val() ).show(); } /** * Return the currently selected migration type selected. * * @return string Will return `push`, `pull`, `savefile`, or `` for exporting as a file. */ function wpmdb_migration_type() { var action = jQuery( 'input[name=action]:checked' ); if ( 0 === action.length ) { return ''; } return action.val(); } function wpmdb_call_next_hook() { if ( !wpmdb.common.call_stack.length ) { wpmdb.common.call_stack = wpmdb.common.hooks; } var func = wpmdb.common.call_stack[ 0 ]; wpmdb.common.call_stack.shift(); func.call( this ); } function wpmdb_add_commas( number_string ) { number_string += ''; var number_parts = number_string.split( '.' ); var integer = number_parts[ 0 ]; var decimal = 1 < number_parts.length ? '.' + number_parts[ 1 ] : ''; var rgx = /(\d+)(\d{3})/; while ( rgx.test( integer ) ) { integer = integer.replace( rgx, '$1' + ',' + '$2' ); } return integer + decimal; } function wpmdb_parse_json( maybe_json ) { var json_object = {}; try { json_object = jQuery.parseJSON( maybe_json ); } catch ( e ) { // We simply return false here because the json data itself will never just contain a value of "false" return false; } return json_object; } /** * Global error method for detecting PHP or other errors in AJAX response * * @param title - the error title if not a PHP error * @param code - the error code if not a PHP error * @param text - the AJAX response text to sniff for errors * @param jqXHR - optional AJAX object used to enrich the error message * * @returns {string} - html error string with view error toggle element */ function wpmdbGetAjaxErrors( title, code, text, jqXHR ) { var jsonErrors = false; var html = ''; var validJson = wpmdb_parse_json( text ); if ( false === validJson ) { jsonErrors = true; title = wpmdb_strings.ajax_json_message; code = '(#144)'; var originalText = text; text = wpmdb_strings.ajax_json_errors + ' ' + code; text += '
' + wpmdb_strings.view_error_messages + ' '; text += '
' + originalText + '
'; } // Only add local connection issue if php errors (#144) or jqXHR has been provided if ( jsonErrors || 'undefined' !== jqXHR ) { html += '' + title + '' + ' — '; } // Only add extra error details if not php errors (#144) and jqXHR has been provided if ( !jsonErrors && 'undefined' !== jqXHR ) { html += wpmdb_strings.status + ': ' + jqXHR.status + ' ' + jqXHR.statusText; html += '

' + wpmdb_strings.response + ':
'; } // Add code to the end of the error text if not json errors if ( !jsonErrors ) { text += ' ' + code; } // Finally add the error message to the output html += text; return html; } wpmdb.preg_quote = function( str, delimiter ) { // discuss at: http://phpjs.org/functions/preg_quote/ // original by: booeyOH // improved by: Ates Goral (http://magnetiq.com) // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // improved by: Brett Zamir (http://brett-zamir.me) // bugfixed by: Onno Marsman // example 1: preg_quote("$40"); // returns 1: '\\$40' // example 2: preg_quote("*RRRING* Hello?"); // returns 2: '\\*RRRING\\* Hello\\?' // example 3: preg_quote("\\.+*?[^]$(){}=!<>|:"); // returns 3: '\\\\\\.\\+\\*\\?\\[\\^\\]\\$\\(\\)\\{\\}\\=\\!\\<\\>\\|\\:' return String( str ) .replace( new RegExp( '[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\' + ( delimiter || '' ) + '-]', 'g' ), '\\$&' ); }; wpmdb.table_is = function( table_prefix, desired_table, given_table ) { if ( ( table_prefix + desired_table ).toLowerCase() === given_table.toLowerCase() ) { return true; } var escaped_given_table = wpmdb.preg_quote( given_table ); var regex = new RegExp( table_prefix + '([0-9]+)_' + desired_table, 'i' ); var results = regex.exec( escaped_given_table ); return null != results; }; wpmdb.subsite_for_table = function( table_prefix, table_name ) { var escaped_table_name = wpmdb.preg_quote( table_name ); var regex = new RegExp( table_prefix + '([0-9]+)_', 'i' ); var results = regex.exec( escaped_table_name ); if ( null === results ) { return 1; } else { return results[ 1 ]; } }; wpmdb.functions.convertKBSizeToHR = function( size, dec, kbSize, retArray ) { var retVal, units; kbSize = kbSize || 1000; dec = dec || 2; size = parseInt( size ); if ( kbSize > Math.abs( size ) ) { retVal = [ size.toFixed( 0 ), 'KB' ]; } else { units = [ 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB' ]; var u = -1; do { size /= kbSize; ++u; } while ( Math.abs( size ) >= kbSize && u < units.length - 1 ); retVal = [ Math.round( size * Math.pow( 10, dec ) ) / Math.pow( 10, dec ), units[ u ] ]; } if ( ! retArray ) { retVal = retVal[0] + ' ' + retVal[1]; } return retVal; }; wpmdb.functions.convertKBSizeToHRFixed = function( size, dec, kbSize ) { dec = dec || 2; var hrSizeArray = wpmdb.functions.convertKBSizeToHR( size, dec, kbSize, true ); if ( 'KB' !== hrSizeArray[1] ) { return hrSizeArray[ 0 ].toFixed( 2 ) + ' ' + hrSizeArray[ 1 ]; } return hrSizeArray[ 0 ] + ' ' + hrSizeArray[ 1 ]; };