mirror of
https://github.com/Znote/ZnoteAAC.git
synced 2025-04-30 03:09:22 +02:00
Merge pull request #44 from Kuzirashi/master
Added character deletion delay and fixed errors in Marketplace.
This commit is contained in:
commit
b0e40e4ccd
@ -161,6 +161,8 @@
|
||||
'status_port' => "7171",
|
||||
);
|
||||
|
||||
$config['delete_character_interval'] = '3 DAY'; // Delay after user character delete request is executed eg. 1 DAY, 2 HOUR, 3 MONTH etc.
|
||||
|
||||
$config['validate_IP'] = true; // Only allow legal IP addresses to register and create character.
|
||||
$config['salt'] = false; // Some noob 0.3.6 servers don't support salt.
|
||||
|
||||
|
@ -205,6 +205,15 @@ CREATE TABLE IF NOT EXISTS `znote_forum_posts` (
|
||||
`updated` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_deleted_characters` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`original_account_id` int(11) NOT NULL,
|
||||
`character_name` varchar(255) NOT NULL,
|
||||
`time` datetime NOT NULL,
|
||||
`done` tinyint(1) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
|
||||
</textarea>
|
||||
</li>
|
||||
<li>
|
||||
|
@ -759,6 +759,31 @@ function user_delete_character($char_id) {
|
||||
mysql_delete("DELETE FROM `znote_players` WHERE `player_id`='$char_id';");
|
||||
}
|
||||
|
||||
// Delete character with supplied id with a delay.
|
||||
function user_delete_character_soft($char_id) {
|
||||
$char_id = (int)$char_id;
|
||||
|
||||
$char_name = user_character_name($char_id);
|
||||
$original_acc_id = user_character_account_id($char_name);
|
||||
if(!user_character_pending_delete($char_name))
|
||||
mysql_insert('INSERT INTO `znote_deleted_characters`(`original_account_id`, `character_name`, `time`, `done`) VALUES(' . $original_acc_id . ', "' . $char_name . '", (NOW() + INTERVAL ' . Config('delete_character_interval') . '), 0)');
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if character will be deleted soon.
|
||||
function user_character_pending_delete($char_name) {
|
||||
$char_name = sanitize($char_name);
|
||||
$result = mysql_select_single('SELECT `done` FROM `znote_deleted_characters` WHERE `character_name` = "' . $char_name . '"');
|
||||
return ($result === false) ? false : !$result['done'];
|
||||
}
|
||||
|
||||
// Get pending character deletes for supplied account id.
|
||||
function user_pending_deletes($acc_id) {
|
||||
$acc_id = (int)$acc_id;
|
||||
return mysql_select_multi('SELECT `id`, `character_name`, `time` FROM `znote_deleted_characters` WHERE `original_account_id` = ' . $acc_id . ' AND `done` = 0');
|
||||
}
|
||||
|
||||
// Parameter: accounts.id returns: An array containing detailed information of every character on the account.
|
||||
// Array: [0] = name, [1] = level, [2] = vocation, [3] = town_id, [4] = lastlogin, [5] = online
|
||||
function user_character_list($account_id) {
|
||||
@ -1372,6 +1397,14 @@ function user_character_id($charname) {
|
||||
else return false;
|
||||
}
|
||||
|
||||
// Get character name from character ID
|
||||
function user_character_name($charID) {
|
||||
$charID = (int)$charID;
|
||||
$char = mysql_select_single('SELECT `name` FROM `players` WHERE `id` = ' . $charID);
|
||||
if ($char !== false) return $char['name'];
|
||||
else return false;
|
||||
}
|
||||
|
||||
// Hide user character.
|
||||
function user_character_hide($username) {
|
||||
$username = sanitize($username);
|
||||
|
@ -3,7 +3,7 @@
|
||||
$server = $config['shop']['imageServer'];
|
||||
$imageType = $config['shop']['imageType'];
|
||||
|
||||
$compare = getValue($_GET['compare']);
|
||||
$compare = getValue(@$_GET['compare']);
|
||||
|
||||
// If you are not comparing any items, present the list.
|
||||
if (!$compare) {
|
||||
@ -33,7 +33,7 @@ if (!$compare) {
|
||||
<td>Compare</td>
|
||||
</tr>
|
||||
<?php
|
||||
foreach ($offers['wts'] as $o) {
|
||||
foreach (($offers['wts'] ? $offers['wts'] : array()) as $o) {
|
||||
?>
|
||||
<tr>
|
||||
<td><img src="<?php echo "http://".$server."/".$o['item_id'].".".$imageType; ?>" alt="Item Image"></td>
|
||||
@ -58,7 +58,7 @@ if (!$compare) {
|
||||
<td>Compare</td>
|
||||
</tr>
|
||||
<?php
|
||||
foreach ($offers['wtb'] as $o) {
|
||||
foreach (($offers['wtb'] ? $offers['wtb'] : array()) as $o) {
|
||||
?>
|
||||
<tr>
|
||||
<td><img src="<?php echo "http://".$server."/".$o['item_id'].".".$imageType; ?>" alt="Item Image"></td>
|
||||
|
@ -32,13 +32,13 @@ if (!empty($_POST['selected_delete'])) {
|
||||
if ($charid !== false) {
|
||||
if ($config['TFSVersion'] === 'TFS_10') {
|
||||
if (!user_is_online_10($charid)) {
|
||||
if (guild_leader_gid($charid) === false) user_delete_character($charid);
|
||||
if (guild_leader_gid($charid) === false) user_delete_character_soft($charid);
|
||||
else echo 'Character is leader of a guild, you must disband the guild or change leadership before deleting character.';
|
||||
} echo 'Character must be offline first.';
|
||||
} else {
|
||||
$chr_data = user_character_data($charid, 'online');
|
||||
if ($chr_data['online'] != 1) {
|
||||
if (guild_leader_gid($charid) === false) user_delete_character($charid);
|
||||
if (guild_leader_gid($charid) === false) user_delete_character_soft($charid);
|
||||
else echo 'Character is leader of a guild, you must disband the guild or change leadership before deleting character.';
|
||||
} else echo 'Character must be offline first.';
|
||||
}
|
||||
@ -46,6 +46,19 @@ if (!empty($_POST['selected_delete'])) {
|
||||
}
|
||||
}
|
||||
// end
|
||||
|
||||
#region CANCEL CHARACTER DELETE
|
||||
$undelete_id = @$_GET['cancel_delete_id'];
|
||||
if($undelete_id) {
|
||||
$undelete_id = (int)$undelete_id;
|
||||
$undelete_q1 = mysql_select_single('SELECT `character_name` FROM `znote_deleted_characters` WHERE `done` = 0 AND `id` = ' . $undelete_id . ' AND `original_account_id` = ' . $session_user_id . ' AND NOW() < `time`');
|
||||
if($undelete_q1) {
|
||||
mysql_delete('DELETE FROM `znote_deleted_characters` WHERE `id` = ' . $undelete_id);
|
||||
echo 'Pending delete of ' . $undelete_q1['character_name'] . ' has been successfully cancelled.<br/>';
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
// CHANGE character name
|
||||
if (!empty($_POST['change_name'])) {
|
||||
if (!Token::isValid($_POST['token'])) {
|
||||
@ -179,6 +192,17 @@ if (!empty($_POST['selected_comment'])) {
|
||||
} else {
|
||||
// end
|
||||
$char_count = user_character_list_count($session_user_id);
|
||||
$pending_delete = user_pending_deletes($session_user_id);
|
||||
if($pending_delete)
|
||||
foreach($pending_delete as $delete) {
|
||||
if(new DateTime($delete['time']) > new DateTime())
|
||||
echo '<b>CAUTION!</b> Your character with name <b>' . $delete['character_name'] . ' will be deleted on ' . $delete['time'] . '</b>. <a href="myaccount.php?cancel_delete_id=' . $delete['id'] . '">Cancel this operation.</a><br/>';
|
||||
else {
|
||||
user_delete_character(user_character_id($delete['character_name']));
|
||||
mysql_update('UPDATE `znote_deleted_characters` SET `done` = 1');
|
||||
echo '<b>Character ' . $delete['character_name'] . ' has been deleted</b>. This operation was requested by owner of this account.';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<div id="myaccount">
|
||||
<h1>My account</h1>
|
||||
|
Loading…
x
Reference in New Issue
Block a user