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",
|
'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['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.
|
$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,
|
`updated` int(11) NOT NULL,
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
|
) 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>
|
</textarea>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -759,6 +759,31 @@ function user_delete_character($char_id) {
|
|||||||
mysql_delete("DELETE FROM `znote_players` WHERE `player_id`='$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.
|
// 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
|
// Array: [0] = name, [1] = level, [2] = vocation, [3] = town_id, [4] = lastlogin, [5] = online
|
||||||
function user_character_list($account_id) {
|
function user_character_list($account_id) {
|
||||||
@ -1372,6 +1397,14 @@ function user_character_id($charname) {
|
|||||||
else return false;
|
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.
|
// Hide user character.
|
||||||
function user_character_hide($username) {
|
function user_character_hide($username) {
|
||||||
$username = sanitize($username);
|
$username = sanitize($username);
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
$server = $config['shop']['imageServer'];
|
$server = $config['shop']['imageServer'];
|
||||||
$imageType = $config['shop']['imageType'];
|
$imageType = $config['shop']['imageType'];
|
||||||
|
|
||||||
$compare = getValue($_GET['compare']);
|
$compare = getValue(@$_GET['compare']);
|
||||||
|
|
||||||
// If you are not comparing any items, present the list.
|
// If you are not comparing any items, present the list.
|
||||||
if (!$compare) {
|
if (!$compare) {
|
||||||
@ -33,7 +33,7 @@ if (!$compare) {
|
|||||||
<td>Compare</td>
|
<td>Compare</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
foreach ($offers['wts'] as $o) {
|
foreach (($offers['wts'] ? $offers['wts'] : array()) as $o) {
|
||||||
?>
|
?>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="<?php echo "http://".$server."/".$o['item_id'].".".$imageType; ?>" alt="Item Image"></td>
|
<td><img src="<?php echo "http://".$server."/".$o['item_id'].".".$imageType; ?>" alt="Item Image"></td>
|
||||||
@ -58,7 +58,7 @@ if (!$compare) {
|
|||||||
<td>Compare</td>
|
<td>Compare</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
foreach ($offers['wtb'] as $o) {
|
foreach (($offers['wtb'] ? $offers['wtb'] : array()) as $o) {
|
||||||
?>
|
?>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="<?php echo "http://".$server."/".$o['item_id'].".".$imageType; ?>" alt="Item Image"></td>
|
<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 ($charid !== false) {
|
||||||
if ($config['TFSVersion'] === 'TFS_10') {
|
if ($config['TFSVersion'] === 'TFS_10') {
|
||||||
if (!user_is_online_10($charid)) {
|
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.';
|
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.';
|
} echo 'Character must be offline first.';
|
||||||
} else {
|
} else {
|
||||||
$chr_data = user_character_data($charid, 'online');
|
$chr_data = user_character_data($charid, 'online');
|
||||||
if ($chr_data['online'] != 1) {
|
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 is leader of a guild, you must disband the guild or change leadership before deleting character.';
|
||||||
} else echo 'Character must be offline first.';
|
} else echo 'Character must be offline first.';
|
||||||
}
|
}
|
||||||
@ -46,6 +46,19 @@ if (!empty($_POST['selected_delete'])) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// end
|
// 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
|
// CHANGE character name
|
||||||
if (!empty($_POST['change_name'])) {
|
if (!empty($_POST['change_name'])) {
|
||||||
if (!Token::isValid($_POST['token'])) {
|
if (!Token::isValid($_POST['token'])) {
|
||||||
@ -179,6 +192,17 @@ if (!empty($_POST['selected_comment'])) {
|
|||||||
} else {
|
} else {
|
||||||
// end
|
// end
|
||||||
$char_count = user_character_list_count($session_user_id);
|
$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">
|
<div id="myaccount">
|
||||||
<h1>My account</h1>
|
<h1>My account</h1>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user