mirror of
https://github.com/slawkens/myaac.git
synced 2025-04-26 17:29:21 +02:00
* fixed global config variable in twig templates
* rest from account.create_character moved to twig * fixed some grammar errors * fixed some separators in kathrine template
This commit is contained in:
parent
4685c7b868
commit
5b14c6d4d4
@ -25,6 +25,8 @@ require(SYSTEM . 'status.php');
|
||||
require(SYSTEM . 'login.php');
|
||||
require(ADMIN . 'includes/functions.php');
|
||||
|
||||
$twig->addGlobal('config', $config);
|
||||
|
||||
// if we're not logged in - show login box
|
||||
if(!$logged || !admin()) {
|
||||
$page = 'login';
|
||||
|
@ -45,7 +45,7 @@ $config = array(
|
||||
// footer
|
||||
'footer' => ''/*'<br/>Your Server © 2016. All rights reserved.'*/,
|
||||
|
||||
'debug_level' => 0, // 0 - disabled, 1 - show load time, 2 - show db query counter, 3 - both, 4 - memory usage, 5 - load time & load time, 6 - queries & memory usage, 7 - all
|
||||
'debug_level' => 0, // 0 - disabled, 1 - show load time, 2 - show db query counter, 3 - both, 4 - memory usage, 5 - load time & memory usage, 6 - queries & memory usage, 7 - all
|
||||
|
||||
'language' => 'en', // default language (currently only 'en' available)
|
||||
'language_allow_change' => false,
|
||||
|
@ -55,6 +55,8 @@ require_once(SYSTEM . 'login.php');
|
||||
require_once(SYSTEM . 'status.php');
|
||||
require_once(SYSTEM . 'template.php');
|
||||
|
||||
$twig->addGlobal('config', $config);
|
||||
|
||||
// database migrations
|
||||
$tmp = '';
|
||||
if(fetchDatabaseConfig('database_version', $tmp)) { // we got version
|
||||
|
@ -601,7 +601,7 @@ function check_name_new_char($name, &$error = '')
|
||||
$player = new OTS_Player();
|
||||
$player->find($name);
|
||||
if($player->isLoaded()) {
|
||||
$error = 'Player with this name already exist.';
|
||||
$error = 'Character with this name already exist.';
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -614,28 +614,19 @@ function check_name_new_char($name, &$error = '')
|
||||
}
|
||||
}
|
||||
|
||||
$monsters = $db->query(
|
||||
'SELECT ' . $db->fieldName('name') .
|
||||
' FROM ' . $db->tableName(TABLE_PREFIX . 'monsters') .
|
||||
' WHERE ' . $db->fieldName('name') . ' LIKE ' . $db->quote($name_lower));
|
||||
$monsters = $db->query('SELECT `name` FROM `' . TABLE_PREFIX . 'monsters` WHERE `name` LIKE ' . $db->quote($name_lower));
|
||||
if($monsters->rowCount() > 0) {
|
||||
$error = 'Your name cannot contains monster name.';
|
||||
return false;
|
||||
}
|
||||
|
||||
$spells_name = $db->query(
|
||||
'SELECT ' . $db->fieldName('name') .
|
||||
' FROM ' . $db->tableName(TABLE_PREFIX . 'spells') .
|
||||
' WHERE ' . $db->fieldName('name') . ' LIKE ' . $db->quote($name_lower));
|
||||
$spells_name = $db->query('SELECT `name` FROM `' . TABLE_PREFIX . 'spells` WHERE `name` LIKE ' . $db->quote($name_lower));
|
||||
if($spells_name->rowCount() > 0) {
|
||||
$error = 'Your name cannot contains spell name.';
|
||||
return false;
|
||||
}
|
||||
|
||||
$spells_words = $db->query(
|
||||
'SELECT ' . $db->fieldName('words') .
|
||||
' FROM ' . $db->tableName(TABLE_PREFIX . 'spells') .
|
||||
' WHERE ' . $db->fieldName('words') . ' = ' . $db->quote($name_lower));
|
||||
$spells_words = $db->query('SELECT `words` FROM `' . TABLE_PREFIX . 'spells` WHERE `words` = ' . $db->quote($name_lower));
|
||||
if($spells_words->rowCount() > 0) {
|
||||
$error = 'Your name cannot contains spell name.';
|
||||
return false;
|
||||
|
@ -39,7 +39,6 @@ $function = new Twig_SimpleFunction('getStyle', function ($i) {
|
||||
return getStyle($i);
|
||||
});
|
||||
$twig->addFunction($function);
|
||||
$twig->addGlobal('config', $config);
|
||||
|
||||
// trim values we receive
|
||||
if(isset($_POST))
|
||||
|
@ -130,7 +130,6 @@ if(!$logged)
|
||||
'account_registered' => $account_registered,
|
||||
'account_rlname' => $account_rlname,
|
||||
'account_location' => $account_location,
|
||||
'config' => $config,
|
||||
'actions' => $actions,
|
||||
'players' => $players
|
||||
));
|
||||
@ -195,7 +194,6 @@ if(!$logged)
|
||||
if($config['mail_enabled'] && $config['send_mail_when_change_password'])
|
||||
{
|
||||
$mailBody = $twig->render('mail.password_changed.html.twig', array(
|
||||
'config' => $config,
|
||||
'new_password' => $org_pass
|
||||
));
|
||||
|
||||
@ -314,7 +312,7 @@ if(!$logged)
|
||||
$account_logged->setCustomField("rlname", $new_rlname);
|
||||
$account_logged->setCustomField("location", $new_location);
|
||||
$account_logged->setCustomField("country", $new_country);
|
||||
$account_logged->logAction('Changed Real Name to ' . $new_rlname . ', Location to ' . $new_location . ' and Country to ' . $config['countries'][$new_country] . '.');
|
||||
$account_logged->logAction('Changed Real Name to <b>' . $new_rlname . '</b>, Location to <b>' . $new_location . '</b> and Country to <b>' . $config['countries'][$new_country] . '</b>.');
|
||||
echo $twig->render('success.html.twig', array(
|
||||
'title' => 'Public Information Changed',
|
||||
'description' => 'Your public information has been changed.'
|
||||
@ -380,7 +378,7 @@ if(!$logged)
|
||||
echo '</ul> </table> </div> </table></div></td></tr><br/><center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>';
|
||||
}
|
||||
else
|
||||
$reg_errors[] = 'Your account is already registred.';
|
||||
$reg_errors[] = 'Your account is already registered.';
|
||||
}
|
||||
else
|
||||
$reg_errors[] = 'Wrong password to account.';
|
||||
@ -666,7 +664,6 @@ if(!$logged)
|
||||
echo $twig->render('error_box.html.twig', array('errors' => $errors));
|
||||
}
|
||||
echo $twig->render('account.change_sex.html.twig', array(
|
||||
'config' => $config,
|
||||
'players' => $account_logged->getPlayersList(),
|
||||
'player_sex' => isset($player) ? $player->getSex() : -1,
|
||||
'points' => $points
|
||||
@ -747,11 +744,17 @@ if(!$logged)
|
||||
if(isset($_POST['savecharacter']) && $_POST['savecharacter'] == 1) {
|
||||
if(empty($newchar_name))
|
||||
$errors[] = 'Please enter a name for your character!';
|
||||
|
||||
if(strlen($newchar_name) > 25)
|
||||
else if(strlen($newchar_name) > 25)
|
||||
$errors[] = 'Name is too long. Max. lenght <b>25</b> letters.';
|
||||
else if(strlen($newchar_name) < 3)
|
||||
$errors[] = 'Name is too short. Min. lenght <b>25</b> letters.';
|
||||
$errors[] = 'Name is too short. Min. lenght <b>3</b> letters.';
|
||||
else {
|
||||
$exist = new OTS_Player();
|
||||
$exist->find($newchar_name);
|
||||
if($exist->isLoaded()) {
|
||||
$errors[] = 'Character with this name already exist.';
|
||||
}
|
||||
}
|
||||
|
||||
if(empty($newchar_sex) && $newchar_sex != "0")
|
||||
$errors[] = 'Please select the sex for your character!';
|
||||
@ -772,12 +775,6 @@ if(!$logged)
|
||||
$newchar_town = $config['character_towns'][0];
|
||||
}
|
||||
|
||||
$exist = new OTS_Player();
|
||||
$exist->find($newchar_name);
|
||||
if($exist->isLoaded()) {
|
||||
$errors[] .= 'Character with this name already exist.';
|
||||
}
|
||||
|
||||
if(empty($errors)) {
|
||||
$error = '';
|
||||
if(!admin() && !check_name_new_char($newchar_name, $error)) {
|
||||
@ -923,39 +920,11 @@ if(!$logged)
|
||||
|
||||
if(!$newchar_created) {
|
||||
echo $twig->render('account.create_character.html.twig', array(
|
||||
'config' => $config,
|
||||
'newchar_name' => $newchar_name
|
||||
|
||||
'name' => $newchar_name,
|
||||
'sex' => $newchar_sex,
|
||||
'vocation' => $newchar_vocation,
|
||||
'town' => $newchar_town
|
||||
));
|
||||
|
||||
echo '<div class="InnerTableContainer" > <table style="width:100%;" ><tr>';
|
||||
if(count($config['character_samples']) > 1)
|
||||
{
|
||||
echo '<td><table class="TableContent" width="100%" ><tr class="Odd" valign="top"><td width="160"><br /><b>Select your vocation:</b></td><td><table class="TableContent" width="100%" >';
|
||||
foreach($config['character_samples'] as $key => $sample_char)
|
||||
{
|
||||
echo '<tr><td><input type="radio" name="vocation" id="vocation' . $key . '" value="'.$key.'" ';
|
||||
if($newchar_vocation == $key)
|
||||
echo 'checked="checked" ';
|
||||
echo '><label for="vocation' . $key . '">'.$config['vocations'][$key].'</label></td></tr>';
|
||||
}
|
||||
echo '</table></td></table>';
|
||||
}
|
||||
if(count($config['character_towns']) > 1)
|
||||
{
|
||||
echo '<td><table class="TableContent" width="100%" ><tr class="Odd" valign="top"><td width="160"><br /><b>Select your city:</b></td><td><table class="TableContent" width="100%" >';
|
||||
foreach($config['character_towns'] as $town_id)
|
||||
{
|
||||
echo '<tr><td><input type="radio" name="town" id="town' . $town_id . '" value="' . $town_id . '" ';
|
||||
if($newchar_town == $town_id)
|
||||
echo 'checked="checked" ';
|
||||
echo '><label for="town' . $town_id . '">'.$config['towns'][$town_id].'</label></td></tr>';
|
||||
}
|
||||
echo '</table></td></tr></table></table></div>';
|
||||
}
|
||||
else
|
||||
echo '</tr></table></div>';
|
||||
echo '</table></div></td></tr><br/><table style="width:100%;" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$template_path.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></td></tr></table>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@ -80,7 +80,8 @@ if($player->isLoaded() && !$player->isDeleted())
|
||||
$account = $player->getAccount();
|
||||
$rows = 0;
|
||||
|
||||
$outfit = $config['outfit_images_url'] . '?id=' . $player->getLookType() . (fieldExist('lookaddons', 'players') ? '&addons=' . $player->getLookAddons() : '') . '&head=' . $player->getLookHead() . '&body=' . $player->getLookBody() . '&legs=' . $player->getLookLegs() . '&feet=' . $player->getLookFeet();
|
||||
if($config['characters']['outfit'])
|
||||
$outfit = $config['outfit_images_url'] . '?id=' . $player->getLookType() . (fieldExist('lookaddons', 'players') ? '&addons=' . $player->getLookAddons() : '') . '&head=' . $player->getLookHead() . '&body=' . $player->getLookBody() . '&legs=' . $player->getLookLegs() . '&feet=' . $player->getLookFeet();
|
||||
|
||||
$flag = '';
|
||||
if($config['account_country'])
|
||||
@ -396,10 +397,9 @@ WHERE killers.death_id = '".$death['id']."' ORDER BY killers.final_hit DESC, kil
|
||||
}
|
||||
|
||||
echo $twig->render('characters.html.twig', array(
|
||||
'outfit' => $outfit,
|
||||
'outfit' => isset($outfit) ? $outfit : null,
|
||||
'player' => $player,
|
||||
'account' => $account,
|
||||
'config' => $config,
|
||||
'flag' => $flag,
|
||||
'oldName' => $oldName,
|
||||
'sex' => $player_sex,
|
||||
|
@ -621,7 +621,6 @@ if($action == 'new_thread')
|
||||
|
||||
echo $twig->render('forum.new_thread.html.twig', array(
|
||||
'section_id' => $section_id,
|
||||
'config' => $config,
|
||||
'players' => $players_from_account,
|
||||
'post_player_id' => $char_id,
|
||||
'post_thread' => $post_topic,
|
||||
|
@ -280,7 +280,6 @@ if(!$news_cached)
|
||||
$account_players->orderBy('group_id', POT::ORDER_DESC);
|
||||
|
||||
echo $twig->render('news.add.html.twig', array(
|
||||
'config' => $config,
|
||||
'action' => $action,
|
||||
'news_link' => getPageLink(PAGE),
|
||||
'news_link_form' => getPageLink('news', ($action == 'edit' ? 'edit' : 'add')),
|
||||
|
@ -16,7 +16,7 @@ Here you can tell other players about yourself. This information will be display
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td>{{ config.darkborder }}
|
||||
<td>
|
||||
<div class="InnerTableContainer" >
|
||||
<table style="width:100%;" >
|
||||
<tr>
|
||||
@ -42,25 +42,25 @@ Here you can tell other players about yourself. This information will be display
|
||||
</select>
|
||||
<img src="" id="account_country_img"/>
|
||||
<script>
|
||||
function updateFlag()
|
||||
{
|
||||
var img = $('#account_country_img');
|
||||
var country = $('#account_country :selected').val();
|
||||
if(country.length) {
|
||||
img.attr('src', 'images/flags/' + country + '.gif');
|
||||
img.show();
|
||||
}
|
||||
else {
|
||||
img.hide();
|
||||
}
|
||||
}
|
||||
function updateFlag()
|
||||
{
|
||||
var img = $('#account_country_img');
|
||||
var country = $('#account_country :selected').val();
|
||||
if(country.length) {
|
||||
img.attr('src', 'images/flags/' + country + '.gif');
|
||||
img.show();
|
||||
}
|
||||
else {
|
||||
img.hide();
|
||||
}
|
||||
}
|
||||
|
||||
$(function() {
|
||||
updateFlag();
|
||||
$('#account_country').change(function() {
|
||||
updateFlag();
|
||||
});
|
||||
});
|
||||
$(function() {
|
||||
updateFlag();
|
||||
$('#account_country').change(function() {
|
||||
updateFlag();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -45,17 +45,17 @@ In any case the name must not violate the naming conventions stated in the <a hr
|
||||
</tr>
|
||||
<tr class="Odd">
|
||||
<td>
|
||||
<input id="name" name="name" onkeyup="checkName();" value=" {{ newchar_name }}" size="25" maxlength="25" ><br/>
|
||||
<input id="name" name="name" onkeyup="checkName();" value=" {{ name }}" size="25" maxlength="25" ><br/>
|
||||
<font size="1" face="verdana,arial,helvetica">
|
||||
<div id="name_check">Please enter your character name.</div>
|
||||
</font>
|
||||
</td>
|
||||
<td>
|
||||
{% set i = 0 %}
|
||||
{% for id, _sex in config.genders|reverse(true) %}
|
||||
{% for id, gender in config.genders|reverse(true) %}
|
||||
{% set i = i + 1 %}
|
||||
<input type="radio" name="sex" id="sex{{ i }}" value="{{ id }}"{% if newchar_sex == id %} checked="checked"{% endif %}
|
||||
><label for="sex{{ i }}">{{ _sex|lower }}</label><br/>
|
||||
<input type="radio" name="sex" id="sex{{ i }}" value="{{ id }}"{% if sex is not null and sex == id %} checked="checked"{% endif %}
|
||||
><label for="sex{{ i }}">{{ gender|lower }}</label><br/>
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
@ -64,3 +64,84 @@ In any case the name must not violate the naming conventions stated in the <a hr
|
||||
</div>
|
||||
</table>
|
||||
</div>
|
||||
<div class="InnerTableContainer">
|
||||
<table style="width: 100%;">
|
||||
<tr>
|
||||
{% if config.character_samples|length > 1 %}
|
||||
<td>
|
||||
<table class="TableContent" width="100%">
|
||||
<tr class="Odd" valign="top">
|
||||
<td width="160"><br/><b>Select your vocation:</b></td>
|
||||
<td>
|
||||
<table class="TableContent" width="100%" >
|
||||
{% for key, sample_char in config.character_samples %}
|
||||
<tr>
|
||||
<td>
|
||||
<input type="radio" name="vocation" id="vocation{{ key }}" value="{{ key }}"
|
||||
{% if vocation is not null and vocation == key %} checked="checked"{% endif %}>
|
||||
<label for="vocation{{ key }}">{{ config['vocations'][key] }}</label>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{% endif %}
|
||||
{% if config.character_towns|length > 1 %}
|
||||
<td>
|
||||
<table class="TableContent" width="100%">
|
||||
<tr class="Odd" valign="top">
|
||||
<td width="160"><br/><b>Select your city:</b></td>
|
||||
<td>
|
||||
<table class="TableContent" width="100%">
|
||||
{% for town_id in config.character_towns %}
|
||||
<tr>
|
||||
<td>
|
||||
<input type="radio" name="town" id="town{{ town_id }}" value="{{ town_id }}"
|
||||
{% if town is not null and town == town_id %} checked="checked"{% endif %}>
|
||||
<label for="town{{ town_id }}">{{ config.towns[town_id] }}</label>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<br/>
|
||||
<table style="width:100%;">
|
||||
<tr align="center">
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td style="border:0px;">
|
||||
<div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)">
|
||||
<div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="{{ template_path }}/images/buttons/_sbutton_submit.gif" ></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</form>
|
||||
</table>
|
||||
</td>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="0">
|
||||
<form action="?subtopic=accountmanagement" method="post">
|
||||
<tr>
|
||||
<td style="border:0px;">
|
||||
<div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)"><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="{{ template_path }}/images/buttons/_sbutton_back.gif" ></div></div>
|
||||
</td>
|
||||
</tr>
|
||||
</form>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
@ -174,7 +174,7 @@
|
||||
<td>{{ account_status }}</td>
|
||||
</tr>
|
||||
<tr style="background-color: {{ config.darkborder }};" >
|
||||
<td class="LabelV" >Registred:</td>
|
||||
<td class="LabelV" >Registered:</td>
|
||||
<td>{{ account_registered }}</td>
|
||||
</tr>
|
||||
{% endautoescape %}
|
||||
|
@ -90,31 +90,28 @@ defined('MYAAC') or die('Direct access not allowed!');
|
||||
<a href="<?php echo $template['link_characters']; ?>">Characters</a>
|
||||
<span class="separator"></span>
|
||||
<a href="<?php echo $template['link_guilds']; ?>">Guilds</a>
|
||||
<span class="separator"></span>
|
||||
<?php
|
||||
if(isset($config['wars']))
|
||||
echo '
|
||||
<a href="' . $template['link_wars'] . '">Wars</a>
|
||||
<span class="separator"></span>';
|
||||
?>
|
||||
if(isset($config['wars'])): ?>
|
||||
<span class="separator"></span>
|
||||
<a href="<?php echo $template['link_wars']; ?>">Wars</a>
|
||||
<?php endif; ?>
|
||||
<span class="separator"></span>
|
||||
<a href="<?php echo $template['link_highscores']; ?>">Highscores</a>
|
||||
<span class="separator"></span>
|
||||
<a href="<?php echo $template['link_lastkills']; ?>">Last Deaths</a>
|
||||
<?php if(fieldExist('name', 'houses')): ?>
|
||||
<span class="separator"></span>
|
||||
<a href="<?php echo $template['link_houses']; ?>">Houses</a>
|
||||
<?php endif; ?>
|
||||
<span class="separator"></span>
|
||||
<?php if($config['otserv_version'] == TFS_03): ?>
|
||||
<?php endif;
|
||||
if($config['otserv_version'] == TFS_03): ?>
|
||||
<span class="separator"></span>
|
||||
<a href="<?php echo $template['link_bans']; ?>">Bans</a>
|
||||
<?php endif; ?>
|
||||
<span class="separator"></span>
|
||||
<?php
|
||||
if($config['forum'] != '')
|
||||
echo
|
||||
$template['link_forum'] . 'Forum</a>
|
||||
<span class="separator"></span>';
|
||||
?>
|
||||
<?php endif;
|
||||
if($config['forum'] != ''): ?>
|
||||
<span class="separator"></span>
|
||||
<?php echo $template['link_forum']; ?>Forum</a>
|
||||
<?php endif; ?>
|
||||
<span class="separator"></span>
|
||||
<a href="<?php echo $template['link_team']; ?>">Team</a>
|
||||
</div>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user