Wire up migrations and actual database transactions. Things are looking good!

merge-requests/2/head
Mike Koch 9 years ago
parent ec606341f3
commit 9d2283ecf7

@ -1,10 +1,33 @@
<?php
define('IN_SCRIPT',1);
define('HESK_PATH','../../');
require(HESK_PATH . 'install/install_functions.inc.php');
define('HESK_PATH','../../../');
require(HESK_PATH . 'hesk_settings.inc.php');
require('modsForHeskSql.php');
require(HESK_PATH . 'inc/common.inc.php');
hesk_load_database_functions();
require('../modsForHeskSql.php');
$version = $_POST['version'];
$type = $_POST['type'];
if ($version == 1) {
executePre140Scripts();
} elseif ($version == 140) {
execute140Scripts();
} elseif ($version == 141) {
execute141Scripts();
} elseif ($version == 150) {
execute150Scripts();
} elseif ($version == 160) {
execute160Scripts();
} elseif ($version == 161) {
execute161Scripts();
} elseif ($version == 170) {
execute170Scripts();
execute170FileUpdate();
} elseif ($version == 200) {
execute200Scripts();
execute200FileUpdate();
} else {
$response = 'The version "'.$version.'" was not recognized. Check the value submitted and try again.';
print $response;
http_response_code(400);
}
return;

@ -1,8 +1,9 @@
<?php
define('IN_SCRIPT',1);
define('HESK_PATH','../../../');
require(HESK_PATH . 'install/install_functions.inc.php');
require(HESK_PATH . 'hesk_settings.inc.php');
require(HESK_PATH . 'inc/common.inc.php');
hesk_load_database_functions();
require('../modsForHeskSql.php');
$task = $_POST['task'];
@ -10,14 +11,20 @@ if ($task == 'ip-email-bans') {
$numberOfBans = checkForIpOrEmailBans();
$jsonToSend = array();
if ($numberOfBans > 0) {
$users = getUsers();
$jsonToSend['status'] = 'ATTENTION';
$jsonToSend['users'] = array();
while ($row = hesk_dbFetchAssoc($users)) {
$jsonToSend['users'][$row['id']] = $row['name'];
$users = getUsers();
foreach ($users as $user) {
array_push($jsonToSend['users'], $user);
}
} else {
$jsonToSend['status'] = 'SUCCESS';
}
return json_encode($jsonToSend);
print json_encode($jsonToSend);
} elseif ($task == 'migrate-bans') {
migrateBans($_POST['user']);
} else {
$response = 'The task "'.$task.'" was not recognized. Check your spelling and try again.';
print $response;
http_response_code(400);
}

@ -2,7 +2,44 @@
require(HESK_PATH . 'hesk_settings.inc.php');
function executeQuery($sql) {
return hesk_dbQuery($sql);
global $hesk_last_query;
global $hesk_db_link;
if ( function_exists('mysqli_connect') ) {
if ( ! $hesk_db_link && ! hesk_dbConnect())
{
return false;
}
$hesk_last_query = $sql;
if ($res = @mysqli_query($hesk_db_link, $sql))
{
return $res;
} else
{
print "Could not execute query: $sql. MySQL said: ".mysqli_error($hesk_db_link);
http_response_code(500);
die();
}
} else {
if ( ! $hesk_db_link && ! hesk_dbConnect())
{
return false;
}
$hesk_last_query = $sql;
if ($res = @mysql_query($sql, $hesk_db_link))
{
return $res;
} else
{
print "Could not execute query: $sql. MySQL said: ".mysql_error();
http_response_code(500);
die();
}
}
}
// Version 1.0.0 - <1.4.0
@ -251,20 +288,17 @@ function getUsers() {
$users = array();
$usersRS = executeQuery("SELECT `id`, `name` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."users` WHERE `active` = '1' ORDER BY `name`");
while ($row = hesk_dbFetchAssoc($usersRS)) {
$users[$row['id']] = $row['name'];
array_push($users, $row);
}
return $users;
}
function migrateBans() {
function migrateBans($creator) {
global $hesk_settings;
hesk_dbConnect();
// Get the ID of the creator
$creator = $_POST['user'];
// Insert the email bans
$emailBanRS = executeQuery("SELECT `Email` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."denied_emails`");
while ($row = hesk_dbFetchAssoc($emailBanRS)) {

@ -136,7 +136,7 @@ function appendToInstallConsole(text) {
function processUpdates(startingVersion) {
if (startingVersion < 1) {
startVersionUpgrade('p140');
executeUpdate(1, 'p140');
executeUpdate(1000, 'p140');
} else if (startingVersion < 140) {
startVersionUpgrade('140');
executeUpdate(140, '140');
@ -170,30 +170,83 @@ function executeUpdate(version, cssclass) {
markUpdateAsSuccess(cssclass);
if (version == 200) {
migrateIpEmailBans();
migrateIpEmailBans('banmigrate', cssclass);
}
processUpdates(version);
},
error: function() {
error: function(data) {
appendToInstallConsole('ERROR: ' + data.responseText);
markUpdateAsFailure(cssclass);
}
});
}
function migrateIpEmailBans(cssclass) {
function migrateIpEmailBans(version, cssclass) {
startVersionUpgrade(version);
$.ajax({
type: 'POST',
url: 'ajax/task-ajax.php',
data: { task: 'ip-email-bans' },
success: function(data) {
console.info(data);
var parsedData = $.parseJSON(data);
console.info(parsedData);
if (parsedData.status == 'ATTENTION') {
markUpdateAsAttention(version);
prepareAttentionPanel(getContentForMigratePrompt(parsedData.users));
} else {
markUpdateAsSuccess(version);
}
//if ask user, markUpdateAsAttention and append to Attention! div
//otherwise, mark success and move to completion script.
},
error: function() {
error: function(data) {
appendToInstallConsole('ERROR: ' + data.responseText);
markUpdateAsFailure(cssclass);
}
});
}
function getContentForMigratePrompt(users) {
var beginningText = '<h2>Migrating IP / E-mail Bans</h2><p>Mods for HESK has detected that you have added IP address ' +
'and/or email bans using Mods for HESK. As part of the upgrade process, Mods for HESK will migrate these bans ' +
'for you to HESK 2.6.0\'s IP/email ban feature. Select the user below that will be the "creator" of the bans, ' +
'then click "Submit".</p>';
var selectMarkup = '<div class="row form-horizontal"><div class="control-label col-md-3 col-xs-12" style="text-align: right;vertical-align: middle"><b>User:</b></div>' +
'<div class="col-md-9 col-x-12"><select name="user" class="form-control" id="user-dropdown">';
users.forEach(function(user) {
selectMarkup += '<option value="'+user.id+'">'+user.name+'</option>';
});
selectMarkup += '</select></div></div><br>';
var submitMarkup = '<div class="row"><div class="col-md-9 col-md-offset-3 col-xs-12"><button onclick="runMigration()" class="btn btn-default">Migrate</button> ' +
'<a href="javascript:void(0)" onclick="dontMigrate()" class="btn btn-danger">Don\'t Migrate</a> </div></div>';
return beginningText + selectMarkup + submitMarkup;
}
function prepareAttentionPanel(content) {
$('#attention-body').html(content);
$('#attention-row').show();
}
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) {
markUpdateAsSuccess('banmigrate');
//TODO cover entire install area with success message.
},
error: function(data) {
appendToInstallConsole('ERROR: ' + data.responseText);
markUpdateAsFailure('banmigrate');
}
})
}
jQuery(document).ready(loadJquery);

Loading…
Cancel
Save