Файл: core/modules/users_nick.php
Строк: 257
<?php
if (!defined('CMS')) { die('Access Denied!'); }
$colors = array(
'006400' => 'Темно-зеленый',
'0000FF' => 'Синий',
'000080' => 'Темно-синий',
'00FFFF' => 'Голубой',
'FFFF00' => 'Желтый',
'808080' => 'Серый',
'C0C0C0' => 'Светло-серый',
'9ACD32' => 'Желто-зеленый',
'7FFF00' => 'Салатовый',
'90EE90' => 'Светло-зеленый',
'D1E231' => 'Грушевый',
'4B0082' => 'Индиго',
'8A2BE2' => 'Фиолетовый',
'991199' => 'Фиолетово-баклажанный',
'008B8B' => 'Темно-голубой',
'4682B4' => 'Голубая сталь',
'87CEEB' => 'Светло-голубой',
'FF7F50' => 'Кораловый',
'8B4513' => 'Коричневый',
'FF2400' => 'Алый',
'DC143C' => 'Малиновый',
'FF1493' => 'Ярко-розовый',
'FF69B4' => 'Розовый',
'FF8C00' => 'Оранжевый',
'FFD700' => 'Золото',
'BDB76B' => 'Хаки',
'FFA07A' => 'Оранжево-розовый',
'008080' => 'Мурена',
'FFDB58' => 'Горчичный',
'40826D' => 'Ядовито-зелёный',
'1E90FF' => 'Защитно-синий',
'808000' => 'Оливковый',
'660000' => 'Коричнево-малиновый',
'D2B48C' => 'Желто-коричневый',
);
$arr = array();
foreach($colors as $key => $val) {
$arr[$key] = '<span style="font-weight:bold;color:#' . $key . '">' . $val . '</span>';
}
function gradient($text = '', $from = '', $to = '', $mode = 'hex') {
if (empty($to)) return '<span style="font-weight:bold;color: #' . $from . ';">' . $text . '</span>';
if ($mode == 'hex') {
$to = array( @hexdec($to[0].$to[1]), @hexdec($to[2].$to[3]), @hexdec($to[4].$to[5]));
$from = array( @hexdec($from[0].$from[1]), @hexdec($from[2].$from[3]), @hexdec($from[4].$from[5]));
}
if ( empty($text) ) {
return '';
}
else {
$levels = cms_strlen($text);
}
$from = !empty($from) ? $from : array(0,0,255);
$to = !empty($to) ? $to : array(255,0,0);
$output = '';
$text = iconv('UTF-8', 'cp1251', $text);
for ($i = 1; $i <= $levels; $i++) {
for ($ii = 0; $ii < 3; $ii++) {
$tmp[$ii] = $from[$ii] - $to[$ii];
$tmp[$ii] = floor($tmp[$ii] / $levels);
$rgb[$ii] = $from[$ii] - ($tmp[$ii] * $i);
if ($rgb[$ii] > 255) $rgb[$ii] = 255;
$rgb[$ii] = dechex($rgb[$ii]);
$rgb[$ii] = strtoupper($rgb[$ii]);
if (strlen($rgb[$ii]) < 2) $rgb[$ii] = '0' . $rgb[$ii];
}
$output .= ($rgb[0].$rgb[1].$rgb[2] == '000000') ? $text[$i-1] : '<span style="color: #' . $rgb[0] . $rgb[1] . $rgb[2] . ';">' . $text[$i-1] . '</span>';
}
return '<span style="font-weight:bold;">' . iconv('cp1251', 'UTF-8', $output) . '</span>';
}
if ($is_logged) {
if (!empty($_POST['buy'])) { // Изменение цвета ника
if (!empty($_POST['color'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if ($uset['users_money'] >= $config['edit_color_money']) {
if ($uset['users_timenickname'] < SITE_TIME) {
if (cms_strlen($_POST['color']) == 6) {
$nick = nickname($uset['users_login']);
$nick = gradient(strip_tags($nick), $_POST['color'], $_POST['color2']);
$time = is_admin() ? 0 : (SITE_TIME + 86400);
$db->query("UPDATE ?_users SET `users_money` = (`users_money` - ?), `users_nickname` = ?, `users_timenickname` = ?
WHERE `users_login` = ?", $config['edit_color_money'], $nick, $time, $log);
del_vars('users_nickname');
$arrnick = array();
$rows = $db->select("SELECT `users_login`, `users_nickname` FROM ?_users");
foreach($rows as $row) {
$arrnick[$row['users_login']] = !empty($row['users_nickname']) ? $row['users_nickname'] : $row['users_login'];
}
set_vars('users_nickname', $arrnick);
$inSes->addMessage('Поздравлем с покупкой цветного ника, теперь он стал таким: ' . $nick . '.<br />C вашего счета списано ' . moneys($config['edit_color_money']), 'ok');
gen_red('index', '', RND);
}
else $inSes->addMessage('Неверно указан цвет ника!');
}
else $inSes->addMessage('Изменять цвет ника можно не чаще чем 1 раз в сутки!');
}
else $inSes->addMessage('У Вас, недостаточно денег на счету, для покупки цветного ника.');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
else $inSes->addMessage('Вы не выбрали цвет ника!');
}
else if (!empty($_POST['save_nick'])) { // Изменение ника
$nick = !empty($_POST['nickname']) ? check(trim($_POST['nickname'])) : '';
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if ($uset['users_money'] >= $config['edit_nick_money']) {
if ($uset['users_timenickname'] < SITE_TIME) {
if (preg_match('|^[0-9a-zA-Zа-яА-ЯЁё_.-s]+$|u', $nick)) {
if (cms_strlen($nick) >= 3 && cms_strlen($nick) <= 25) {
if ($nick != $uset['users_nickname']) {
$reglogin = $db->selectCell("SELECT `users_id` FROM ?_users
WHERE LOWER(`users_login`) = ? LIMIT 1;", cms_tolower($nick));
if (empty($reglogin)) {
$is_reg = (int) $db->selectCell("SELECT `users_id` FROM ?_users
WHERE LOWER(`users_nickname`) = ? LIMIT 1;", cms_tolower($nick));
if ( $is_reg < 1 ) {
$is_black = (int) $db->selectCell("SELECT `id` FROM ?_users_black_list
WHERE LOWER(`login`) = ? LIMIT 1;", cms_tolower($nick));
if ( $is_black < 1 ) {
$time = is_admin() ? 0 : (SITE_TIME + 86400);
$db->query("UPDATE ?_users
SET `users_money` = (`users_money` - ?), `users_nickname` = ?, `users_timenickname` = ?
WHERE `users_login` = ?", $config['edit_nick_money'], $nick, $time, $log);
del_vars('users_nickname');
$arrnick = array();
$rows = $db->select("SELECT `users_login`, `users_nickname` FROM ?_users");
foreach($rows as $row) {
$arrnick[$row['users_login']] = !empty($row['users_nickname']) ? $row['users_nickname'] : $row['users_login'];
}
set_vars('users_nickname', $arrnick);
$inSes->addMessage('Ваш ник успешно изменен!', 'ok');
gen_red('index', '', RND);
}
else $inSes->addMessage('Выбранный вами ник занесен в черный список!');
}
else $inSes->addMessage('Выбранный вами ник уже занят!!');
}
else $inSes->addMessage('Выбранный вами ник используется кем-то в качестве логина!');
}
else $inSes->addMessage('Вы уже используете выбранный вами ник!');
}
else $inSes->addMessage('Слишком длинный или короткий ник! (от 3 до 20 символов)');
}
else $inSes->addMessage('Недопустимые символы, разрешены символы русского и латинского алфавита, а также цифры!');
}
else $inSes->addMessage('Изменять ник можно не чаще чем 1 раз в сутки!');
}
else $inSes->addMessage('У вас недостаточно актива для изменения ника!');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
else if (!empty($_GET['del_nick'])) { // Удаление ника
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if (!empty($uset['users_nickname'])) {
$time = is_admin() ? 0 : (SITE_TIME + 86400);
$db->query("UPDATE ?_users SET `users_nickname` = '', `users_timenickname` = ? WHERE `users_login` = ?", $time, $log);
del_vars('users_nickname');
$arrnick = array();
$rows = $db->select("SELECT `users_login`, `users_nickname` FROM ?_users");
foreach ($rows as $row) {
$arrnick[$row['users_login']] = !empty($row['users_nickname']) ? $row['users_nickname'] : $row['users_login'];
}
set_vars('users_nickname', $arrnick);
$inSes->addMessage('Ваш ник успешно удален!', 'ok');
gen_red('index', '', RND);
}
else $inSes->addMessage('У вас не установлен ник!');
}
else $inSes->addMessage('Неверный идентификатор сессии, повторите действие!');
}
show_header('Мои данные');
$nickname = nickname($uset['users_login']);
if (!empty($mod) && $mod == 'nick') {
echo '<div class="blocks"><table><tr>';
echo '<td style="width:33%"><span>Мой ник</span></td>';
echo '<td style="width:33%"><a href="' . gen_uri('nick_color', '', RND) . '">Цвет ника</a></td>';
echo '<td style="width:33%"><a href="' . gen_uri('account', '', RND) . '">Мои данные</a></td>';
echo '</tr></table></div>';
if ($uset['users_money'] >= $config['edit_nick_money']) {
$form = new cmsForm(gen_uri('nick', '', 'rnd=' . $_SESSION['token']), 'post');
$form->addCode('Ваш ник:');
if (!empty($uset['users_nickname'])) {
$form->addCode(' (<a href="' . gen_uri('nick', '', 'del_nick=1&rnd=' . $_SESSION['token']) . '">Удалить</a>)');
}
$form->addCode('<br />');
$form->addText('', 'nickname', strip_tags($uset['users_nickname']), ' maxlength="25"');
$form->Submit('Изменить', 'save_nick');
unset($form);
}
echo '<div class="bl">Стоймость покупки ника составляет ' . moneys($config['edit_nick_money']) . '<br />';
echo 'В наличии: ' . moneys($uset['users_money']) . '<br />';
if ($uset['users_money'] < $config['edit_nick_money']) echo 'У Вас, недостаточно денег на счету, для покупки ника.<br />';
echo '</div>';
}
else {
echo '<div class="blocks"><table><tr>';
echo '<td style="width:33%"><a href="' . gen_uri('nick', '', RND) . '">Мой ник</a></td>';
echo '<td style="width:33%"><span>Цвет ника</span></td>';
echo '<td style="width:33%"><a href="' . gen_uri('account', '', RND) . '">Мои данные</a></td>';
echo '</tr></table></div>';
if (!empty($_POST['color']) && !empty($_POST['demo'])) {
echo '<div class="bl center"><big>' . gradient(strip_tags($nickname), $_POST['color'], $_POST['color2']) . '</big></div>';
}
$form = new cmsForm('?rnd=' . $_SESSION['token']);
$form->addRadio('Начальный цвет:', 'color', request('color', '006400'), $arr);
$arr = array_merge(array('0' => 'Одноцветный'), $arr);
$form->addRadio('<br />Конечный цвет:', 'color2', request('color2','0'), $arr);
if ($uset['users_money'] < $config['edit_color_money']) echo $form->Submit('Демо', 'demo');
else echo $form->Submit(array('Просмотр', 'Купить'), array('demo', 'buy'));
unset($form);
echo '<div class="bl">Стоймость покупки составляет ' . moneys($config['edit_color_money']) . '<br />';
echo 'В наличии: ' . moneys($uset['users_money']) . '<br />';
if ($uset['users_money'] < $config['edit_color_money']) echo 'У Вас, недостаточно денег на счету, для покупки цветного ника.<br />';
echo '</div>';
}
}
else {
show_header('Мои данные');
show_login('Вы не авторизованы, чтобы изменять свои данные, необходимо');
}
?>