Wire up migrations and actual database transactions. Things are looking good!
This commit is contained in:
parent
ec606341f3
commit
9d2283ecf7
@ -1,10 +1,33 @@
|
|||||||
<?php
|
<?php
|
||||||
define('IN_SCRIPT',1);
|
define('IN_SCRIPT',1);
|
||||||
define('HESK_PATH','../../');
|
define('HESK_PATH','../../../');
|
||||||
require(HESK_PATH . 'install/install_functions.inc.php');
|
|
||||||
require(HESK_PATH . 'hesk_settings.inc.php');
|
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'];
|
$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;
|
return;
|
@ -1,8 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
define('IN_SCRIPT',1);
|
define('IN_SCRIPT',1);
|
||||||
define('HESK_PATH','../../../');
|
define('HESK_PATH','../../../');
|
||||||
require(HESK_PATH . 'install/install_functions.inc.php');
|
|
||||||
require(HESK_PATH . 'hesk_settings.inc.php');
|
require(HESK_PATH . 'hesk_settings.inc.php');
|
||||||
|
require(HESK_PATH . 'inc/common.inc.php');
|
||||||
|
hesk_load_database_functions();
|
||||||
require('../modsForHeskSql.php');
|
require('../modsForHeskSql.php');
|
||||||
|
|
||||||
$task = $_POST['task'];
|
$task = $_POST['task'];
|
||||||
@ -10,14 +11,20 @@ if ($task == 'ip-email-bans') {
|
|||||||
$numberOfBans = checkForIpOrEmailBans();
|
$numberOfBans = checkForIpOrEmailBans();
|
||||||
$jsonToSend = array();
|
$jsonToSend = array();
|
||||||
if ($numberOfBans > 0) {
|
if ($numberOfBans > 0) {
|
||||||
$users = getUsers();
|
|
||||||
$jsonToSend['status'] = 'ATTENTION';
|
$jsonToSend['status'] = 'ATTENTION';
|
||||||
$jsonToSend['users'] = array();
|
$jsonToSend['users'] = array();
|
||||||
while ($row = hesk_dbFetchAssoc($users)) {
|
$users = getUsers();
|
||||||
$jsonToSend['users'][$row['id']] = $row['name'];
|
foreach ($users as $user) {
|
||||||
|
array_push($jsonToSend['users'], $user);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$jsonToSend['status'] = 'SUCCESS';
|
$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');
|
require(HESK_PATH . 'hesk_settings.inc.php');
|
||||||
|
|
||||||
function executeQuery($sql) {
|
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
|
// Version 1.0.0 - <1.4.0
|
||||||
@ -251,20 +288,17 @@ function getUsers() {
|
|||||||
$users = array();
|
$users = array();
|
||||||
$usersRS = executeQuery("SELECT `id`, `name` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."users` WHERE `active` = '1' ORDER BY `name`");
|
$usersRS = executeQuery("SELECT `id`, `name` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."users` WHERE `active` = '1' ORDER BY `name`");
|
||||||
while ($row = hesk_dbFetchAssoc($usersRS)) {
|
while ($row = hesk_dbFetchAssoc($usersRS)) {
|
||||||
$users[$row['id']] = $row['name'];
|
array_push($users, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $users;
|
return $users;
|
||||||
}
|
}
|
||||||
|
|
||||||
function migrateBans() {
|
function migrateBans($creator) {
|
||||||
global $hesk_settings;
|
global $hesk_settings;
|
||||||
|
|
||||||
hesk_dbConnect();
|
hesk_dbConnect();
|
||||||
|
|
||||||
// Get the ID of the creator
|
|
||||||
$creator = $_POST['user'];
|
|
||||||
|
|
||||||
// Insert the email bans
|
// Insert the email bans
|
||||||
$emailBanRS = executeQuery("SELECT `Email` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."denied_emails`");
|
$emailBanRS = executeQuery("SELECT `Email` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."denied_emails`");
|
||||||
while ($row = hesk_dbFetchAssoc($emailBanRS)) {
|
while ($row = hesk_dbFetchAssoc($emailBanRS)) {
|
||||||
|
@ -136,7 +136,7 @@ function appendToInstallConsole(text) {
|
|||||||
function processUpdates(startingVersion) {
|
function processUpdates(startingVersion) {
|
||||||
if (startingVersion < 1) {
|
if (startingVersion < 1) {
|
||||||
startVersionUpgrade('p140');
|
startVersionUpgrade('p140');
|
||||||
executeUpdate(1, 'p140');
|
executeUpdate(1000, 'p140');
|
||||||
} else if (startingVersion < 140) {
|
} else if (startingVersion < 140) {
|
||||||
startVersionUpgrade('140');
|
startVersionUpgrade('140');
|
||||||
executeUpdate(140, '140');
|
executeUpdate(140, '140');
|
||||||
@ -170,30 +170,83 @@ function executeUpdate(version, cssclass) {
|
|||||||
|
|
||||||
markUpdateAsSuccess(cssclass);
|
markUpdateAsSuccess(cssclass);
|
||||||
if (version == 200) {
|
if (version == 200) {
|
||||||
migrateIpEmailBans();
|
migrateIpEmailBans('banmigrate', cssclass);
|
||||||
}
|
}
|
||||||
processUpdates(version);
|
processUpdates(version);
|
||||||
},
|
},
|
||||||
error: function() {
|
error: function(data) {
|
||||||
|
appendToInstallConsole('ERROR: ' + data.responseText);
|
||||||
markUpdateAsFailure(cssclass);
|
markUpdateAsFailure(cssclass);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function migrateIpEmailBans(cssclass) {
|
function migrateIpEmailBans(version, cssclass) {
|
||||||
|
startVersionUpgrade(version);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
url: 'ajax/task-ajax.php',
|
url: 'ajax/task-ajax.php',
|
||||||
data: { task: 'ip-email-bans' },
|
data: { task: 'ip-email-bans' },
|
||||||
success: function(data) {
|
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
|
//if ask user, markUpdateAsAttention and append to Attention! div
|
||||||
//otherwise, mark success and move to completion script.
|
//otherwise, mark success and move to completion script.
|
||||||
},
|
},
|
||||||
error: function() {
|
error: function(data) {
|
||||||
|
appendToInstallConsole('ERROR: ' + data.responseText);
|
||||||
markUpdateAsFailure(cssclass);
|
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);
|
jQuery(document).ready(loadJquery);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user