var availableUpdates = [ createUpdate(2, 'p140', 'Pre 1.4.0'), createUpdate(3, '140', '1.4.0'), createUpdate(4, '141', '1.4.1'), createUpdate(5, '150', '1.5.0'), createUpdate(6, '160', '1.6.0'), createUpdate(7, '161', '1.6.1'), createUpdate(8, '170', '1.7.0'), createUpdate(9, '200', '2.0.0'), createUpdate(10, '201', '2.0.1'), createUpdate(11, '210', '2.1.0'), createUpdate(12, '211', '2.1.1'), createUpdate(13, '220', '2.2.0'), createUpdate(14, '221', '2.2.1'), createUpdate(15, '230', '2.3.0'), createUpdate(16, '231', '2.3.1'), createUpdate(17, '232', '2.3.2'), createUpdate(18, '240', '2.4.0'), createUpdate(19, '241', '2.4.1'), createUpdate(20, '242', '2.4.2'), createUpdate(21, '250', '2.5.0'), createUpdate(22, '251', '2.5.1'), createUpdate(23, '252', '2.5.2'), createUpdate(24, '253', '2.5.3'), createUpdate(25, '254', '2.5.4'), createUpdate(26, '255', '2.5.5'), createUpdate(27, '260', '2.6.0'), createUpdate(28, '261', '2.6.1'), createUpdate(29, '262', '2.6.2'), createUpdate(30, '263', '2.6.3'), createUpdate(31, '264', '2.6.4'), createUpdate(32, '300b1', '3.0.0 beta 1'), createUpdate(33, '300rc1', '3.0.0 RC 1'), createUpdate(34, '300', '3.0.0'), createUpdate(35, '301', '3.0.1'), createUpdate(36, '302', '3.0.2') ]; function createUpdate(buildNumber, cssClass, display) { return { buildNumber: buildNumber, cssClass: cssClass, display: display }; } function processUpdates(startingVersion) { var ranInstall = false; $.each(availableUpdates, function() { if (startingVersion < this.buildNumber) { ranInstall = true; startVersionUpgrade(this.buildNumber, this.cssClass, this.display); executeUpdate(this.buildNumber, this.cssClass, this.display); } }); if (!ranInstall) { installationFinished(); } } function executeUpdate(version, cssclass, formattedVersion) { appendToInstallConsole('INFOStarting updates for ' + formattedVersion + ''); $.ajax({ type: 'POST', url: 'ajax/install-database-ajax.php', data: {version: version}, success: function () { markUpdateAsSuccess(cssclass, formattedVersion); if (version == 9) { migrateIpEmailBans('banmigrate', 'banmigrate'); } else if (version == 18) { initializeStatuses('initialize-statuses', 'initialize-statuses'); } else { processUpdates(version); } }, error: function (data) { appendToInstallConsole('ERROR' + data.responseText + ''); markUpdateAsFailure(cssclass); } }); } function migrateIpEmailBans(version, cssclass) { startVersionUpgrade(version); appendToInstallConsole('INFOChecking for IP / Email address bans to migrate'); $.ajax({ type: 'POST', url: 'ajax/task-ajax.php', data: {task: 'ip-email-bans'}, success: function (data) { var parsedData = $.parseJSON(data); if (parsedData.status == 'ATTENTION') { appendToInstallConsole('WARNINGYour response is needed. Please check above.'); markUpdateAsAttention(version); prepareAttentionPanel(getContentForMigratePrompt(parsedData.users)); } else { migrateComplete(); } }, error: function (data) { appendToInstallConsole('ERROR' + data.responseText + ''); markUpdateAsFailure(version); } }); } function initializeStatuses(version, cssclass) { startVersionUpgrade(version); appendToInstallConsole('INFOInitializing Statuses'); $.ajax({ type: 'POST', url: 'ajax/task-ajax.php', data: {task: 'initialize-statuses'}, success: function (data) { markUpdateAsSuccess(cssclass, 'Initializing Statuses'); statusesInitialized(); }, error: function (data) { appendToInstallConsole('ERROR' + data.responseText + ''); markUpdateAsFailure(version); } }); } function statusesInitialized() { processUpdates(18); } function runMigration() { // Get user ID that is selected var userId = $('#user-dropdown').val(); // Hide the div, switch back to in progress $('#attention-row').hide(); startVersionUpgrade('banmigrate'); $.ajax({ type: 'POST', url: 'ajax/task-ajax.php', data: {task: 'migrate-bans', user: userId}, success: function (data) { migrateComplete(); }, error: function (data) { appendToInstallConsole('ERROR: ' + data.responseText); markUpdateAsFailure('banmigrate'); } }) } function migrateComplete() { $('#attention-row').hide(); markUpdateAsSuccess('banmigrate', 'IP and Email address bans'); processUpdates(9); } jQuery(document).ready(loadJquery);